From 22abdf95533dcdb8993c102c67d454d89dfba502 Mon Sep 17 00:00:00 2001 From: sunhao <479527147@qq.com> Date: Thu, 23 Jan 2025 10:16:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=A0=E5=8F=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shopmanager/controller/SubController.java | 67 ++++++++++++++----- .../shopmanager/model/GGrpCalRslt.java | 3 + .../xdclass/shopmanager/model/SlabInfoDO.java | 5 ++ 3 files changed, 58 insertions(+), 17 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 bb3787a..248a486 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 @@ -47,6 +47,9 @@ public class SubController { //计算结果数据 private static List gltGGrpCalRslt = Collections.synchronizedList(new ArrayList<>()); + //选择结果数据 + private static List gltSelGGrpCalRslt = Collections.synchronizedList(new ArrayList<>()); + //组板板坯表 private static List pmPdSlabDOList = new ArrayList<>(); //大板粗切位置表 @@ -156,7 +159,7 @@ public class SubController { @ApiOperation("数据处理") @PostMapping("SubData") - public JsonData SubData() { + public JsonData SubData(String strSlab) { //获取所有数据 GetDataInfo(null); @@ -178,8 +181,10 @@ public class SubController { if (gltGCalGrp.size() > 0) { gltGGrpCalRslt = new ArrayList<>(); - SetGroupCalRslt(p); + gltSelGGrpCalRslt= new ArrayList<>(); + + SetGroupCalRslt(p); logger.info("结果数据板坯号:{};数量:{}", p.getSlabNo(), gltGGrpCalRslt.size()); } @@ -466,6 +471,7 @@ public class SubController { } } catch (Exception e1) { log.error("化学成分", e1); + return; } try { //低倍检测 low-power check @@ -474,6 +480,7 @@ public class SubController { } } catch (Exception e1) { log.error("低倍检测", e1); + return; } //GCG.setLtInfoGPreOrder(new ArrayList<>()); @@ -564,7 +571,7 @@ public class SubController { } //订单要求化学成分 -// logger.info("化学成分订单号:" + GrpOrd.getOrderNo()); + // logger.info("化学成分订单号:" + GrpOrd.getOrderNo()); List ltLrc = new ArrayList<>(); int intOrd = plistQdToLineupResultCheDO.stream().filter(p -> p.getOrderNo().equals(null)).collect(Collectors.toList()).size(); int intRX = plistQdToLineupResultCheDO.stream().filter(p -> p.getCheType().equals(null)).collect(Collectors.toList()).size(); @@ -1436,6 +1443,8 @@ public class SubController { .multiply(BigDecimal.valueOf(p.getCal_Len())) .divide(SInfo.getSlabActThk().multiply(SInfo.getSlabActWid()), 0, RoundingMode.CEILING); p.setVirtualSlab_Len(virtualSlabLen.intValue()); + //板坯重量 + p.setVirtualSlab_Wgt(p.getVirtualSlab_Thk().multiply(BigDecimal.valueOf(p.getVirtualSlab_Len())).multiply(BigDecimal.valueOf(p.getVirtualSlab_Wid()) ).multiply(BigDecimal.valueOf(7.85))); //成材率计算 BigDecimal rolledVolume = p.getCal_Thk() @@ -1453,29 +1462,23 @@ public class SubController { }); - //判断结算结果长度和成材率是否可用 gltGGrpCalRslt.parallelStream().forEach(p -> { //没有成材率 if (p.getRate() == null) { - p.setIntUseFlg(1); - - } else { p.setIntUseFlg(0); return; } //成材率大于90% - if (p.getRate().compareTo(BigDecimal.valueOf(0.9)) >= 0) { - p.setIntUseFlg(1); - } else { + if (p.getRate().compareTo(BigDecimal.valueOf(0.9)) <= 0) { p.setIntUseFlg(0); return; } int minWid = Math.min(p.getVirtualSlab_Wid(), p.getVirtualSlab_Len()); - int maxLen = Math.min(p.getVirtualSlab_Wid(), p.getVirtualSlab_Len()); + int maxLen = Math.max(p.getVirtualSlab_Wid(), p.getVirtualSlab_Len()); // 板坯厚度起止SLAB_THICK_FROM/TO包含余坯实际厚度; // 板坯宽度起止SLAB_WIDTH_FROM/TO包含余坯实际宽度; // 加热炉类型为‘C’,轧制产线号等于产线号后两位,连铸机类型等于1; @@ -1484,7 +1487,7 @@ public class SubController { && e.getSlabWidthFrom().compareTo(BigDecimal.valueOf(minWid)) <= 0 && e.getSlabWidthTo().compareTo(BigDecimal.valueOf(minWid)) >= 0 && e.getFurType().equals("C") - && e.getRollLineNo().equals(SInfo.getRollerLineNo().substring(SInfo.getRollerLineNo().length() - 2)) + && e.getRollLineNo().equals(SInfo.getMscLineNo().substring(SInfo.getMscLineNo().length() - 2)) && e.getCcType().equals("1") ).count() > 0) { int intSlanLenMin = plistPmSlabSpecBtDO.stream().filter(e -> e.getSlabThickFrom().compareTo(p.getVirtualSlab_Thk()) <= 0 @@ -1492,7 +1495,7 @@ public class SubController { && e.getSlabWidthFrom().compareTo(BigDecimal.valueOf(minWid)) <= 0 && e.getSlabWidthTo().compareTo(BigDecimal.valueOf(minWid)) >= 0 && e.getFurType().equals("C") - && e.getRollLineNo().equals(SInfo.getRollerLineNo().substring(SInfo.getRollerLineNo().length() - 2)) + && e.getRollLineNo().equals(SInfo.getMscLineNo().substring(SInfo.getMscLineNo().length() - 2)) && e.getCcType().equals("1") ).findFirst().orElse(null).getSlabMinLen().intValue(); int intSlanLenMax = plistPmSlabSpecBtDO.stream().filter(e -> e.getSlabThickFrom().compareTo(p.getVirtualSlab_Thk()) <= 0 @@ -1500,7 +1503,7 @@ public class SubController { && e.getSlabWidthFrom().compareTo(BigDecimal.valueOf(minWid)) <= 0 && e.getSlabWidthTo().compareTo(BigDecimal.valueOf(minWid)) >= 0 && e.getFurType().equals("C") - && e.getRollLineNo().equals(SInfo.getRollerLineNo().substring(SInfo.getRollerLineNo().length() - 2)) + && e.getRollLineNo().equals(SInfo.getMscLineNo().substring(SInfo.getMscLineNo().length() - 2)) && e.getCcType().equals("1") ).findFirst().orElse(null).getSlabMaxLen().intValue(); @@ -1516,17 +1519,47 @@ public class SubController { return; } - //数据可用 - p.setIntUseFlg(1); - } else { //数据不可用 p.setIntUseFlg(0); return; } + //数据可用 + p.setIntUseFlg(1); + }); + + //选择最优结果 + ChosBestRsl(SInfo); + + //小于最小入炉尺寸 + if (SInfo.getRemLen().intValue() <2200) + { + + }else{ + SetGroupCalRslt(SInfo); + } + } + + public void ChosBestRsl(SlabInfoDO SInfo) { + + // 筛选 UseFlg == 1 的数据 + List filteredList = gltGGrpCalRslt.stream() + .filter(g -> g.getIntUseFlg()== 1) + .collect(Collectors.toList()); + + // 找到重量最大成材率最大的数据 + Optional maxWeightMaxYieldRate = filteredList.stream() + .max(Comparator.comparing((GGrpCalRslt g) -> g.getVirtualSlab_Wgt()) + .thenComparing(GGrpCalRslt::getRate)); + + // 将筛选出的数据添加到 gltSelGGrpCalRslt 中 + maxWeightMaxYieldRate.ifPresent(gltSelGGrpCalRslt::add); + + + } //设置保存数据 diff --git a/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/model/GGrpCalRslt.java b/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/model/GGrpCalRslt.java index c6c31c7..ea83ec0 100644 --- a/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/model/GGrpCalRslt.java +++ b/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/model/GGrpCalRslt.java @@ -25,6 +25,9 @@ public class GGrpCalRslt { //虚拟板坯厚度 private BigDecimal VirtualSlab_Thk; + //虚拟板坯重量 + private BigDecimal VirtualSlab_Wgt; + //轧制宽度 private int Cal_Wid; //厚度 diff --git a/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/model/SlabInfoDO.java b/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/model/SlabInfoDO.java index 6e68ee8..294e526 100644 --- a/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/model/SlabInfoDO.java +++ b/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/model/SlabInfoDO.java @@ -769,5 +769,10 @@ public class SlabInfoDO implements Serializable { */ private BigDecimal ingotHeadThick; + //剩余长度 + private BigDecimal remLen; + + //剩余宽度 + private BigDecimal remWid; }