From 2885ba7323e12dbf91f2b5605a1ff8b2c909b56a Mon Sep 17 00:00:00 2001 From: liuhanqing Date: Fri, 12 Dec 2025 10:29:04 +0800 Subject: [PATCH] =?UTF-8?q?feat(erp):=20=E6=96=B0=E5=A2=9EERP=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=AF=B9=E6=8E=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增ErpExecution、ErpInOutBoundOrder等多个ERP实体类 - 修改IToErpService接口,调整createWorkshopInboundOrder方法参数 - 重构ToErpServiceImpl实现类,完善车间入库单和其它出入库单逻辑 - 新增WipTransferDoc及WipTransferDocD等工单转移相关实体类 - 调整ToWmsServiceImpl中二楼入库创建工艺单的调用方式 - 完善ERP接口请求URL配置及数据封装处理 - 优化作业生成流程中的异常处理机制 --- .../com/ruoyi/api/domain/ErpExecution.java | 16 ++ .../ruoyi/api/domain/ErpInOutBoundOrder.java | 54 ++++++ .../ruoyi/api/domain/ErpInterfaceParam.java | 15 ++ .../com/ruoyi/api/domain/ErpParameter.java | 17 ++ .../java/com/ruoyi/api/domain/ErpResult.java | 13 ++ .../java/com/ruoyi/api/domain/ErpStdData.java | 15 ++ .../java/com/ruoyi/api/domain/ErpSuccess.java | 15 ++ .../ruoyi/api/domain/ErpTransactionDocD.java | 39 ++++ .../com/ruoyi/api/domain/WipTransferDoc.java | 82 +++++++++ .../com/ruoyi/api/domain/WipTransferDocD.java | 110 ++++++++++++ .../com/ruoyi/api/service/IToErpService.java | 11 +- .../api/service/impl/ToErpServiceImpl.java | 147 ++++++++++----- .../api/service/impl/ToWmsServiceImpl.java | 169 +++++++++--------- 13 files changed, 561 insertions(+), 142 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpExecution.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpInOutBoundOrder.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpInterfaceParam.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpParameter.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpResult.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpStdData.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpSuccess.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpTransactionDocD.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/api/domain/WipTransferDoc.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/api/domain/WipTransferDocD.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpExecution.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpExecution.java new file mode 100644 index 0000000..310a311 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpExecution.java @@ -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; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpInOutBoundOrder.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpInOutBoundOrder.java new file mode 100644 index 0000000..7308b87 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpInOutBoundOrder.java @@ -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 TRANSACTION_DOC_D; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpInterfaceParam.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpInterfaceParam.java new file mode 100644 index 0000000..5188a34 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpInterfaceParam.java @@ -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 { + + @Alias("std_data") + private ErpStdData std_data; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpParameter.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpParameter.java new file mode 100644 index 0000000..fb0b636 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpParameter.java @@ -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 { + + private List datas; + + private ErpResult result; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpResult.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpResult.java new file mode 100644 index 0000000..53bb4d9 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpResult.java @@ -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; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpStdData.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpStdData.java new file mode 100644 index 0000000..3b90143 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpStdData.java @@ -0,0 +1,15 @@ +package com.ruoyi.api.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ErpStdData { + + private ErpExecution execution; + private ErpParameter parameter; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpSuccess.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpSuccess.java new file mode 100644 index 0000000..be7cc3a --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpSuccess.java @@ -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; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpTransactionDocD.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpTransactionDocD.java new file mode 100644 index 0000000..989686d --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/ErpTransactionDocD.java @@ -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; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/WipTransferDoc.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/WipTransferDoc.java new file mode 100644 index 0000000..1886411 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/WipTransferDoc.java @@ -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 WIP_TRANSFER_DOC_D; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/WipTransferDocD.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/WipTransferDocD.java new file mode 100644 index 0000000..3a0e5ae --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/WipTransferDocD.java @@ -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; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java index 551c00c..b8a796b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IToErpService.java @@ -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); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java index 9617cb1..126981f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToErpServiceImpl.java @@ -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 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 param = new ErpInterfaceParam<>(); + ErpStdData erpStdData = new ErpStdData<>(); + ErpParameter objectErpParameter = new ErpParameter<>(); + ArrayList list = new ArrayList(); + 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 param = new ErpInterfaceParam<>(); + ErpStdData erpStdData = new ErpStdData<>(); + ErpParameter objectErpParameter = new ErpParameter<>(); + ArrayList list = new ArrayList(); + 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 mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByJobId(transferBillCallback.getJobId()); + ArrayList 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(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java index a625fe0..f1ebd1a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWmsServiceImpl.java @@ -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) {