diff --git a/ABAP_AS_WITH_POOL.jcoDestination b/ABAP_AS_WITH_POOL.jcoDestination index 611139708..0917efa38 100644 --- a/ABAP_AS_WITH_POOL.jcoDestination +++ b/ABAP_AS_WITH_POOL.jcoDestination @@ -1,5 +1,5 @@ #for test only! -#Mon Nov 06 18:11:07 CST 2023 +#Wed Dec 13 13:57:23 CST 2023 jco.destination.pool_capacity=true jco.client.lang=zh jco.client.ashost=192.168.0.54 @@ -8,4 +8,4 @@ jco.client.user=MES jco.client.sysnr=0 jco.destination.peak_limit=20 jco.client.passwd=123456 -jco.client.client=800 +jco.client.client=600 diff --git a/dev_jco_rfc.trc b/dev_jco_rfc.trc new file mode 100644 index 000000000..afb113b4c --- /dev/null +++ b/dev_jco_rfc.trc @@ -0,0 +1,118 @@ + +**** Error file opened at 20231205 092106 China Standard Time Rel 3.0.8 (2011-11-28) [721.619] +Error: >Tue Dec 05 09:21:06,526< RfcException: [null] + message: Connect to SAP gateway failed +Connection parameters: TYPE=A DEST=ABAP_AS_WITH_POOL ASHOST=192.168.230.50 SYSNR=00 PCS=1 + +LOCATION CPIC (TCP/IP) on local host with Unicode +ERROR partner '192.168.230.50:3300' not reached +TIME Tue Dec 05 09:21:06 2023 +RELEASE 721 +COMPONENT NI (network interface) +VERSION 40 +RC -10 +MODULE nixxi.cpp +LINE 3283 +DETAIL NiPConnect2: 192.168.230.50:3300 +SYSTEM CALL connect +ERRNO 10060 +ERRNO TEXT WSAETIMEDOUT: Connection timed out +COUNTER 2 + + Return code: RFC_FAILURE(1) + error group: 102 + key: RFC_ERROR_COMMUNICATION + +Error: >Tue Dec 05 09:23:26,607< RfcException: [null] + message: Connect to SAP gateway failed +Connection parameters: TYPE=A DEST=ABAP_AS_WITH_POOL ASHOST=192.168.230.50 SYSNR=00 PCS=1 + +LOCATION CPIC (TCP/IP) on local host with Unicode +ERROR partner '192.168.230.50:3300' not reached +TIME Tue Dec 05 09:23:26 2023 +RELEASE 721 +COMPONENT NI (network interface) +VERSION 40 +RC -10 +MODULE nixxi.cpp +LINE 3283 +DETAIL NiPConnect2: 192.168.230.50:3300 +SYSTEM CALL connect +ERRNO 10060 +ERRNO TEXT WSAETIMEDOUT: Connection timed out +COUNTER 2 + + Return code: RFC_FAILURE(1) + error group: 102 + key: RFC_ERROR_COMMUNICATION + + +**** Error file opened at 20231205 100000 China Standard Time Rel 3.0.8 (2011-11-28) [721.619] +Error: >Tue Dec 05 10:00:00,058< >RfcGetException rc (7) message: 数值范围对象 ZMESPROID 不存在 +Tue Dec 05 10:01:14,955< >RfcGetException rc (7) message: 数值范围对象 ZMESPROID 不存在 +Fri Dec 08 16:46:50,007< >RfcGetException rc (7) message: ##.#####,#### +Fri Dec 08 16:49:21,354< >RfcGetException rc (7) message: ##.#####,#### +Fri Dec 08 16:51:02,041< >RfcGetException rc (7) message: ##.#####,#### +Mon Dec 11 15:17:21,694< >RfcGetException rc (7) message: ##.#####,#### +Mon Dec 11 16:00:16,825< RfcException: [DEV|erpdev] + message: connection closed without message (CM_NO_DATA_RECEIVED) + Return code: RFC_CLOSED(6) + error group: 102 + key: RFC_ERROR_COMMUNICATION +Exception raised by DEV|erpdev + + +**** Error file opened at 20231211 172940 China Standard Time Rel 3.0.8 (2011-11-28) [721.619] +Error: >Mon Dec 11 17:29:40,539< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . +Mon Dec 11 17:30:08,292< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . +Mon Dec 11 17:30:54,764< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . +Mon Dec 11 17:33:28,521< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . +Mon Dec 11 17:35:37,983< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . +Mon Dec 11 17:37:48,395< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . +Mon Dec 11 18:20:25,371< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . +Mon Dec 11 18:20:41,130< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . +Mon Dec 11 18:21:52,709< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . + sapBackflushMPQueryList); + + /**订单物料领料过账、原材料补料、订单物料退料过账接口(MB1A)**/ + public R sapMaterialPosting(@RequestBody List sapMaterialPostingList); + + /**智慧工厂储位信息*/ + @PostMapping("/sap/sapLgortInfo") + public R sapLgortInfo(@RequestBody(required = false) Map map); } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapBackflushMPQuery.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapBackflushMPQuery.java similarity index 98% rename from op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapBackflushMPQuery.java rename to op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapBackflushMPQuery.java index 7cc1e30b8..96bff342d 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapBackflushMPQuery.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapBackflushMPQuery.java @@ -1,4 +1,4 @@ -package com.op.sap.domain.vo; +package com.op.system.api.domain.sap; /** * 反冲类型的领料过账接口 diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapCloseOrderQuery.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapCloseOrderQuery.java index f051c15a8..11066d7bc 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapCloseOrderQuery.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapCloseOrderQuery.java @@ -20,4 +20,12 @@ public class SapCloseOrderQuery { public void setOrder(String order) { this.order = order; } + + @Override + public String toString() { + return "SapCloseOrderQuery{" + + "leadOrder='" + leadOrder + '\'' + + ", order='" + order + '\'' + + '}'; + } } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapCreateOrder.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapCreateOrder.java index 36c7ed9ce..358a19422 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapCreateOrder.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapCreateOrder.java @@ -5,16 +5,17 @@ package com.op.system.api.domain.sap; */ public class SapCreateOrder { + //计划工厂 private String werks; - + //订单类型 private String aufpar; - + //物料编号 private String matnr; - + //数量 private String quantity; - + //开始时间 private String dates; - + //完成时间 private String datee; @@ -66,6 +67,8 @@ public class SapCreateOrder { this.datee = datee; } + + // @NotNull(message = "计划工厂不能为空") // @NotBlank(message = "计划工厂不能为空") // @Size(min = 0, max = 4, message = "计划工厂长度不能超过4个字符") diff --git a/op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapMaterialPosting.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapMaterialPosting.java similarity index 60% rename from op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapMaterialPosting.java rename to op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapMaterialPosting.java index 078c47cc9..993e1c3f7 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapMaterialPosting.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapMaterialPosting.java @@ -1,16 +1,20 @@ -package com.op.sap.domain.vo; +package com.op.system.api.domain.sap; //智慧工厂-订单物料领料过账、原材料补料、订单物料退料过账(MB1A) /** - * AUFNR 订单号 - * BWART 移动类型 - * PLANT 工厂 - * LGORT 库存地点 - * MATNR 物料 - * QUANTITY 数量 - * MEINS 单位 - * BATCH 批号(可为空) + AUFNR CHAR 12 0 订单号 必填 + BWART CHAR 3 0 移动类型(库存管理) 必填 + PLANT CHAR 4 0 工厂 必填 + GL_ACCOUNT CHAR 10 0 总帐科目编号 选填 + COSTCENTER CHAR 10 0 成本中心 选填 + GR_RCPT CHAR 12 0 收货方/运达方 选填 + LGORT CHAR 4 0 库存地点 必填 + MATNR CHAR 18 0 物料号 必填 + QUANTITY QUAN 13 3 数量 必填 + MEINS UNIT 3 0 基本计量单位 必填 + BATCH CHAR 10 0 批号 选填 + */ public class SapMaterialPosting { @@ -24,12 +28,39 @@ public class SapMaterialPosting { private String aufnr; private String bwart; private String plant; + private String gl_account; + private String costcenter; + private String gr_rcpt; private String lgort; private String matnr; private String quantity; private String meins; private String batch; + public String getGl_account() { + return gl_account; + } + + public void setGl_account(String gl_account) { + this.gl_account = gl_account; + } + + public String getCostcenter() { + return costcenter; + } + + public void setCostcenter(String costcenter) { + this.costcenter = costcenter; + } + + public String getGr_rcpt() { + return gr_rcpt; + } + + public void setGr_rcpt(String gr_rcpt) { + this.gr_rcpt = gr_rcpt; + } + public String getAufnr() { return aufnr; } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapRouterQuery.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapRouterQuery.java index 7ca543c30..1d52b49f9 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapRouterQuery.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapRouterQuery.java @@ -52,4 +52,15 @@ public class SapRouterQuery { public void setAedat(String aedat) { this.aedat = aedat; } + + @Override + public String toString() { + return "SapRouterQuery{" + + "matnr='" + matnr + '\'' + + ", werks='" + werks + '\'' + + ", arbpl='" + arbpl + '\'' + + ", andat='" + andat + '\'' + + ", aedat='" + aedat + '\'' + + '}'; + } } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapShopOrderQuery.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapShopOrderQuery.java index 25e5d2b7c..3b9e0f502 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapShopOrderQuery.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapShopOrderQuery.java @@ -58,6 +58,6 @@ public class SapShopOrderQuery { return "{aufnr:"+":"+getAufnr()+","+ "matnr"+":"+getMatnr()+","+ "erdat"+":"+getErdat()+","+ - "erdat"+":"+getWerk()+"}"; + "werk"+":"+getWerk()+"}"; } } 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 6f90361cd..ab9a85ea0 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 @@ -79,6 +79,20 @@ public class RemoteSapFallbackFactory implements FallbackFactory sapBackflushMPQueryList) { + return R.fail("反冲物料领料过账失败" + throwable.getMessage()); + } + + @Override + public R sapMaterialPosting(List sapMaterialPostingList) { + return R.fail("订单物料领料过账、原材料补料、订单物料退料过账接口(MB1A)失败" + throwable.getMessage()); + } + + @Override + public R sapLgortInfo(Map map) { + return R.fail("储位仓库信息获取失败" + throwable.getMessage()); + } }; } diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquSpareApplyServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquSpareApplyServiceImpl.java index f9a85cd96..8e17be26e 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquSpareApplyServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquSpareApplyServiceImpl.java @@ -86,48 +86,44 @@ public class EquSpareApplyServiceImpl implements IEquSpareApplyService { @Override @DS("#header.poolName") public AjaxResult insertEquSpareApply(EquSpareApply equSpareApply) { - try { - //equSpareApply.getSpareApplyLists().size() 是在维修申领备件的时候进行的操作 批量新增 - if(equSpareApply.getSpareApplyLists().size() >= 1){ - List list = equSpareApply.getSpareApplyLists(); - for(EquSpareApply applyList:list){ - applyList.setApplyId(IdUtils.fastSimpleUUID()); - //生成领料单code //申领单号 - String serialNum = String.format("%03d", equSpareApplyMapper.selectSerialNumber()); - String code = DateUtils.dateTimeNow(DateUtils.YYYYMMDD) + applyList.getWorkCode().substring(2); - //申领单号 - equSpareApply.setApplyCode("AW" + code + serialNum); - //领用时间 - applyList.setApplyTime(DateUtils.getNowDate()); - //申领人 - applyList.setApplyPeople(SecurityUtils.getUsername()); - //工厂号 - HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - String key = "#header.poolName"; - applyList.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_","")); - //创建人、创建时间 - applyList.setCreateTime(DateUtils.getNowDate()); - applyList.setCreateBy(SecurityUtils.getUsername()); - equSpareApplyMapper.insertEquSpareApply(applyList); - //更新完备品申领单后,更新库存 - SparePartsLedger sparePartsLedger = new SparePartsLedger(); - sparePartsLedger.setStorageId(applyList.getStorageId()); - BigDecimal applyNum = applyList.getSpareQuantity(); - BigDecimal amount = applyList.getAmount(); - sparePartsLedger.setAmount(amount.subtract(applyNum)); - sparePartsLedgerMapper.updateSparePartsLedger(sparePartsLedger); + if(equSpareApply.getSpareApplyLists() != null){ + List list = equSpareApply.getSpareApplyLists(); + for(EquSpareApply applyList:list){ + applyList.setApplyId(IdUtils.fastSimpleUUID()); + String serialNum = String.format("%03d", equSpareApplyMapper.selectSerialNumber()); + if(applyList.getWorkCode() != null){ + String code = applyList.getWorkCode(); + applyList.setApplyCode("AW" + code.substring(2) + serialNum); } - }else{ + //领用时间 + applyList.setApplyTime(DateUtils.getNowDate()); + //申领人 + applyList.setApplyPeople(SecurityUtils.getUsername()); + //工厂号 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String key = "#header.poolName"; + applyList.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_","")); + //创建人、创建时间 + applyList.setCreateTime(DateUtils.getNowDate()); + applyList.setCreateBy(SecurityUtils.getUsername()); + equSpareApplyMapper.insertEquSpareApply(applyList); + //更新完备品申领单后,更新库存 + SparePartsLedger sparePartsLedger = new SparePartsLedger(); + sparePartsLedger.setStorageId(applyList.getStorageId()); + BigDecimal applyNum = applyList.getSpareQuantity(); + BigDecimal amount = applyList.getAmount(); + sparePartsLedger.setAmount(amount.subtract(applyNum)); + sparePartsLedgerMapper.updateSparePartsLedger(sparePartsLedger); + } + }else if(equSpareApply.getSpareApplyLists() == null){ equSpareApply.setApplyId(IdUtils.fastSimpleUUID()); String serialNum = String.format("%03d", equSpareApplyMapper.selectSerialNumber()); - if(equSpareApply.getWorkCode().length() == 12){ - //生成领料单code 十五位单号 - equSpareApply.setApplyCode("A" + equSpareApply.getWorkCode() + serialNum); - }else if(equSpareApply.getWorkCode().length() > 12){ - equSpareApply.setApplyCode("AW" + equSpareApply.getWorkCode().substring(2) + serialNum); - }else{ + if(equSpareApply.getWorkCode() != null){ + String code = equSpareApply.getWorkCode(); + equSpareApply.setApplyCode("AW" + code.substring(2) + serialNum); + } else{ //普通申领单 - equSpareApply.setApplyCode("AN" + DateUtils.dateTimeNow(DateUtils.YYYYMMDD) + equSpareApply.getSpareUseEquipment() + serialNum); + equSpareApply.setApplyCode("AW" + DateUtils.dateTimeNow(DateUtils.YYYYMMDD) + equSpareApply.getSpareUseEquipment() + serialNum); } //领用时间 equSpareApply.setApplyTime(DateUtils.getNowDate()); @@ -151,9 +147,6 @@ public class EquSpareApplyServiceImpl implements IEquSpareApplyService { sparePartsLedgerMapper.updateSparePartsLedger(sparePartsLedger); } return success("新增申领记录成功!"); - } catch (Exception e) { - return error(); - } } /** diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesPrepareDetailMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesPrepareDetailMapper.java index dcf271f2e..141e92581 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesPrepareDetailMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesPrepareDetailMapper.java @@ -67,8 +67,8 @@ public interface MesPrepareDetailMapper { /** * 通过主领料单id查询领料详情list - * @param prepareId + * @param workorderCode * @return */ - List selectPrintPrepareDetailList(String prepareId); + List selectPrintPrepareDetailList(String workorderCode); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesPrepareDetailServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesPrepareDetailServiceImpl.java index fe9e92508..c4f01a1aa 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesPrepareDetailServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesPrepareDetailServiceImpl.java @@ -16,7 +16,7 @@ import com.op.mes.service.IMesPrepareDetailService; /** * mes备料单明细Service业务层处理 - * + * * @author Open Platform * @date 2023-08-04 */ @@ -29,7 +29,7 @@ public class MesPrepareDetailServiceImpl implements IMesPrepareDetailService { /** * 查询mes备料单明细 - * + * * @param recordId mes备料单明细主键 * @return mes备料单明细 */ @@ -40,7 +40,7 @@ public class MesPrepareDetailServiceImpl implements IMesPrepareDetailService { /** * 查询mes备料单明细列表 - * + * * @param mesPrepareDetail mes备料单明细 * @return mes备料单明细 */ @@ -51,7 +51,7 @@ public class MesPrepareDetailServiceImpl implements IMesPrepareDetailService { /** * 新增mes备料单明细 - * + * * @param mesPrepareDetail mes备料单明细 * @return 结果 */ @@ -63,7 +63,7 @@ public class MesPrepareDetailServiceImpl implements IMesPrepareDetailService { /** * 修改mes备料单明细 - * + * * @param mesPrepareDetail mes备料单明细 * @return 结果 */ @@ -75,7 +75,7 @@ public class MesPrepareDetailServiceImpl implements IMesPrepareDetailService { /** * 批量删除mes备料单明细 - * + * * @param recordIds 需要删除的mes备料单明细主键 * @return 结果 */ @@ -86,7 +86,7 @@ public class MesPrepareDetailServiceImpl implements IMesPrepareDetailService { /** * 删除mes备料单明细信息 - * + * * @param recordId mes备料单明细主键 * @return 结果 */ @@ -103,7 +103,7 @@ public class MesPrepareDetailServiceImpl implements IMesPrepareDetailService { @DS("#header.poolName") public AjaxResult printPrepareByCode(String workorderCode) { MesPrepare mesPrepare = mesPrepareMapper.selectMesPrepareByCode(workorderCode); - List mesPrepareDetailList = mesPrepareDetailMapper.selectPrintPrepareDetailList(mesPrepare.getPrepareId()); + List mesPrepareDetailList = mesPrepareDetailMapper.selectPrintPrepareDetailList(workorderCode); PrintPrepareVo printPrepareVo = new PrintPrepareVo(); printPrepareVo.setMesPrepare(mesPrepare); printPrepareVo.setMesPrepareDetailList(mesPrepareDetailList); diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml index 80e2e6bc5..20656537f 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml @@ -8,7 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -63,12 +63,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where record_id = #{recordId} - + select + mp.workorder_name workorderCode, + mpd.material_code materialCode, + mpd.material_name materialName, + mpd.quantity, + mpd.unit, + mpd.status, + mpd.fund_quanlity fundQuanlity, + mpd.factory_code factoryCode, + ow.product_date productDate + from pro_order_workorder ow + left join mes_prepare mp on ow.workorder_code = mp.workorder_code + left join mes_prepare_detail mpd on mp.prepare_id = mpd.prepare_id + where ow.belong_work_order = #{workorderCode} + order by mp.workorder_name desc diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareMapper.xml index 9cfc64233..71e99649a 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareMapper.xml @@ -39,63 +39,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select prepare_id, workorder_code, workorder_name, parent_order, order_id, order_code, product_id, product_code, prod_type, product_name, product_spc, wet_detail_plan_id, product_date, shift_id, ancestors, status, remark, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time, factory_code, material_code, material_name, material_spc, unit, quantity from mes_prepare + select prepare_id, workorder_code, workorder_name, parent_order, order_id, order_code, product_id, + product_code, prod_type, product_name, product_spc, wet_detail_plan_id, product_date, + shift_id, ancestors, status, remark, attr1, attr2, attr3, attr4, create_by, create_time, + update_by, update_time, factory_code, material_code, material_name, material_spc, unit, quantity + from mes_prepare - select - ms.prepare_id, - ms.workorder_code, - ms.workorder_name, - ms.parent_order, - ms.order_id, - ms.order_code, - ms.product_id, - ms.product_code, - ms.prod_type, - ms.product_name, - ms.product_spc, - ms.wet_detail_plan_id, - ms.product_date, - ms.shift_id, - ms.ancestors, - ms.status, - ms.remark, - ms.attr1, - ms.attr2, - ms.attr3, - ms.attr4, - ms.create_by, - ms.create_time, - ms.update_by, - ms.update_time, - ms.factory_code, - msd.prepare_id id, - msd.material_code, - msd.material_name, - msd.material_spc, - msd.unit, - msd.quantity - from mes_prepare ms,mes_prepare_detail msd + ms.workorder_name workorderCodeSap, + ow.workorder_code workorderCode, + ow.product_code productCode, + ow.product_name productName, + ow.product_date productDate, + ow.quantity_split quantity, + ow.unit + from mes_prepare ms + left join pro_order_workorder ow on ms.workorder_code = ow.workorder_code - and workorder_code like concat('%', #{workorderCode}, '%') - and workorder_name like concat('%', #{workorderName}, '%') - and parent_order = #{parentOrder} - and order_id like concat('%', #{orderId}, '%') - and order_code = #{orderCode} - and product_id = #{productId} - and product_code like concat('%', #{productCode}, '%') - and prod_type = #{prodType} - and product_name like concat('%', #{productName}, '%') - and product_spc = #{productSpc} - and wet_detail_plan_id = #{wetDetailPlanId} - and product_date = #{productDate} - and shift_id = #{shiftId} - and ancestors = #{ancestors} - and ms.status = #{status} - and factory_code = #{factoryCode} + ow.del_flag = '0' and ow.parent_order = '0' + and ow.workorder_code like concat('%', #{workorderCode}, '%') + and ms.workorder_name like concat('%', #{workorderCodeSap}, '%') + and ow.product_code like concat('%', #{productCode}, '%') + and ow.product_name like concat('%', #{productName}, '%') + and ow.product_date = #{productDate} and ms.del_flag = '0' + order by ow.product_date desc diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcInterfaceMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcInterfaceMapper.xml index d93c44fc7..6de815bf6 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcInterfaceMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcInterfaceMapper.xml @@ -57,4 +57,101 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" group by qctd.project_no,qctd.rule_name + + + diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcStaticTableMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcStaticTableMapper.xml index 861aa428b..79ff3c66f 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcStaticTableMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcStaticTableMapper.xml @@ -24,8 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" qct.supplier_code supplierCode,qct.supplier_name supplierName, count(0) batchs,sum(qct.quality) nums from qc_check_task qct - left join qc_check_type qc on qc.order_code = qct.check_type - where qc.type_code = #{qc.typeCode} + where qct.type_code = #{qc.typeCode} and qct.del_flag = '0' and CONVERT(varchar(7),qct.income_time, 120) = #{qc.yearMonth} @@ -44,8 +43,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" qct.supplier_code supplierCode,qct.supplier_name supplierName, sum(qct.noOk_quality) noOkNums from qc_check_task qct - left join qc_check_type qc on qc.order_code = qct.check_type - where qc.type_code = #{qc.typeCode} + where qct.type_code = #{qc.typeCode} and qct.del_flag = '0' and CONVERT(varchar(7),qct.income_time, 120) = #{qc.yearMonth} @@ -66,8 +64,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" qct.cNoOkquality, qct.income_time from qc_check_task qct - left join qc_check_type qc on qc.order_code = qct.check_type - where qct.del_flag = '0' and qc.type_code = 'produce' + where qct.del_flag = '0' and qct.type_code = 'produce' and qct.material_code in (${materialCode}) and qct.supplier_code = #{workCenter} and CONVERT(varchar(10),qct.income_time, 120) >= #{ymArrayStart} @@ -77,8 +74,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select distinct qct.material_code materialCode, qct.material_name materialName from qc_check_task qct - left join qc_check_type qc on qc.order_code = qct.check_type - where qct.del_flag = '0' and qc.type_code = 'produce' + where qct.del_flag = '0' and qct.type_code = 'produce' and qct.material_code in (${materialCode}) and qct.supplier_code = #{workCenter} and CONVERT(varchar(10),qct.income_time, 120) >= #{ymArrayStart} @@ -95,8 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sum(qct.cNoOkquality) cNoOkquality, CONVERT(varchar(7),qct.income_time, 120) incomeTime from qc_check_task qct - left join qc_check_type qc on qc.order_code = qct.check_type - where qct.del_flag = '0' and qc.type_code = 'produce' + where qct.del_flag = '0' and qct.type_code = 'produce' and qct.material_code in (${materialCode}) and qct.supplier_code = #{workCenter} and CONVERT(varchar(10),qct.income_time, 120) >= #{ymArrayStart} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java b/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java index 272266219..db102a018 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java @@ -53,6 +53,9 @@ public class SapController extends BaseController { @Autowired private SapBomMapper sapBomMapper; + @Autowired + private SapWmsService sapWmsService; + /**====================主数据相关===================================================================================*/ /** * 物料同步接口 @@ -377,12 +380,18 @@ public class SapController extends BaseController { } + /** + * 退料的移动类型为 262 + * 领料的移动类型为 261 + * @param sapMaterialPostingList + * @return + */ @PostMapping("/sapMaterialPosting") @Log(title = "订单物料领料过账、原材料补料、订单物料退料过账接口(MB1A)", businessType = BusinessType.SAP) - public R sapMaterialPosting(@RequestBody SapMaterialPosting sapMaterialPosting){ - return sapItemSyncService.sapMaterialPosting(sapMaterialPosting); + public R sapMaterialPosting(@RequestBody List sapMaterialPostingList){ + return sapItemSyncService.sapMaterialPosting(sapMaterialPostingList); } @@ -396,6 +405,44 @@ public class SapController extends BaseController { return sapOrderService.sapPurchaseOrderSync(sapPurchaseOrderQuery); } + /** + * 智慧工厂101类型订单收货 + * 订单为母订单 + * @param sapOrderReceiptQuery + * @return + */ + @PostMapping("/sapOrderReceipt") + @Log(title = "智慧工厂101类型订单收货", businessType = BusinessType.SAP) + public R sapOrderReceipt(@RequestBody SapOrderReceiptQuery sapOrderReceiptQuery){ + return sapOrderService.sapOrderReceipt(sapOrderReceiptQuery); + } + /**================================WMS=============================*/ + + /** + * 智慧工厂储位信息 + * @param map + * @return + */ + @PostMapping("/sapLgortInfo") + @Log(title = "智慧工厂储位信息", businessType = BusinessType.SAP) + public R sapLgortInfo(@RequestBody(required = false) Map map){ + return sapWmsService.sapLgortInfo(map); + } + + /** + * 成品下线入库 + *ZMES_201_MB1A(新增) + * ZMES_961_MB1A + * ZMES_962_MB1A + * @param + * @return + */ + + @PostMapping("/sapProductWarehousing") + @Log(title = "成品下线入库", businessType = BusinessType.SAP) + public R sapProductWarehousing(@RequestBody(required = false) List> mapList){ + return sapWmsService.sapProductWarehousing(mapList); + } } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapOrderReceiptQuery.java b/op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapOrderReceiptQuery.java new file mode 100644 index 000000000..a07f4d17c --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapOrderReceiptQuery.java @@ -0,0 +1,81 @@ +package com.op.sap.domain.vo; + +/** + * AUFNR CHAR12 订单号 必填 + * LGORT CHAR4 库位 必填 + * ERFMG QUAN-13-3 数量 必填 + * CHARG CHAR10 批号 必填 + * HSDAT DATS8 生产日期 必填 + * ERFME UNIT 条目单位 + * auth YangWL + */ + +public class SapOrderReceiptQuery { + + private String aufnr; + private String lgort; + private String erfmg; + private String charg; + private String hsdat; + private String erfme; + + public String getAufnr() { + return aufnr; + } + + public void setAufnr(String aufnr) { + this.aufnr = aufnr; + } + + public String getLgort() { + return lgort; + } + + public void setLgort(String lgort) { + this.lgort = lgort; + } + + public String getErfmg() { + return erfmg; + } + + public void setErfmg(String erfmg) { + this.erfmg = erfmg; + } + + public String getCharg() { + return charg; + } + + public void setCharg(String charg) { + this.charg = charg; + } + + public String getHsdat() { + return hsdat; + } + + public void setHsdat(String hsdat) { + this.hsdat = hsdat; + } + + public String getErfme() { + return erfme; + } + + public void setErfme(String erfme) { + this.erfme = erfme; + } + + @Override + public String toString() { + return "SapOrderReceiptQuery{" + + "aufnr='" + aufnr + '\'' + + ", lgort='" + lgort + '\'' + + ", erfmg='" + erfmg + '\'' + + ", charg='" + charg + '\'' + + ", hsdat='" + hsdat + '\'' + + ", erfme='" + erfme + '\'' + + '}'; + } +} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/SapItemSyncService.java b/op-modules/op-sap/src/main/java/com/op/sap/service/SapItemSyncService.java index 2e3152bb8..3fd0c4905 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/SapItemSyncService.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/SapItemSyncService.java @@ -1,10 +1,9 @@ package com.op.sap.service; import com.op.common.core.domain.R; -import com.op.sap.domain.vo.SapBackflushMPQuery; +import com.op.system.api.domain.sap.SapBackflushMPQuery; import com.op.sap.domain.vo.SapItemQuery; -import com.op.sap.domain.vo.SapMaterialPosting; -import com.op.system.api.domain.sap.SapBaseProduct; +import com.op.system.api.domain.sap.SapMaterialPosting; import java.util.List; @@ -21,11 +20,11 @@ public interface SapItemSyncService { /** * 订单物料领料过账、原材料补料、订单物料退料过账接口(MB1A) - * @param sapMaterialPosting + * @param sapMaterialPostingList * @return */ - R sapMaterialPosting(SapMaterialPosting sapMaterialPosting); + R sapMaterialPosting(List sapMaterialPostingList); R sapBackflushMP(List sapBackflushMPQueryList); } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/SapOrderService.java b/op-modules/op-sap/src/main/java/com/op/sap/service/SapOrderService.java index 945ab3e66..4cdf12d2a 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/SapOrderService.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/SapOrderService.java @@ -2,7 +2,9 @@ package com.op.sap.service; import com.op.common.core.domain.R; +import com.op.sap.domain.vo.SapOrderReceiptQuery; import com.op.sap.domain.vo.SapPurchaseOrderQuery; + import com.op.system.api.domain.sap.SapCloseOrderQuery; import com.op.system.api.domain.sap.SapCreateOrder; import com.op.system.api.domain.sap.SapRFW; @@ -50,4 +52,8 @@ public interface SapOrderService { R sapPurchaseOrderSync(SapPurchaseOrderQuery sapPurchaseOrderQuery); R shopUpdateSync(SapShopOrderQuery sapProOrder); + + R sapOrderReceipt(SapOrderReceiptQuery sapOrderReceiptQuery); + + } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/SapWmsService.java b/op-modules/op-sap/src/main/java/com/op/sap/service/SapWmsService.java new file mode 100644 index 000000000..cd4eac1a3 --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/SapWmsService.java @@ -0,0 +1,13 @@ +package com.op.sap.service; + +import com.op.common.core.domain.R; + +import java.util.List; +import java.util.Map; + +public interface SapWmsService { + + R sapLgortInfo(Map map); + + R sapProductWarehousing(List> mapList); +} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapItemSyncImpl.java b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapItemSyncImpl.java index caa23494e..5602fa844 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapItemSyncImpl.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapItemSyncImpl.java @@ -9,14 +9,12 @@ import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.StringUtils; import com.op.common.core.utils.bean.BeanValidators; import com.op.common.security.utils.SecurityUtils; -import com.op.sap.domain.vo.SapBackflushMPQuery; +import com.op.system.api.domain.sap.SapBackflushMPQuery; import com.op.sap.domain.vo.SapItemQuery; -import com.op.sap.domain.vo.SapMaterialPosting; +import com.op.system.api.domain.sap.SapMaterialPosting; import com.op.sap.mapper.SapBaseProductMapper; import com.op.sap.service.SapItemSyncService; -import com.op.sap.util.SAPConnUtils; import com.op.system.api.RemoteUserService; -import com.op.system.api.domain.SysUser; import com.op.system.api.domain.sap.SapBaseProduct; import com.sap.conn.jco.*; import org.slf4j.Logger; @@ -28,6 +26,7 @@ import org.springframework.stereotype.Service; import javax.validation.Validator; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -225,7 +224,7 @@ public class SapItemSyncImpl implements SapItemSyncService { } @Override - public R sapMaterialPosting(SapMaterialPosting sapMaterialPosting) { + public R sapMaterialPosting(List sapMaterialPostingList) { try { // 获取调用 RFC 函数对象 @@ -233,90 +232,71 @@ public class SapItemSyncImpl implements SapItemSyncService { // JCoDestination dest = SAPConnUtils.connect(); JCoRepository repository = dest.getRepository(); JCoFunction func = repository.getFunction("ZPPR_MES_GOODSMVT_CREATE"); - // 配置传入参数 - JCoTable jCoTable = func.getTableParameterList().getTable("L_ITEM"); - System.out.println(jCoTable); - - JCoParameterList AUFNR = func.getImportParameterList(); - System.out.println(AUFNR); - - //订单 - if (!StringUtils.isNull(sapMaterialPosting.getAufnr())){ - -// AUFNR.appendRow(); -// AUFNR.setValue(Constants.SIGN, "I"); -// AUFNR.setValue(Constants.OPTION, "EQ"); -// AUFNR.setValue(Constants.LOW, sapMaterialPosting.getAufnr()); - } -// //移动类型 -// if (!StringUtils.isNull(sapMaterialPosting.getBwart())){ -// JCoTable S_MATNR = func.getTableParameterList().getTable("BWART"); -// S_MATNR.appendRow(); -// S_MATNR.setValue(Constants.SIGN, "I"); -// S_MATNR.setValue(Constants.OPTION, "EQ"); -// S_MATNR.setValue(Constants.LOW, sapMaterialPosting.getBwart()); -// } -// //工厂 -// if (!StringUtils.isNull(sapMaterialPosting.getPlant())){ -// JCoTable S_MATNR = func.getTableParameterList().getTable("PLANT"); -// S_MATNR.appendRow(); -// S_MATNR.setValue(Constants.SIGN, "I"); -// S_MATNR.setValue(Constants.OPTION, "EQ"); -// S_MATNR.setValue(Constants.LOW, sapMaterialPosting.getPlant()); -// } -// /** -// * 物料信息 -// */ -// if (!StringUtils.isNull(sapMaterialPosting.getMatnr())){ -// JCoTable S_MATNR = func.getTableParameterList().getTable("MATNR"); -// S_MATNR.appendRow(); -// S_MATNR.setValue(Constants.SIGN, "I"); -// S_MATNR.setValue(Constants.OPTION, "EQ"); -// S_MATNR.setValue(Constants.LOW, sapMaterialPosting.getMatnr()); -// } -// //数量 -// if (!StringUtils.isNull(sapMaterialPosting.getQuantity())){ -// JCoTable S_MATNR = func.getTableParameterList().getTable("QUANTITY"); -// S_MATNR.appendRow(); -// S_MATNR.setValue(Constants.SIGN, "I"); -// S_MATNR.setValue(Constants.OPTION, "EQ"); -// S_MATNR.setValue(Constants.LOW, sapMaterialPosting.getQuantity()); -// } -// //单位 -// if (!StringUtils.isNull(sapMaterialPosting.getMeins())){ -// JCoTable S_MATNR = func.getTableParameterList().getTable("MEINS"); -// S_MATNR.appendRow(); -// S_MATNR.setValue(Constants.SIGN, "I"); -// S_MATNR.setValue(Constants.OPTION, "EQ"); -// S_MATNR.setValue(Constants.LOW, sapMaterialPosting.getMeins()); -// } -// //批号 -// JCoTable S_MATNR = func.getTableParameterList().getTable("BATCH"); -// S_MATNR.appendRow(); -// S_MATNR.setValue(Constants.SIGN, "I"); -// S_MATNR.setValue(Constants.OPTION, "EQ"); -// S_MATNR.setValue(Constants.LOW, sapMaterialPosting.getBatch()); - - // 获取调用 RFC 函数对象 - func.execute(dest); - // 获取 内表 - ZMES_PRO - JCoTable maraTable = func.getTableParameterList().getTable("LT_RETURN"); - JCoRecordMetaData metaData = maraTable.getRecordMetaData(); - System.out.println("###" + metaData.toString()); - for (int i = 0; i < maraTable.getNumRows(); i++) { - maraTable.setRow(i); - String RETCODE = maraTable.getString("RETCODE"); - System.out.println(RETCODE); - } - -// JCoRecordMetaData metaData = maraTable.getRecordMetaData(); -// System.out.println("###" + metaData.toString()); - - if (func == null) { throw new RuntimeException("Function does not exist in SAP"); } - return R.ok(); + log.info("订单物料开始过账----------------------------------------"); + // 配置传入参数 + JCoTable L_ITEM = func.getTableParameterList().getTable("L_ITEM"); + + for (SapMaterialPosting smp:sapMaterialPostingList){ + L_ITEM.appendRow(); + //订单号 + L_ITEM.setValue("AUFNR",smp.getAufnr()); + //移动类型 + L_ITEM.setValue("BWART",smp.getBwart()); + //工厂 + L_ITEM.setValue("PLANT",smp.getPlant()); + //总帐科目编号 + L_ITEM.setValue("GL_ACCOUNT",smp.getGl_account()); + //成本中心 + L_ITEM.setValue("COSTCENTER",smp.getCostcenter()); + //收货方/运达方 + L_ITEM.setValue("GR_RCPT",smp.getGr_rcpt()); + //库存地点 + L_ITEM.setValue("LGORT",smp.getLgort()); + //物料号 + L_ITEM.setValue("MATNR",smp.getMatnr()); + //数量 + L_ITEM.setValue("QUANTITY",smp.getQuantity()); + //基本计量单位 + L_ITEM.setValue("MEINS",smp.getMeins()); + //批号 + L_ITEM.setValue("BATCH",smp.getBatch()); + + + } + func.execute(dest); + JCoTable maraTable = func.getTableParameterList().getTable("LT_RETURN"); + JCoRecordMetaData metaData = maraTable.getRecordMetaData(); + System.out.println("###" + metaData.toString()); + StringBuilder Msg = new StringBuilder(); + for (int i = 0; i < maraTable.getNumRows(); i++) { + maraTable.setRow(i); + String TYPE = maraTable.getString("TYPE"); + String MESSAGE = maraTable.getString("MESSAGE"); + Msg.append(MESSAGE+"/"); + System.out.println("TYPE:"+TYPE); + System.out.println("MESSAGE:"+MESSAGE); + } + String L_MSG= func.getExportParameterList().getString("L_MSG"); + String RETCODE= func.getExportParameterList().getString("RETCODE"); + String MATERIALDOCUMENT= func.getExportParameterList().getString("MATERIALDOCUMENT"); + String MATDOCUMENTYEAR= func.getExportParameterList().getString("MATDOCUMENTYEAR"); + System.out.println("L_MSG"+L_MSG); + + System.out.println("返回值:0-没有错误,1-有错误:"+RETCODE); + System.out.println("物料凭证编号"+MATERIALDOCUMENT); + System.out.println("物料凭证年度"+MATDOCUMENTYEAR); + if (!("0").equals(RETCODE)){ + return R.fail("",Msg.toString()); + }else { + Map map=new HashMap(); + map.put("MATERIALDOCUMENT",MATERIALDOCUMENT); + map.put("MATDOCUMENTYEAR",MATDOCUMENTYEAR); + return R.ok(map,Msg.toString()); + } + }catch (Exception e){ return R.fail(e.getMessage()); } @@ -330,6 +310,7 @@ public class SapItemSyncImpl implements SapItemSyncService { @Override public R sapBackflushMP(List sapBackflushMPQueryList) { + try { JCoRepository repository = dest.getRepository(); JCoFunction func = repository.getFunction("ZPPR_MES_GOODSMVT_CREATE_B"); @@ -338,7 +319,7 @@ public class SapItemSyncImpl implements SapItemSyncService { } JCoTable L_ITEM = func.getTableParameterList().getTable("L_ITEM"); - System.out.println(L_ITEM); + // System.out.println(L_ITEM); // // int successNum = 0; @@ -375,23 +356,37 @@ public class SapItemSyncImpl implements SapItemSyncService { JCoTable maraTable = func.getTableParameterList().getTable("LT_RETURN"); JCoRecordMetaData metaData = maraTable.getRecordMetaData(); System.out.println("###" + metaData.toString()); + StringBuilder Msg = new StringBuilder(); for (int i = 0; i < maraTable.getNumRows(); i++) { maraTable.setRow(i); String TYPE = maraTable.getString("TYPE"); - System.out.println(TYPE); + String MESSAGE = maraTable.getString("MESSAGE"); + Msg.append(MESSAGE+"/"); + System.out.println("TYPE:"+TYPE); + System.out.println("MESSAGE:"+MESSAGE); } String L_MSG= func.getExportParameterList().getString("L_MSG"); String RETCODE= func.getExportParameterList().getString("RETCODE"); String MATERIALDOCUMENT= func.getExportParameterList().getString("MATERIALDOCUMENT"); String MATDOCUMENTYEAR= func.getExportParameterList().getString("MATDOCUMENTYEAR"); + System.out.println("L_MSG"+L_MSG); + System.out.println("返回值:0-没有错误,1-有错误:"+RETCODE); + System.out.println("物料凭证编号"+MATERIALDOCUMENT); + System.out.println("物料凭证年度"+MATDOCUMENTYEAR); + if (!("0").equals(RETCODE)){ + return R.fail("",Msg.toString()); + }else { + Map map=new HashMap(); + map.put("MATERIALDOCUMENT",MATERIALDOCUMENT); + map.put("MATDOCUMENTYEAR",MATDOCUMENTYEAR); + return R.ok(map,Msg.toString()); + } - System.out.println(L_MSG); - System.out.println(RETCODE); - System.out.println(MATERIALDOCUMENT); - System.out.println(MATDOCUMENTYEAR); - - return R.ok(); +// System.out.println("MATERIALDOCUMENT"+MATERIALDOCUMENT); +// System.out.println("MATDOCUMENTYEAR"+MATDOCUMENTYEAR); +// +// return R.ok(); }catch (Exception e){ return R.fail(e.getMessage()); diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapOrderServiceImpl.java b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapOrderServiceImpl.java index b29676a69..18d8d5337 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapOrderServiceImpl.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapOrderServiceImpl.java @@ -7,10 +7,10 @@ import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.StringUtils; import com.op.common.core.utils.uuid.IdUtils; +import com.op.sap.domain.vo.SapOrderReceiptQuery; import com.op.sap.domain.vo.SapPurchaseOrderQuery; import com.op.sap.service.SapOrderService; -import com.op.sap.util.SAPConnUtils; import com.op.system.api.domain.sap.SapCloseOrderQuery; import com.op.system.api.domain.sap.SapCreateOrder; import com.op.system.api.domain.sap.SapRFW; @@ -59,6 +59,7 @@ public class SapOrderServiceImpl implements SapOrderService { // 配置传入参数 // S_WERKS(工厂) S_AUFNR(订单号) S_MATNR(物料号) S_ERDAT(创建日期) 例如:20230923 + if (!StringUtils.isNull(sapShopOrderQuery.getWerk())){ JCoTable S_WERKS = func.getTableParameterList().getTable("S_PWERK"); S_WERKS.appendRow(); @@ -183,13 +184,15 @@ public class SapOrderServiceImpl implements SapOrderService { jCoParameterList.setValue("P_DATEE",sapCreateOrder.getDatee()); func.execute(dest);//执行调用函数 JCoParameterList J= func.getExportParameterList(); - // System.out.println(J); + System.out.println(func.getExportParameterList()); L_MSG= func.getExportParameterList().getString("L_MSG"); - String LV_ORDER_NUMBER= func.getExportParameterList().getString("LV_ORDER_NUMBER"); - + // String RETCODE = func.getExportParameterList().getString("RETCODE"); + //String LV_ORDER_NUMBER= func.getExportParameterList().getString("LV_ORDER_NUMBER"); +// if (RETCODE.equals(Constants.FAIL)){ +// return R.fail(LV_ORDER_NUM_List,L_MSG); +// } JCoTable LT_ZGD=func.getTableParameterList().getTable("LT_ZGD"); - // System.out.println(LT_ZGD); - //DynamicDataSourceContextHolder.push("ds_1000");//controller已经完成切换 + for (int i = 0; i sapBackflushMPQueryList=new ArrayList<>(); +// SapBackflushMPQuery sapBackflushMPQuery=new SapBackflushMPQuery(); +// sapBackflushMPQuery.setMatnr("000000020000000280"); +// sapBackflushMPQuery.setPlant("1000"); +// sapBackflushMPQuery.setLgort("0013"); +// sapBackflushMPQuery.setQuantity("3600"); +// sapBackflushMPQuery.setMeins("ST"); +// sapBackflushMPQueryList.add(sapBackflushMPQuery); +// System.out.println(JSONObject.toJSONString(sapBackflushMPQueryList)); +// } } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapRouterServiceImpl.java b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapRouterServiceImpl.java index bd78ae0b4..c0aaf965c 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapRouterServiceImpl.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapRouterServiceImpl.java @@ -13,6 +13,8 @@ import com.op.sap.service.SapRouterService; import com.op.sap.util.SAPConnUtils; import com.op.system.api.domain.sap.*; import com.sap.conn.jco.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; @@ -27,6 +29,7 @@ import java.util.stream.Collectors; @Component @Service public class SapRouterServiceImpl implements SapRouterService { + private static final Logger log = LoggerFactory.getLogger(SapOrderServiceImpl.class); private static final String END_DATE="99991231"; @Autowired private SapProProcessMapper sapProProcessMapper; @@ -70,6 +73,7 @@ public class SapRouterServiceImpl implements SapRouterService { S_AEDAT 更改日期 */ + log.info("工艺路线同步入参-------"+sapRouterQuery.toString()); if (!StringUtils.isNull(sapRouterQuery.getMatnr())){ JCoTable S_MATNR = func.getTableParameterList().getTable("S_MATNR"); S_MATNR.appendRow(); @@ -118,7 +122,7 @@ public class SapRouterServiceImpl implements SapRouterService { // 获取 内表 - ZMES_PRO JCoTable maraTable = func.getTableParameterList().getTable("LT_ROUTING"); JCoRecordMetaData metaData = maraTable.getRecordMetaData(); - System.out.println("###" + metaData.toString()); + // System.out.println("###" + metaData.toString()); List sapProRouteList=new ArrayList<>(); //DynamicDataSourceContextHolder.push("ds_1000");//controller已经完成切换 for (int i = 0; i 0) { - failureMsg.insert(0, "很抱歉,同步失败!共 " + failureNum + " 工艺路线异常,错误如下:"); + failureMsg.insert(0, "很抱歉,同步失败!共 " + failureNum + " 工艺路线异常"); + log.error(failureMsg.toString()); throw new ServiceException(failureMsg.toString()); } else { - successMsg.insert(0, "恭喜您,数据同步成功!共 " + successNum + " 条,数据如下:"); + successMsg.insert(0, "恭喜您,数据同步成功!共 " + successNum + " 条"); } }catch (Exception e){ + log.error(e.getMessage()); return R.fail(e.getMessage()); } return R.ok(successMsg); diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWmsServicelmpl.java b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWmsServicelmpl.java new file mode 100644 index 000000000..5be3897d4 --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWmsServicelmpl.java @@ -0,0 +1,208 @@ +package com.op.sap.service.impl; + +import com.op.common.core.domain.R; +import com.op.common.core.utils.StringUtils; +import com.op.sap.service.SapWmsService; +import com.sap.conn.jco.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +@Service +public class SapWmsServicelmpl implements SapWmsService { + private static final Logger log = LoggerFactory.getLogger(SapWmsServicelmpl.class); + + @Autowired + private JCoDestination dest; + + @Override + public R sapLgortInfo(Map map) { + try { + JCoRepository repository = dest.getRepository(); + JCoFunction func = repository.getFunction("ZMES_GET_LGORT"); + if (func == null) { + throw new RuntimeException("Function does not exist in SAP"); + } + log.info("获取储位信息入参-------"+map.toString()); + if (!StringUtils.isNull(map.get("S_WERKS"))){ + JCoTable S_MATNR = func.getTableParameterList().getTable("S_WERKS"); + S_MATNR.appendRow(); + S_MATNR.setValue("SIGN", "I"); + S_MATNR.setValue("OPTION", "EQ"); + S_MATNR.setValue("LOW", map.get("S_WERKS")); + } + func.execute(dest);//执行调用函数 + // 获取 内表 - ZMES_PRO + JCoTable maraTable = func.getTableParameterList().getTable("LT_LGORT"); + /** + * WERKS 工厂 + * LGORT 库存地点 + * LGOBE 仓储地点的描述 + * ZTYPE 已冻结标识 + */ + List mapList=new ArrayList<>(); + for (int i = 0; i > mapList) { + try { + JCoRepository repository = dest.getRepository(); + JCoFunction func = repository.getFunction("ZMES_PRODUCT_MB1A"); + if (func == null) { + throw new RuntimeException("Function does not exist in SAP"); + } + log.info("成品移动ZMES_PRODUCT_MB1A-------"+mapList.toString()); + /** + AUFNR 订单号 + POSNR 订单项目编号 + BWART 移动类型(库存管理) + PLANT 工厂 + LGORT 库存地点 + KOSTL 成本中心 + MATNR 物料号 + QUANTITY 数量 + MEINS 基本计量单位 + BATCH 批号 + HSDAT 生产日期 + VFDAT 货架寿命到期日 + */ + JCoTable L_ITEM = func.getTableParameterList().getTable("L_ITEM"); + System.out.println(L_ITEM); + System.out.println( L_ITEM.getNumRows()); + for (int i=1;i<10;i++){ + L_ITEM.appendRow(); + L_ITEM.setValue("AUFNR", "01234567890"+String.valueOf(i)); + L_ITEM.setValue("POSN", "012"+String.valueOf(i)); + L_ITEM.setValue("POSN", "012"+String.valueOf(i)); + L_ITEM.setValue("POSN", "012"+String.valueOf(i)); + } + System.out.println(L_ITEM); +// if (!StringUtils.isNull(map.get("AUFNR"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("AUFNR"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("AUFNR")); +// } +// if (!StringUtils.isNull(map.get("POSNR"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("POSNR"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("POSNR")); +// } +// if (!StringUtils.isNull(map.get("BWART"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("BWART"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("BWART")); +// } +// if (!StringUtils.isNull(map.get("PLANT"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("PLANT"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("PLANT")); +// } +// if (!StringUtils.isNull(map.get("LGORT"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("LGORT"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("LGORT")); +// } +// if (!StringUtils.isNull(map.get("KOSTL"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("KOSTL"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("KOSTL")); +// } +// if (!StringUtils.isNull(map.get("MATNR"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("MATNR"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("MATNR")); +// } +// if (!StringUtils.isNull(map.get("QUANTITY"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("QUANTITY"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("QUANTITY")); +// } +// if (!StringUtils.isNull(map.get("MEINS"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("MEINS"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("MEINS")); +// } +// if (!StringUtils.isNull(map.get("BATCH"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("BATCH"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("BATCH")); +// } +// func.execute(dest);//执行调用函数 +// // 获取 内表 - ZMES_PRO +// JCoTable maraTable = func.getTableParameterList().getTable("LT_LGORT"); +// +// List mapList=new ArrayList<>(); +// for (int i = 0; i result= odsProcureOrderService.ProductionMaterialRequisition(odsProcureOutOrder); + return success(result); + } + /** + * 生产领料--托盘数据查询 + * @param wmsOdsMateStorageNewsSn + * @return + */ + @PostMapping("/ProductionMaterialRequisitionsn") + public AjaxResult ProductionMaterialRequisitionsn(@RequestBody WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn) { + WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn1= odsProcureOrderService.ProductionMaterialRequisitionsn(wmsOdsMateStorageNewsSn); + return success(wmsOdsMateStorageNewsSn1); + } + + /** + * 生产领料--确认 + * @param orderList + * @return + */ + @PostMapping("/ProductionMaterialRequisitionAdd") + public AjaxResult ProductionMaterialRequisitionAdd(@RequestBody List orderList) { + Integer result= odsProcureOrderService.ProductionMaterialRequisitionAdd(orderList); + return success(result); + } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java index e3dea7e9a..1af86c7be 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java @@ -118,6 +118,7 @@ public WmsToWCSDTO packingMaterialsOutBoundCompleted(@RequestBody WmsToWCSDTO wc return success(wmsRawOrderInSns); } + /** * 查询仓库管理列表 */ @@ -141,13 +142,15 @@ public WmsToWCSDTO packingMaterialsOutBoundCompleted(@RequestBody WmsToWCSDTO wc return success(); } - /** - * 采购订单接口 + * 生产领料 + * @param odsProcureOutOrder + * @return */ - - @PostMapping("/sapPurchaseOrderSync") - public R sapPurchaseOrderSync(@RequestBody SapBackflushMPQuery sapPurchaseOrderQuery){ - return odsProcureOrderService.sapPurchaseOrderSync(sapPurchaseOrderQuery); + @PostMapping("/ProductionMaterialRequisition") + public AjaxResult ProductionMaterialRequisition(@RequestBody OdsProcureOutOrder odsProcureOutOrder) { + List result= odsProcureOrderService.ProductionMaterialRequisition(odsProcureOutOrder); + return success(result); } + } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProcureOutOrder.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProcureOutOrder.java index f4e76d130..0c01a4940 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProcureOutOrder.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProcureOutOrder.java @@ -20,6 +20,15 @@ import com.op.common.core.web.domain.BaseEntity; @JsonInclude(JsonInclude.Include.NON_NULL) public class OdsProcureOutOrder extends BaseEntity { private static final long serialVersionUID = 1L; + private String factoryCode; + + public String getFactoryCode() { + return factoryCode; + } + + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } /** 工厂编码 */ @Excel(name = "工厂编码") diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/OrderLine.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/OrderLine.java index 5909aab61..9bcb71a25 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/domain/OrderLine.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/OrderLine.java @@ -14,7 +14,15 @@ public class OrderLine extends BaseEntity { private BigDecimal qty;//数量 private String qualityStatus;//质检状态,1合格,2不合格 private String stationNo;//包装线 + private String ken;//包装线--如果是用于自动化就选1,如果是手持人工出库就选2 + public String getKen() { + return ken; + } + + public void setKen(String ken) { + this.ken = ken; + } private String materialCode; private String materialDesc; diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/SapBackflushMPQuery.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/SapBackflushMPQuery.java deleted file mode 100644 index 93ab6efa4..000000000 --- a/op-modules/op-wms/src/main/java/com/op/wms/domain/SapBackflushMPQuery.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.op.wms.domain; - -import java.io.Serializable; - -/** - * 反冲类型的领料过账接口 - * auth YangWL - * - * MATNR CHAR 18 0 物料号 必填 - * PLANT CHAR 4 0 工厂 必填 - * GR_RCPT CHAR 12 0 收货方/运达方 选填 - * LGORT CHAR 4 0 库存地点 必填 - * UMLGO CHAR 4 0 收货/发货库存地点 选填 - * QUANTITY QUAN 13 3 数量 必填 - * MEINS UNIT 3 0 条目单位 必填 - * BATCH CHAR 10 0 批号 必填 - * MOVE_BATCH CHAR 10 0 收货/发货批量 选填 - */ - - -public class SapBackflushMPQuery implements Serializable { - /** - * S_EBELN 采购订单号 - * S_EBELP 行项目 - * S_MATNR 物料号 - * S_PWERK 工厂 - */ - private String ebeln; - private String ebelp; - private String matnr; - private String pwerk; - private String factoryCode;// - - public String getFactoryCode() { - return factoryCode; - } - - public void setFactoryCode(String factoryCode) { - this.factoryCode = factoryCode; - } - - public String getEbeln() { - return ebeln; - } - - public void setEbeln(String ebeln) { - this.ebeln = ebeln; - } - - public String getEbelp() { - return ebelp; - } - - public void setEbelp(String ebelp) { - this.ebelp = ebelp; - } - - public String getMatnr() { - return matnr; - } - - public void setMatnr(String matnr) { - this.matnr = matnr; - } - - public String getPwerk() { - return pwerk; - } - - public void setPwerk(String pwerk) { - this.pwerk = pwerk; - } -} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOrderService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOrderService.java index 8356af22f..3a0b9173b 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOrderService.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOrderService.java @@ -75,11 +75,17 @@ public interface IOdsProcureOrderService { OrderLine addPurchaseOrderOutbound(OrderLine orderLine); - R sapPurchaseOrderSync(SapBackflushMPQuery sapPurchaseOrderQuery); + void TraystatusUpdate(WMSTraystatus wmsTraystatus); String InventoryPlanIssuance(WCSInventoryPlan wcsInventoryPlan); String DesignatedPalletOutbound(WMSDesignatedPalle wmsDesignatedPalle); + + List ProductionMaterialRequisition(OdsProcureOutOrder odsProcureOutOrder); + + Integer ProductionMaterialRequisitionAdd(List orderList); + + WmsOdsMateStorageNewsSn ProductionMaterialRequisitionsn(WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java index c770686ac..9120c4c1c 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java @@ -1,6 +1,6 @@ package com.op.wms.service.impl; -import com.alibaba.csp.sentinel.util.StringUtil; + import com.alibaba.fastjson2.JSONArray; @@ -13,10 +13,11 @@ import java.util.Date; import java.util.List; + import com.op.common.core.domain.R; -import com.op.common.core.web.domain.AjaxResult; + import okhttp3.OkHttpClient; import okhttp3.MediaType; import okhttp3.RequestBody; @@ -204,6 +205,7 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService { wmsOdsMateStorageNewsSn.setAmount(wmsRawOrderInSn.getAmount()); wmsOdsMateStorageNewsSn.setCreateBy(wmsRawOrderInSn.getCreateBy()); wmsOdsMateStorageNewsSn.setGmtCreate(new Date()); + wmsOdsMateStorageNewsSn.setUserDefined2(wmsRawOrderInSn.getUserDefined2());//批次 wmsOdsMateStorageNewsSn.setFactoryCode(wmsRawOrderInSn.getFactoryCode()); wmsOdsMateStorageNewsSn.setSapFactoryCode(wmsRawOrderInSn.getFactoryCode()); wmsOdsMateStorageNewsSnMapper.insertWmsOdsMateStorageNewsSn(wmsOdsMateStorageNewsSn); @@ -260,135 +262,65 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService { public OrderLine addPurchaseOrderOutbound(OrderLine orderLine) { //自己生成行项目,,批次号 List orderList= orderLine.getList(); - + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHH:mm:ss"); + Date date = new Date(); + String formattedDate = dateFormat.format(date); //根据订单号查询对应的最大批次号 Integer orderItem = 0; for (OrderLine orderLine1: orderList) { orderItem++; orderLine1.setOrderLineNo(String.format("%05d", orderItem)); - orderLine1.setBatchNo("00001"); + orderLine1.setBatchNo(formattedDate); } - String meg= addPurchaseOrderOutboundWCS(orderLine); - if ("OK".equals(meg)){//成功 - for (OrderLine orderLine1: - orderList) { - OdsProcureOutOrder odsProcureOutOrder=new OdsProcureOutOrder(); - odsProcureOutOrder.setID(IdUtils.fastSimpleUUID()); - odsProcureOutOrder.setProduceCode(orderLine.getOrderNo()); - odsProcureOutOrder.setMaterialCode(orderLine1.getMaterialCode()); - odsProcureOutOrder.setMaterialDesc(orderLine1.getMaterialDesc()); - odsProcureOutOrder.setPlanDate(new Date()); - odsProcureOutOrder.setUnit(orderLine1.getUnit()); - odsProcureOutOrder.setProductionLineCode(orderLine1.getStationNo()); - odsProcureOutOrder.setUserDefined1(orderLine1.getBatchNo()); - odsProcureOutOrder.setActive("1"); - odsProcureOutOrder.setOrderStatus("1"); - odsProcureOutOrder.setPlanNumber(orderLine1.getPlanNumber()); - odsProcureOutOrder.setUserDefined2(orderLine1.getOrderLineNo()); - //odsProcureOutOrder.set - odsProcureOutOrderMapper.insertOdsProcureOutOrder(odsProcureOutOrder); + String ken=orderLine.getKen(); + if("2".equals(ken)){ + //手持出库 + for (OrderLine orderLine1: + orderList) { + OdsProcureOutOrder odsProcureOutOrder=new OdsProcureOutOrder(); + odsProcureOutOrder.setID(IdUtils.fastSimpleUUID()); + odsProcureOutOrder.setProduceCode(orderLine.getOrderNo()); + odsProcureOutOrder.setMaterialCode(orderLine1.getMaterialCode()); + odsProcureOutOrder.setMaterialDesc(orderLine1.getMaterialDesc()); + odsProcureOutOrder.setPlanDate(new Date()); + odsProcureOutOrder.setUnit(orderLine1.getUnit()); + odsProcureOutOrder.setProductionLineCode(orderLine1.getStationNo()); + odsProcureOutOrder.setUserDefined1(orderLine1.getBatchNo()); + odsProcureOutOrder.setActive("1"); + odsProcureOutOrder.setOrderStatus("1"); + odsProcureOutOrder.setPlanNumber(orderLine1.getPlanNumber()); + odsProcureOutOrder.setUserDefined2(orderLine1.getOrderLineNo()); + //odsProcureOutOrder.set + odsProcureOutOrderMapper.insertOdsProcureOutOrder(odsProcureOutOrder); + } + }else { + String meg= addPurchaseOrderOutboundWCS(orderLine); + if ("OK".equals(meg)){//成功 + for (OrderLine orderLine1: + orderList) { + OdsProcureOutOrder odsProcureOutOrder=new OdsProcureOutOrder(); + odsProcureOutOrder.setID(IdUtils.fastSimpleUUID()); + odsProcureOutOrder.setProduceCode(orderLine.getOrderNo()); + odsProcureOutOrder.setMaterialCode(orderLine1.getMaterialCode()); + odsProcureOutOrder.setMaterialDesc(orderLine1.getMaterialDesc()); + odsProcureOutOrder.setPlanDate(new Date()); + odsProcureOutOrder.setUnit(orderLine1.getUnit()); + odsProcureOutOrder.setProductionLineCode(orderLine1.getStationNo()); + odsProcureOutOrder.setUserDefined1(orderLine1.getBatchNo()); + odsProcureOutOrder.setActive("1"); + odsProcureOutOrder.setOrderStatus("1"); + odsProcureOutOrder.setPlanNumber(orderLine1.getPlanNumber()); + odsProcureOutOrder.setUserDefined2(orderLine1.getOrderLineNo()); + //odsProcureOutOrder.set + odsProcureOutOrderMapper.insertOdsProcureOutOrder(odsProcureOutOrder); + } } - - } return orderLine; } - @Override - public R sapPurchaseOrderSync(SapBackflushMPQuery sapPurchaseOrderQuery) { -// DynamicDataSourceContextHolder.push("ds_" + sapPurchaseOrderQuery.getFactoryCode()); -// try { -// // 获取调用 RFC 函数对象 -// //获取连接 -// //JCoDestination dest = SAPConnUtils.connect(); -// JCoRepository repository = dest.getRepository(); -// JCoFunction func = repository.getFunction("ZMES_GET_PROCURE"); -// JCoParameterList jCoParameterList= func.getTableParameterList(); -// System.out.println(jCoParameterList); -// if (func == null) { -// throw new RuntimeException("Function does not exist in SAP"); -// } -// /** S_EBELN 采购订单号 -// * S_EBELP 行项目 -// * S_MATNR 物料号 -// * S_PWERK 工厂 -// */ -// if (!StringUtils.isNull(sapPurchaseOrderQuery.getEbeln())){ -// JCoTable S_EBELN = func.getTableParameterList().getTable("S_EBELN"); -// S_EBELN.appendRow(); -// S_EBELN.setValue(Constants.SIGN, "I"); -// S_EBELN.setValue(Constants.OPTION, "EQ"); -// S_EBELN.setValue(Constants.LOW, sapPurchaseOrderQuery.getEbeln()); -// } -//// if (!StringUtils.isNull(sapPurchaseOrderQuery.getEbeln())){ -//// JCoTable S_EBELN = func.getTableParameterList().getTable("S_EBELP"); -//// S_EBELN.appendRow(); -//// S_EBELN.setValue(Constants.SIGN, "I"); -//// S_EBELN.setValue(Constants.OPTION, "EQ"); -//// S_EBELN.setValue(Constants.LOW, sapPurchaseOrderQuery.getEbeln()); -//// } -//// if (!StringUtils.isNull(sapPurchaseOrderQuery.getMatnr())){ -//// JCoTable S_MATNR = func.getTableParameterList().getTable("S_MATNR"); -//// S_MATNR.appendRow(); -//// S_MATNR.setValue(Constants.SIGN, "I"); -//// S_MATNR.setValue(Constants.OPTION, "EQ"); -//// S_MATNR.setValue(Constants.LOW, sapPurchaseOrderQuery.getMatnr()); -//// } -//// -//// if (!StringUtils.isNull(sapPurchaseOrderQuery.getPwerk())){ -//// JCoTable S_PWERK = func.getTableParameterList().getTable("S_PWERK"); -//// S_PWERK.appendRow(); -//// S_PWERK.setValue(Constants.SIGN, "I"); -//// S_PWERK.setValue(Constants.OPTION, "EQ"); -//// S_PWERK.setValue(Constants.LOW, sapPurchaseOrderQuery.getPwerk()); -//// } -// func.execute(dest);//执行调用函数 -// // 获取 内表 - LT_PROCURE -// JCoTable maraTable = func.getTableParameterList().getTable("LT_PROCURE"); -// JCoRecordMetaData metaData = maraTable.getRecordMetaData(); -// System.out.println("###" + metaData.toString()); -// -// List sapCustomList=new ArrayList<>(); -// for (int i = 0; i ProductionMaterialRequisition(OdsProcureOutOrder odsProcureOutOrder) { + DynamicDataSourceContextHolder.push("ds_" + odsProcureOutOrder.getFactoryCode()); + List orderList= odsProcureOutOrderMapper.selectOdsProcureOutOrderList(odsProcureOutOrder); + return orderList; + } + + @Override + public Integer ProductionMaterialRequisitionAdd(List orderList) { + //修改对应订单--插入对应出库托盘数据数据 +// for (OdsProcureOutOrder odsProcureOutOrder: +// orderList) { +// //领料单,物料编号,物料名称,托盘号,出库数量,库位号, +// odsProcureOutOrder. +// } + + return null; + } + + @Override + public WmsOdsMateStorageNewsSn ProductionMaterialRequisitionsn(WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn) { + DynamicDataSourceContextHolder.push("ds_" + wmsOdsMateStorageNewsSn.getFactoryCode()); + WmsToWCSDTO wmsToWCSDTO=new WmsToWCSDTO(); + wmsToWCSDTO.setRfidNo(wmsOdsMateStorageNewsSn.getSn()); + WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn1= wmsOdsMateStorageNewsSnMapper.selectwmsRfidNotwo(wmsToWCSDTO); + return wmsOdsMateStorageNewsSn1; + } + public String DesignatedPalletOutboundWCS(WMSDesignatedPalle wmsDesignatedPalle){ // 定义请求的URL地址 String url = "http://192.168.202.37:9001/api/v1/ReceiveMesMsg/packingMaterialsOutBoundByPallet"; diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsToWCSInterfaceServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsToWCSInterfaceServiceImpl.java index e038dd2f6..ed7ba474a 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsToWCSInterfaceServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsToWCSInterfaceServiceImpl.java @@ -1,6 +1,7 @@ package com.op.wms.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.utils.uuid.IdUtils; import com.op.wms.domain.*; import com.op.wms.mapper.*; @@ -29,6 +30,7 @@ public class WmsToWCSInterfaceServiceImpl implements IWmsToWCSInterfaceService { @Override @DS("#header.poolName") public WmsToWCSDTO requestMaterialLoadNo(WmsToWCSDTO wcsdto) { + DynamicDataSourceContextHolder.push("ds_" + wcsdto.getFactory()); WmsToWCSDTO wmsToWCSDTO= wmsToWCSInterfaceMapper.selectWmsToWCSDTO(wcsdto); // wmsToWCSDTO.set// wmsToWCSDTO.setCode("0"); @@ -46,6 +48,8 @@ public class WmsToWCSInterfaceServiceImpl implements IWmsToWCSInterfaceService { @Override @DS("#header.poolName") public WmsToWCSDTO blankStorageOrTransferCompleted(WmsToWCSDTO wcsdto) { + DynamicDataSourceContextHolder.push("ds_" + wcsdto.getFactory()); + WmsOdsWhiteEmbryoIn wmsOdsWhiteEmbryoIn1=new WmsOdsWhiteEmbryoIn(); //rfidNo-托盘 WmsToWCSDTO wmsToWCSDTO= wmsToWCSInterfaceMapper.selectWmsToWCSDTO(wcsdto); @@ -61,11 +65,9 @@ public class WmsToWCSInterfaceServiceImpl implements IWmsToWCSInterfaceService { boolean ten = sum.compareTo(planNumber) >= 0; // 判断sum是否大于等于planNumber if (ten) { wmsOdsWhiteEmbryoIn1.setOrderStatus("1"); - } else { //小于 wmsOdsWhiteEmbryoIn1.setOrderStatus("2"); - } wmsOdsWhiteEmbryoIn1.setRealityNumber(sum);///操作数量+已入数量 //1,修改订单 diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml index 5b2d0aed1..67471bfc2 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml @@ -218,14 +218,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"