feat(erp): 新增ERP接口对接功能
- 新增ErpExecution、ErpInOutBoundOrder等多个ERP实体类 - 修改IToErpService接口,调整createWorkshopInboundOrder方法参数 - 重构ToErpServiceImpl实现类,完善车间入库单和其它出入库单逻辑 - 新增WipTransferDoc及WipTransferDocD等工单转移相关实体类 - 调整ToWmsServiceImpl中二楼入库创建工艺单的调用方式 - 完善ERP接口请求URL配置及数据封装处理 - 优化作业生成流程中的异常处理机制
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
package com.ruoyi.api.domain;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class ErpExecution {
|
||||
|
||||
private String code;
|
||||
private String sql_code;
|
||||
private String description;
|
||||
private String token_id;
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.ruoyi.api.domain;
|
||||
|
||||
import cn.hutool.core.annotation.Alias;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class ErpInOutBoundOrder {
|
||||
//单号 入库 11T1-202512020001 出库 11T2-202512020001
|
||||
@Alias("DOC_NO")
|
||||
private String DOC_NO;
|
||||
//单据类型.单据类型 入库 11T1 出库 11T2
|
||||
@Alias("DOC_ID_DOC_CODE")
|
||||
private String DOC_ID_DOC_CODE;
|
||||
//单据类型.组织类型.工厂/储运.工厂/储运编号 B0801
|
||||
@Alias("DOC_ID_Owner_Org_PLANT_CODR")
|
||||
private String DOC_ID_Owner_Org_PLANT_CODR;
|
||||
//单据日期
|
||||
@Alias("DOC_DATE")
|
||||
private String DOC_DATE;
|
||||
//交易日期
|
||||
@Alias("TRANSACTION_DATE")
|
||||
private String TRANSACTION_DATE;
|
||||
//关联员工.员工编号
|
||||
@Alias("Owner_Emp_EMPLOYEE_CODE")
|
||||
private String Owner_Emp_EMPLOYEE_CODE;
|
||||
//组织类型.工厂/储运.工厂/储运编号 B0801
|
||||
@Alias("Owner_Org_PLANT_PLANT_CODE")
|
||||
private String Owner_Org_PLANT_PLANT_CODE;
|
||||
//单据状态属性 N
|
||||
@Alias("ApproveStatus")
|
||||
private String ApproveStatus;
|
||||
//单据性质 11
|
||||
@Alias("CATEGORY")
|
||||
private String CATEGORY;
|
||||
//公司.公司编号 B08
|
||||
@Alias("COMPANY_ID_COMPANY_CODE")
|
||||
private String COMPANY_ID_COMPANY_CODE;
|
||||
//关联部门.行政单元编码
|
||||
@Alias("Owner_Dept_ADMIN_UNIT_CODE")
|
||||
private String Owner_Dept_ADMIN_UNIT_CODE;
|
||||
//库存影响
|
||||
@Alias("STOCK_ACTION")
|
||||
private Integer STOCK_ACTION;
|
||||
//库存交易单单身
|
||||
@Alias("TRANSACTION_DOC_D")
|
||||
private List<ErpTransactionDocD> TRANSACTION_DOC_D;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.ruoyi.api.domain;
|
||||
|
||||
import cn.hutool.core.annotation.Alias;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ErpInterfaceParam<T> {
|
||||
|
||||
@Alias("std_data")
|
||||
private ErpStdData<T> std_data;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.ruoyi.api.domain;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ErpParameter<T> {
|
||||
|
||||
private List<T> datas;
|
||||
|
||||
private ErpResult result;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.ruoyi.api.domain;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ErpResult {
|
||||
|
||||
private ErpSuccess success;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.ruoyi.api.domain;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ErpStdData<T> {
|
||||
|
||||
private ErpExecution execution;
|
||||
private ErpParameter<T> parameter;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.ruoyi.api.domain;
|
||||
|
||||
import cn.hutool.core.annotation.Alias;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ErpSuccess {
|
||||
|
||||
@Alias("DOC_NO")
|
||||
private String DOC_NO;
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.ruoyi.api.domain;
|
||||
|
||||
import cn.hutool.core.annotation.Alias;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ErpTransactionDocD {
|
||||
//序号
|
||||
@Alias("SequenceNumber")
|
||||
private Integer SequenceNumber;
|
||||
//品号.品号
|
||||
@Alias("ITEM_ID_ITEM_CODE")
|
||||
private String ITEM_ID_ITEM_CODE;
|
||||
//品名
|
||||
@Alias("ITEM_DESCRIPTION")
|
||||
private String ITEM_DESCRIPTION;
|
||||
//规格
|
||||
@Alias("ITEM_SPECIFICATION")
|
||||
private String ITEM_SPECIFICATION;
|
||||
//业务数量
|
||||
@Alias("BUSINESS_QTY")
|
||||
private Double BUSINESS_QTY;
|
||||
//仓库.仓库编号
|
||||
@Alias("WAREHOUSE_ID_WAREHOUSE_CODE")
|
||||
private String WAREHOUSE_ID_WAREHOUSE_CODE;
|
||||
//仓库.组织类型.工厂/储运.工厂/储运编号
|
||||
@Alias("WAREHOUSE_ID_Owner_Org_PLANT_PLANT_CODE")
|
||||
private String WAREHOUSE_ID_Owner_Org_PLANT_PLANT_CODE;
|
||||
//业务单位.单位编号
|
||||
@Alias("BUSINESS_UNIT_ID_UNIT_CODE")
|
||||
private String BUSINESS_UNIT_ID_UNIT_CODE;
|
||||
//单据来源
|
||||
@Alias("GENERATE_SOURCE")
|
||||
private String GENERATE_SOURCE;
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
package com.ruoyi.api.domain;
|
||||
|
||||
import cn.hutool.core.annotation.Alias;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* WIP 转移文档主实体类
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class WipTransferDoc {
|
||||
/**
|
||||
* 单号 5C21-2501000000
|
||||
*/
|
||||
@Alias("DOC_NO")
|
||||
private String DOC_NO;
|
||||
|
||||
/**
|
||||
* 单据类型, 单据类型 5C21
|
||||
*/
|
||||
@Alias("DOC_ID_DOC_CODE")
|
||||
private String DOC_ID_DOC_CODE;
|
||||
|
||||
/**
|
||||
* 单据日期
|
||||
*/
|
||||
@Alias("DOC_DATE")
|
||||
private String DOC_DATE;
|
||||
|
||||
/**
|
||||
* 移出地, 工作中心, 工作中心编码
|
||||
*/
|
||||
@Alias("SOURCE_ID_WORK_CENTER_WORK_CENTER_CODE")
|
||||
private String SOURCE_ID_WORK_CENTER_WORK_CENTER_CODE;
|
||||
|
||||
/**
|
||||
* 移出部门, 行政单元编码
|
||||
*/
|
||||
@Alias("FROM_ADMIN_UNIT_ID_ADMIN_UNIT_CODE")
|
||||
private String FROM_ADMIN_UNIT_ID_ADMIN_UNIT_CODE;
|
||||
|
||||
/**
|
||||
* 关联部门, 行政单元编码
|
||||
*/
|
||||
@Alias("Owner_Dept_ADMIN_UNIT_CODE")
|
||||
private String Owner_Dept_ADMIN_UNIT_CODE;
|
||||
|
||||
/**
|
||||
* 移出部门, 生效日期
|
||||
*/
|
||||
@Alias("Owner_Dept_START_DATE")
|
||||
private String Owner_Dept_START_DATE;
|
||||
|
||||
/**
|
||||
* 关联员工, 员工编号
|
||||
*/
|
||||
@Alias("Owner_Emp_EMPLOYEE_CODE")
|
||||
private String Owner_Emp_EMPLOYEE_CODE;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Alias("REMARK")
|
||||
private String REMARK;
|
||||
|
||||
/**
|
||||
* 限用仓库, 仓库编号
|
||||
*/
|
||||
@Alias("WAREHOUSE_ID_WAREHOUSE_CODE")
|
||||
private String WAREHOUSE_ID_WAREHOUSE_CODE;
|
||||
|
||||
/**
|
||||
* WIP 转移文档明细列表
|
||||
*/
|
||||
@Alias("WIP_TRANSFER_DOC_D")
|
||||
private List<WipTransferDocD> WIP_TRANSFER_DOC_D;
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
package com.ruoyi.api.domain;
|
||||
|
||||
import cn.hutool.core.annotation.Alias;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* WIP 转移文档明细项实体类
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class WipTransferDocD {
|
||||
/**
|
||||
* 工单单号, 单号
|
||||
*/
|
||||
@Alias("MO_ID_DOC_NO")
|
||||
private String MO_ID_DOC_NO;
|
||||
|
||||
/**
|
||||
* 移入部门, 行政单元编码
|
||||
*/
|
||||
@Alias("TO_ADMIN_UNIT_ID_ADMIN_UNIT_CODE")
|
||||
private String TO_ADMIN_UNIT_ID_ADMIN_UNIT_CODE;
|
||||
|
||||
/**
|
||||
* 移入部门, 生效日期
|
||||
*/
|
||||
@Alias("TO_ADMIN_UNIT_ID_START_DATE")
|
||||
private String TO_ADMIN_UNIT_ID_START_DATE;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
@Alias("QTY")
|
||||
private String QTY;
|
||||
|
||||
/**
|
||||
* 产品品号, 品号
|
||||
*/
|
||||
@Alias("ITEM_ID_ITEM_CODE")
|
||||
private String ITEM_ID_ITEM_CODE;
|
||||
|
||||
/**
|
||||
* 产品品名
|
||||
*/
|
||||
@Alias("ITEM_NAME")
|
||||
private String ITEM_NAME;
|
||||
|
||||
/**
|
||||
* 产品规格
|
||||
*/
|
||||
@Alias("ITEM_SPECIFICATION")
|
||||
private String ITEM_SPECIFICATION;
|
||||
|
||||
/**
|
||||
* 移入地, 仓库, 仓库编号
|
||||
*/
|
||||
@Alias("SOURCE_ID_WAREHOUSE_WAREHOUSE_CODE")
|
||||
private String SOURCE_ID_WAREHOUSE_WAREHOUSE_CODE;
|
||||
|
||||
/**
|
||||
* 移入地, 仓库, 组织类型, 公司
|
||||
*/
|
||||
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_COMPANY_COMPANY_CODE")
|
||||
private String SOURCE_ID_WAREHOUSE_Owner_Org_COMPANY_COMPANY_CODE;
|
||||
|
||||
/**
|
||||
* 移入地, 仓库, 组织类型, 销售
|
||||
*/
|
||||
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_SALES_CENTER_SALES_CENTER_CODE")
|
||||
private String SOURCE_ID_WAREHOUSE_Owner_Org_SALES_CENTER_SALES_CENTER_CODE;
|
||||
|
||||
/**
|
||||
* 移入地, 仓库, 组织类型, 采购
|
||||
*/
|
||||
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_SUPPLY_CENTER_SUPPLY_CENTER_CODE")
|
||||
private String SOURCE_ID_WAREHOUSE_Owner_Org_SUPPLY_CENTER_SUPPLY_CENTER_CODE;
|
||||
|
||||
/**
|
||||
* 移入地, 仓库, 组织类型, 营运
|
||||
*/
|
||||
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_OPERATION_CENTER_OPERATION_CENTER_CODE")
|
||||
private String SOURCE_ID_WAREHOUSE_Owner_Org_OPERATION_CENTER_OPERATION_CENTER_CODE;
|
||||
|
||||
/**
|
||||
* 移入地, 仓库, 组织类型, 工厂
|
||||
*/
|
||||
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_SHOP_SHOP_CODE")
|
||||
private String SOURCE_ID_WAREHOUSE_Owner_Org_SHOP_SHOP_CODE;
|
||||
|
||||
/**
|
||||
* 移入地, 仓库, 组织类型, 服务
|
||||
*/
|
||||
@Alias("SOURCE_ID_WAREHOUSE_Owner_Org_SERVICE_CENTER_SERVICE_CENTER_CODE")
|
||||
private String SOURCE_ID_WAREHOUSE_Owner_Org_SERVICE_CENTER_SERVICE_CENTER_CODE;
|
||||
|
||||
/**
|
||||
* 移出工序, 序号
|
||||
*/
|
||||
@Alias("FROM_MO_ROUTING_D_ID_SequenceNumber")
|
||||
private Integer FROM_MO_ROUTING_D_ID_SequenceNumber;
|
||||
|
||||
/**
|
||||
* 移出工序, 工单工艺信息, 工单号
|
||||
*/
|
||||
@Alias("FROM_MO_ROUTING_D_ID_Parent_MO_ID_DOC_NO")
|
||||
private String FROM_MO_ROUTING_D_ID_Parent_MO_ID_DOC_NO;
|
||||
}
|
||||
@@ -15,14 +15,5 @@ public interface IToErpService {
|
||||
|
||||
void callbackTransferBill();
|
||||
|
||||
|
||||
AjaxResult receiveMaterial(BasProduct basProduct);
|
||||
|
||||
AjaxResult receiveCustomer(BasCustomer basProduct);
|
||||
|
||||
AjaxResult receiveSupplier(BasSupplier basSupplier);
|
||||
|
||||
AjaxResult createWorkshopInboundOrder();
|
||||
|
||||
AjaxResult createOtherInOutboundOrder();
|
||||
AjaxResult createWorkshopInboundOrder(BasProduct basProduct);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,9 @@ package com.ruoyi.api.service.impl;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.ruoyi.api.domain.*;
|
||||
import com.ruoyi.api.domain.ErpResponse;
|
||||
import com.ruoyi.api.mapper.JobStatisticsMapper;
|
||||
import com.ruoyi.api.service.IJobStatisticsService;
|
||||
import com.ruoyi.api.service.IToErpService;
|
||||
@@ -12,6 +15,7 @@ import com.ruoyi.bas.BasProduct.domain.BasProduct;
|
||||
import com.ruoyi.bas.BasProduct.service.IBasProductService;
|
||||
import com.ruoyi.bas.BasSupplier.domain.BasSupplier;
|
||||
import com.ruoyi.bas.BasSupplier.service.IBasSupplierService;
|
||||
import com.ruoyi.bas.basJobId.service.IBasJobIdService;
|
||||
import com.ruoyi.bas.cargoSpace.mapper.BasCargoSpaceMapper;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
@@ -19,6 +23,9 @@ import com.ruoyi.in.erp.domain.TransferBillCallback;
|
||||
import com.ruoyi.in.erp.service.ITransferBillCallbackService;
|
||||
import com.ruoyi.job.mydojob.domain.MydoJob;
|
||||
import com.ruoyi.job.mydojob.mapper.MydoJobMapper;
|
||||
import com.ruoyi.job.mydojob.service.IMydoJobService;
|
||||
import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail;
|
||||
import com.ruoyi.job.mydojobdetail.service.IMydoJobDetailService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -30,16 +37,22 @@ import java.util.*;
|
||||
@Service
|
||||
public class ToErpServiceImpl implements IToErpService {
|
||||
|
||||
@Autowired
|
||||
private IBasProductService basProductService;
|
||||
|
||||
@Autowired
|
||||
private IBasSupplierService basSupplierService;
|
||||
|
||||
@Autowired
|
||||
private IBasCustomerService basCustomerService;
|
||||
@Autowired
|
||||
private ITransferBillCallbackService transferBillCallbackService;
|
||||
@Autowired
|
||||
private IMydoJobService mydoJobService;
|
||||
@Autowired
|
||||
private IMydoJobDetailService mydoJobDetailService;
|
||||
|
||||
@Autowired
|
||||
private IBasJobIdService basJobIdService;
|
||||
|
||||
private static final String TO_ERP_URL = "http://192.168.1.100:8080/api/";
|
||||
|
||||
//todo 需要调试
|
||||
private static final String WORKSHOP_INBOUND_ORDER_URL = TO_ERP_URL+"TRANSACTION_DOC";
|
||||
//todo 需要调试
|
||||
private static final String OTHER_IN_OUTBOUND_ORDER_URL = TO_ERP_URL+"WIP_TRANSFER_DOC";
|
||||
|
||||
|
||||
@Override
|
||||
@@ -49,7 +62,7 @@ public class ToErpServiceImpl implements IToErpService {
|
||||
List<TransferBillCallback> list = transferBillCallbackService.selectTransferBillCallbackList(param);
|
||||
for (TransferBillCallback transferBillCallback : list) {
|
||||
//todo 请求其他出入库单回传接口
|
||||
AjaxResult otherInOutboundOrder = createOtherInOutboundOrder();
|
||||
AjaxResult otherInOutboundOrder = createOtherInOutboundOrder(transferBillCallback);
|
||||
if (otherInOutboundOrder.isSuccess()){
|
||||
transferBillCallback.setStatus("1");
|
||||
transferBillCallback.setFinishTime(DateUtil.formatDateTime(new Date()));
|
||||
@@ -59,48 +72,90 @@ public class ToErpServiceImpl implements IToErpService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult receiveMaterial(BasProduct basProduct) {
|
||||
String productId = basProduct.getProductId();
|
||||
BasProduct oldProduct = basProductService.selectBasProductByProductId(productId);
|
||||
if (ObjUtil.isNotNull(oldProduct)){
|
||||
basProductService.updateBasProduct(basProduct);
|
||||
}else {
|
||||
basProductService.insertBasProduct(basProduct);
|
||||
public AjaxResult createWorkshopInboundOrder(BasProduct basProduct) {
|
||||
ErpInterfaceParam<WipTransferDoc> param = new ErpInterfaceParam<>();
|
||||
ErpStdData<WipTransferDoc> erpStdData = new ErpStdData<>();
|
||||
ErpParameter<WipTransferDoc> objectErpParameter = new ErpParameter<>();
|
||||
ArrayList<WipTransferDocD> list = new ArrayList<WipTransferDocD>();
|
||||
WipTransferDoc wipTransferDoc = new WipTransferDoc();
|
||||
wipTransferDoc.setDOC_NO(basJobIdService.getJobId("5C21"));
|
||||
wipTransferDoc.setDOC_ID_DOC_CODE("5C21");
|
||||
|
||||
WipTransferDocD wipTransferDocD = new WipTransferDocD();
|
||||
wipTransferDocD.setMO_ID_DOC_NO(basJobIdService.getJobId("5C21"));
|
||||
wipTransferDocD.setQTY("1");
|
||||
wipTransferDocD.setITEM_ID_ITEM_CODE(DateUtil.formatDateTime(new Date()));
|
||||
wipTransferDocD.setITEM_NAME(basProduct.getProductName());
|
||||
wipTransferDocD.setITEM_SPECIFICATION(basProduct.getSpec());
|
||||
wipTransferDocD.setSOURCE_ID_WAREHOUSE_WAREHOUSE_CODE("Z251");
|
||||
wipTransferDocD.setFROM_MO_ROUTING_D_ID_SequenceNumber(1);
|
||||
list.add(wipTransferDocD);
|
||||
wipTransferDoc.setWIP_TRANSFER_DOC_D(list);
|
||||
objectErpParameter.setDatas(List.of(wipTransferDoc));
|
||||
erpStdData.setParameter(objectErpParameter);
|
||||
param.setStd_data(erpStdData);
|
||||
String post = HttpUtil.post(OTHER_IN_OUTBOUND_ORDER_URL, JSONUtil.toJsonStr(param));
|
||||
ErpInterfaceParam bean = JSONUtil.toBean(post, ErpInterfaceParam.class);
|
||||
if ("0".equals(bean.getStd_data().getExecution().getCode())) {
|
||||
return AjaxResult.success();
|
||||
}
|
||||
return AjaxResult.success();
|
||||
return AjaxResult.error();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult receiveCustomer(BasCustomer basCustomer) {
|
||||
String customerNo = basCustomer.getId();
|
||||
BasCustomer oldCustomer = basCustomerService.selectBasCustomerById(customerNo);
|
||||
if (ObjUtil.isNotNull(oldCustomer)){
|
||||
basCustomerService.updateBasCustomer(basCustomer);
|
||||
|
||||
public AjaxResult createOtherInOutboundOrder(TransferBillCallback transferBillCallback) {
|
||||
ErpInterfaceParam<ErpInOutBoundOrder> param = new ErpInterfaceParam<>();
|
||||
ErpStdData<ErpInOutBoundOrder> erpStdData = new ErpStdData<>();
|
||||
ErpParameter<ErpInOutBoundOrder> objectErpParameter = new ErpParameter<>();
|
||||
ArrayList<ErpInOutBoundOrder> list = new ArrayList<ErpInOutBoundOrder>();
|
||||
ErpInOutBoundOrder erpInOutBoundOrder = new ErpInOutBoundOrder();
|
||||
String docNo = "";
|
||||
String docIdDocCode = "";
|
||||
if ("1".equals(transferBillCallback.getType())){
|
||||
docNo = basJobIdService.getJobId("11T1");
|
||||
docIdDocCode = "11T1";
|
||||
}else {
|
||||
basCustomerService.insertBasCustomer(basCustomer);
|
||||
docNo = basJobIdService.getJobId("11T2");
|
||||
docIdDocCode = "11T2";
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult receiveSupplier(BasSupplier basSupplier) {
|
||||
String supplierNo = basSupplier.getId();
|
||||
BasSupplier oldSupplier = basSupplierService.selectBasSupplierById(supplierNo);
|
||||
if (ObjUtil.isNotNull(oldSupplier)){
|
||||
basSupplierService.updateBasSupplier(basSupplier);
|
||||
}else {
|
||||
basSupplierService.insertBasSupplier(basSupplier);
|
||||
erpInOutBoundOrder.setDOC_NO(docNo);
|
||||
erpInOutBoundOrder.setDOC_ID_DOC_CODE(docIdDocCode);
|
||||
erpInOutBoundOrder.setDOC_ID_Owner_Org_PLANT_CODR("B0801");
|
||||
erpInOutBoundOrder.setDOC_DATE(DateUtil.formatDateTime(new Date()));
|
||||
erpInOutBoundOrder.setTRANSACTION_DATE(DateUtil.formatDateTime(new Date()));
|
||||
erpInOutBoundOrder.setOwner_Emp_EMPLOYEE_CODE("");
|
||||
erpInOutBoundOrder.setOwner_Org_PLANT_PLANT_CODE("B0801");
|
||||
erpInOutBoundOrder.setApproveStatus("N");
|
||||
erpInOutBoundOrder.setCATEGORY("11");
|
||||
erpInOutBoundOrder.setCOMPANY_ID_COMPANY_CODE("B08");
|
||||
erpInOutBoundOrder.setOwner_Dept_ADMIN_UNIT_CODE("");
|
||||
erpInOutBoundOrder.setSTOCK_ACTION(1);
|
||||
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByJobId(transferBillCallback.getJobId());
|
||||
ArrayList<ErpTransactionDocD> erpTransactionDocDS = new ArrayList<>();
|
||||
for (int i = 0; i < mydoJobDetails.size(); i++) {
|
||||
MydoJobDetail mydoJobDetail = mydoJobDetails.get(i);
|
||||
ErpTransactionDocD erpTransactionDocD = new ErpTransactionDocD();
|
||||
erpTransactionDocD.setSequenceNumber(i+1);
|
||||
erpTransactionDocD.setITEM_ID_ITEM_CODE(mydoJobDetail.getProductId());
|
||||
erpTransactionDocD.setITEM_DESCRIPTION(mydoJobDetail.getProductName());
|
||||
erpTransactionDocD.setITEM_SPECIFICATION(mydoJobDetail.getSpec());
|
||||
erpTransactionDocD.setBUSINESS_QTY(1.0);
|
||||
erpTransactionDocD.setWAREHOUSE_ID_WAREHOUSE_CODE("");
|
||||
erpTransactionDocD.setWAREHOUSE_ID_Owner_Org_PLANT_PLANT_CODE("");
|
||||
erpTransactionDocD.setBUSINESS_UNIT_ID_UNIT_CODE("");
|
||||
erpTransactionDocD.setGENERATE_SOURCE("");
|
||||
erpTransactionDocDS.add(erpTransactionDocD);
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult createWorkshopInboundOrder() {
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult createOtherInOutboundOrder() {
|
||||
return AjaxResult.success();
|
||||
erpInOutBoundOrder.setTRANSACTION_DOC_D(erpTransactionDocDS);
|
||||
list.add(erpInOutBoundOrder);
|
||||
objectErpParameter.setDatas(list);
|
||||
erpStdData.setParameter(objectErpParameter);
|
||||
param.setStd_data(erpStdData);
|
||||
String post = HttpUtil.post(OTHER_IN_OUTBOUND_ORDER_URL, JSONUtil.toJsonStr(param));
|
||||
ErpInterfaceParam bean = JSONUtil.toBean(post, ErpInterfaceParam.class);
|
||||
if ("0".equals(bean.getStd_data().getExecution().getCode())) {
|
||||
return AjaxResult.success();
|
||||
}
|
||||
return AjaxResult.error();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,12 +145,10 @@ public class ToWmsServiceImpl implements IToWmsService {
|
||||
return new AjaxResult(4, "托盘大小不匹配");
|
||||
}
|
||||
|
||||
|
||||
String inOrOutType = null;
|
||||
String inStockId = null;
|
||||
String inStockDetailId = null;
|
||||
//创建作业标准
|
||||
boolean flag = false;
|
||||
if ("1".equals(requestEnter.getFloor())) {
|
||||
//一楼入库 其它入库 和 退料入库 存在单据,需要修改单据数量
|
||||
InStockin inStockinParam = new InStockin();
|
||||
@@ -178,95 +176,94 @@ public class ToWmsServiceImpl implements IToWmsService {
|
||||
inStockinDetail.setScanNum(Convert.toStr(Convert.toBigDecimal(inStockinDetail.getScanNum()).add(Convert.toBigDecimal(1))));
|
||||
inStockinDetailService.updateInStockinDetail(inStockinDetail);
|
||||
|
||||
flag = true;
|
||||
} else if ("2".equals(requestEnter.getFloor())){
|
||||
|
||||
}else if ("2".equals(requestEnter.getFloor())) {
|
||||
inOrOutType = "1";
|
||||
//todo 创建工艺入库单
|
||||
AjaxResult workshopInboundOrder = toErpService.createWorkshopInboundOrder();
|
||||
if (workshopInboundOrder.isSuccess()){
|
||||
flag = true;
|
||||
}
|
||||
//生成作业
|
||||
MydoJob mydoJob = new MydoJob();
|
||||
mydoJob.setStatus("1");
|
||||
mydoJob.setInOrOut(inOrOutType);
|
||||
mydoJob.setExecutionPhase("1");
|
||||
mydoJob.setTrayCode(basJobIdService.getJobId("TP"));
|
||||
mydoJob.setWarehouseId("01");
|
||||
mydoJob.setRoadwayId(getRoadway(size));
|
||||
mydoJob.setLineId(erpBill);
|
||||
BasRoadway basRoadway = basRoadwayService.selectBasRoadwayById(mydoJob.getRoadwayId());
|
||||
if ("1".equals(requestEnter.getFloor())) {
|
||||
if ("Y".equals(basRoadway.getInLocked())) {
|
||||
return new AjaxResult(6, "巷道已锁");
|
||||
}
|
||||
} else {
|
||||
if ("Y".equals(basRoadway.getInLocked2())) {
|
||||
return new AjaxResult(6, "巷道已锁");
|
||||
}
|
||||
}
|
||||
|
||||
if (flag){
|
||||
//生成作业
|
||||
MydoJob mydoJob = new MydoJob();
|
||||
mydoJob.setStatus("1");
|
||||
mydoJob.setInOrOut(inOrOutType);
|
||||
mydoJob.setExecutionPhase("1");
|
||||
mydoJob.setTrayCode(basJobIdService.getJobId("TP"));
|
||||
mydoJob.setWarehouseId("01");
|
||||
mydoJob.setRoadwayId(getRoadway(size));
|
||||
mydoJob.setLineId(erpBill);
|
||||
BasRoadway basRoadway = basRoadwayService.selectBasRoadwayById(mydoJob.getRoadwayId());
|
||||
if ("1".equals(requestEnter.getFloor())) {
|
||||
if ("Y".equals(basRoadway.getInLocked())) {
|
||||
return new AjaxResult(6, "巷道已锁");
|
||||
}
|
||||
} else {
|
||||
if ("Y".equals(basRoadway.getInLocked2())) {
|
||||
return new AjaxResult(6, "巷道已锁");
|
||||
}
|
||||
}
|
||||
|
||||
//根据巷道查找货位
|
||||
BasCargoSpace basCargoSpaceParam = new BasCargoSpace();
|
||||
basCargoSpaceParam.setWarehouseId(mydoJob.getWarehouseId());
|
||||
basCargoSpaceParam.setRoadwayId(mydoJob.getRoadwayId());
|
||||
BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam);
|
||||
if (ObjUtil.isNull(basCargoSpace)) {
|
||||
return new AjaxResult(5, "没有货位");
|
||||
}
|
||||
mydoJob.setCargoSpaceId(basCargoSpace.getCargoSpaceId());
|
||||
mydoJob.setEntranceId(requestEnter.getEntranceId());
|
||||
mydoJob.setClassId(requestEnter.getFloor());
|
||||
mydoJobService.insertMydoJob(mydoJob);
|
||||
|
||||
//生成子作业
|
||||
MydoJobDetail mydoJobDetail = new MydoJobDetail();
|
||||
mydoJobDetail.setJobDetailId(mydoJob.getJobId() + "-1");
|
||||
mydoJobDetail.setJobId(mydoJob.getJobId());
|
||||
mydoJobDetail.setCreateTime(new Date());
|
||||
mydoJobDetail.setProductGuid(basProduct.getProductGuid());
|
||||
mydoJobDetail.setProductId(basProduct.getProductId());
|
||||
mydoJobDetail.setInQuantity("1");
|
||||
mydoJobDetail.setSpare1(xh);
|
||||
mydoJobDetail.setSpare2(nw);
|
||||
mydoJobDetail.setSpare3(color);
|
||||
mydoJobDetail.setSpare4(xlh);
|
||||
mydoJobDetail.setSpare5(v);
|
||||
mydoJobDetail.setSpare6(hz);
|
||||
mydoJobDetail.setSpare7(ph);
|
||||
mydoJobDetail.setSpare8(gw);
|
||||
mydoJobDetail.setSpare9(fx);
|
||||
mydoJobDetail.setUnit(jx);
|
||||
mydoJobDetail.setSpec(basProduct.getSpec());
|
||||
mydoJobDetail.setInOrOutId(inStockId);
|
||||
mydoJobDetail.setInOrOutDId(inStockDetailId);
|
||||
mydoJobDetail.setStockinId(inStockId);
|
||||
mydoJobDetailService.insertMydoJobDetail(mydoJobDetail);
|
||||
|
||||
//修改货位状态
|
||||
basCargoSpace.setStatus("3");
|
||||
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
|
||||
//type=1是手持机调用
|
||||
if (!"1".equals(requestEnter.getType())) {
|
||||
mydoJob.setStatus("3");
|
||||
mydoJobService.updateMydoJob(mydoJob);
|
||||
}
|
||||
//修改作业状态为正执行
|
||||
result.put("jobId", mydoJob.getJobId());
|
||||
result.put("taskNo", mydoJob.getTaskNo());
|
||||
result.put("cargoSpaceId", mydoJob.getCargoSpaceId());
|
||||
result.put("roadwayId", mydoJob.getRoadwayId());
|
||||
result.put("entranceId", mydoJob.getEntranceId());
|
||||
result.put("inOrOut", mydoJob.getInOrOut());
|
||||
|
||||
return AjaxResult.success(result);
|
||||
}else {
|
||||
return new AjaxResult(7,"生成工艺单失败");
|
||||
//根据巷道查找货位
|
||||
BasCargoSpace basCargoSpaceParam = new BasCargoSpace();
|
||||
basCargoSpaceParam.setWarehouseId(mydoJob.getWarehouseId());
|
||||
basCargoSpaceParam.setRoadwayId(mydoJob.getRoadwayId());
|
||||
BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam);
|
||||
if (ObjUtil.isNull(basCargoSpace)) {
|
||||
return new AjaxResult(5, "没有货位");
|
||||
}
|
||||
mydoJob.setCargoSpaceId(basCargoSpace.getCargoSpaceId());
|
||||
mydoJob.setEntranceId(requestEnter.getEntranceId());
|
||||
mydoJob.setClassId(requestEnter.getFloor());
|
||||
mydoJobService.insertMydoJob(mydoJob);
|
||||
|
||||
//生成子作业
|
||||
MydoJobDetail mydoJobDetail = new MydoJobDetail();
|
||||
mydoJobDetail.setJobDetailId(mydoJob.getJobId() + "-1");
|
||||
mydoJobDetail.setJobId(mydoJob.getJobId());
|
||||
mydoJobDetail.setCreateTime(new Date());
|
||||
mydoJobDetail.setProductGuid(basProduct.getProductGuid());
|
||||
mydoJobDetail.setProductId(basProduct.getProductId());
|
||||
mydoJobDetail.setInQuantity("1");
|
||||
mydoJobDetail.setSpare1(xh);
|
||||
mydoJobDetail.setSpare2(nw);
|
||||
mydoJobDetail.setSpare3(color);
|
||||
mydoJobDetail.setSpare4(xlh);
|
||||
mydoJobDetail.setSpare5(v);
|
||||
mydoJobDetail.setSpare6(hz);
|
||||
mydoJobDetail.setSpare7(ph);
|
||||
mydoJobDetail.setSpare8(gw);
|
||||
mydoJobDetail.setSpare9(fx);
|
||||
mydoJobDetail.setUnit(jx);
|
||||
mydoJobDetail.setSpec(basProduct.getSpec());
|
||||
mydoJobDetail.setInOrOutId(inStockId);
|
||||
mydoJobDetail.setInOrOutDId(inStockDetailId);
|
||||
mydoJobDetail.setStockinId(inStockId);
|
||||
mydoJobDetailService.insertMydoJobDetail(mydoJobDetail);
|
||||
|
||||
//修改货位状态
|
||||
basCargoSpace.setStatus("3");
|
||||
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
|
||||
//type=1是手持机调用
|
||||
if (!"1".equals(requestEnter.getType())) {
|
||||
mydoJob.setStatus("3");
|
||||
mydoJobService.updateMydoJob(mydoJob);
|
||||
}
|
||||
|
||||
//todo 创建工艺入库单
|
||||
if ("2".equals(requestEnter.getFloor())){
|
||||
AjaxResult workshopInboundOrder = toErpService.createWorkshopInboundOrder(basProduct);
|
||||
if (!workshopInboundOrder.isSuccess()){
|
||||
throw new RuntimeException("创建工单失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//修改作业状态为正执行
|
||||
result.put("jobId", mydoJob.getJobId());
|
||||
result.put("taskNo", mydoJob.getTaskNo());
|
||||
result.put("cargoSpaceId", mydoJob.getCargoSpaceId());
|
||||
result.put("roadwayId", mydoJob.getRoadwayId());
|
||||
result.put("entranceId", mydoJob.getEntranceId());
|
||||
result.put("inOrOut", mydoJob.getInOrOut());
|
||||
|
||||
return AjaxResult.success(result);
|
||||
}
|
||||
|
||||
private String getRoadway(int size) {
|
||||
|
||||
Reference in New Issue
Block a user