diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java index 2edfbc70f..09383f65e 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java @@ -347,12 +347,6 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { return R.fail("子母工单信息缺失"); } - /**修改sap物料损耗组成**/ - R updateBomsSap = this.updateAttr1BomsSap(workOrders); - if(updateBomsSap.getCode()== 500){ - return updateBomsSap; - } - R sapRson = null; if(workOrders.size()==1){ /**(一层报工)工单报工**/ @@ -440,32 +434,6 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { } return sapRson; } - //修改报工物料组成 - private R updateAttr1BomsSap(List workOrderCodes) { - //是否有变动的物料损耗组成 - List updateBoms = mesReportWorkMapper.getUpdateAttr1Boms(workOrderCodes.get(workOrderCodes.size()-1)); - if(!CollectionUtils.isEmpty(updateBoms)){ - List> mapList = new ArrayList<>(); - Map mapBom = null; - for(MesReportWorkConsume updateBom:updateBoms){ - mapBom = new HashMap(); - mapBom.put("P_AUFNR",updateBom.getWorkorderCodeSap());// 订单号 例如:000100308287 - mapBom.put("P_MATNR",updateBom.getMaterialCode());// 物料号 例如:000000040000015089 - //mapBom.put("P_GMEIN",updateBom.getUnit());// 基本计量单位 例如:m - mapBom.put("P_WERKS",workOrderCodes.get(0).getFactoryCode());//物料工厂 例如:1000 - mapBom.put("P_LGORT",updateBom.getWarehouseCode());//仓库编号 例如:0013 - mapList.add(mapBom); - } - - logger.info(workOrderCodes.get(workOrderCodes.size()-1).getWorkorderCode() - + "报工损耗物料组件修改请求:" + JSONObject.toJSONString(mapList)); - R bomUpdateR = remoteSapService.shopOrderBomUpdate(mapList); - logger.info(workOrderCodes.get(workOrderCodes.size()-1).getWorkorderCode() - + "报工损耗物料组件修改结果:" + JSONObject.toJSONString(bomUpdateR)); - return bomUpdateR; - } - return R.ok(); - } /** * diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkConsumeServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkConsumeServiceImpl.java index 65f44bfda..2a11d2eda 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkConsumeServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkConsumeServiceImpl.java @@ -4,13 +4,16 @@ import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; +import com.op.common.core.domain.R; import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.bean.BeanUtils; import com.op.common.core.utils.uuid.IdUtils; import com.op.common.security.utils.SecurityUtils; import com.op.mes.domain.*; import com.op.mes.mapper.MesReportWorkMapper; +import com.op.system.api.RemoteSapService; import com.op.system.api.domain.dto.BaseBomDTO; import com.op.system.api.domain.mes.BaseProductDTO; import com.op.system.api.domain.mes.BaseTeamTDTO; @@ -38,6 +41,9 @@ public class MesReportWorkConsumeServiceImpl implements IMesReportWorkConsumeSer @Autowired private MesReportWorkMapper mesReportWorkMapper; + @Autowired + private RemoteSapService remoteSapService; + /** * 查询生产报工物料消耗 * @@ -164,42 +170,82 @@ public class MesReportWorkConsumeServiceImpl implements IMesReportWorkConsumeSer @Override @DS("#header.poolName") public int submitConsumePS(List mesReportWorkConsumes) { - Date nowTime = DateUtils.getNowDate(); - String updateBy = SecurityUtils.getUsername(); - for (MesReportWorkConsume mesReportWorkConsume : mesReportWorkConsumes) { - mesReportWorkConsume.setUpdateTime(nowTime); - mesReportWorkConsume.setUpdateBy(updateBy); - } - List updates = mesReportWorkConsumes - .stream() - .filter(u -> u.getCreateTime()!=null).collect(Collectors.toList()); - List adds = mesReportWorkConsumes - .stream() - .filter(u -> u.getCreateTime()==null).collect(Collectors.toList()); - if(!CollectionUtils.isEmpty(adds)){ - Map consumeInfoMap = new HashMap<>(); - for(MesReportWorkConsume add:adds){ - MesReportWorkConsume newConsumeInfo = consumeInfoMap.get(add.getWorkorderCode()); - if(newConsumeInfo==null){ - MesReportWorkConsume mapItem = mesReportWorkConsumeMapper.getNewConsumeInfo(add.getWorkorderCode()); - consumeInfoMap.put(add.getWorkorderCode(),mapItem); - } - newConsumeInfo = consumeInfoMap.get(add.getWorkorderCode()); - add.setRecordId(IdUtils.fastSimpleUUID()); - add.setReportCode(newConsumeInfo.getReportCode()); - add.setWorkorderCode(newConsumeInfo.getWorkorderCode()); - add.setCreateTime(nowTime); - add.setCreateTime(nowTime); - add.setAttr1("1");//新增标识 - add.setParentOrder(newConsumeInfo.getParentOrder()); - } - int addNum =mesReportWorkConsumeMapper.addConsumePS(adds); - System.out.println("addNum:"+addNum); + //根据belong_work_order找到sap工单(子子母) + List workOrders = mesReportWorkMapper.getSapWorkOrder(mesReportWorkConsumes.get(0).getParentOrder()); + if (CollectionUtils.isEmpty(workOrders)) { + return 0; } - int updateNum =mesReportWorkConsumeMapper.submitConsumePS(updates); - System.out.println("addNum:"+updateNum); - return updateNum; + + /**修改sap物料损耗组成**/ + R updateBomsSap = this.updateAttr1BomsSap(workOrders); + if(updateBomsSap.getCode()== 500){ + return 0; + }else { + Date nowTime = DateUtils.getNowDate(); + String updateBy = SecurityUtils.getUsername(); + for (MesReportWorkConsume mesReportWorkConsume : mesReportWorkConsumes) { + mesReportWorkConsume.setUpdateTime(nowTime); + mesReportWorkConsume.setUpdateBy(updateBy); + } + List updates = mesReportWorkConsumes + .stream() + .filter(u -> u.getCreateTime() != null).collect(Collectors.toList()); + List adds = mesReportWorkConsumes + .stream() + .filter(u -> u.getCreateTime() == null).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(adds)) { + Map consumeInfoMap = new HashMap<>(); + for (MesReportWorkConsume add : adds) { + MesReportWorkConsume newConsumeInfo = consumeInfoMap.get(add.getWorkorderCode()); + if (newConsumeInfo == null) { + MesReportWorkConsume mapItem = mesReportWorkConsumeMapper.getNewConsumeInfo(add.getWorkorderCode()); + consumeInfoMap.put(add.getWorkorderCode(), mapItem); + } + newConsumeInfo = consumeInfoMap.get(add.getWorkorderCode()); + + add.setRecordId(IdUtils.fastSimpleUUID()); + add.setReportCode(newConsumeInfo.getReportCode()); + add.setWorkorderCode(newConsumeInfo.getWorkorderCode()); + add.setCreateTime(nowTime); + add.setCreateTime(nowTime); + add.setAttr1("1");//新增标识 + add.setParentOrder(newConsumeInfo.getParentOrder()); + } + int addNum = mesReportWorkConsumeMapper.addConsumePS(adds); + System.out.println("addNum:" + addNum); + } + int updateNum = mesReportWorkConsumeMapper.submitConsumePS(updates); + System.out.println("addNum:" + updateNum); + return updateNum; + } + } + + //修改报工物料组成 + private R updateAttr1BomsSap(List workOrderCodes) { + //是否有变动的物料损耗组成 + List updateBoms = mesReportWorkMapper.getUpdateAttr1Boms(workOrderCodes.get(workOrderCodes.size()-1)); + if(!CollectionUtils.isEmpty(updateBoms)){ + List> mapList = new ArrayList<>(); + Map mapBom = null; + for(MesReportWorkConsume updateBom:updateBoms){ + mapBom = new HashMap(); + mapBom.put("P_AUFNR",updateBom.getWorkorderCodeSap());// 订单号 例如:000100308287 + mapBom.put("P_MATNR",updateBom.getMaterialCode());// 物料号 例如:000000040000015089 + //mapBom.put("P_GMEIN",updateBom.getUnit());// 基本计量单位 例如:m + mapBom.put("P_WERKS",workOrderCodes.get(0).getFactoryCode());//物料工厂 例如:1000 + mapBom.put("P_LGORT",updateBom.getWarehouseCode());//仓库编号 例如:0013 + mapList.add(mapBom); + } + + logger.info(workOrderCodes.get(workOrderCodes.size()-1).getWorkorderCode() + + "报工损耗物料组件修改请求:" + JSONObject.toJSONString(mapList)); + R bomUpdateR = remoteSapService.shopOrderBomUpdate(mapList); + logger.info(workOrderCodes.get(workOrderCodes.size()-1).getWorkorderCode() + + "报工损耗物料组件修改结果:" + JSONObject.toJSONString(bomUpdateR)); + return bomUpdateR; + } + return R.ok(); } @Override diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkConsumeMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkConsumeMapper.xml index 9b5cb4a90..d45efda4a 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkConsumeMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkConsumeMapper.xml @@ -105,7 +105,8 @@ pow.workorder_code_sap workorderCodeSap, mrwc.attr1, mrwc.warehouse_code warehouseCode, - mpd.quantity planQuantity + mpd.quantity planQuantity, + mrwc.parent_order parentOrder from mes_report_work_consume mrwc left join pro_order_workorder pow on mrwc.workorder_code = pow.workorder_code left join mes_prepare_detail mpd on mpd.parent_work_order = pow.belong_work_order diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml index 9a5b2bcff..1ef6fb756 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml @@ -687,7 +687,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" pow.workorder_code_sap workorderCodeSap, mrwc.warehouse_code warehouseCode from mes_report_work_consume mrwc - left join pro_order_workorder pow on mrwc.workorder_code = pow.workorder_code + left join pro_order_workorder pow on mrwc.workorder_code = pow.workorder_code where mrwc.attr1 = '1' and mrwc.del_flag = '0' and mrwc.parent_order = #{workorderCode} diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java index c76adc38f..0b119c075 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderServiceImpl.java @@ -1093,33 +1093,36 @@ public class ProOrderServiceImpl implements IProOrderService { @DS("#header.poolName") @Transactional(rollbackFor = Exception.class) public int deleteOrder(String[] orderIds) { + //只准一个个的删 - //未拆分、部分拆分,直接关闭订单 List checkOrders = proOrderWorkorderMapper.getOrderByOrders(orderIds); if(!CollectionUtils.isEmpty(checkOrders)){ - List allOrderIds = new ArrayList<>(); - for(ProOrderWorkorder order:checkOrders){ - String topOrderCode = order.getOrderCode(); - allOrderIds.add(order.getOrderId()); - Boolean run = true; - while (run) { - //下级 - ProOrderWorkorder sonOrder = proOrderWorkorderMapper.selectSonOrder(topOrderCode); - //有下级code - if (sonOrder != null) { - allOrderIds.add(sonOrder.getOrderId()); - topOrderCode = sonOrder.getOrderCode(); - } else { - run = false; + if(checkOrders.get(0).equals("o0")){ + //未拆分,直接关闭订单 + List allOrderIds = new ArrayList<>(); + for(ProOrderWorkorder order:checkOrders){ + String topOrderCode = order.getOrderCode(); + allOrderIds.add(order.getOrderId()); + Boolean run = true; + while (run) { + //下级 + ProOrderWorkorder sonOrder = proOrderWorkorderMapper.selectSonOrder(topOrderCode); + //有下级code + if (sonOrder != null) { + allOrderIds.add(sonOrder.getOrderId()); + topOrderCode = sonOrder.getOrderCode(); + } else { + run = false; + } } } + int m0 = proOrderMapper.deleteProOrderByIds(allOrderIds.toArray(new String[allOrderIds.size()])); + logger.info(orderIds[0]+"删除订单m0:"+m0); + return 1; } - int m0 = proOrderMapper.deleteProOrderByIds(allOrderIds.toArray(new String[allOrderIds.size()])); - logger.info(orderIds[0]+"删除订单m0:"+m0); - return 1; } - //已经存在工单可以进行订单关闭的数据 + //完全拆分已经存在工单可以进行订单关闭的数据 List checkWorkOrders = proOrderWorkorderMapper.getWorkOrderByOrders(orderIds); if(checkWorkOrders.size() != orderIds.length){ return 2; diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml index 17c09b360..181854769 100644 --- a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml +++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml @@ -541,7 +541,7 @@ #{orderId} - and status in ('o1','o0') and del_flag = '0' + and del_flag = '0'