main
sunhao 1 month ago
parent 1bef65f620
commit 22abdf9553

@ -47,6 +47,9 @@ public class SubController {
//计算结果数据
private static List<GGrpCalRslt> gltGGrpCalRslt = Collections.synchronizedList(new ArrayList<>());
//选择结果数据
private static List<GGrpCalRslt> gltSelGGrpCalRslt = Collections.synchronizedList(new ArrayList<>());
//组板板坯表
private static List<PmPdSlabDO> 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<QdToLineupResultCheDO> 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<GGrpCalRslt> filteredList = gltGGrpCalRslt.stream()
.filter(g -> g.getIntUseFlg()== 1)
.collect(Collectors.toList());
// 找到重量最大成材率最大的数据
Optional<GGrpCalRslt> maxWeightMaxYieldRate = filteredList.stream()
.max(Comparator.comparing((GGrpCalRslt g) -> g.getVirtualSlab_Wgt())
.thenComparing(GGrpCalRslt::getRate));
// 将筛选出的数据添加到 gltSelGGrpCalRslt 中
maxWeightMaxYieldRate.ifPresent(gltSelGGrpCalRslt::add);
}
//设置保存数据

@ -25,6 +25,9 @@ public class GGrpCalRslt {
//虚拟板坯厚度
private BigDecimal VirtualSlab_Thk;
//虚拟板坯重量
private BigDecimal VirtualSlab_Wgt;
//轧制宽度
private int Cal_Wid;
//厚度

@ -769,5 +769,10 @@ public class SlabInfoDO implements Serializable {
*/
private BigDecimal ingotHeadThick;
//剩余长度
private BigDecimal remLen;
//剩余宽度
private BigDecimal remWid;
}

Loading…
Cancel
Save