diff --git a/XG_Project1/src/main/java/com/xisc/pm/api/controller/v1/SubController.java b/XG_Project1/src/main/java/com/xisc/pm/api/controller/v1/SubController.java index 5cb6440..0b12a29 100644 --- a/XG_Project1/src/main/java/com/xisc/pm/api/controller/v1/SubController.java +++ b/XG_Project1/src/main/java/com/xisc/pm/api/controller/v1/SubController.java @@ -222,7 +222,7 @@ public class SubController { @ApiOperation("数据处理") @PostMapping("/SubData") - public JsonData SubData( PmSubHis pmSubHis, @PathVariable Long organizationId) { + public JsonData SubData(@RequestBody PmSubHis pmSubHis, @PathVariable Long organizationId) { SecurityTokenHelper.validTokenIgnoreInsert(pmSubHis); String strSlab = pmSubHis.getSlabNo(); SubParams subParams = new SubParams(); @@ -2821,27 +2821,46 @@ public class SubController { GGrpCalRslt ggcr = gltSelGGrpCalRslt.get(i); PmPdSlab pmPdSlabDO = new PmPdSlab(); pmPdSlabDO.setPono(SInfo.getPono()); - pmPdSlabDO.setSlabDivNo(BigDecimal.ZERO); //TODO 板坯分割号 未赋值 查询板坯号等于slab_no的组板板坯表的记录数+1 + pmPdSlabDO.setSlabDivNo(BigDecimal.valueOf(i+1)); //TODO 板坯分割号 未赋值 查询板坯号等于slab_no的组板板坯表的记录数+1 pmPdSlabDO.setVirtualSlabNo(ggcr.getVirtualSlabNo()); pmPdSlabDO.setSlabNo(ggcr.getSlabNo()); pmPdSlabDO.setMatDesignKind("S"); pmPdSlabDO.setPdStatusHp("18"); pmPdSlabDO.setPdResp("781"); // TODO 组板责任者 未赋值 操作人id pmPdSlabDO.setFormPlateMode("A1"); //TODO 组板方式 需要判断 - pmPdSlabDO.setPickModeLenDir(BigDecimal.ZERO); //TODO 取板方式_长度方向 未赋值 - pmPdSlabDO.setPickModeWidDir(BigDecimal.ZERO); //TODO 取板方式_宽度方向 未赋值 + pmPdSlabDO.setPickModeLenDir(BigDecimal.valueOf(ggcr.getLtActInfoGPreOrder().size())); + BigDecimal widDir = ggcr.getLtActInfoGPreOrder().stream().filter(item -> item.getCombinationFlag() == 0).count() > 0? BigDecimal.ONE: BigDecimal.valueOf(2); + pmPdSlabDO.setPickModeWidDir(widDir); //TODO 取板方式_宽度方向 未赋值 pmPdSlabDO.setFurType("C");// TODO 加热炉类型 暂时赋值为C pmPdSlabDO.setAutoManualFlag("M"); pmPdSlabDO.setOrderRemainDiv("1"); pmPdSlabDO.setCanDelFlag("1"); //TODO:合同个数,取所有合同的数量 - List orderNoList = ggcr.getLtActInfoGPreOrder().stream().map(GPreOrder::getOrderNo).distinct().collect(Collectors.toList());//根据实际合同信息 的合同号去重 取出板内合同个数 + List unOrderNoList = new ArrayList<>(); + Integer zubanNum = 0; + for(int j = 0; j < ggcr.getLtActInfoGPreOrder().size(); j++){ + if (ggcr.getLtActInfoGPreOrder().get(j).getCombinationFlag() == 0){ + unOrderNoList.add(ggcr.getLtActInfoGPreOrder().get(j).getOrderNo()); + zubanNum += 1; + }else { + for (int k = 0; k < ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().size(); k++){ + unOrderNoList.add(ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().get(k).getInfoGPreOrder().getOrderNo()); + zubanNum += ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().size() ; + } + } + } + List orderNoList = unOrderNoList.stream().distinct().collect(Collectors.toList()); pmPdSlabDO.setOrderNumInPlate(BigDecimal.valueOf(orderNoList.size())); //TODO:合同数量,取所有小板的数据量 - pmPdSlabDO.setTotSmallPlateNum(BigDecimal.valueOf(ggcr.getLtActInfoGPreOrder().size())); + pmPdSlabDO.setTotSmallPlateNum(BigDecimal.valueOf(zubanNum)); //TODO:轴合同获取 + GPreOrder axleGPreOrder = ggcr.getLtActInfoGPreOrder().get(0); + if(ggcr.getLtActInfoGPreOrder().get(0).getCombinationFlag() == 1){ + axleGPreOrder = ggcr.getLtActInfoGPreOrder().get(0).getLtInfoCombGPreOrder().get(0).getInfoGPreOrder(); + } + String axleOrderNo = axleGPreOrder.getOrderNo(); //轴合同 Optional resultPmContMscTechDO = plistPmContMscTechDO.stream() - .filter(item -> ggcr.getLtActInfoGPreOrder().get(0).getOrderNo().equals(item.getOrderNo())) //TODO 根据轴合同号查询合同工艺表 暂时取第一条合同 + .filter(item -> axleOrderNo.equals(item.getOrderNo())) //TODO 根据轴合同号查询合同工艺表 暂时取第一条合同 .findFirst(); pmPdSlabDO.setAdTypeCode(resultPmContMscTechDO.get().getAdTypeCode()); pmPdSlabDO.setAdModeCode(resultPmContMscTechDO.get().getAdModeCode()); @@ -2849,7 +2868,7 @@ public class SubController { pmPdSlabDO.setCutModeCode(resultPmContMscTechDO.get().getCutModeCode()); //TODO 缺少质量模块MES合同主档QD_TO_PO_ORDER -// pmPdSlabDO.setUltCode(resultPmContMscTechDO.get().getUltCode()); + pmPdSlabDO.setUltCode(resultPmContMscTechDO.get().getUltCode()); //TODO 遍历组板合同,根据合同号从质量模块MES合同主档QD_TO_PO_ORDER读取ERP_UT_SPEC1探伤标准1、ERP_UT_SPEC2超声探伤标2、ERP_UT_SPEC3超声探伤标3,去重后所有数据拼接成一条记录 //遍历 orderNoList 拿每一条orderNo查询plistQdToPoOrderDO 获取ERP_UT_SPEC1,ERP_UT_SPEC2,ERP_UT_SPEC3 ,将获取的每一个探伤标准 去重后拼接成一条记录 StringBuilder ultDetectMethodCodeBuilder = new StringBuilder(); @@ -2892,23 +2911,45 @@ public class SubController { String coolCode = ""; // 遍历 组板合同列表 for (GPreOrder gPreOrder : ggcr.getLtActInfoGPreOrder()) { - String orderNo = gPreOrder.getOrderNo(); - String mscLineNo = gPreOrder.getInfoPmContMscTechDO().getMscLineNo(); - - // 根据 orderNo 和 mscLineNo 在 plistPmContMscTechDO 中查找匹配项 - Optional matchingItem = plistPmContMscTechDO.stream() - .filter(item -> orderNo.equals(item.getOrderNo()) && mscLineNo.equals(item.getMscLineNo())) - .findFirst(); - if (!ultDetectMethodCode.isEmpty()) { - if (!coolCode.isEmpty()) { - break; - } else { - coolCode = nvl(matchingItem.get().getCoolCode(), ""); + if(gPreOrder.getCombinationFlag() == 1){ + for (GComBOrder gComBOrder : gPreOrder.getLtInfoCombGPreOrder()) { + String orderNo = gComBOrder.getInfoGPreOrder().getOrderNo(); + String mscLineNo = gComBOrder.getInfoGPreOrder().getInfoPmContMscTechDO().getMscLineNo(); + Optional matchingItem = plistPmContMscTechDO.stream() + .filter(item -> orderNo.equals(item.getOrderNo()) && mscLineNo.equals(item.getMscLineNo())) + .findFirst(); + if (!ultDetectMethodCode.isEmpty()) { + if (!coolCode.isEmpty()) { + break; + } else { + coolCode = nvl(matchingItem.get().getCoolCode(), ""); + } + } else { + ultDetectMethodCode = nvl(matchingItem.get().getUltDetectMethodCode(), ""); + if (coolCode.isEmpty()) { + coolCode = nvl(matchingItem.get().getCoolCode(), ""); + } + } } - } else { - ultDetectMethodCode = nvl(matchingItem.get().getUltDetectMethodCode(), ""); - if (coolCode.isEmpty()) { - coolCode = nvl(matchingItem.get().getCoolCode(), ""); + }else{ + String orderNo = gPreOrder.getOrderNo(); + String mscLineNo = gPreOrder.getInfoPmContMscTechDO().getMscLineNo(); + + // 根据 orderNo 和 mscLineNo 在 plistPmContMscTechDO 中查找匹配项 + Optional matchingItem = plistPmContMscTechDO.stream() + .filter(item -> orderNo.equals(item.getOrderNo()) && mscLineNo.equals(item.getMscLineNo())) + .findFirst(); + if (!ultDetectMethodCode.isEmpty()) { + if (!coolCode.isEmpty()) { + break; + } else { + coolCode = nvl(matchingItem.get().getCoolCode(), ""); + } + } else { + ultDetectMethodCode = nvl(matchingItem.get().getUltDetectMethodCode(), ""); + if (coolCode.isEmpty()) { + coolCode = nvl(matchingItem.get().getCoolCode(), ""); + } } } } @@ -2916,7 +2957,7 @@ public class SubController { pmPdSlabDO.setCoolCode(coolCode); Optional resultPmProContProdAttrDO = plistPmProContProdAttrDO.stream() - .filter(item -> ggcr.getLtActInfoGPreOrder().get(0).getOrderNo().equals(item.getOrderNo())) //TODO 根据轴合同号查询生产合同产品属性表 暂时取第一条合同 + .filter(item -> axleOrderNo.equals(item.getOrderNo())) //TODO 根据轴合同号查询生产合同产品属性表 暂时取第一条合同 .findFirst(); pmPdSlabDO.setWithSideFlag(resultPmProContProdAttrDO.get().getProdSideMark()); @@ -2925,15 +2966,30 @@ public class SubController { String urgOrderFlag = ""; for (GPreOrder gPreOrder : ggcr.getLtActInfoGPreOrder()) { - String orderNo = gPreOrder.getOrderNo(); + if(gPreOrder.getCombinationFlag() == 1){ + for (GComBOrder gComBOrder : gPreOrder.getLtInfoCombGPreOrder()) { + String orderNo = gComBOrder.getInfoGPreOrder().getOrderNo(); + String mscLineNo = gComBOrder.getInfoGPreOrder().getInfoPmContMscTechDO().getMscLineNo(); + Optional pmProContProdAttrDOItem = plistPmProContProdAttrDO.stream() + .filter(item -> orderNo.equals(item.getOrderNo())) + .findFirst(); + urgOrderFlag = String.valueOf(nvl(pmProContProdAttrDOItem.get().getUrgOrderFlag(), "")); + if (!urgOrderFlag.isEmpty()) { + break; + } + } - // 根据 orderNo 和 mscLineNo 在 plistPmContMscTechDO 中查找匹配项 - Optional pmProContProdAttrDOItem = plistPmProContProdAttrDO.stream() - .filter(item -> orderNo.equals(item.getOrderNo())) - .findFirst(); - urgOrderFlag = String.valueOf(nvl(pmProContProdAttrDOItem.get().getUrgOrderFlag(), "")); - if (!urgOrderFlag.isEmpty()) { - break; + }else{ + String orderNo = gPreOrder.getOrderNo(); + + // 根据 orderNo 和 mscLineNo 在 plistPmContMscTechDO 中查找匹配项 + Optional pmProContProdAttrDOItem = plistPmProContProdAttrDO.stream() + .filter(item -> orderNo.equals(item.getOrderNo())) + .findFirst(); + urgOrderFlag = String.valueOf(nvl(pmProContProdAttrDOItem.get().getUrgOrderFlag(), "")); + if (!urgOrderFlag.isEmpty()) { + break; + } } } pmPdSlabDO.setUrgOrderFlag(urgOrderFlag); @@ -2968,7 +3024,7 @@ public class SubController { pmPdSlabDO.setFixSlabLen(BigDecimal.valueOf(ggcr.getVirtualSlab_Len())); Optional resultPmContMscTechDO1 = plistPmContMscTechDO.stream() - .filter(item -> ggcr.getLtActInfoGPreOrder().get(0).getOrderNo().equals(item.getOrderNo()) && ggcr.getLtActInfoGPreOrder().get(0).getInfoPmContMscTechDO().getMscLineNo().equals(item.getMscLineNo())) //TODO 根据轴合同号和产线号查询合同工艺表 暂时取第一条合同 + .filter(item -> axleOrderNo.equals(item.getOrderNo()) && ggcr.getLtActInfoGPreOrder().get(0).getInfoPmContMscTechDO().getMscLineNo().equals(item.getMscLineNo())) //TODO 根据轴合同号和产线号查询合同工艺表 暂时取第一条合同 .findFirst(); pmPdSlabDO.setHpFlameCleanDiv(resultPmContMscTechDO1.get().getFlameCleanDiv()); @@ -2986,9 +3042,9 @@ public class SubController { pmPdSlabDO.setRollAimThick(ggcr.getCal_Thk()); pmPdSlabDO.setRollAimWidth(BigDecimal.valueOf(ggcr.getCal_Wid())); pmPdSlabDO.setRollAimLen(BigDecimal.valueOf(ggcr.getCal_Len())); - pmPdSlabDO.setOrderThickAxis(ggcr.getLtActInfoGPreOrder().get(0).getThk()); - pmPdSlabDO.setCombinePlateWidth(BigDecimal.valueOf(ggcr.getLtActInfoGPreOrder().get(0).getWid())); - pmPdSlabDO.setCombinePlateLen(BigDecimal.valueOf(ggcr.getLtActInfoGPreOrder().get(0).getLen())); + pmPdSlabDO.setOrderThickAxis(axleGPreOrder.getThk()); + pmPdSlabDO.setCombinePlateWidth(BigDecimal.valueOf(axleGPreOrder.getWid())); + pmPdSlabDO.setCombinePlateLen(BigDecimal.valueOf(axleGPreOrder.getLen())); pmPdSlabDO.setRollWtHp(weight); BigDecimal minThickTolMax = ggcr.getLtActInfoGPreOrder().stream() @@ -3002,11 +3058,20 @@ public class SubController { .orElse(BigDecimal.ZERO); pmPdSlabDO.setRollThickTolMin(maxThickTolMin); - BigDecimal yield = (ggcr.getLtActInfoGPreOrder().stream() - .map(gPreOrder -> BigDecimal.valueOf(gPreOrder.getWid()).multiply(gPreOrder.getThk()).multiply(BigDecimal.valueOf(gPreOrder.getLen()))) - .reduce(BigDecimal.ZERO, BigDecimal::add)) - .multiply(BigDecimal.valueOf(7.85)) - .divide(weight.multiply( BigDecimal.valueOf(1000000000)), 4, RoundingMode.HALF_UP); + BigDecimal yield = BigDecimal.ZERO; + for(int l = 0; l < ggcr.getLtActInfoGPreOrder().size(); l++){ + if(ggcr.getLtActInfoGPreOrder().get(l).getCombinationFlag() == 1){ + List gComBOrders = ggcr.getLtActInfoGPreOrder().get(l).getLtInfoCombGPreOrder(); + for(int m = 0; m < ggcr.getLtActInfoGPreOrder().get(l).getLtInfoCombGPreOrder().size(); m++){ + yield = yield.add(BigDecimal.valueOf(gComBOrders.get(m).getWid()).multiply(gComBOrders.get(m).getThk()).multiply(BigDecimal.valueOf(gComBOrders.get(m).getLen()))); + } + }else{ + yield = yield.add(BigDecimal.valueOf(ggcr.getLtActInfoGPreOrder().get(l).getWid()).multiply(ggcr.getLtActInfoGPreOrder().get(l).getThk()).multiply(BigDecimal.valueOf(ggcr.getLtActInfoGPreOrder().get(l).getLen()))); + } + } + + + yield = yield.multiply(BigDecimal.valueOf(7.85)).divide(weight.multiply( BigDecimal.valueOf(1000000000)), 4, RoundingMode.HALF_UP); pmPdSlabDO.setCommandYield(yield); pmPdSlabDO.setNormYield(yield); pmPdSlabDO.setRollYield(yield); @@ -3025,7 +3090,7 @@ public class SubController { pmPdSlabDO.setBroadFlag("0"); } - pmPdSlabDO.setOrderNoAxis(ggcr.getLtActInfoGPreOrder().get(0).getOrderNo());//TODO 轴合同号 暂时取第一个订单号 + pmPdSlabDO.setOrderNoAxis(axleGPreOrder.getOrderNo());//TODO 轴合同号 暂时取第一个订单号 pmPdSlabDO.setMscLineNo(SInfo.getMscLineNo()); //TODO 产线号,暂时默认板坯产线号 pmPdSlabDO.setTransFlag(BigDecimal.valueOf(0)); @@ -3043,8 +3108,8 @@ public class SubController { pmPdSlabDO.setTenantId(organizationId); // pmPdSlabDO.setObjectVersionNumber(1L); - SetPmCmdSlab(pmPdSlabDO,organizationId);//命令板坯表 - SetPmCmdLargePlt(pmPdSlabDO, ggcr,resultPmContMscTechDO1.get(),organizationId);//命令大板表 + SetPmCmdSlab(pmPdSlabDO,resultPmProContProdAttrDO.get(),organizationId);//命令板坯表 + SetPmCmdLargePlt(pmPdSlabDO, ggcr,resultPmContMscTechDO1.get(),resultPmProContProdAttrDO.get(),organizationId);//命令大板表 pmPdSlabDOList.add(pmPdSlabDO); } @@ -3052,12 +3117,12 @@ public class SubController { //大板粗切位置表 public void SetPmPdPlateCut(Long organizationId) { - for (int i = 0; i < gltSelGGrpCalRslt.size(); i++) { + for (int i = 0; i < gltSelGGrpCalRslt.size(); i++) {// 异宽判断 长度判断 热处理 GGrpCalRslt ggcr = gltSelGGrpCalRslt.get(i); PmPdPlateCut pmPdPlateCutDO = new PmPdPlateCut(); pmPdPlateCutDO.setPdMatNo(ggcr.getVirtualSlabNo()); //TODO 粗切类型 粗切位置 位置序号 取值待定 - //pmPdPlateCutDO.setCutType(); + pmPdPlateCutDO.setCutType("P"); //粗切类型(M:搬送用;D:异宽用;P:命令用;H:热分切用) //pmPdPlateCutDO.setPositionType(); //pmPdPlateCutDO.setPositionSeq(); @@ -3077,22 +3142,46 @@ public class SubController { public void SetPmPdBlockPos(Long organizationId) { for (int i = 0; i < gltSelGGrpCalRslt.size(); i++) { GGrpCalRslt ggcr = gltSelGGrpCalRslt.get(i); - List orderNoList = ggcr.getLtActInfoGPreOrder().stream() - .map(GPreOrder::getOrderNo).distinct().collect(Collectors.toList()); //合同号去重 + List unOrderNoList = new ArrayList<>(); + Integer zubanNum = 0; + for(int j = 0; j < ggcr.getLtActInfoGPreOrder().size(); j++){ + if (ggcr.getLtActInfoGPreOrder().get(j).getCombinationFlag() == 0){ + unOrderNoList.add(ggcr.getLtActInfoGPreOrder().get(j).getOrderNo()); + zubanNum += 1; + }else { + for (int k = 0; k < ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().size(); k++){ + unOrderNoList.add(ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().get(k).getInfoGPreOrder().getOrderNo()); + zubanNum += ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().size() ; + } + } + } + List orderNoList = unOrderNoList.stream().distinct().collect(Collectors.toList()); for (int j = 0; j < orderNoList.size(); j++) { PmPdBlockPos pmPdBlockPosDO = new PmPdBlockPos(); pmPdBlockPosDO.setPdMatNo(ggcr.getVirtualSlabNo()); pmPdBlockPosDO.setOrderNo(orderNoList.get(j)); pmPdBlockPosDO.setOrderSeqNo(Long.valueOf(j + 1));//TODO 订单序号 暂时以实际订单信息列表顺序 - List resultGPreOrder = ggcr.getLtActInfoGPreOrder().stream() - .filter(item -> item.getOrderNo().equals(pmPdBlockPosDO.getOrderNo())) - .collect(Collectors.toList()); + List resultGPreOrder = new ArrayList<>(); + for(int k = 0; k < ggcr.getLtActInfoGPreOrder().size(); k++){ + if(ggcr.getLtActInfoGPreOrder().get(j).getCombinationFlag() == 1){ + for (int l = 0; l < ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().size(); l++){ + if(ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().get(l).getInfoGPreOrder().getOrderNo().equals(pmPdBlockPosDO.getOrderNo())){ + resultGPreOrder.add(ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().get(l).getInfoGPreOrder()); + } + } + }else{ + resultGPreOrder.add(ggcr.getLtActInfoGPreOrder().get(j)); + } + } +// List resultGPreOrder = ggcr.getLtActInfoGPreOrder().stream() +// .filter(item -> item.getOrderNo().equals(pmPdBlockPosDO.getOrderNo())) +// .collect(Collectors.toList()); Integer blockPlateNum = resultGPreOrder.size(); pmPdBlockPosDO.setBlockPlateNum(BigDecimal.valueOf(blockPlateNum)); pmPdBlockPosDO.setSlabNo(ggcr.getSlabNo()); pmPdBlockPosDO.setProContId(resultGPreOrder.get(0).getInfoPmProContDo().getProContId()); -// pmPdBlockPosDO.setOrderBlockNo(); //TODO 厚板组板块号 暂时不知如何赋值 + pmPdBlockPosDO.setOrderBlockNo(Long.valueOf(i+1)); //TODO 厚板组板块号 暂时不知如何赋值 pmPdBlockPosDO.setCreatedBy(781L);//TODO 创建人修改人,暂时默认781 BKGY pmPdBlockPosDO.setLastUpdatedBy(781L); @@ -3111,17 +3200,43 @@ public class SubController { public void SetPmPdContSum(Long organizationId) { for (int i = 0; i < gltSelGGrpCalRslt.size(); i++) { GGrpCalRslt ggcr = gltSelGGrpCalRslt.get(i); - List orderNoList = ggcr.getLtActInfoGPreOrder().stream() - .map(GPreOrder::getOrderNo).distinct().collect(Collectors.toList()); //合同号去重 + List unOrderNoList = new ArrayList<>(); + Integer zubanNum = 0; + for(int j = 0; j < ggcr.getLtActInfoGPreOrder().size(); j++){ + if (ggcr.getLtActInfoGPreOrder().get(j).getCombinationFlag() == 0){ + unOrderNoList.add(ggcr.getLtActInfoGPreOrder().get(j).getOrderNo()); + zubanNum += 1; + }else { + for (int k = 0; k < ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().size(); k++){ + unOrderNoList.add(ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().get(k).getInfoGPreOrder().getOrderNo()); + zubanNum += ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().size() ; + } + } + } + List orderNoList = unOrderNoList.stream().distinct().collect(Collectors.toList()); for (int j = 0; j < orderNoList.size(); j++) { PmPdContSum pmPdContSumDO = new PmPdContSum(); pmPdContSumDO.setPdMatNo(ggcr.getVirtualSlabNo()); pmPdContSumDO.setOrderNo(orderNoList.get(j)); pmPdContSumDO.setOrderSeqNo(BigDecimal.valueOf(j + 1)); - List gPreOrders = ggcr.getLtActInfoGPreOrder().stream() // 当前合同号在实际合同列表中的条数 - .filter(item -> item.getOrderNo().equals(pmPdContSumDO.getOrderNo())) - .collect(Collectors.toList()); + + List gPreOrders = new ArrayList<>(); + for(int k = 0; k < ggcr.getLtActInfoGPreOrder().size(); k++){ + if(ggcr.getLtActInfoGPreOrder().get(j).getCombinationFlag() == 1){ + for (int l = 0; l < ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().size(); l++){ + if(ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().get(l).getInfoGPreOrder().getOrderNo().equals(pmPdContSumDO.getOrderNo())){ + gPreOrders.add(ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().get(l).getInfoGPreOrder()); + } + } + }else{ + gPreOrders.add(ggcr.getLtActInfoGPreOrder().get(j)); + } + } + +// List gPreOrders = ggcr.getLtActInfoGPreOrder().stream() // 当前合同号在实际合同列表中的条数 +// .filter(item -> item.getOrderNo().equals(pmPdContSumDO.getOrderNo())) +// .collect(Collectors.toList()); Integer orderPlateNum = gPreOrders.size(); pmPdContSumDO.setOrderPlateNum(BigDecimal.valueOf(orderPlateNum)); pmPdContSumDO.setSlabNo(ggcr.getSlabNo()); @@ -3143,11 +3258,15 @@ public class SubController { pmPdContSumDO.setLastUpdatedBy(781L); pmPdContSumDO.setCreationDate(now); pmPdContSumDO.setLastUpdateDate(now); - pmPdContSumDO.setAxisFlag(0L);//TODO 轴合同标记,暂时默认0 + + pmPdContSumDO.setAxisFlag(0L); + if(j == 0){ + pmPdContSumDO.setAxisFlag(1L);//TODO 轴合同标记,暂时取第一条为轴合同 + } pmPdContSumDO.setTenantId(organizationId); // pmPdContSumDO.setObjectVersionNumber(1L); - SetPmCmdCont(pmPdContSumDO, gPreOrders.get(0),ggcr.getLtActInfoGPreOrder().size(),organizationId);//命令参数表 + SetPmCmdCont(pmPdContSumDO, gPreOrders.get(0),zubanNum,organizationId);//命令参数表 pmPdContSumDOList.add(pmPdContSumDO); } } @@ -3158,51 +3277,94 @@ public class SubController { for (int i = 0; i < gltSelGGrpCalRslt.size(); i++) { GGrpCalRslt ggcr = gltSelGGrpCalRslt.get(i); for (int j = 0; j < ggcr.getLtActInfoGPreOrder().size(); j++) { - GPreOrder gpo = ggcr.getLtActInfoGPreOrder().get(j); - - PmSmallPltPos pmSmallPltPosDO = new PmSmallPltPos(); - pmSmallPltPosDO.setPdMatNo(ggcr.getVirtualSlabNo()); - pmSmallPltPosDO.setOrderNo(gpo.getOrderNo()); - pmSmallPltPosDO.setProContId(gpo.getInfoPmProContDo().getProContId()); - pmSmallPltPosDO.setOrderSeqNo(Long.valueOf(j + 1)); - pmSmallPltPosDO.setSlabNo(ggcr.getSlabNo()); - Optional resultPmProContProdAttrDO = plistPmProContProdAttrDO.stream() - .filter(item -> gpo.getOrderNo().equals(item.getOrderNo())) //根据合同号查询生产合同产品属性表 - .findFirst(); - if (resultPmProContProdAttrDO.get().getTrimCode().equals("0")) { - pmSmallPltPosDO.setSmallPlateDivNo("000"); - } else { - pmSmallPltPosDO.setSmallPlateDivNo(SMALL_PLATE_DIV_NO[j]); - } - pmSmallPltPosDO.setPickModeLenDir(Long.valueOf(j+1));//TODO 取板方式 长度方向 列数累加 - pmSmallPltPosDO.setPickModeWidDir(1L);//TODO 取板方式 宽度方向 第一行 - pmSmallPltPosDO.setOrderThick(gpo.getThk()); - pmSmallPltPosDO.setOrderWidth(BigDecimal.valueOf(gpo.getWid())); - pmSmallPltPosDO.setOrderLen(BigDecimal.valueOf(gpo.getLen())); //TODO 长度不确定用实际长度还是长度 - pmSmallPltPosDO.setOrderLenMax(gpo.getInfoPmProContProdAttrDO().getOrderMaxLen()); - pmSmallPltPosDO.setOrderLenMin(gpo.getInfoPmProContProdAttrDO().getOrderMinLen()); + if(ggcr.getLtActInfoGPreOrder().get(j).getCombinationFlag() == 1){ + for (int k = 0; k < ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().size(); k++) { + GPreOrder gpo = ggcr.getLtActInfoGPreOrder().get(j).getLtInfoCombGPreOrder().get(k).getInfoGPreOrder(); + PmSmallPltPos pmSmallPltPosDO = new PmSmallPltPos(); + pmSmallPltPosDO.setPdMatNo(ggcr.getVirtualSlabNo()); + pmSmallPltPosDO.setOrderNo(gpo.getOrderNo()); + pmSmallPltPosDO.setProContId(gpo.getInfoPmProContDo().getProContId()); + pmSmallPltPosDO.setOrderSeqNo(Long.valueOf(j + 1)); + pmSmallPltPosDO.setSlabNo(ggcr.getSlabNo()); + Optional resultPmProContProdAttrDO = plistPmProContProdAttrDO.stream() + .filter(item -> gpo.getOrderNo().equals(item.getOrderNo())) //根据合同号查询生产合同产品属性表 + .findFirst(); + if (resultPmProContProdAttrDO.get().getTrimCode().equals("0")) { + pmSmallPltPosDO.setSmallPlateDivNo("000"); + } else { + pmSmallPltPosDO.setSmallPlateDivNo(SMALL_PLATE_DIV_NO[j]); + } + pmSmallPltPosDO.setPickModeLenDir(Long.valueOf(j+1)); + pmSmallPltPosDO.setPickModeWidDir(Long.valueOf(k+1)); + pmSmallPltPosDO.setOrderThick(gpo.getThk()); + pmSmallPltPosDO.setOrderWidth(BigDecimal.valueOf(gpo.getWid())); + pmSmallPltPosDO.setOrderLen(BigDecimal.valueOf(gpo.getLen())); //TODO 长度不确定用实际长度还是长度 + pmSmallPltPosDO.setOrderLenMax(gpo.getInfoPmProContProdAttrDO().getOrderMaxLen()); + pmSmallPltPosDO.setOrderLenMin(gpo.getInfoPmProContProdAttrDO().getOrderMinLen()); - pmSmallPltPosDO.setSmallPlateThick(gpo.getThk()); - pmSmallPltPosDO.setSmallPlateWidth(BigDecimal.valueOf(gpo.getWid())); - pmSmallPltPosDO.setSmallPlateLen(BigDecimal.valueOf(gpo.getLen())); //TODO 长度不确定用实际长度还是长度 + pmSmallPltPosDO.setSmallPlateThick(gpo.getThk()); + pmSmallPltPosDO.setSmallPlateWidth(BigDecimal.valueOf(gpo.getWid())); + pmSmallPltPosDO.setSmallPlateLen(BigDecimal.valueOf(gpo.getLen())); //TODO 长度不确定用实际长度还是长度 - pmSmallPltPosDO.setCreatedBy(781L);//TODO 创建人修改人,暂时默认781 BKGY - pmSmallPltPosDO.setLastUpdatedBy(781L); - pmSmallPltPosDO.setCreationDate(now); - pmSmallPltPosDO.setLastUpdateDate(now); + pmSmallPltPosDO.setCreatedBy(781L);//TODO 创建人修改人,暂时默认781 BKGY + pmSmallPltPosDO.setLastUpdatedBy(781L); + pmSmallPltPosDO.setCreationDate(now); + pmSmallPltPosDO.setLastUpdateDate(now); - pmSmallPltPosDO.setTenantId(organizationId); + pmSmallPltPosDO.setTenantId(organizationId); // pmSmallPltPosDO.setObjectVersionNumber(1L); - SetPmCmdSmallPlt(pmSmallPltPosDO,resultPmProContProdAttrDO.get(),mscLineNo,organizationId); - pmSmallPltPosDOList.add(pmSmallPltPosDO); + SetPmCmdSmallPlt(pmSmallPltPosDO,resultPmProContProdAttrDO.get(),mscLineNo,organizationId); + pmSmallPltPosDOList.add(pmSmallPltPosDO); + } + }else{ + GPreOrder gpo = ggcr.getLtActInfoGPreOrder().get(j); + + PmSmallPltPos pmSmallPltPosDO = new PmSmallPltPos(); + pmSmallPltPosDO.setPdMatNo(ggcr.getVirtualSlabNo()); + pmSmallPltPosDO.setOrderNo(gpo.getOrderNo()); + pmSmallPltPosDO.setProContId(gpo.getInfoPmProContDo().getProContId()); + pmSmallPltPosDO.setOrderSeqNo(Long.valueOf(j + 1)); + pmSmallPltPosDO.setSlabNo(ggcr.getSlabNo()); + Optional resultPmProContProdAttrDO = plistPmProContProdAttrDO.stream() + .filter(item -> gpo.getOrderNo().equals(item.getOrderNo())) //根据合同号查询生产合同产品属性表 + .findFirst(); + if (resultPmProContProdAttrDO.get().getTrimCode().equals("0")) { + pmSmallPltPosDO.setSmallPlateDivNo("000"); + } else { + pmSmallPltPosDO.setSmallPlateDivNo(SMALL_PLATE_DIV_NO[j]); + } + pmSmallPltPosDO.setPickModeLenDir(Long.valueOf(j+1));//TODO 取板方式 长度方向 列数累加 + pmSmallPltPosDO.setPickModeWidDir(1L);//TODO 取板方式 宽度方向 第一行 + pmSmallPltPosDO.setOrderThick(gpo.getThk()); + pmSmallPltPosDO.setOrderWidth(BigDecimal.valueOf(gpo.getWid())); + pmSmallPltPosDO.setOrderLen(BigDecimal.valueOf(gpo.getLen())); //TODO 长度不确定用实际长度还是长度 + pmSmallPltPosDO.setOrderLenMax(gpo.getInfoPmProContProdAttrDO().getOrderMaxLen()); + pmSmallPltPosDO.setOrderLenMin(gpo.getInfoPmProContProdAttrDO().getOrderMinLen()); + + pmSmallPltPosDO.setSmallPlateThick(gpo.getThk()); + pmSmallPltPosDO.setSmallPlateWidth(BigDecimal.valueOf(gpo.getWid())); + pmSmallPltPosDO.setSmallPlateLen(BigDecimal.valueOf(gpo.getLen())); //TODO 长度不确定用实际长度还是长度 + + + pmSmallPltPosDO.setCreatedBy(781L);//TODO 创建人修改人,暂时默认781 BKGY + pmSmallPltPosDO.setLastUpdatedBy(781L); + pmSmallPltPosDO.setCreationDate(now); + pmSmallPltPosDO.setLastUpdateDate(now); + + pmSmallPltPosDO.setTenantId(organizationId); +// pmSmallPltPosDO.setObjectVersionNumber(1L); + + SetPmCmdSmallPlt(pmSmallPltPosDO,resultPmProContProdAttrDO.get(),mscLineNo,organizationId); + pmSmallPltPosDOList.add(pmSmallPltPosDO); + } } } } //命令板坯表 - public void SetPmCmdSlab(PmPdSlab pmPdSlabDO, Long organizationId) { + public void SetPmCmdSlab(PmPdSlab pmPdSlabDO, PmProContProdTtr pmProContProdTtr, Long organizationId) { PmCmdSlab pmCmdSlabDO = new PmCmdSlab(); pmCmdSlabDO.setPonoSlabNo(pmPdSlabDO.getVirtualSlabNo()); pmCmdSlabDO.setTmpSlabNo(pmPdSlabDO.getVirtualSlabNo()); @@ -3215,7 +3377,7 @@ public class SubController { pmCmdSlabDO.setOrderNumInPlate(Long.valueOf(pmPdSlabDO.getOrderNumInPlate().intValue())); pmCmdSlabDO.setOrderRemainDiv(pmPdSlabDO.getOrderRemainDiv()); pmCmdSlabDO.setMatDesignKind("S"); - pmCmdSlabDO.setProdCodeHp("");//TODO 厚板品种代码 暂时默认为空 + pmCmdSlabDO.setProdCodeHp(pmProContProdTtr.getProdCodeHp()); pmCmdSlabDO.setSgSign(pmPdSlabDO.getSgSign()); pmCmdSlabDO.setStNo(pmPdSlabDO.getStNo()); pmCmdSlabDO.setPreCleanSlabThick(pmPdSlabDO.getPreCleanSlabThick()); @@ -3280,7 +3442,7 @@ public class SubController { } //命令大板表 - public void SetPmCmdLargePlt(PmPdSlab pmPdSlabDO, GGrpCalRslt gGrpCalRslt, PmContMscTech pmContMscTechDO, Long organizationId) { + public void SetPmCmdLargePlt(PmPdSlab pmPdSlabDO, GGrpCalRslt gGrpCalRslt, PmContMscTech pmContMscTechDO, PmProContProdTtr pmProContProdTtr, Long organizationId) { PmCmdLargePlt pmCmdLargePltDO = new PmCmdLargePlt(); pmCmdLargePltDO.setRollMode(pmContMscTechDO.getRollMode()); pmCmdLargePltDO.setHotRectifyFlag(String.valueOf(pmContMscTechDO.getHotChargeFlag())); @@ -3298,7 +3460,7 @@ public class SubController { pmCmdLargePltDO.setMatDesignKind(pmPdSlabDO.getMatDesignKind()); pmCmdLargePltDO.setOrderNumInPlate(pmPdSlabDO.getOrderNumInPlate().longValue()); pmCmdLargePltDO.setTotSmallPlateNum(pmPdSlabDO.getTotSmallPlateNum().longValue()); - pmCmdLargePltDO.setProdCodeHp("");//TODO 厚板品种代码 暂时默认为空 + pmCmdLargePltDO.setProdCodeHp(pmProContProdTtr.getProdCodeHp()); pmCmdLargePltDO.setAdTypeCode(pmPdSlabDO.getAdTypeCode()); pmCmdLargePltDO.setAdModeCode(pmPdSlabDO.getAdModeCode()); pmCmdLargePltDO.setUltCode(pmPdSlabDO.getUltCode()); diff --git a/XG_Project1/src/main/java/com/xisc/pm/app/service/impl/SubServiceImpl.java b/XG_Project1/src/main/java/com/xisc/pm/app/service/impl/SubServiceImpl.java index 9e54ad2..9bcd048 100644 --- a/XG_Project1/src/main/java/com/xisc/pm/app/service/impl/SubServiceImpl.java +++ b/XG_Project1/src/main/java/com/xisc/pm/app/service/impl/SubServiceImpl.java @@ -416,21 +416,21 @@ public class SubServiceImpl implements SubService { @Transactional(rollbackFor = Exception.class) public void SaveData(SlabInfoDO p,List pmPdSlabDOList, List pmPdPlateCutDOList, List pmPdBlockPosDOList, List pmPdContSumDOList, List pmSmallPltPosDOList, List pmCmdSlabDOList, List pmCmdLargePltDOList, List pmCmdContDOList, List pmCmdSmallPltDOList, List plistpmSubHisDO, List plistpmSubOrdDO) { -// // 调用mm接口 -// // 查询MM_SLAB 信息获取板坯信息 -// PmPdSlabSplitDTO pmPdSlabSplitDTO = pmPdSlabRepository.selectMmSlabBySlabId(p.getSlabId(),p.getTenantId()); -// -// // 查询板坯信息表。第一次查询可能无值 -// PmPdSlabInfo pmPdSlabInfo = pmPdSlabInfoRepository.selectBySlabNo(p.getSlabNo(), p.getTenantId()); -// -// if (pmPdSlabInfo == null) { -// pmPdSlabInfo = buildPmPdSlabInfo(pmPdSlabSplitDTO , p.getSlabNo() , p.getMscLineNo() , p.getTenantId()); -// pmPdSlabInfoRepository.insertSelective(pmPdSlabInfo); -// System.out.println("pmPdSlabInfo表 保存成功"); -// // 轧钢模块“在制品材料管理封锁事件接口" -// callMatStatusModify(pmPdSlabInfo); -// System.out.println("mm模块接口 调用成功"); -// } + // 调用mm接口 + // 查询MM_SLAB 信息获取板坯信息 + PmPdSlabSplitDTO pmPdSlabSplitDTO = pmPdSlabRepository.selectMmSlabBySlabId(p.getSlabId(),p.getTenantId()); + + // 查询板坯信息表。第一次查询可能无值 + PmPdSlabInfo pmPdSlabInfo = pmPdSlabInfoRepository.selectBySlabNo(p.getSlabNo(), p.getTenantId()); + + if (pmPdSlabInfo == null) { + pmPdSlabInfo = buildPmPdSlabInfo(pmPdSlabSplitDTO , p.getSlabNo() , p.getMscLineNo() , p.getTenantId()); + pmPdSlabInfoRepository.insertSelective(pmPdSlabInfo); + System.out.println("pmPdSlabInfo表 保存成功"); + // 轧钢模块“在制品材料管理封锁事件接口" + callMatStatusModify(pmPdSlabInfo); + System.out.println("mm模块接口 调用成功"); + } @@ -443,42 +443,42 @@ public class SubServiceImpl implements SubService { System.out.println("pmSubOrd表 保存成功"); } // -// if(pmPdSlabDOList.size()>0){ -// pmPdSlabRepository.batchInsertSelective(pmPdSlabDOList); -// System.out.println("PmPdSlab表 保存成功"); -// } -// if(pmPdPlateCutDOList.size()>0){ -// pmPdPlateCutRepository.batchInsertSelective(pmPdPlateCutDOList); -// System.out.println("PmPdPlateCut 大板粗切位置 保存成功"); -// } -// if(pmPdBlockPosDOList.size()>0){ -// pmPdBlockPosRepository.batchInsertSelective(pmPdBlockPosDOList); -// System.out.println("PmPdBlockPos 组合子板位置表 保存成功"); -// } -// if(pmPdContSumDOList.size()>0){ -// pmPdContSumRepository.batchInsertSelective(pmPdContSumDOList); -// System.out.println("PmPdContSum 合同总量表 保存成功"); -// } -// if(pmSmallPltPosDOList.size()>0){ -// pmSmallPltPosRepository.batchInsertSelective(pmSmallPltPosDOList); -// System.out.println("PmSmallPltPos 命令小板位置表 保存成功"); -// } -// if(pmCmdSlabDOList.size()>0){ -// pmCmdSlabRepository.batchInsertSelective(pmCmdSlabDOList); -// System.out.println("PmCmdSlab 保存成功"); -// } -// if(pmCmdLargePltDOList.size()>0){ -// pmCmdLargePltRepository.batchInsertSelective(pmCmdLargePltDOList); -// System.out.println("pmCmdLargePltDO 命令大板 保存成功"); -// } -// if(pmCmdContDOList.size()>0){ -// pmCmdContRepository.batchInsertSelective(pmCmdContDOList); -// System.out.println("PmCmdCont 命令参数 保存成功"); -// } -// if(pmCmdSmallPltDOList.size()>0){ -// pmCmdSmallPltRepository.batchInsertSelective(pmCmdSmallPltDOList); -// System.out.println("PmCmdSmallPlt 命令小板表 保存成功"); -// } + if(pmPdSlabDOList.size()>0){ + pmPdSlabRepository.batchInsertSelective(pmPdSlabDOList); + System.out.println("PmPdSlab表 保存成功"); + } + if(pmPdPlateCutDOList.size()>0){ + pmPdPlateCutRepository.batchInsertSelective(pmPdPlateCutDOList); + System.out.println("PmPdPlateCut 大板粗切位置 保存成功"); + } + if(pmPdBlockPosDOList.size()>0){ + pmPdBlockPosRepository.batchInsertSelective(pmPdBlockPosDOList); + System.out.println("PmPdBlockPos 组合子板位置表 保存成功"); + } + if(pmPdContSumDOList.size()>0){ + pmPdContSumRepository.batchInsertSelective(pmPdContSumDOList); + System.out.println("PmPdContSum 合同总量表 保存成功"); + } + if(pmSmallPltPosDOList.size()>0){ + pmSmallPltPosRepository.batchInsertSelective(pmSmallPltPosDOList); + System.out.println("PmSmallPltPos 命令小板位置表 保存成功"); + } + if(pmCmdSlabDOList.size()>0){ + pmCmdSlabRepository.batchInsertSelective(pmCmdSlabDOList); + System.out.println("PmCmdSlab 保存成功"); + } + if(pmCmdLargePltDOList.size()>0){ + pmCmdLargePltRepository.batchInsertSelective(pmCmdLargePltDOList); + System.out.println("pmCmdLargePltDO 命令大板 保存成功"); + } + if(pmCmdContDOList.size()>0){ + pmCmdContRepository.batchInsertSelective(pmCmdContDOList); + System.out.println("PmCmdCont 命令参数 保存成功"); + } + if(pmCmdSmallPltDOList.size()>0){ + pmCmdSmallPltRepository.batchInsertSelective(pmCmdSmallPltDOList); + System.out.println("PmCmdSmallPlt 命令小板表 保存成功"); + } } /** diff --git a/XG_Project1/src/main/java/com/xisc/pm/infra/job/SubDataJobHander.java b/XG_Project1/src/main/java/com/xisc/pm/infra/job/SubDataJobHander.java new file mode 100644 index 0000000..9acd600 --- /dev/null +++ b/XG_Project1/src/main/java/com/xisc/pm/infra/job/SubDataJobHander.java @@ -0,0 +1,54 @@ +package com.xisc.pm.infra.job; + +import com.xisc.pm.domain.entity.PmSubLog; +import com.xisc.pm.domain.repository.PmSubLogRepository; +import org.hzero.boot.scheduler.infra.annotation.JobHandler; +import org.hzero.boot.scheduler.infra.enums.ReturnT; +import org.hzero.boot.scheduler.infra.handler.IJobHandler; +import org.hzero.boot.scheduler.infra.tool.SchedulerTool; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Map; + +/** + * 余坯智能组板任务 + * + * @author + * @date + * @description + */ +@JobHandler("SubDataJobHander") +public class SubDataJobHander implements IJobHandler { + + @Autowired + private PmSubLogRepository pmSubLogRepository; + + private static final String TENANT_ID = "tenantId"; + + @Override + @Transactional(rollbackFor = Exception.class) + public ReturnT execute(Map map, SchedulerTool tool) { + tool.info("测试定时任务执行开始"); + // 校验 + Long tenantId; + try { + tenantId = Long.parseLong(map.get(TENANT_ID)); + } catch (Exception e) { + tool.info("=====参数有误: 请维护租户ID,且只能维护整数类型, 不执行本次任务====="); + return ReturnT.FAILURE; + } + + PmSubLog pmSubLog = new PmSubLog(); + pmSubLog.setSubDate(new java.util.Date()); + pmSubLog.setSlabNo("123456789"); + pmSubLog.setSubMode(1L); + pmSubLog.setSubRslt("成功"); + pmSubLog.setSubLog("测试定时任务"); + pmSubLog.setTenantId(tenantId); + pmSubLogRepository.insertSelective(pmSubLog); + + tool.info("测试定时任务执行结束"); + return ReturnT.SUCCESS; + } +} diff --git a/XG_Project1/src/main/resources/application.yml b/XG_Project1/src/main/resources/application.yml index 8bdbfb1..1867d31 100644 --- a/XG_Project1/src/main/resources/application.yml +++ b/XG_Project1/src/main/resources/application.yml @@ -97,12 +97,12 @@ hzero: service-name: ${HZERO_SERVICE_NAME:xisc-zb} scheduler: auto-register: ${SCHEDULER_AUTO_REGISTER:true} - executor-code: ${SCHEDULER_EXECUTOR_CODE:PM_EXECUTOR} + executor-code: ${SCHEDULER_EXECUTOR_CODE:ZB_EXECUTOR} upload-log: false #seata 配置 seata: - enabled: ${SEATA_ENABLED:false} + enabled: ${SEATA_ENABLED:true} # 名字随意取,但是要和下面的vgroup-mapping对应 tx-service-group: xisc_tx_group rm: