From 1f31239adba925178653dd44c7c6aa5fe3fd44ee Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Wed, 29 Nov 2023 17:31:06 +0800 Subject: [PATCH] =?UTF-8?q?sap=E6=8E=A5=E5=8F=A3=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/op/system/api/RemoteSapService.java | 2 +- .../domain/mes/MesReportWorkConsumeDTO.java | 197 ++++++++++++++++++ .../api/domain/sap}/SapCloseOrderQuery.java | 2 +- .../api/factory/RemoteSapFallbackFactory.java | 2 +- .../service/impl/IWCInterfaceServiceImpl.java | 54 +++-- .../java/com/op/open/mapper/OpenMapper.java | 3 + .../op/open/service/impl/OpenServiceImpl.java | 48 +++-- .../main/resources/mapper/open/OpenMapper.xml | 9 + .../impl/ProOrderWorkorderServiceImpl.java | 41 ++-- .../com/op/sap/service/SapOrderService.java | 2 +- .../sap/service/impl/SapOrderServiceImpl.java | 2 +- 11 files changed, 302 insertions(+), 60 deletions(-) create mode 100644 op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/MesReportWorkConsumeDTO.java rename {op-modules/op-sap/src/main/java/com/op/sap/domain/vo => op-api/op-api-system/src/main/java/com/op/system/api/domain/sap}/SapCloseOrderQuery.java (91%) diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java index 6b8d2a27d..7c1c73cff 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java @@ -40,7 +40,7 @@ public interface RemoteSapService { /**关闭订单**/ @PostMapping("/sap/sapCloseOrder") - public R sapCloseOrder(@RequestParam("shopOrder") String shopOrder); + public R sapCloseOrder(@RequestBody SapCloseOrderQuery sapCloseOrderQuery); /**报工**/ @PostMapping("/sap/sapRFWOrder") diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/MesReportWorkConsumeDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/MesReportWorkConsumeDTO.java new file mode 100644 index 000000000..abfbf4cf5 --- /dev/null +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/MesReportWorkConsumeDTO.java @@ -0,0 +1,197 @@ +package com.op.system.api.domain.mes; + +import com.op.common.core.annotation.Excel; +import com.op.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 生产报工物料消耗对象 mes_report_work_consume + * + * @author Open Platform + * @date 2023-08-24 + */ +public class MesReportWorkConsumeDTO extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** id */ + private String recordId; + + /** 工单编码 */ + @Excel(name = "工单编码") + private String workorderCode; + + /** 物料编号 */ + @Excel(name = "物料编号") + private String materialCode; + + /** 物料名称 */ + @Excel(name = "物料名称") + private String materialName; + + /** 物料规格型号 */ + @Excel(name = "物料规格型号") + private String materialSpc; + + /** 数量 */ + @Excel(name = "数量") + private Long quantity; + + /** 单位 */ + @Excel(name = "单位") + private String unit; + + /** 预留字段1 */ + @Excel(name = "预留字段1") + private String attr1; + + /** 预留字段2 */ + @Excel(name = "预留字段2") + private String attr2; + + /** 预留字段3 */ + @Excel(name = "预留字段3") + private String attr3; + + /** 预留字段4 */ + @Excel(name = "预留字段4") + private String attr4; + + /** 工厂编码 */ + @Excel(name = "工厂编码") + private String factoryCode; + + /** 工厂编码 */ + @Excel(name = "报工编码") + private String reportCode; + + //虚拟字段 + private String id; + + public void setRecordId(String recordId) { + this.recordId = recordId; + } + + public String getRecordId() { + return recordId; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + public String getWorkorderCode() { + return workorderCode; + } + + public void setReportCode(String reportCode) { + this.reportCode = reportCode; + } + public String getReportCode() { + return reportCode; + } + + public void setMaterialCode(String materialCode) { + this.materialCode = materialCode; + } + + public String getMaterialCode() { + return materialCode; + } + public void setMaterialName(String materialName) { + this.materialName = materialName; + } + + public String getMaterialName() { + return materialName; + } + public void setMaterialSpc(String materialSpc) { + this.materialSpc = materialSpc; + } + + public String getMaterialSpc() { + return materialSpc; + } + public void setQuantity(Long quantity) { + this.quantity = quantity; + } + + public Long getQuantity() { + return quantity; + } + public void setUnit(String unit) { + this.unit = unit; + } + + public String getUnit() { + return unit; + } + public void setAttr1(String attr1) { + this.attr1 = attr1; + } + + public String getAttr1() { + return attr1; + } + public void setAttr2(String attr2) { + this.attr2 = attr2; + } + + public String getAttr2() { + return attr2; + } + public void setAttr3(String attr3) { + this.attr3 = attr3; + } + + public String getAttr3() { + return attr3; + } + public void setAttr4(String attr4) { + this.attr4 = attr4; + } + + public String getAttr4() { + return attr4; + } + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + public String getFactoryCode() { + return factoryCode; + } + + //虚拟字段 + public void setId(String factoryCode) { + this.id = id; + } + + public String getId() { + return id; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("recordId", getRecordId()) + .append("id", getId()) + .append("reportCode", getReportCode()) + .append("workorderCode", getWorkorderCode()) + .append("materialCode", getMaterialCode()) + .append("materialName", getMaterialName()) + .append("materialSpc", getMaterialSpc()) + .append("quantity", getQuantity()) + .append("unit", getUnit()) + .append("remark", getRemark()) + .append("attr1", getAttr1()) + .append("attr2", getAttr2()) + .append("attr3", getAttr3()) + .append("attr4", getAttr4()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("factoryCode", getFactoryCode()) + .toString(); + } +} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapCloseOrderQuery.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapCloseOrderQuery.java similarity index 91% rename from op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapCloseOrderQuery.java rename to op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapCloseOrderQuery.java index effeb1182..f051c15a8 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapCloseOrderQuery.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapCloseOrderQuery.java @@ -1,4 +1,4 @@ -package com.op.sap.domain.vo; +package com.op.system.api.domain.sap; public class SapCloseOrderQuery { diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java index fb002c675..6f90361cd 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java @@ -40,7 +40,7 @@ public class RemoteSapFallbackFactory implements FallbackFactory lt_hwList =new ArrayList<>(); - SapRFW.lt_hw lthw = sapRFW.new lt_hw();//MES生产订单报工货物移动修改 - lthw.setEntry_qnt(work.getQuantityFeedback().toString());//TODO; - lthw.setMaterial(work.getProcessCode()); - lt_hwList.add(lthw); + logger.info(work.getWorkorderCodeSap()+"母sap工单报工:报工数量"+sapRFW.getGamng()); + MesReportWorkConsume consumeqo = new MesReportWorkConsume(); + consumeqo.setWorkorderCode(work.getWorkorderCode()); + List consumes = mesReportWorkConsumeMapper.selectMesReportWorkConsumeList(consumeqo); + if(!CollectionUtils.isEmpty(consumes)){ + for(MesReportWorkConsume consume:consumes){ + logger.info(work.getWorkorderCodeSap()+"母sap工单报工:【原料损耗】"+ + consume.getMaterialCode()+"|"+consume.getQuantity()); + SapRFW.lt_hw lthw = sapRFW.new lt_hw();//MES生产订单报工货物移动修改 + lthw.setEntry_qnt(consume.getQuantity()+"");//数量 + lthw.setMaterial(consume.getMaterialCode());//物料编码 + lt_hwList.add(lthw); + } + }else{ + logger.info(work.getWorkorderCodeSap()+"母sap工单报工:工单"+work.getWorkorderCode()+"mes_report_work_consume没有数据"); + return R.fail("mes_report_work_consume没有数据"); + } sapRFW.setLt_hwList(lt_hwList); - //添加调用sap日志 - SysSapLog sysSapLog = new SysSapLog(); - sysSapLog.setId(IdUtils.fastSimpleUUID()); - sysSapLog.setMesssge(sapRFW.toString()); - sysSapLog.setMethod("reportWork"); - sysSapLog.setReqcode("请求"); - sysSapLog.setCreateTime(DateUtils.getNowDate()); - mesMapper.addSapLog(sysSapLog); R r = remoteSapService.sapRFWOrder(sapRFW); + logger.info(work.getWorkorderCodeSap()+"母sap工单报工结果:"+r.getCode()+","+r.getData()+","+r.getMsg()); //上传成功,更改mes_report_work状态 if (r.getCode() == 200) { work.setUploadStatus("1"); @@ -339,10 +347,16 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { logger.info("工单请求关闭:调用remoteSapService.sapCloseOrder,参数:"+work.getWorkorderCodeSap()); //工单完成,关闭工单 List sapWorkOrders = mesReportWorkMapper.getSapWorkOrder(work.getWorkorderCode());//根据belong_work_order找到所有要关闭的虚拟工单 - for(String sapWorkOrder:sapWorkOrders){ - R r2= remoteSapService.sapCloseOrder(sapWorkOrder); - logger.info("工单"+work.getWorkorderCode()+",sapworkorder:"+sapWorkOrder+",sap关闭"+r2.getCode()+",返回信息:"+r2.getMsg()); - } + //关闭母子订单//订单的订单编码 + SapCloseOrderQuery sapCloseOrderQuery = new SapCloseOrderQuery(); + sapCloseOrderQuery.setLeadOrder(sapWorkOrders.get(0)); + sapCloseOrderQuery.setOrder(sapWorkOrders.get(1)); + R closeR = remoteSapService.sapCloseOrder(sapCloseOrderQuery); + logger.info(work.getWorkorderCodeSap()+"报工后关闭母子工单"+sapCloseOrderQuery.getLeadOrder()+":"+ + sapCloseOrderQuery.getOrder()+":"+ + closeR.getCode()+","+ + closeR.getMsg()+","+ + closeR.getData()); work.setStatus("w3"); work.setUpdateTime(DateUtils.getNowDate()); diff --git a/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java b/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java index ab2138534..c7396d176 100644 --- a/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java +++ b/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java @@ -2,6 +2,7 @@ package com.op.open.mapper; import com.op.system.api.domain.SysSapLog; import com.op.system.api.domain.dto.WCSDTO; +import com.op.system.api.domain.mes.MesReportWorkConsumeDTO; import com.op.system.api.domain.mes.MesReportWorkDTO; import com.op.system.api.domain.mes.ProOrderWorkorderDTO; import com.op.system.api.domain.mes.ProRfidProcessDetail; @@ -43,5 +44,7 @@ public interface OpenMapper { List getLGInfo(WCSDTO wcsDTO); List getSapWorkOrder(String workorderCode); + + List selectMesReportWorkConsumeList(MesReportWorkConsumeDTO consumeqo); } diff --git a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java index 8383c9a4d..252f8d659 100644 --- a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java +++ b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java @@ -12,9 +12,11 @@ import com.op.system.api.RemoteSapService; import com.op.system.api.domain.SysSapLog; import com.op.system.api.domain.dto.WCSDTO; import com.op.system.api.domain.dto.WCSDataDTO; +import com.op.system.api.domain.mes.MesReportWorkConsumeDTO; import com.op.system.api.domain.mes.MesReportWorkDTO; import com.op.system.api.domain.mes.ProOrderWorkorderDTO; import com.op.system.api.domain.mes.ProRfidProcessDetail; +import com.op.system.api.domain.sap.SapCloseOrderQuery; import com.op.system.api.domain.sap.SapRFW; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; @@ -173,20 +175,28 @@ public class OpenServiceImpl implements OpenService { ltgs.setConf_activity5(work.getSac5());//折旧 ltgs.setConf_activity6(work.getSac6()); sapRFW.setLt_gs(ltgs); - SapRFW.lt_hw lthw = sapRFW.new lt_hw();//MES生产订单报工货物移动修改 - lthw.setEntry_qnt(work.getQuantityFeedback().toString());//TODO; - lthw.setMaterial(work.getProcessCode()); - sapRFW.setLt_hw(lthw); - //添加调用sap日志 - SysSapLog sysSapLog = new SysSapLog(); - sysSapLog.setId(IdUtils.fastSimpleUUID()); - sysSapLog.setMesssge(sapRFW.toString()); - sysSapLog.setMethod("reportWork"); - sysSapLog.setReqcode("请求"); - sysSapLog.setCreateTime(DateUtils.getNowDate()); - openMapper.addSapLog(sysSapLog); + List lt_hwList =new ArrayList<>(); + logger.info(work.getWorkorderCodeSap()+"母sap工单报工:报工数量"+sapRFW.getGamng()); + MesReportWorkConsumeDTO consumeqo = new MesReportWorkConsumeDTO(); + consumeqo.setWorkorderCode(work.getWorkorderCode()); + List consumes = openMapper.selectMesReportWorkConsumeList(consumeqo); + if(!CollectionUtils.isEmpty(consumes)){ + for(MesReportWorkConsumeDTO consume:consumes){ + logger.info(work.getWorkorderCodeSap()+"母sap工单报工:【原料损耗】"+ + consume.getMaterialCode()+"|"+consume.getQuantity()); + SapRFW.lt_hw lthw = sapRFW.new lt_hw();//MES生产订单报工货物移动修改 + lthw.setEntry_qnt(consume.getQuantity()+"");//数量 + lthw.setMaterial(consume.getMaterialCode());//物料编码 + lt_hwList.add(lthw); + } + }else{ + logger.info(work.getWorkorderCodeSap()+"母sap工单报工:工单"+work.getWorkorderCode()+"mes_report_work_consume没有数据"); + return R.fail("mes_report_work_consume没有数据"); + } + sapRFW.setLt_hwList(lt_hwList); R r = remoteSapService.sapRFWOrder(sapRFW); + logger.info(work.getWorkorderCodeSap()+"母sap工单报工结果:"+r.getCode()+","+r.getData()+","+r.getMsg()); //上传成功,更改mes_report_work状态 if (r.getCode() == 200) { work.setUploadStatus("1"); @@ -207,10 +217,16 @@ public class OpenServiceImpl implements OpenService { //工单完成,关闭母工单 List sapWorkOrders = openMapper.getSapWorkOrder(work.getWorkorderCode());//根据belong_work_order找到所有要关闭的虚拟工单 - for(String sapWorkOrder:sapWorkOrders){ - R rclose = remoteSapService.sapCloseOrder(sapWorkOrder); - logger.info("工单"+work.getWorkorderCode()+",sapworkorder:"+sapWorkOrder+",sap关闭"+rclose.getCode()+",返回信息:"+rclose.getMsg()); - } + //关闭母子订单//订单的订单编码 + SapCloseOrderQuery sapCloseOrderQuery = new SapCloseOrderQuery(); + sapCloseOrderQuery.setLeadOrder(sapWorkOrders.get(0)); + sapCloseOrderQuery.setOrder(sapWorkOrders.get(1)); + R closeR = remoteSapService.sapCloseOrder(sapCloseOrderQuery); + logger.info(work.getWorkorderCodeSap()+"下发工单后关闭母子工单"+sapCloseOrderQuery.getLeadOrder()+":"+ + sapCloseOrderQuery.getOrder()+":"+ + closeR.getCode()+","+ + closeR.getMsg()+","+ + closeR.getData()); work.setStatus("w3"); work.setUpdateTime(DateUtils.getNowDate()); //pro_work_order status->w3报工--belong_work_order diff --git a/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml b/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml index 40ab74cef..ec32eebf5 100644 --- a/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml +++ b/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml @@ -126,5 +126,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select workorder_code_sap from pro_order_workorder where belong_work_order = #{workorderCode} and del_flag = '0' + diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java index cf5d03ba0..9a00d021d 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java @@ -21,6 +21,7 @@ import com.op.system.api.RemoteSapService; import com.op.system.api.domain.SysSapLog; import com.op.system.api.domain.dto.MesPrepareDTO; import com.op.system.api.domain.dto.MesPrepareDetailDTO; +import com.op.system.api.domain.sap.SapCloseOrderQuery; import com.op.system.api.domain.sap.SapCreateOrder; import com.op.system.api.domain.sap.SapMaterialPreparation; import com.op.system.api.domain.sap.SapShopOrderQuery; @@ -306,14 +307,14 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { sapList.add(sap); //添加调用sap日志 - SysSapLog sysSapLog = new SysSapLog(); - sysSapLog.setId(IdUtils.fastSimpleUUID()); - sysSapLog.setMesssge(Arrays.asList(sapList).toString()); - sysSapLog.setMethod("downProOrderWorkorderByWorkorderIds"); - sysSapLog.setReqcode("请求"); - sysSapLog.setCreateTime(DateUtils.getNowDate()); - proOrderMapper.addSapLog(sysSapLog); - +// SysSapLog sysSapLog = new SysSapLog(); +// sysSapLog.setId(IdUtils.fastSimpleUUID()); +// sysSapLog.setMesssge(Arrays.asList(sapList).toString()); +// sysSapLog.setMethod("downProOrderWorkorderByWorkorderIds"); +// sysSapLog.setReqcode("请求"); +// sysSapLog.setCreateTime(DateUtils.getNowDate()); +// proOrderMapper.addSapLog(sysSapLog); + logger.info(whiteOrder.getWorkorderCode()+"sap工单回传sap虚拟工单号开始:"+Arrays.asList(sapList).toString()); R>> r = remoteSapService.SapCreateOrder(sapList); logger.info("sap工单回传:" + r.getMsg()); if (500 == r.getCode()) { @@ -328,7 +329,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { } Date updateTime = DateUtils.getNowDate(); if (!CollectionUtils.isEmpty(returnCodes)) { - logger.info("sap工单回传sap虚拟工单号:" + StringUtils.join(returnCodes, ",")); + logger.info("sap工单回传sap虚拟工单号结束:" + StringUtils.join(returnCodes, ",")); //按照母子顺序进行更新 for (int m=0;m