From 8ddc206516135a04882290c2163ab397df402c00 Mon Sep 17 00:00:00 2001 From: sunhao <479527147@qq.com> Date: Fri, 21 Feb 2025 19:52:47 +0800 Subject: [PATCH] 2025-02-21 --- .../shopmanager/controller/SubController.java | 95 +++++++++--- .../src/main/resources/mapper/SubMapper.xml | 138 +++++++++--------- 2 files changed, 141 insertions(+), 92 deletions(-) diff --git a/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/controller/SubController.java b/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/controller/SubController.java index e5715fe..315aa8d 100644 --- a/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/controller/SubController.java +++ b/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/controller/SubController.java @@ -748,7 +748,7 @@ public class SubController { */ public void SetGrpDataBySlab(SlabInfoDO SInfo) { - gltGrpOrderFir.parallelStream().forEach(e -> { + gltGrpOrderFir.forEach(e -> { // gltGCalGrp 产生可计算分组 @@ -760,10 +760,16 @@ public class SubController { GCalGrp GCG = new GCalGrp(); GCG.setLtInfoGPreOrder(new CopyOnWriteArrayList<>()); - e.getLtInfoGPreOrder().parallelStream().forEach(f -> { + e.getLtInfoGPreOrder().forEach(f -> { + + //同钢种判断 + if (!SInfo.getStNo().equals(f.getInfoPmContMscTechDO().getStNo())) + { + return; + } try { - //化学成分 chemical composition +// 化学成分 chemical composition if (!ChkChemical(SInfo, f)) { return; } @@ -1369,7 +1375,7 @@ public class SubController { public static synchronized void SetAllOrder(PmProContDO prPmProContDO, PmProContProdAttrDO ppcpa, PmContMscTechDO pcmt) { // 获取缺乏的数量 - BigDecimal lackNum = prPmProContDO.getPdLackQty(); + BigDecimal lackNum =prPmProContDO.getPdTotQty().add(prPmProContDO.getPdLackQty()); // 如果缺乏数量大于0,则根据缺乏数量创建相应数量的订单对象 if (lackNum.intValue() > 0) { for (int i = 0; i < lackNum.intValue(); i++) { @@ -1562,8 +1568,10 @@ public class SubController { if ((SInfo.getRemLen().multiply(SInfo.getSlabActThk()).multiply(SInfo.getRemWid()).divide(intThk.multiply(BigDecimal.valueOf(intWid)), RoundingMode.HALF_UP)).compareTo(BigDecimal.valueOf(intRollMaxLen)) > 0) { intMaxLen = intRollMaxLen; } else { - intMaxLen = (SInfo.getRemLen().multiply(SInfo.getSlabActThk()).multiply(SInfo.getRemWid()).divide(intThk.multiply(BigDecimal.valueOf(intWid)), RoundingMode.HALF_UP)).intValue(); + //① 氧化铁皮损失率取固定值:0.01; + intMaxLen = (SInfo.getRemLen().multiply(BigDecimal.valueOf(0.99)).multiply(SInfo.getSlabActThk()).multiply(SInfo.getRemWid()).divide(intThk.multiply(BigDecimal.valueOf(intWid)), RoundingMode.HALF_UP)).intValue(); } + //不能小于可轧制的最小长度 if (intMaxLen < intRollMinLen) { return; @@ -1617,6 +1625,11 @@ public class SubController { return; } + //测试代码 + if (e.getOrderNo()=="52500096071" ) + { + + } ltOrder.add(e.getOrderNo());//添加订单号 ltValues.add(e.getIDValue());//价值 ltweights.add(e.getLen());//长度 @@ -1663,8 +1676,8 @@ public class SubController { //切尾 int intTail = PPCLB.getTailCut().intValue(); - //去掉切头尾长度 - int intCap = p.getCal_Len() - intHead - intTail; + //去掉切头尾长度 300为预留式样长度 + int intCap = p.getCal_Len() - intHead - intTail-300; long[] capacities = {intCap}; @@ -1793,10 +1806,38 @@ public class SubController { //板坯重量 p.setVirtualSlab_Wgt(p.getVirtualSlab_Thk().multiply(BigDecimal.valueOf(p.getVirtualSlab_Len())).multiply(BigDecimal.valueOf(p.getVirtualSlab_Wid())).multiply(BigDecimal.valueOf(7.85)).divide(BigDecimal.valueOf(1000000000), 2, RoundingMode.HALF_UP)); + //板坯可轧最大长度 + int intSlabMaxLen=(SInfo.getRemLen().multiply(SInfo.getSlabActThk()).multiply(SInfo.getRemWid()).divide(decThk.multiply(BigDecimal.valueOf(intWid)), RoundingMode.HALF_UP)).intValue(); + + //短坯料计算总长度小于轧线最大长度不切割 + if (intSlabMaxLen < intRollMaxLen) { + + //板坯最大长度 + p.setVirtualSlab_Len(SInfo.getRemLen().intValue()); + + //轧制长度 + p.setCal_Len( SInfo.getSlabActThk() + .multiply(SInfo.getRemWid()) + .multiply(SInfo.getRemLen()) + .divide(decThk.multiply(BigDecimal.valueOf(intWid)), 0, RoundingMode.CEILING).intValue()); + + //板坯重量 + p.setVirtualSlab_Wgt(p.getVirtualSlab_Thk().multiply(BigDecimal.valueOf(p.getVirtualSlab_Len())).multiply(BigDecimal.valueOf(p.getVirtualSlab_Wid())).multiply(BigDecimal.valueOf(7.85)).divide(BigDecimal.valueOf(1000000000), 2, RoundingMode.HALF_UP)); + + } + //成材率计算 - BigDecimal rolledVolume = p.getCal_Thk() - .multiply(BigDecimal.valueOf(p.getCal_Wid())) - .multiply(BigDecimal.valueOf(p.getEff_Len())); + BigDecimal rolledVolume =new BigDecimal(0) ; + // p.getCal_Thk() + // .multiply(BigDecimal.valueOf(p.getCal_Wid())) + // .multiply(BigDecimal.valueOf(p.getEff_Len())); + for (int i = 0; i < p.getLtActInfoGPreOrder().size(); i++) { + rolledVolume=rolledVolume.add( BigDecimal.valueOf(p.getLtActInfoGPreOrder().get(i).getLen()) + .multiply(p.getCal_Thk()) + .multiply(BigDecimal.valueOf(p.getLtActInfoGPreOrder().get(i).getWid()))); + } + + BigDecimal slabVolume = SInfo.getSlabActThk() .multiply(SInfo.getRemWid()) @@ -1824,7 +1865,7 @@ public class SubController { } //成材率大于90% - if (p.getRate().compareTo(BigDecimal.valueOf(0.9)) <= 0) { + if (p.getRate().compareTo(BigDecimal.valueOf(0.7)) <= 0) { p.setIntUseFlg(0); return; } @@ -2097,7 +2138,7 @@ public class SubController { pmPdSlabDO.setVirtualSlabNo(ggcr.getVirtualSlabNo()); pmPdSlabDO.setSlabNo(ggcr.getSlabNo()); pmPdSlabDO.setMatDesignKind("S"); - pmPdSlabDO.setPdStatusHp("12"); + pmPdSlabDO.setPdStatusHp("18"); pmPdSlabDO.setPdResp("781"); // TODO 组板责任者 未赋值 操作人id pmPdSlabDO.setFormPlateMode("A1"); //TODO 组板方式 需要判断 pmPdSlabDO.setPickModeLenDir(BigDecimal.ZERO); //TODO 取板方式_长度方向 未赋值 @@ -2217,7 +2258,7 @@ public class SubController { pmPdSlabDO.setPreCleanSlabLen(BigDecimal.valueOf(ggcr.getVirtualSlab_Len())); pmPdSlabDO.setPreCleanSlabMaxLen(BigDecimal.valueOf(ggcr.getVirtualSlab_Len())); pmPdSlabDO.setPreCleanSlabMinLen(BigDecimal.valueOf(ggcr.getVirtualSlab_Len())); - BigDecimal weight = SInfo.getSlabActThk().multiply(SInfo.getSlabActWid()).multiply(BigDecimal.valueOf(ggcr.getVirtualSlab_Len())).multiply(BigDecimal.valueOf(7.85)); + BigDecimal weight = SInfo.getSlabActThk().multiply(SInfo.getSlabActWid()).multiply(BigDecimal.valueOf(ggcr.getVirtualSlab_Len())).multiply(BigDecimal.valueOf(7.85)).divide(BigDecimal.valueOf(1000000000),3,RoundingMode.HALF_UP); pmPdSlabDO.setPreCleanSlabWt(weight); pmPdSlabDO.setPreCleanSlabMaxWt(weight); pmPdSlabDO.setPreCleanSlabMinWt(weight); @@ -2231,6 +2272,9 @@ public class SubController { pmPdSlabDO.setInfurSlabMaxWt(weight); pmPdSlabDO.setInfurSlabMinWt(weight); + pmPdSlabDO.setNeedSlabLen(BigDecimal.valueOf(ggcr.getVirtualSlab_Len())); + pmPdSlabDO.setNeedSlabWt(weight); + pmPdSlabDO.setAddSlabFlag("1"); //TODO 暂时写死 pmPdSlabDO.setFixSlabLenFlag(0); pmPdSlabDO.setFixSlabLen(BigDecimal.valueOf(ggcr.getVirtualSlab_Len())); @@ -2297,6 +2341,9 @@ public class SubController { pmPdSlabDO.setTransFlag(BigDecimal.valueOf(0)); + pmPdSlabDO.setSlabCleanWtLossRateSt(BigDecimal.valueOf(0)); + pmPdSlabDO.setSlabCleanWtLossRateFr(BigDecimal.valueOf(0)); + pmPdSlabDO.setCreatedBy(781L);//TODO 创建人修改人,暂时默认781 BKGY pmPdSlabDO.setLastUpdatedBy(781L); pmPdSlabDO.setCreationDate(now); @@ -2424,8 +2471,8 @@ public class SubController { } else { pmSmallPltPosDO.setSmallPlateDivNo(SMALL_PLATE_DIV_NO[j]); } - pmSmallPltPosDO.setPickModeLenDir(0);//TODO 取板方式 长度方向 不知道怎么取暂时默认为0 - pmSmallPltPosDO.setPickModeWidDir(0);//TODO 取板方式 宽度方向 不知道怎么取暂时默认为0 + pmSmallPltPosDO.setPickModeLenDir(j+1);//TODO 取板方式 长度方向 列数累加 + pmSmallPltPosDO.setPickModeWidDir(1);//TODO 取板方式 宽度方向 第一行 pmSmallPltPosDO.setOrderThick(gpo.getThk()); pmSmallPltPosDO.setOrderWidth(BigDecimal.valueOf(gpo.getWid())); pmSmallPltPosDO.setOrderLen(gpo.getLen()); //TODO 长度不确定用实际长度还是长度 @@ -2436,6 +2483,7 @@ public class SubController { pmSmallPltPosDO.setSmallPlateWidth(BigDecimal.valueOf(gpo.getWid())); pmSmallPltPosDO.setSmallPlateLen(gpo.getLen()); //TODO 长度不确定用实际长度还是长度 + pmSmallPltPosDO.setCreatedBy(781L);//TODO 创建人修改人,暂时默认781 BKGY pmSmallPltPosDO.setLastUpdatedBy(781L); pmSmallPltPosDO.setCreationDate(now); @@ -2469,7 +2517,7 @@ public class SubController { pmCmdSlabDO.setPreCleanSlabLen(pmPdSlabDO.getPreCleanSlabLen()); pmCmdSlabDO.setPreCleanSlabMaxLen(pmPdSlabDO.getPreCleanSlabMaxLen()); pmCmdSlabDO.setPreCleanSlabMinLen(pmPdSlabDO.getPreCleanSlabMinLen()); - pmCmdSlabDO.setPreCleanSlabWt(pmPdSlabDO.getPreCleanSlabWt().divide(BigDecimal.valueOf(1000000000), 3, RoundingMode.HALF_UP)); + pmCmdSlabDO.setPreCleanSlabWt(pmPdSlabDO.getPreCleanSlabWt()); pmCmdSlabDO.setPreCleanSlabMaxWt(pmPdSlabDO.getPreCleanSlabMaxWt()); pmCmdSlabDO.setPreCleanSlabMinWt(pmPdSlabDO.getPreCleanSlabMinWt()); Long slabPdQty = plistPmPdSlabInfoDO.stream() @@ -2482,18 +2530,20 @@ public class SubController { pmCmdSlabDO.setMoldThick(resultPmPdSlabInfoDO.get().getMatActThick().intValue()); pmCmdSlabDO.setMoldWid(resultPmPdSlabInfoDO.get().getMatActWidth().intValue()); } - + pmCmdSlabDO.setSlabCleanWtLossRateSt(pmPdSlabDO.getSlabCleanWtLossRateSt()); + pmCmdSlabDO.setSlabCleanWtLossRateFr(pmPdSlabDO.getSlabCleanWtLossRateFr()); + pmCmdSlabDO.setAddSlabFlag(pmPdSlabDO.getAddSlabFlag()); pmCmdSlabDO.setInfurSlabThick(pmPdSlabDO.getInfurSlabThick()); pmCmdSlabDO.setInfurSlabWid(pmPdSlabDO.getInfurSlabWid()); pmCmdSlabDO.setInfurSlabLen(pmPdSlabDO.getInfurSlabLen()); pmCmdSlabDO.setInfurSlabMaxLen(pmPdSlabDO.getInfurSlabMaxLen()); pmCmdSlabDO.setInfurSlabMinLen(pmPdSlabDO.getInfurSlabMinLen()); - pmCmdSlabDO.setInfurSlabWt(pmPdSlabDO.getInfurSlabWt().divide(BigDecimal.valueOf(1000000000), 3, RoundingMode.HALF_UP)); + pmCmdSlabDO.setInfurSlabWt(pmPdSlabDO.getInfurSlabWt()); pmCmdSlabDO.setInfurSlabMaxWt(pmPdSlabDO.getInfurSlabMaxWt()); pmCmdSlabDO.setInfurSlabMinWt(pmPdSlabDO.getInfurSlabLen()); pmCmdSlabDO.setNeedSlabLen(pmPdSlabDO.getInfurSlabLen()); - pmCmdSlabDO.setNeedSlabWt(pmPdSlabDO.getInfurSlabWt().divide(BigDecimal.valueOf(1000000000), 3, RoundingMode.HALF_UP)); + pmCmdSlabDO.setNeedSlabWt(pmPdSlabDO.getInfurSlabWt()); pmCmdSlabDO.setFixSlabLenFlag(String.valueOf(pmPdSlabDO.getFixSlabLenFlag())); pmCmdSlabDO.setFixSlabLen(pmPdSlabDO.getFixSlabLen().intValue()); pmCmdSlabDO.setSlabPlaceCode(pmPdSlabDO.getSlabPlaceCode()); @@ -2577,7 +2627,7 @@ public class SubController { pmCmdLargePltDO.setOrder1Thick(pmPdSlabDO.getOrderThickAxis()); pmCmdLargePltDO.setCombinePlateWidth(pmPdSlabDO.getCombinePlateWidth()); pmCmdLargePltDO.setCombinePlateLen(pmPdSlabDO.getCombinePlateLen()); - pmCmdLargePltDO.setRollWtHp(pmPdSlabDO.getRollWtHp().divide(BigDecimal.valueOf(1000000000), 3, RoundingMode.HALF_UP)); + pmCmdLargePltDO.setRollWtHp(pmPdSlabDO.getRollWtHp()); pmCmdLargePltDO.setNormYield(pmPdSlabDO.getNormYield()); pmCmdLargePltDO.setCommandYield(pmPdSlabDO.getCommandYield()); pmCmdLargePltDO.setRollYield(pmPdSlabDO.getRollYield()); @@ -2635,6 +2685,7 @@ public class SubController { .findFirst(); pmCmdContDO.setWholeBacklog(pmContMscTechDOItem.get().getWholeBacklog()); pmCmdContDO.setStNo(pmContMscTechDOItem.get().getStNo()); + pmCmdContDO.setRollMode(pmContMscTechDOItem.get().getRollMode()); Optional pmPdSlabDOItem = pmPdSlabDOList.stream() .filter(item -> pmPdContSumDO.getPdMatNo().equals(item.getVirtualSlabNo())) @@ -2714,6 +2765,8 @@ public class SubController { pmCmdContDO.setUrgOrderFlag(pmPdSlabDOItem.get().getUrgOrderFlag()); pmCmdContDO.setUltCode(pmPdSlabDOItem.get().getUltCode());//TODO 遍根据合同号从质量模块MES合同主档QD_TO_PO_ORDER读取超声探伤标准1、超声探伤标2、超声探伤标3、超声探伤标4、超声探伤标5,去重后所有数据用‘-’拼接成一条记录 pmCmdContDO.setMscLineNo(mscLineNo); + pmCmdContDO.setAxisFlag(0);//TODO 轴合同标记,暂时默认0 + pmCmdContDO.setCreatedBy(781L);//TODO 创建人修改人,暂时默认781 BKGY pmCmdContDO.setLastUpdatedBy(781L); pmCmdContDO.setCreationDate(now); @@ -2740,7 +2793,7 @@ public class SubController { pmCmdSmallPltDO.setSmallPlateThick(pmSmallPltPosDO.getSmallPlateThick()); pmCmdSmallPltDO.setSmallPlateWidth(pmSmallPltPosDO.getSmallPlateWidth()); pmCmdSmallPltDO.setSmallPlateLen(BigDecimal.valueOf(pmSmallPltPosDO.getSmallPlateLen())); - pmCmdSmallPltDO.setSampleLenGive(BigDecimal.valueOf(pmProContProdAttrDO.getSampleLenGive())); +// pmCmdSmallPltDO.setSampleLenGive(BigDecimal.valueOf(pmProContProdAttrDO.getSampleLenGive())); //TODO 对比数据手动组板为空 pmCmdSmallPltDO.setMscLineNo(mscLineNo); pmCmdSmallPltDO.setCreatedBy(781L);//TODO 创建人修改人,暂时默认781 BKGY pmCmdSmallPltDO.setLastUpdatedBy(781L); diff --git a/1024shop-manager/1024shop-manager/src/main/resources/mapper/SubMapper.xml b/1024shop-manager/1024shop-manager/src/main/resources/mapper/SubMapper.xml index bf426cf..0fc791d 100644 --- a/1024shop-manager/1024shop-manager/src/main/resources/mapper/SubMapper.xml +++ b/1024shop-manager/1024shop-manager/src/main/resources/mapper/SubMapper.xml @@ -17,104 +17,100 @@