From af833e891a4737bb211428cefeb59325a7f26a95 Mon Sep 17 00:00:00 2001 From: Yangwl <1726150332@qq.com> Date: Mon, 25 Mar 2024 15:52:13 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E6=96=99=E4=B8=BB=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=8E=A5=E5=8F=A3=E6=9B=B4=E6=94=B9=EF=BC=8C?= =?UTF-8?q?=E8=AE=A1=E4=BB=B6=E8=96=AA=E9=85=AC=E5=9F=BA=E7=A1=80=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E4=BF=AE=E6=94=B9=EF=BC=8CSAP=E6=8A=A5=E5=B7=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0=E5=A4=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/op/system/api/domain/sap/SapRFW.java | 9 ++ .../java/com/op/mes/domain/MesUnitPrice.java | 4 +- .../com/op/mes/domain/MesUnitpriceReport.java | 10 +++ .../mapper/mes/MesUnitpriceReportMapper.xml | 7 +- .../com/op/sap/controller/SapController.java | 32 +------ .../com/op/sap/domain/vo/SapItemQuery.java | 9 ++ .../op/sap/service/impl/SapItemSyncImpl.java | 84 ++++++++----------- .../sap/service/impl/SapOrderServiceImpl.java | 4 +- .../mapper/sap/SapBaseProductMapper.xml | 2 +- 9 files changed, 73 insertions(+), 88 deletions(-) diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapRFW.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapRFW.java index b379c598..a3ad703a 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapRFW.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapRFW.java @@ -9,9 +9,18 @@ public class SapRFW { private String aufnr; private String gamng; private String anzma; + private String remark; private lt_gs lt_gs; private List lt_hwList; + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + public String getAnzma() { return anzma; } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesUnitPrice.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesUnitPrice.java index 9ceb8fe0..cae9d356 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesUnitPrice.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesUnitPrice.java @@ -40,7 +40,7 @@ public class MesUnitPrice extends BaseEntity { /** * 产线编码 */ - @Excel(name = "产线编码") + @Excel(name = "SAP产线编码") private String lineCode; /** @@ -76,7 +76,7 @@ public class MesUnitPrice extends BaseEntity { /** * 预留字段2 */ -// @Excel(name = "预留字段2") + @Excel(name = "标准用人") private String attr2; /** diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesUnitpriceReport.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesUnitpriceReport.java index 893eee6e..1b6f800e 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesUnitpriceReport.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesUnitpriceReport.java @@ -47,6 +47,8 @@ public class MesUnitpriceReport extends BaseEntity { @Excel(name = "产线编码") private String lineCode; + @Excel(name = "SAP产线编码") + private String sapCode; @Excel(name = "产线名称") private String equipmentName; /** @@ -100,6 +102,14 @@ public class MesUnitpriceReport extends BaseEntity { // @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private String attr2; + public String getSapCode() { + return sapCode; + } + + public void setSapCode(String sapCode) { + this.sapCode = sapCode; + } + public String getRealWages() { return realWages; } diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesUnitpriceReportMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesUnitpriceReportMapper.xml index de3f1522..0247d415 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesUnitpriceReportMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesUnitpriceReportMapper.xml @@ -11,6 +11,7 @@ + @@ -45,7 +46,7 @@ mur.line_code, mur.attr1 AS real_wages, mur.remark, - be.equipment_name, + be.sap_name as equipment_name, mur.nick_name, mur.childprocess_code, mup.childprocess_name, @@ -63,7 +64,7 @@ mes_unitprice_report mur LEFT JOIN mes_unit_price mup ON RIGHT(mur.product_code, 11) = mup.product_code AND mur.childprocess_code = mup.childprocess_code - LEFT JOIN base_equipment be ON be.equipment_code=mur.line_code + LEFT JOIN base_equipment be ON be.sap_code=mur.line_code LEFT JOIN ( SELECT parent_order, SUM ( quantity ) AS total_quantity FROM mes_report_work GROUP BY parent_order ) mrw ON mur.workorder_code = mrw.parent_order and workorder_code = #{workorderCode} @@ -103,7 +104,7 @@ mur.attr1, mur.line_code, mur.remark, - be.equipment_name, + be.sap_name, mur.nick_name, mur.childprocess_code, mup.childprocess_name, 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 a86e05e3..1d80b017 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 @@ -65,36 +65,9 @@ public class SapController extends BaseController { */ @PostMapping("/itemSync") @Log(title = "同步SAP物料清单", businessType = BusinessType.SAP) - public R itemSync() { - SapItemQuery qo = new SapItemQuery(); - + public R itemSync(@RequestBody SapItemQuery qo) { // 加载sf-cloud库的sys_datasource - SysUser sysUser = new SysUser(); - sysUser.setUserId(1L); - R>> dateSources0 = remoteUserService.getPoolNameList(sysUser); - List> dateSources = dateSources0.getData(); - dateSources.forEach(dateSource -> { - if (!"ds_999".equals(dateSource.get("poolName"))) { - logger.info("++++++++++++" + dateSource.get("poolName") + "++++product同步开始++++++++++"); - DynamicDataSourceContextHolder.push(dateSource.get("poolName"));// 这是数据源的key - /**base_product**/ - Date maxTime0 = sapBomMapper.getProductMaxTime(); - if (maxTime0 != null) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(maxTime0); - calendar.add(Calendar.DAY_OF_YEAR, 1); - Date maxTime = calendar.getTime(); - qo.setLaeda(DateFormatUtils.format(maxTime, "yyyyMMdd"));//修改日期20230923 - } - - R r = sapItemSyncService.itemSync(qo); - if (r.getCode() != 200) { - logger.error("++++++++++++" + dateSource.get("poolName") + "同步product失败,错误信息:" + r.getMsg()); - } - logger.error("++++++++++++" + dateSource.get("poolName") + "++++product同步结束++++++++++"); - } - }); - return R.ok(); + return sapItemSyncService.itemSync(qo); } /** @@ -106,7 +79,6 @@ public class SapController extends BaseController { @Log(title = "同步SAP物料组件清单", businessType = BusinessType.SAP) public R bomSync() { SapBomQuery qo = new SapBomQuery(); - // 加载sf-cloud库的sys_datasource SysUser sysUser = new SysUser(); sysUser.setUserId(1L); diff --git a/op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapItemQuery.java b/op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapItemQuery.java index 0b943a65..3432153b 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapItemQuery.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/domain/vo/SapItemQuery.java @@ -8,12 +8,21 @@ public class SapItemQuery { S_ERSDA 创建日期 S_LAEDA 最后更改日期 */ + private String werks; private String matnr; private String mtart; private String matkl; private String ersda; private String laeda; + public String getWerks() { + return werks; + } + + public void setWerks(String werks) { + this.werks = werks; + } + public String getMatnr() { return matnr; } 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 81bf0529..a6852414 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 @@ -55,20 +55,30 @@ public class SapItemSyncImpl implements SapItemSyncService { try { // 获取调用 RFC 函数对象 //获取连接 - // JCoDestination dest = SAPConnUtils.connect(); log.info("物料基础数据同步输入参数---------" + JSONObject.toJSONString(sapItemQuery)); JCoRepository repository = dest.getRepository(); JCoFunction func = repository.getFunction("ZMMR_MES_MAT_GET"); - if (func == null) { throw new RuntimeException("Function does not exist in SAP"); } /* 传参数 + P_WERKS 工厂 S_MATNR 物料号 S_MATKL 物料组 S_ERSDA 创建日期 S_LAEDA 最后更改日期*/ - sapItemQuery.setMatnr("000000040000005209"); + if (!StringUtils.isNull(sapItemQuery.getWerks())){ + JCoParameterList jCoParameterList = func.getImportParameterList(); + jCoParameterList.setValue("P_WERKS", sapItemQuery.getWerks()); + } + if (!StringUtils.isNull(sapItemQuery.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, sapItemQuery.getMatnr()); + } + if (!StringUtils.isNull(sapItemQuery.getMatnr())) { JCoTable S_MATNR = func.getTableParameterList().getTable("S_MATNR"); S_MATNR.appendRow(); @@ -93,27 +103,24 @@ public class SapItemSyncImpl implements SapItemSyncService { S_ERSDA.setValue(Constants.LOW, sapItemQuery.getErsda()); S_ERSDA.setValue("HIGH", END_DATE); } -// if (!StringUtils.isNull(sapItemQuery.getLaeda())) { -// JCoTable S_LAEDA = func.getTableParameterList().getTable("S_LAEDA"); -// S_LAEDA.appendRow(); -// S_LAEDA.setValue(Constants.SIGN, "I"); -// S_LAEDA.setValue(Constants.OPTION, "BT"); -// S_LAEDA.setValue(Constants.LOW, sapItemQuery.getLaeda()); -// S_LAEDA.setValue("HIGH", END_DATE); -// } - + if (!StringUtils.isNull(sapItemQuery.getLaeda())) { + JCoTable S_LAEDA = func.getTableParameterList().getTable("S_LAEDA"); + S_LAEDA.appendRow(); + S_LAEDA.setValue(Constants.SIGN, "I"); + S_LAEDA.setValue(Constants.OPTION, "BT"); + S_LAEDA.setValue(Constants.LOW, sapItemQuery.getLaeda()); + S_LAEDA.setValue("HIGH", END_DATE); + } // 获取调用 RFC 函数对象 func.execute(dest); // 获取 内表 - ZMES_PRO JCoTable maraTable = func.getTableParameterList().getTable("LT_MARA"); - JCoRecordMetaData metaData = maraTable.getRecordMetaData(); - // System.out.println("###" + metaData.toString()); // 加载数据源 - DynamicDataSourceContextHolder.push("ds_1000"); List sapBaseProductList = new ArrayList<>(); for (int i = 0; i < maraTable.getNumRows(); i++) { SapBaseProduct baseProduct = new SapBaseProduct(); maraTable.setRow(i); + String WERKS = maraTable.getString("WERKS"); String MATNR = maraTable.getString("MATNR"); String MAKTX = maraTable.getString("MAKTX"); String EAN11 = maraTable.getString("EAN11"); @@ -146,7 +153,8 @@ public class SapItemSyncImpl implements SapItemSyncService { String MVGR5_NM = maraTable.getString("MVGR5_NM"); String LAEDA = maraTable.getString("LAEDA"); String ERSDA = maraTable.getString("LAEDA"); - log.info("物料基础数据同步数据输出----" + + log.info(i+"物料基础数据同步数据输出----" + + "工厂:" +WERKS+ "物料号:" + MATNR + "物料描述(短文本):" + MAKTX + "国际文件号(EAN/UPC):" + EAN11 + @@ -175,35 +183,7 @@ public class SapItemSyncImpl implements SapItemSyncService { " 物料组描述 :" + MVGR3_NM + "创建日期:" + ERSDA + "上次更改日期:" + LAEDA); -// System.out.println( -// "物料号:" + MATNR+ -// "物料描述(短文本):" + MAKTX+ -// "国际文件号(EAN/UPC):" + EAN11+ -// "物料类型:" + MTART+ -// "物料类型描述:" + MTBEZ+ -// "物料组:" + MATKL+ -// "物料组描述:" + WGBEZ+ -// "毛重:" + BRGEW+ -// "净重:" + NTGEW+ -// "体积:" + VOLUM+ -// "体积单位:" + VOLEH+ -// "基本计量单位:" + MEINS+ -// "帐面库存单位的可选计量单位 :" + MEINH+ -// "基本计量单位转换分子:" + UMREZ+ -// "转换为基本计量单位的分母:" + UMREN+ -// "在客户级标记要删除的物料:" + LVORM+ -// "数量:" + MENGE+ -// "总货架寿命 :" + MHDHB+ -// "产品组:" + SPART+ -// "产品组描述:" + SPART_NM+ -// "物料组1:" + MVGR1+ -// "物料组1描述:" + MVGR1_NM+ -// "物料组2:" + MVGR2+ -// "物料组2描述:" + MVGR2_NM+ -// " 物料组3:" + MVGR3+ -// " 物料组描述 :" + MVGR3_NM+ -// "创建日期:"+ERSDA+ -// "上次更改日期:"+LAEDA); + baseProduct.setFactoryCode(WERKS); baseProduct.setProductCode(MATNR); baseProduct.setProductDescZh(MAKTX); baseProduct.setProductGroup(MATKL); @@ -221,7 +201,7 @@ public class SapItemSyncImpl implements SapItemSyncService { sapBaseProductList.add(baseProduct); } //this.importProducts(sapBaseProductList) - return R.ok(this.importProducts(sapBaseProductList)); + return R.ok(this.importProducts(sapBaseProductList,sapItemQuery.getWerks())); } catch (Exception e) { return R.fail(e.getMessage()); } @@ -355,7 +335,7 @@ public class SapItemSyncImpl implements SapItemSyncService { - public String importProducts(List sapBaseProductList) { + public String importProducts(List sapBaseProductList,String factoryCode) { if (StringUtils.isNull(sapBaseProductList) || sapBaseProductList.size() == 0) { throw new ServiceException("同步物料数据为空!"); } @@ -363,7 +343,7 @@ public class SapItemSyncImpl implements SapItemSyncService { int failureNum = 0; StringBuilder successMsg = new StringBuilder(); StringBuilder failureMsg = new StringBuilder(); - + DynamicDataSourceContextHolder.push("ds_"+factoryCode); for (SapBaseProduct sapBaseProduct : sapBaseProductList) { try { // 验证是否存在这个物料 @@ -371,12 +351,14 @@ public class SapItemSyncImpl implements SapItemSyncService { if (StringUtils.isNull(u)) { BeanValidators.validateWithException(validator, sapBaseProduct); sapBaseProduct.setCreateBy("job"); + sapBaseProduct.setCreateTime(DateUtils.getNowDate()); sapBaseProductMapper.insertBaseProduct(sapBaseProduct); successNum++; successMsg.append("
" + successNum + "、物料 " + sapBaseProduct.getProductCode() + " 同步成功"); } else if (!StringUtils.isNull(u)) { sapBaseProduct.setProductId(u.getProductId()); - sapBaseProduct.setCreateBy("job"); + sapBaseProduct.setUpdateBy("job"); + sapBaseProduct.setUpdateTime(DateUtils.getNowDate()); sapBaseProductMapper.updateBaseProduct(sapBaseProduct); successNum++; successMsg.append("
" + successNum + "、物料 " + sapBaseProduct.getProductCode() + " 更新成功"); @@ -431,8 +413,8 @@ public class SapItemSyncImpl implements SapItemSyncService { qcCheckTaskIncomeDTO.setMaterialName(maraTable.getString("MAKTX"));//物料描述 qcCheckTaskIncomeDTO.setQuality(new BigDecimal(maraTable.getString("MENGE")));//数量 qcCheckTaskIncomeDTO.setUnit(maraTable.getString("MEINS"));//单位 - String inputDateTime = maraTable.getString("CPUDT")+maraTable.getString("CPUTM"); - SimpleDateFormat inputFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String inputDateTime = maraTable.getString("CPUDT")+" "+maraTable.getString("CPUTM"); + SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 将原始日期时间字符串解析为Date对象 Date date = inputFormat.parse(inputDateTime); qcCheckTaskIncomeDTO.setIncomeTime(date); 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 024a183e..e6abf465 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 @@ -284,6 +284,8 @@ public class SapOrderServiceImpl implements SapOrderService { jCoParameterList.setValue("P_GAMNG", sapRFW.getGamng()); //产线编号 jCoParameterList.setValue("P_ANZMA", sapRFW.getAnzma()); + //备注 + jCoParameterList.setValue("P_TEXT", sapRFW.getRemark()); if (sapRFW.getLt_gs() == null) { return R.fail("生产订单报工工时为空"); } @@ -624,7 +626,7 @@ public class SapOrderServiceImpl implements SapOrderService { //获取结果 String L_MSG = func.getExportParameterList().getString("MSG"); String RETCODE = func.getExportParameterList().getString("RETCODE"); - + System.out.println(RETCODE+L_MSG); if (Constants.SUCCESS.equals(Integer.parseInt(RETCODE))){ successNum++; successMsg.append("
" + successNum + "、物料:"+m.get("P_MATNR")+L_MSG); diff --git a/op-modules/op-sap/src/main/resources/mapper/sap/SapBaseProductMapper.xml b/op-modules/op-sap/src/main/resources/mapper/sap/SapBaseProductMapper.xml index d575d698..cae00a4a 100644 --- a/op-modules/op-sap/src/main/resources/mapper/sap/SapBaseProductMapper.xml +++ b/op-modules/op-sap/src/main/resources/mapper/sap/SapBaseProductMapper.xml @@ -175,7 +175,7 @@ #{netWeight}, #{tareWeight}, #{volume}, - meins, + #{meins}, #{unitPrice}, #{productGroup}, #{productGroupName},