From 242c5a05a399ad6844da9419e2574d47ac66abb1 Mon Sep 17 00:00:00 2001 From: yinq <1345442242@qq.com> Date: Fri, 13 Oct 2023 10:40:44 +0800 Subject: [PATCH 1/3] =?UTF-8?q?change=20-=20sap=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aucma/api/service/impl/SAPPortServiceImpl.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPortServiceImpl.java b/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPortServiceImpl.java index a341aef..f1e7c17 100644 --- a/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPortServiceImpl.java +++ b/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPortServiceImpl.java @@ -65,7 +65,6 @@ public class SAPPortServiceImpl implements ISAPPortService { // result = "{\"O_TAB\":{\"item\":[{\"MAKTX\":\"压缩机,GP14TG,R134a,ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000125\"},{\"MAKTX\":\"压缩机,GP14TG,R134a,ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000125\"},{\"MAKTX\":\"压缩机,NL7CLX,R404a,丹佛斯\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000126\"},{\"MAKTX\":\"压缩机,NL7CLX,R404a,丹佛斯\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000126\"},{\"MAKTX\":\"压缩机,HVY57AA,R600a,奥地利ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000127\"},{\"MAKTX\":\"压缩机,HVY57AA,R600a,奥地利ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000127\"},{\"MAKTX\":\"压缩机,HVY67AA,R600a,奥地利ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000128\"},{\"MAKTX\":\"压缩机,HVY67AA,R600a,奥地利ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000128\"},{\"MAKTX\":\"压缩机,MR22FB,R404a,ACC\",\"WERKS\":\"2004\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000129\"},{\"MAKTX\":\"压缩机,MR22FB,R404a,ACC\",\"WERKS\":\"2006\",\"MTART\":\"ROH\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-21\",\"MATNR\":\"000000003000000129\"},{\"MAKTX\":\"盖后加固体,BC/BD-127FA\",\"WERKS\":\"2004\",\"MTART\":\"HALB\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-06\",\"MATNR\":\"000000008106000102\"},{\"MAKTX\":\"SC-246,YZXGWB乳品\",\"WERKS\":\"2006\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-22\",\"MATNR\":\"000000009002003478\"},{\"MAKTX\":\"SD-460,YZXGW蒙牛冰品\",\"WERKS\":\"2004\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-22\",\"MATNR\":\"000000009000004735\"},{\"MAKTX\":\"BC-100E,特需\",\"WERKS\":\"2006\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-02\",\"MATNR\":\"000000009001002406\"},{\"MAKTX\":\"BD(C)-310T,特需\",\"WERKS\":\"2004\",\"MTART\":\"FERT\",\"MEINS\":\"EA\",\"UDATE\":\"2019-08-20\",\"MATNR\":\"000000009000000225\"}]},\"WERKS\":null,\"O_RETURN\":{\"item\":[{\"MESSAGE\":\"查询成功1!\",\"ID\":\" 0\",\"TYPE\":\"S\"}]}}"; ObjectMapper resultMapper = new ObjectMapper(); // 将 JSON 字符串 转换为 Java 对象 - System.out.println(result); SAPResultVo resultVo = resultMapper.readValue(result, SAPResultVo.class); //判断返回数据是否正确 if (StringUtils.isNull(resultVo.getO_RETURN()) || !" 0".equals(resultVo.getO_RETURN().getItem().get(0).get("ID"))){ @@ -108,17 +107,14 @@ public class SAPPortServiceImpl implements ISAPPortService { ObjectMapper objectMapper = new ObjectMapper(); requestParam = objectMapper.writeValueAsString(sapPortDto); //发送post请求 调用获取工单接口 - result = ApiUtils.sendSAPHttpPost(SAPConstants.SAP_PREFIX_URL + SAPConstants.PRODUCTION_ORDERS_URL, requestParam); // 处理接口返回消息 ObjectMapper resultMapper = new ObjectMapper(); // 将 JSON 字符串转换为 Java 对象 - SAPResultOrderInfoVo resultVo = resultMapper.readValue(result, SAPResultOrderInfoVo.class); //判断返回数据是否正确 if (StringUtils.isNull(resultVo.getO_RETURN()) || !" 0".equals(resultVo.getO_RETURN().getItem().get(0).get("ID"))){ - System.out.println(resultVo.getO_RETURN().getItem().get(0).get("ID")); String id = resultVo.getO_RETURN().getItem().get(0).get("ID"); Integer integer = Integer.valueOf(id); if (integer!=0&&integer!=null){ @@ -171,11 +167,11 @@ public class SAPPortServiceImpl implements ISAPPortService { //转物料实体类 保存数据 baseDeviceLedgersVos = storageService.insertSAPDeviceLedger(resultVo); //保存接口日志 - PortLogUtils.savePortLog(werks.getItem().get(0).get("IWERK"), "获取设备台账数据" + intervalDate, "getSAPBaseDeviceLedger", requestParam, result, null); + PortLogUtils.savePortLog(werks.getItem().get(0).get("WERKS"), "获取设备台账数据" + intervalDate, "getSAPBaseDeviceLedger", requestParam, result, null); } catch (Exception e) { //保存接口日志 System.out.println(e.getMessage()); - PortLogUtils.savePortLog(werks.getItem().get(0).get("IWERK"), "获取设备台账数据" + intervalDate, "getSAPBaseDeviceLedger", requestParam, result, e.toString()); + PortLogUtils.savePortLog(werks.getItem().get(0).get("WERKS"), "获取设备台账数据" + intervalDate, "getSAPBaseDeviceLedger", requestParam, result, e.toString()); } return baseDeviceLedgersVos; } @@ -205,7 +201,6 @@ public class SAPPortServiceImpl implements ISAPPortService { requestParam = objectMapper.writeValueAsString(sapPortDto); result = ApiUtils.sendSAPHttpPost(SAPConstants.SAP_PREFIX_URL + SAPConstants.PRODUCTS_BOM_URL, requestParam); // 处理接口返回消息 - System.out.println(result); ObjectMapper resultMapper = new ObjectMapper(); // 将 JSON 字符串转换为 Java 对象 SAPResultOrderInfoVo resultVo = resultMapper.readValue(result, SAPResultOrderInfoVo.class); @@ -221,11 +216,11 @@ public class SAPPortServiceImpl implements ISAPPortService { //转物料实体类 保存数据 orderBomInfosVos = storageService.insertSAPOrderBomInfo(resultVo); //保存接口日志 - PortLogUtils.savePortLog(werks.getItem().get(0).get("IWERK"), "获取产品bom数据" + intervalDate, "getSapBaseBomInfo", requestParam, result, null); + PortLogUtils.savePortLog(werks.getItem().get(0).get("WERKS"), "获取产品bom数据" + intervalDate, "getSapBaseBomInfo", requestParam, result, null); } catch (Exception e) { //保存接口日志 System.out.println(e.getMessage()); - PortLogUtils.savePortLog(werks.getItem().get(0).get("IWERK"), "获取产品bom数据" + intervalDate, "getSapBaseBomInfo", requestParam, result, e.toString()); + PortLogUtils.savePortLog(werks.getItem().get(0).get("WERKS"), "获取产品bom数据" + intervalDate, "getSapBaseBomInfo", requestParam, result, e.toString()); } return orderBomInfosVos; } From 4bdd6471fb934f541f974d91b34678c2acfb9778 Mon Sep 17 00:00:00 2001 From: yinq <1345442242@qq.com> Date: Fri, 13 Oct 2023 11:07:18 +0800 Subject: [PATCH 2/3] =?UTF-8?q?change=20-=20sap=E6=8E=A5=E5=8F=A3=E5=8E=BB?= =?UTF-8?q?=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/service/ISAPPutStorageService.java | 1 + .../impl/SAPPutStorageServiceImpl.java | 33 ++- .../BaseMaterialInfoController.java | 1 - .../controller/OrderBomInfoController.java | 1 - .../impl/BaseMaterialinfoServiceImpl.java | 3 + .../service/impl/OrderBomInfoServiceImpl.java | 3 + .../mapper/base/OrderBomInfoMapper.xml | 192 ++++++++++-------- 7 files changed, 130 insertions(+), 104 deletions(-) diff --git a/aucma-api/src/main/java/com/aucma/api/service/ISAPPutStorageService.java b/aucma-api/src/main/java/com/aucma/api/service/ISAPPutStorageService.java index 529ba74..46fe822 100644 --- a/aucma-api/src/main/java/com/aucma/api/service/ISAPPutStorageService.java +++ b/aucma-api/src/main/java/com/aucma/api/service/ISAPPutStorageService.java @@ -32,6 +32,7 @@ public interface ISAPPutStorageService { * * */ public ArrayList insertSAPBaseOrderInfo(SAPResultOrderInfoVo resultVo) throws ParseException; + /** * 转设备台账实体类 保存数据 * @param resultVo diff --git a/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPutStorageServiceImpl.java b/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPutStorageServiceImpl.java index 9ee182f..75c7b58 100644 --- a/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPutStorageServiceImpl.java +++ b/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPutStorageServiceImpl.java @@ -1,6 +1,5 @@ package com.aucma.api.service.impl; -import com.aucma.api.domain.vo.SAPResultBomVo; import com.aucma.api.domain.vo.SAPResultOrderInfoVo; import com.aucma.api.domain.vo.SAPResultVo; import com.aucma.api.service.ISAPPutStorageService; @@ -13,19 +12,13 @@ import com.aucma.base.service.IBaseMaterialInfoService; import com.aucma.base.service.IBaseOrderInfoService; import com.aucma.base.service.IOrderBomInfoService; import com.aucma.common.utils.DateUtils; -import com.aucma.common.utils.SecurityUtils; -import com.aucma.production.domain.BaseBomInfo; -import com.aucma.production.service.IBaseBomInfoService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; -import java.util.Date; import java.util.HashMap; import java.util.List; @@ -46,6 +39,7 @@ public class SAPPutStorageServiceImpl implements ISAPPutStorageService { @Autowired private IBaseOrderInfoService baseOrderInfoService; + @Autowired private IOrderBomInfoService orderBomInfoService; @@ -60,6 +54,7 @@ public class SAPPutStorageServiceImpl implements ISAPPutStorageService { List> itemList = resultVo.getO_TAB().get("item"); for (HashMap map : itemList) { BaseMaterialInfo baseMaterialInfo = new BaseMaterialInfo(); + baseMaterialInfo.setPlantCode(map.get("WERKS")); baseMaterialInfo.setMaterialCode(map.get("MATNR")); List baseMaterialInfoList = baseMaterialInfoService.selectBaseMaterialInfoList(baseMaterialInfo); if (baseMaterialInfoList.isEmpty()) { @@ -84,9 +79,10 @@ public class SAPPutStorageServiceImpl implements ISAPPutStorageService { ArrayList baseOrderInfoList = new ArrayList<>(); List> itemList = resultVo.getO_TAB().get("item"); for (HashMap map : itemList) { - String aufnr = map.get("AUFNR"); BaseOrderInfo boInfo = new BaseOrderInfo(); - boInfo.setOrderCode(aufnr); + boInfo.setOrderCode(map.get("AUFNR")); + boInfo.setMaterialCode(map.get("MATNR")); + boInfo.setFactoryCode(map.get("WERKS")); List baseOrderInfos = baseOrderInfoService.selectBaseOrderInfoList(boInfo); if (baseOrderInfos.isEmpty()) { BaseOrderInfo baseOrderInfo = new BaseOrderInfo(); @@ -104,7 +100,6 @@ public class SAPPutStorageServiceImpl implements ISAPPutStorageService { baseOrderInfo.setEndDate(new SimpleDateFormat("yyyy-MM-dd").parse(map.get("GSTRP"))); baseOrderInfo.setCreatedTime(DateUtils.getNowDate()); baseOrderInfoService.insertBaseOrderInfo(baseOrderInfo); - baseOrderInfoList.add(baseOrderInfo); } @@ -126,9 +121,10 @@ public class SAPPutStorageServiceImpl implements ISAPPutStorageService { List> itemList = resultVo.getO_TAB().get("item"); for (HashMap map : itemList) { BaseDeviceLedger device = new BaseDeviceLedger(); + device.setCostCenter(map.get("KOSTL"));; device.setDeviceCode(map.get("EQUNR")); + device.setFactoryCode(map.get("IWERK")); List baseDeviceLedgers = baseDeviceLedgerService.selectBaseDeviceLedgerList(device); - if (!baseDeviceLedgers.isEmpty()) { BaseDeviceLedger deviceLedger = new BaseDeviceLedger(); deviceLedger.setCostCenter(map.get("KOSTL"));// @@ -147,15 +143,20 @@ public class SAPPutStorageServiceImpl implements ISAPPutStorageService { return baseDeviceLedgerArrayList; } + /** + * 转换产品bom信息实体类 保存数据 + * + * */ @Override public ArrayList insertSAPOrderBomInfo(SAPResultOrderInfoVo resultVo) throws ParseException { ArrayList orderBomInfoList = new ArrayList<>(); List> itemList = resultVo.getO_TAB().get("item"); - for (HashMap map : itemList) { - OrderBomInfo orderBomInfo1 = new OrderBomInfo(); - orderBomInfo1.setMaterialCode(map.get("IDNRK")); - List orderBomInfos = orderBomInfoService.selectOrderBomInfoList(orderBomInfo1); + OrderBomInfo bomInfo = new OrderBomInfo(); + bomInfo.setMaterialCode(map.get("IDNRK")); + bomInfo.setParentId(map.get("MATNR")); + bomInfo.setFactoryCode(map.get("WERKS")); + List orderBomInfos = orderBomInfoService.selectOrderBomInfoList(bomInfo); if (orderBomInfos.isEmpty()) { OrderBomInfo orderBomInfo = new OrderBomInfo(); orderBomInfo.setFactoryCode(map.get("WERKS")); @@ -167,8 +168,6 @@ public class SAPPutStorageServiceImpl implements ISAPPutStorageService { orderBomInfo.setSort(map.get("SORTF")); orderBomInfo.setVbeln(map.get("VBELN")); orderBomInfo.setVbpos(map.get("VBPOS")); - orderBomInfo.setCreatedTime(DateUtils.getNowDate()); -// baseBomInfo.setCreatedBy(SecurityUtils.getLoginUser().getUsername()); orderBomInfoService.insertOrderBomInfo(orderBomInfo); orderBomInfoList.add(orderBomInfo); } diff --git a/aucma-base/src/main/java/com/aucma/base/controller/BaseMaterialInfoController.java b/aucma-base/src/main/java/com/aucma/base/controller/BaseMaterialInfoController.java index cfb9588..7635d75 100644 --- a/aucma-base/src/main/java/com/aucma/base/controller/BaseMaterialInfoController.java +++ b/aucma-base/src/main/java/com/aucma/base/controller/BaseMaterialInfoController.java @@ -75,7 +75,6 @@ public class BaseMaterialInfoController extends BaseController { @PostMapping public AjaxResult add(@RequestBody BaseMaterialInfo baseMaterialInfo) { baseMaterialInfo.setCreatedBy(getUsername()); - baseMaterialInfo.setCreatedTime(DateUtils.getNowDate()); return toAjax(baseMaterialInfoService.insertBaseMaterialInfo(baseMaterialInfo)); } diff --git a/aucma-base/src/main/java/com/aucma/base/controller/OrderBomInfoController.java b/aucma-base/src/main/java/com/aucma/base/controller/OrderBomInfoController.java index 2131c50..ccfa81b 100644 --- a/aucma-base/src/main/java/com/aucma/base/controller/OrderBomInfoController.java +++ b/aucma-base/src/main/java/com/aucma/base/controller/OrderBomInfoController.java @@ -86,7 +86,6 @@ public class OrderBomInfoController extends BaseController { @PostMapping public AjaxResult add(@RequestBody OrderBomInfo orderBomInfo) { orderBomInfo.setCreatedBy(getUsername()); - orderBomInfo.setCreatedTime(DateUtils.getNowDate()); return toAjax(orderBomInfoService.insertOrderBomInfo(orderBomInfo)); } diff --git a/aucma-base/src/main/java/com/aucma/base/service/impl/BaseMaterialinfoServiceImpl.java b/aucma-base/src/main/java/com/aucma/base/service/impl/BaseMaterialinfoServiceImpl.java index 646efc5..32ec8e6 100644 --- a/aucma-base/src/main/java/com/aucma/base/service/impl/BaseMaterialinfoServiceImpl.java +++ b/aucma-base/src/main/java/com/aucma/base/service/impl/BaseMaterialinfoServiceImpl.java @@ -1,6 +1,8 @@ package com.aucma.base.service.impl; import java.util.List; + +import com.aucma.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.aucma.base.mapper.BaseMaterialInfoMapper; @@ -52,6 +54,7 @@ public class BaseMaterialInfoServiceImpl implements IBaseMaterialInfoService @Override public int insertBaseMaterialInfo(BaseMaterialInfo baseMaterialInfo) { + baseMaterialInfo.setCreatedTime(DateUtils.getNowDate()); return baseMaterialInfoMapper.insertBaseMaterialInfo(baseMaterialInfo); } diff --git a/aucma-base/src/main/java/com/aucma/base/service/impl/OrderBomInfoServiceImpl.java b/aucma-base/src/main/java/com/aucma/base/service/impl/OrderBomInfoServiceImpl.java index a45e69e..416539a 100644 --- a/aucma-base/src/main/java/com/aucma/base/service/impl/OrderBomInfoServiceImpl.java +++ b/aucma-base/src/main/java/com/aucma/base/service/impl/OrderBomInfoServiceImpl.java @@ -1,6 +1,8 @@ package com.aucma.base.service.impl; import java.util.List; + +import com.aucma.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.aucma.base.mapper.OrderBomInfoMapper; @@ -52,6 +54,7 @@ public class OrderBomInfoServiceImpl implements IOrderBomInfoService @Override public int insertOrderBomInfo(OrderBomInfo orderBomInfo) { + orderBomInfo.setCreatedTime(DateUtils.getNowDate()); return orderBomInfoMapper.insertOrderBomInfo(orderBomInfo); } diff --git a/aucma-base/src/main/resources/mapper/base/OrderBomInfoMapper.xml b/aucma-base/src/main/resources/mapper/base/OrderBomInfoMapper.xml index 113e210..0ac25ff 100644 --- a/aucma-base/src/main/resources/mapper/base/OrderBomInfoMapper.xml +++ b/aucma-base/src/main/resources/mapper/base/OrderBomInfoMapper.xml @@ -5,121 +5,143 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - select obj_id, bom_code, material_code, material_name, material_type, standard_amount, parent_id, is_flag, created_by, created_time, updated_by, updated_time, factory_code, sort, vbeln, vbpos from order_bominfo + select ob.obj_id, + ob.bom_code, + ob.material_code, + bm.material_name, + ob.material_type, + ob.standard_amount, + ob.parent_id, + ob.is_flag, + ob.created_by, + ob.created_time, + ob.updated_by, + ob.updated_time, + ob.factory_code, + ob.sort, + ob.vbeln, + ob.vbpos + from order_bominfo ob + left join BASE_MATERIALINFO bm ON bm.MATERIAL_CODE = ob.material_code - - SELECT seq_order_bominfo.NEXTVAL as objId FROM DUAL - + + SELECT seq_order_bominfo.NEXTVAL as objId FROM DUAL + insert into order_bominfo - obj_id, - bom_code, - material_code, - material_name, - material_type, - standard_amount, - parent_id, - is_flag, - created_by, - created_time, - updated_by, - updated_time, - factory_code, - sort, - vbeln, - vbpos, + obj_id, + bom_code, + material_code, + material_name, + material_type, + standard_amount, + parent_id, + is_flag, + created_by, + created_time, + updated_by, + updated_time, + factory_code, + sort, + vbeln, + vbpos, - #{objId}, - #{bomCode}, - #{materialCode}, - #{materialName}, - #{materialType}, - #{standardAmount}, - #{parentId}, - #{isFlag}, - #{createdBy}, - #{createdTime}, - #{updatedBy}, - #{updatedTime}, - #{factoryCode}, - #{sort}, - #{vbeln}, - #{vbpos}, + #{objId}, + #{bomCode}, + #{materialCode}, + #{materialName}, + #{materialType}, + #{standardAmount}, + #{parentId}, + #{isFlag}, + #{createdBy}, + #{createdTime}, + #{updatedBy}, + #{updatedTime}, + #{factoryCode}, + #{sort}, + #{vbeln}, + #{vbpos}, update order_bominfo - bom_code = #{bomCode}, - material_code = #{materialCode}, - material_name = #{materialName}, - material_type = #{materialType}, - standard_amount = #{standardAmount}, - parent_id = #{parentId}, - is_flag = #{isFlag}, - created_by = #{createdBy}, - created_time = #{createdTime}, - updated_by = #{updatedBy}, - updated_time = #{updatedTime}, - factory_code = #{factoryCode}, - sort = #{sort}, - vbeln = #{vbeln}, - vbpos = #{vbpos}, + bom_code = #{bomCode}, + material_code = #{materialCode}, + material_name = #{materialName}, + material_type = #{materialType}, + standard_amount = #{standardAmount}, + parent_id = #{parentId}, + is_flag = #{isFlag}, + created_by = #{createdBy}, + created_time = #{createdTime}, + updated_by = #{updatedBy}, + updated_time = #{updatedTime}, + factory_code = #{factoryCode}, + sort = #{sort}, + vbeln = #{vbeln}, + vbpos = #{vbpos}, where obj_id = #{objId} - delete from order_bominfo where obj_id = #{objId} + delete + from order_bominfo + where obj_id = #{objId} From 11ad425098e81c586d1e28c7cd1cd4887f6d05a4 Mon Sep 17 00:00:00 2001 From: yinq <1345442242@qq.com> Date: Mon, 16 Oct 2023 15:16:16 +0800 Subject: [PATCH 3/3] =?UTF-8?q?change=20-=20=E8=AE=A2=E5=8D=95BOM=E7=88=B6?= =?UTF-8?q?=E5=AD=90=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/aucma/base/domain/OrderBomInfo.java | 15 +++++ .../aucma/base/mapper/OrderBomInfoMapper.java | 27 +++++++++ .../service/impl/OrderBomInfoServiceImpl.java | 55 ++++++++++++++++++- .../mapper/base/OrderBomInfoMapper.xml | 32 ++++++++++- .../impl/ProductPlanInfoServiceImpl.java | 5 +- 5 files changed, 129 insertions(+), 5 deletions(-) diff --git a/aucma-base/src/main/java/com/aucma/base/domain/OrderBomInfo.java b/aucma-base/src/main/java/com/aucma/base/domain/OrderBomInfo.java index 1d658ca..8d0a882 100644 --- a/aucma-base/src/main/java/com/aucma/base/domain/OrderBomInfo.java +++ b/aucma-base/src/main/java/com/aucma/base/domain/OrderBomInfo.java @@ -110,6 +110,21 @@ public class OrderBomInfo extends TreeStringEntity { @Excel(name = "销售单据项目") private String vbpos; + /** + * 祖级列表 + */ + private String ancestors; + + @Override + public String getAncestors() { + return ancestors; + } + + @Override + public void setAncestors(String ancestors) { + this.ancestors = ancestors; + } + public void setObjId(Long objId) { this.objId = objId; } diff --git a/aucma-base/src/main/java/com/aucma/base/mapper/OrderBomInfoMapper.java b/aucma-base/src/main/java/com/aucma/base/mapper/OrderBomInfoMapper.java index 62d30a3..1b9cd77 100644 --- a/aucma-base/src/main/java/com/aucma/base/mapper/OrderBomInfoMapper.java +++ b/aucma-base/src/main/java/com/aucma/base/mapper/OrderBomInfoMapper.java @@ -2,6 +2,7 @@ package com.aucma.base.mapper; import java.util.List; import com.aucma.base.domain.OrderBomInfo; +import org.apache.ibatis.annotations.Param; /** * 订单BOMMapper接口 @@ -58,4 +59,30 @@ public interface OrderBomInfoMapper * @return 结果 */ public int deleteOrderBomInfoByObjIds(Long[] objIds); + + + + /** + * 根据ID查询所有子Bom + * @param materialCode + * @return + */ + List selectChildrenBomById(String materialCode); + + /** + * 修改子元素关系 + * + * @param children 子元素 + * @return 结果 + */ + void updateBomChildren(@Param("depts") List children); + + + /** + * 根据BOM编号查询订单BOM + * + * @param materialCode 生产BOM主键 + * @return 订单BOM + */ + public OrderBomInfo selectOrderBomInfoByMaterialCode(@Param("materialCode") String materialCode); } diff --git a/aucma-base/src/main/java/com/aucma/base/service/impl/OrderBomInfoServiceImpl.java b/aucma-base/src/main/java/com/aucma/base/service/impl/OrderBomInfoServiceImpl.java index 416539a..63d3bbb 100644 --- a/aucma-base/src/main/java/com/aucma/base/service/impl/OrderBomInfoServiceImpl.java +++ b/aucma-base/src/main/java/com/aucma/base/service/impl/OrderBomInfoServiceImpl.java @@ -2,7 +2,9 @@ package com.aucma.base.service.impl; import java.util.List; +import com.aucma.common.exception.base.BaseException; import com.aucma.common.utils.DateUtils; +import com.aucma.common.utils.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.aucma.base.mapper.OrderBomInfoMapper; @@ -54,6 +56,16 @@ public class OrderBomInfoServiceImpl implements IOrderBomInfoService @Override public int insertOrderBomInfo(OrderBomInfo orderBomInfo) { + OrderBomInfo bomInfo = orderBomInfoMapper.selectOrderBomInfoByMaterialCode(orderBomInfo.getMaterialCode()); + if (StringUtils.isNotNull(bomInfo)){ + throw new BaseException("该物料编号:" + orderBomInfo.getMaterialCode() + "已存在!"); + } + if (StringUtils.isNotNull(orderBomInfo.getParentId())){ + OrderBomInfo info = orderBomInfoMapper.selectOrderBomInfoByMaterialCode(orderBomInfo.getParentId()); + orderBomInfo.setAncestors(info.getAncestors() + "," + orderBomInfo.getMaterialCode()); + }else { + orderBomInfo.setAncestors(orderBomInfo.getMaterialCode()); + } orderBomInfo.setCreatedTime(DateUtils.getNowDate()); return orderBomInfoMapper.insertOrderBomInfo(orderBomInfo); } @@ -65,9 +77,48 @@ public class OrderBomInfoServiceImpl implements IOrderBomInfoService * @return 结果 */ @Override - public int updateOrderBomInfo(OrderBomInfo orderBomInfo) + public int updateOrderBomInfo(OrderBomInfo orderBomInfoa) { - return orderBomInfoMapper.updateOrderBomInfo(orderBomInfo); + List orderBomInfos = orderBomInfoMapper.selectOrderBomInfoList(new OrderBomInfo()); + for (OrderBomInfo orderBomInfo : orderBomInfos) { + + String parentId = orderBomInfo.getParentId(); + if (StringUtils.isNull(parentId)){ + orderBomInfo.setAncestors(orderBomInfo.getMaterialCode()); + }else { + OrderBomInfo newParentBomInfo = orderBomInfoMapper.selectOrderBomInfoByMaterialCode(parentId); + OrderBomInfo oldBomInfo = orderBomInfoMapper.selectOrderBomInfoByMaterialCode(orderBomInfo.getMaterialCode()); + if (StringUtils.isNotNull(newParentBomInfo) && StringUtils.isNotNull(oldBomInfo)) + { + String newAncestors = newParentBomInfo.getAncestors() + "," + orderBomInfo.getMaterialCode(); + String oldAncestors = oldBomInfo.getAncestors(); + orderBomInfo.setAncestors(newAncestors); + updateBomChildren(orderBomInfo.getMaterialCode(), newAncestors, oldAncestors); + } + } + orderBomInfo.setUpdatedTime(DateUtils.getNowDate()); + orderBomInfoMapper.updateOrderBomInfo(orderBomInfo); + } + return orderBomInfoMapper.updateOrderBomInfo(orderBomInfoa); + } + + /** + * 修改子元素关系 + * + * @param materialCode 被修改的部门ID + * @param newAncestors 新的父ID集合 + * @param oldAncestors 旧的父ID集合 + */ + private void updateBomChildren(String materialCode, String newAncestors, String oldAncestors) { + List children = orderBomInfoMapper.selectChildrenBomById(materialCode); + for (OrderBomInfo child : children) + { + child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors)); + } + if (children.size() > 0) + { + orderBomInfoMapper.updateBomChildren(children); + } } /** diff --git a/aucma-base/src/main/resources/mapper/base/OrderBomInfoMapper.xml b/aucma-base/src/main/resources/mapper/base/OrderBomInfoMapper.xml index 0ac25ff..eb586a6 100644 --- a/aucma-base/src/main/resources/mapper/base/OrderBomInfoMapper.xml +++ b/aucma-base/src/main/resources/mapper/base/OrderBomInfoMapper.xml @@ -21,6 +21,7 @@ + @@ -28,7 +29,7 @@ ob.bom_code, ob.material_code, bm.material_name, - ob.material_type, + bm.material_type, ob.standard_amount, ob.parent_id, ob.is_flag, @@ -38,6 +39,7 @@ ob.updated_time, ob.factory_code, ob.sort, + ob.ancestors, ob.vbeln, ob.vbpos from order_bominfo ob @@ -49,7 +51,7 @@ and ob.bom_code = #{bomCode} and ob.material_code = #{materialCode} - and ob.material_name like concat(concat('%', + and bm.material_name like concat(concat('%', #{materialName}), '%') and ob.material_type = #{materialType} @@ -64,6 +66,7 @@ and ob.sort = #{sort} and ob.vbeln = #{vbeln} and ob.vbpos = #{vbpos} + and ob.ancestors like concat(concat('%', #{ancestors}), '%') order by ob.parent_id, ob.sort @@ -73,6 +76,11 @@ where ob.obj_id = #{objId} + + SELECT seq_order_bominfo.NEXTVAL as objId FROM DUAL @@ -95,6 +103,7 @@ sort, vbeln, vbpos, + ancestors, #{objId}, @@ -113,6 +122,7 @@ #{sort}, #{vbeln}, #{vbpos}, + #{ancestors}, @@ -134,6 +144,7 @@ sort = #{sort}, vbeln = #{vbeln}, vbpos = #{vbpos}, + ancestors = #{ancestors}, where obj_id = #{objId} @@ -150,4 +161,21 @@ #{objId} + + + + + update order_bominfo set ancestors = + + when #{item.materialCode} then #{item.ancestors} + + where material_code in + + #{item.materialCode} + + \ No newline at end of file diff --git a/aucma-production/src/main/java/com/aucma/production/service/impl/ProductPlanInfoServiceImpl.java b/aucma-production/src/main/java/com/aucma/production/service/impl/ProductPlanInfoServiceImpl.java index 1a5cfd0..7ad3dbf 100644 --- a/aucma-production/src/main/java/com/aucma/production/service/impl/ProductPlanInfoServiceImpl.java +++ b/aucma-production/src/main/java/com/aucma/production/service/impl/ProductPlanInfoServiceImpl.java @@ -133,7 +133,10 @@ public class ProductPlanInfoServiceImpl implements IProductPlanInfoService BaseBomInfo bomInfo = new BaseBomInfo(); bomInfo.setParentId(baseOrderInfo.getMaterialCode()); List baseBomInfoList = baseBomInfoService.selectBaseBomInfoList(bomInfo); - //若一个工单可下达多计划:则需要根据工单编号和物料编号去重 + if (baseBomInfoList.size() == 0){ + throw new BaseException("请先维护生产BOM信息!"); + } + //-- 若一个工单可下达多计划:则需要根据工单编号和物料编号去重 //检查生产BOM是否满足下计划条件 baseBomInfoService.checkBomInfo(baseBomInfoList);