|
|
|
@ -253,14 +253,14 @@ public class SubController {
|
|
|
|
|
gltSelGGrpCalRslt = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
SetGroupCalRslt(p);
|
|
|
|
|
//存储数据,组板结果
|
|
|
|
|
plistpmSubHisDO.forEach(e -> {
|
|
|
|
|
subService.InsertPmSubHisDO(e);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
plistpmSubOrdDO.forEach(e -> {
|
|
|
|
|
subService.InsertPmSubOrdDO(e);
|
|
|
|
|
});
|
|
|
|
|
// //存储数据,组板结果
|
|
|
|
|
// plistpmSubHisDO.forEach(e -> {
|
|
|
|
|
// subService.InsertPmSubHisDO(e);
|
|
|
|
|
// });
|
|
|
|
|
//
|
|
|
|
|
// plistpmSubOrdDO.forEach(e -> {
|
|
|
|
|
// subService.InsertPmSubOrdDO(e);
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
logger.info("结果数据板坯号:{};数量:{}", p.getSlabNo(), gltGGrpCalRslt.size());
|
|
|
|
|
}
|
|
|
|
@ -1253,6 +1253,10 @@ public class SubController {
|
|
|
|
|
GPO.setLen(ppcpa.getOrderLen());
|
|
|
|
|
// 设置厚度公差下限
|
|
|
|
|
GPO.setThickTolMin(ppcpa.getThickTolMin());
|
|
|
|
|
// 设置厚度公差上限
|
|
|
|
|
GPO.setThickTolMax(ppcpa.getThickTolMax());
|
|
|
|
|
// 设置实际长度
|
|
|
|
|
GPO.setIntActLen(ppcpa.getOrderLen());
|
|
|
|
|
// 设置订单号
|
|
|
|
|
GPO.setOrderNo(prPmProContDO.getOrderNo());
|
|
|
|
|
// 关联订单信息对象
|
|
|
|
@ -1385,42 +1389,45 @@ public class SubController {
|
|
|
|
|
int intRollMinLen = plistPmPdConstBtDO.stream().filter(p -> p.getRollLineNo().equals("30")).findFirst().orElse(null).getHpmMinPLen().intValue();
|
|
|
|
|
|
|
|
|
|
//初始化分组数据
|
|
|
|
|
gltGGrpCalRslt = new ArrayList<>();
|
|
|
|
|
gltGGrpCalRslt = new CopyOnWriteArrayList<>();
|
|
|
|
|
|
|
|
|
|
//gltGCalGrp.parallelStream().forEach(e->{
|
|
|
|
|
gltGCalGrp.parallelStream().forEach(e -> {
|
|
|
|
|
//实例化计算结果数组
|
|
|
|
|
GGrpCalRslt GGCR = new GGrpCalRslt();
|
|
|
|
|
//可轧制最大长度
|
|
|
|
|
int intMaxLen = 0;
|
|
|
|
|
//轧制最大宽度
|
|
|
|
|
int intWid = e.getWid();
|
|
|
|
|
//轧制最大厚度
|
|
|
|
|
BigDecimal intThk = e.getThk();
|
|
|
|
|
//板坯长度
|
|
|
|
|
int intSlabLen = SInfo.getRemLen().intValue();
|
|
|
|
|
|
|
|
|
|
//判断可轧制最大长度 TODO:厚度计算Decimal取整计算,会有误差,后续判断误差值修正计算
|
|
|
|
|
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();
|
|
|
|
|
}
|
|
|
|
|
//不能小于可轧制的最小长度
|
|
|
|
|
if (intMaxLen < intRollMinLen) {
|
|
|
|
|
return;
|
|
|
|
|
try {
|
|
|
|
|
//实例化计算结果数组
|
|
|
|
|
GGrpCalRslt GGCR = new GGrpCalRslt();
|
|
|
|
|
//可轧制最大长度
|
|
|
|
|
int intMaxLen = 0;
|
|
|
|
|
//轧制最大宽度
|
|
|
|
|
int intWid = e.getWid();
|
|
|
|
|
//轧制最大厚度
|
|
|
|
|
BigDecimal intThk = e.getThk();
|
|
|
|
|
//板坯长度
|
|
|
|
|
int intSlabLen = SInfo.getRemLen().intValue();
|
|
|
|
|
|
|
|
|
|
//判断可轧制最大长度 TODO:厚度计算Decimal取整计算,会有误差,后续判断误差值修正计算
|
|
|
|
|
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();
|
|
|
|
|
}
|
|
|
|
|
//不能小于可轧制的最小长度
|
|
|
|
|
if (intMaxLen < intRollMinLen) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//轧制宽度
|
|
|
|
|
GGCR.setCal_Wid(intWid);
|
|
|
|
|
//轧制厚度
|
|
|
|
|
GGCR.setCal_Thk(intThk);
|
|
|
|
|
//订单厚度
|
|
|
|
|
GGCR.setThk(e.getLtInfoGPreOrder().get(0).getThk());
|
|
|
|
|
//最大长度
|
|
|
|
|
GGCR.setCal_Len(intMaxLen);
|
|
|
|
|
GGCR.setLtInfoGPreOrder(e.getLtInfoGPreOrder());
|
|
|
|
|
gltGGrpCalRslt.add(GGCR);
|
|
|
|
|
}catch (Exception ex){
|
|
|
|
|
logger.info("***计算结果异常:" + ex.getMessage());
|
|
|
|
|
}
|
|
|
|
|
//轧制宽度
|
|
|
|
|
GGCR.setCal_Wid(intWid);
|
|
|
|
|
//轧制厚度
|
|
|
|
|
GGCR.setCal_Thk(intThk);
|
|
|
|
|
//订单厚度
|
|
|
|
|
GGCR.setThk(e.getLtInfoGPreOrder().get(0).getThk());
|
|
|
|
|
//最大长度
|
|
|
|
|
GGCR.setCal_Len(intMaxLen);
|
|
|
|
|
GGCR.setLtInfoGPreOrder(e.getLtInfoGPreOrder());
|
|
|
|
|
|
|
|
|
|
gltGGrpCalRslt.add(GGCR);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (gltGGrpCalRslt.size() == 0) {
|
|
|
|
@ -1741,9 +1748,9 @@ public class SubController {
|
|
|
|
|
|
|
|
|
|
//gltGGrpCalRslt 的 getIntUseF
|
|
|
|
|
|
|
|
|
|
// 筛选 UseFlg == 1 的数据
|
|
|
|
|
// 筛选 UseFlg == 1 的数据
|
|
|
|
|
List<GGrpCalRslt> filteredList = gltGGrpCalRslt.stream()
|
|
|
|
|
.filter(g -> nvl(g.getIntUseFlg(),0) == 1)
|
|
|
|
|
.filter(g -> Objects.nonNull(g) && Objects.nonNull(g.getIntUseFlg()) && g.getIntUseFlg() == 1)
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
// 找到重量最大成材率最大的数据
|
|
|
|
@ -1913,7 +1920,7 @@ public class SubController {
|
|
|
|
|
pmPdSlabDO.setMatDesignKind("S");
|
|
|
|
|
pmPdSlabDO.setPdStatusHp("12");
|
|
|
|
|
pmPdSlabDO.setPdResp("781"); // TODO 组板责任者 未赋值 操作人id
|
|
|
|
|
pmPdSlabDO.setFormPlateMode("FormPlateMode"); //TODO 组板方式 未赋值
|
|
|
|
|
pmPdSlabDO.setFormPlateMode(""); //TODO 组板方式 未赋值
|
|
|
|
|
pmPdSlabDO.setPickModeLenDir(BigDecimal.ZERO); //TODO 取板方式_长度方向 未赋值
|
|
|
|
|
pmPdSlabDO.setPickModeWidDir(BigDecimal.ZERO); //TODO 取板方式_宽度方向 未赋值
|
|
|
|
|
pmPdSlabDO.setFurType("C");// TODO 加热炉类型 暂时赋值为C
|
|
|
|
@ -1969,7 +1976,7 @@ public class SubController {
|
|
|
|
|
if (!ultCode.isEmpty()) {
|
|
|
|
|
ultCode = ultCode.substring(0, ultCode.length() - 1);
|
|
|
|
|
}
|
|
|
|
|
pmPdSlabDO.setUltDetectMethodCode(ultCode);
|
|
|
|
|
pmPdSlabDO.setUltCode(ultCode);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String ultDetectMethodCode = "";
|
|
|
|
@ -2025,7 +2032,7 @@ public class SubController {
|
|
|
|
|
pmPdSlabDO.setSgSign(SInfo.getSgSign());
|
|
|
|
|
pmPdSlabDO.setStNo(SInfo.getStNo());
|
|
|
|
|
pmPdSlabDO.setOutSgNo(SInfo.getStNo());
|
|
|
|
|
|
|
|
|
|
pmPdSlabDO.setIngotType(SInfo.getSlabType());
|
|
|
|
|
pmPdSlabDO.setPreCleanSlabThick(SInfo.getSlabActThk());
|
|
|
|
|
pmPdSlabDO.setPreCleanSlabWidth(SInfo.getSlabActWid());
|
|
|
|
|
pmPdSlabDO.setPreCleanSlabLen(BigDecimal.valueOf(ggcr.getVirtualSlab_Len()));
|
|
|
|
@ -2055,7 +2062,7 @@ public class SubController {
|
|
|
|
|
pmPdSlabDO.setHpFlameCleanDiv(resultPmContMscTechDO1.get().getFlameCleanDiv());
|
|
|
|
|
pmPdSlabDO.setSlabFinishCode(resultPmContMscTechDO1.get().getSlabFinishCode());
|
|
|
|
|
Long slabPdQty = plistPmPdSlabInfoDO.stream()
|
|
|
|
|
.filter(item -> ggcr.getSlabNo().equals(item.getSlabNo()))
|
|
|
|
|
.filter(item -> item != null && ggcr != null && ggcr.getSlabNo() != null && ggcr.getSlabNo().equals(item.getSlabNo()))
|
|
|
|
|
.count();
|
|
|
|
|
if(slabPdQty > 0){
|
|
|
|
|
Optional<PmPdSlabInfoDO> resultPmPdSlabInfoDO = plistPmPdSlabInfoDO.stream()
|
|
|
|
@ -2115,6 +2122,8 @@ public class SubController {
|
|
|
|
|
pmPdSlabDO.setLastUpdatedBy(781L);
|
|
|
|
|
pmPdSlabDO.setCreationDate(now);
|
|
|
|
|
pmPdSlabDO.setLastUpdateDate(now);
|
|
|
|
|
pmPdSlabDO.setLastSlabFlag(BigDecimal.valueOf(1));
|
|
|
|
|
pmPdSlabDO.setTwoRollInterimFlag(1);
|
|
|
|
|
|
|
|
|
|
SetPmCmdSlab(pmPdSlabDO);//命令板坯表
|
|
|
|
|
SetPmCmdLargePlt(pmPdSlabDO, ggcr);//命令大板表
|
|
|
|
@ -2153,12 +2162,14 @@ public class SubController {
|
|
|
|
|
pmPdBlockPosDO.setPdMatNo(ggcr.getVirtualSlabNo());
|
|
|
|
|
pmPdBlockPosDO.setOrderNo(orderNoList.get(j));
|
|
|
|
|
pmPdBlockPosDO.setOrderSeqNo(j + 1);//TODO 订单序号 暂时以实际订单信息列表顺序
|
|
|
|
|
Integer blockPlateNum = ggcr.getLtActInfoGPreOrder().stream() // 当前合同号在实际合同列表中的条数
|
|
|
|
|
List<GPreOrder> resultGPreOrder = ggcr.getLtActInfoGPreOrder().stream()
|
|
|
|
|
.filter(item -> item.getOrderNo().equals(pmPdBlockPosDO.getOrderNo()))
|
|
|
|
|
.collect(Collectors.toList())
|
|
|
|
|
.size();
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
Integer blockPlateNum = resultGPreOrder.size();
|
|
|
|
|
|
|
|
|
|
pmPdBlockPosDO.setBlockPlateNum(blockPlateNum);
|
|
|
|
|
pmPdBlockPosDO.setSlabNo(ggcr.getSlabNo());
|
|
|
|
|
pmPdBlockPosDO.setProContId(resultGPreOrder.get(0).getInfoPmProContDo().getProContId());
|
|
|
|
|
// pmPdBlockPosDO.setOrderBlockNo(); //TODO 厚板组板块号 暂时不知如何赋值
|
|
|
|
|
|
|
|
|
|
pmPdBlockPosDO.setCreatedBy(781L);//TODO 创建人修改人,暂时默认781 BKGY
|
|
|
|
@ -2190,9 +2201,10 @@ public class SubController {
|
|
|
|
|
pmPdContSumDO.setSlabNo(ggcr.getSlabNo());
|
|
|
|
|
pmPdContSumDO.setPdMatType("S");
|
|
|
|
|
pmPdContSumDO.setPdStatus("12");
|
|
|
|
|
pmPdContSumDO.setProContId(gPreOrders.get(0).getInfoPmProContDo().getProContId());
|
|
|
|
|
pmPdContSumDO.setOrderThick(gPreOrders.get(0).getThk());
|
|
|
|
|
pmPdContSumDO.setOrderWidth(BigDecimal.valueOf(gPreOrders.get(0).getWid()));
|
|
|
|
|
pmPdContSumDO.setOrderLen(BigDecimal.valueOf(gPreOrders.get(0).getIntActLen()));
|
|
|
|
|
pmPdContSumDO.setOrderLen(BigDecimal.valueOf(gPreOrders.get(0).getIntActLen())); //20250212
|
|
|
|
|
|
|
|
|
|
pmPdContSumDO.setOrderLenMax(BigDecimal.valueOf(gPreOrders.get(0).getInfoPmProContProdAttrDO().getOrderMaxLen()));
|
|
|
|
|
pmPdContSumDO.setOrderLenMin(BigDecimal.valueOf(gPreOrders.get(0).getInfoPmProContProdAttrDO().getOrderMinLen()));
|
|
|
|
@ -2205,6 +2217,7 @@ public class SubController {
|
|
|
|
|
pmPdContSumDO.setLastUpdatedBy(781L);
|
|
|
|
|
pmPdContSumDO.setCreationDate(now);
|
|
|
|
|
pmPdContSumDO.setLastUpdateDate(now);
|
|
|
|
|
pmPdContSumDO.setAxisFlag(0);//TODO 轴合同标记,暂时默认0
|
|
|
|
|
SetPmCmdCont(pmPdContSumDO, gPreOrders.get(0));//命令参数表
|
|
|
|
|
pmPdContSumDOList.add(pmPdContSumDO);
|
|
|
|
|
}
|
|
|
|
@ -2220,6 +2233,7 @@ public class SubController {
|
|
|
|
|
PmSmallPltPosDO pmSmallPltPosDO = new PmSmallPltPosDO();
|
|
|
|
|
pmSmallPltPosDO.setPdMatNo(ggcr.getVirtualSlabNo());
|
|
|
|
|
pmSmallPltPosDO.setOrderNo(gpo.getOrderNo());
|
|
|
|
|
pmSmallPltPosDO.setProContId(gpo.getInfoPmProContDo().getProContId());
|
|
|
|
|
pmSmallPltPosDO.setOrderSeqNo(j + 1);
|
|
|
|
|
pmSmallPltPosDO.setSlabNo(ggcr.getSlabNo());
|
|
|
|
|
Optional<PmProContProdAttrDO> resultPmProContProdAttrDO = plistPmProContProdAttrDO.stream()
|
|
|
|
@ -2279,7 +2293,7 @@ public class SubController {
|
|
|
|
|
pmCmdSlabDO.setPreCleanSlabMaxWt(pmPdSlabDO.getPreCleanSlabMaxWt());
|
|
|
|
|
pmCmdSlabDO.setPreCleanSlabMinWt(pmPdSlabDO.getPreCleanSlabMinWt());
|
|
|
|
|
Long slabPdQty = plistPmPdSlabInfoDO.stream()
|
|
|
|
|
.filter(item -> pmPdSlabDO.getSlabNo().equals(item.getSlabNo()))
|
|
|
|
|
.filter(item -> item != null && pmPdSlabDO != null && pmPdSlabDO.getSlabNo() != null && pmPdSlabDO.getSlabNo().equals(item.getSlabNo()))
|
|
|
|
|
.count();
|
|
|
|
|
if(slabPdQty>0){
|
|
|
|
|
Optional<PmPdSlabInfoDO> resultPmPdSlabInfoDO = plistPmPdSlabInfoDO.stream()
|
|
|
|
@ -2317,6 +2331,7 @@ public class SubController {
|
|
|
|
|
pmCmdSlabDO.setMscLineNo(pmPdSlabDO.getMscLineNo());
|
|
|
|
|
pmCmdSlabDO.setIngotType(pmPdSlabDO.getIngotType());
|
|
|
|
|
pmCmdSlabDO.setIgMatDesignKind(pmPdSlabDO.getIgMatDesignKind());
|
|
|
|
|
pmCmdSlabDO.setOrderNoAxis(pmPdSlabDO.getOrderNoAxis());
|
|
|
|
|
pmCmdSlabDO.setCreatedBy(781L);//TODO 创建人修改人,暂时默认781 BKGY
|
|
|
|
|
pmCmdSlabDO.setLastUpdatedBy(781L);
|
|
|
|
|
pmCmdSlabDO.setCreationDate(now);
|
|
|
|
@ -2495,11 +2510,21 @@ public class SubController {
|
|
|
|
|
pmCmdContDO.setHeadCut(pmPdSlabDOItem.get().getHeadCut().intValue());
|
|
|
|
|
pmCmdContDO.setTailCut(pmPdSlabDOItem.get().getTailCut().intValue());
|
|
|
|
|
pmCmdContDO.setCutModeCode(pmContMscTechDOItem.get().getAdModeCode());
|
|
|
|
|
pmCmdContDO.setGFlag(String.valueOf(pmContMscTechDOItem.get().getGFlag()));
|
|
|
|
|
pmCmdContDO.setCsFlag(String.valueOf(pmContMscTechDOItem.get().getCsFlag()));
|
|
|
|
|
pmCmdContDO.setDssFlag(String.valueOf(pmContMscTechDOItem.get().getDssFlag()));
|
|
|
|
|
pmCmdContDO.setDsFlag(String.valueOf(pmContMscTechDOItem.get().getDsFlag()));
|
|
|
|
|
pmCmdContDO.setSsFlag(String.valueOf(pmContMscTechDOItem.get().getSsFlag()));
|
|
|
|
|
if(pmContMscTechDOItem.get().getGFlag() != null){
|
|
|
|
|
pmCmdContDO.setGFlag(String.valueOf(pmContMscTechDOItem.get().getGFlag()));
|
|
|
|
|
}
|
|
|
|
|
if(pmContMscTechDOItem.get().getCsFlag() != null){
|
|
|
|
|
pmCmdContDO.setCsFlag(String.valueOf(pmContMscTechDOItem.get().getCsFlag()));
|
|
|
|
|
}
|
|
|
|
|
if(pmContMscTechDOItem.get().getDssFlag() != null){
|
|
|
|
|
pmCmdContDO.setDssFlag(String.valueOf(pmContMscTechDOItem.get().getDssFlag()));
|
|
|
|
|
}
|
|
|
|
|
if(pmContMscTechDOItem.get().getDsFlag() != null){
|
|
|
|
|
pmCmdContDO.setDsFlag(String.valueOf(pmContMscTechDOItem.get().getDsFlag()));
|
|
|
|
|
}
|
|
|
|
|
if(pmContMscTechDOItem.get().getSsFlag() != null){
|
|
|
|
|
pmCmdContDO.setSsFlag(String.valueOf(pmContMscTechDOItem.get().getSsFlag()));
|
|
|
|
|
}
|
|
|
|
|
pmCmdContDO.setHeatTreatMode(pmContMscTechDOItem.get().getHeatTreatMode());
|
|
|
|
|
pmCmdContDO.setUltDetectMethodCode(pmContMscTechDOItem.get().getUltDetectMethodCode());
|
|
|
|
|
pmCmdContDO.setUltCode(pmPdSlabDOItem.get().getUltCode());//TODO 遍根据合同号从质量模块MES合同主档QD_TO_PO_ORDER读取超声探伤标准1、超声探伤标2、超声探伤标3、超声探伤标4、超声探伤标5,去重后所有数据用‘-’拼接成一条记录
|
|
|
|
@ -2539,7 +2564,24 @@ public class SubController {
|
|
|
|
|
|
|
|
|
|
public void SaveData() {
|
|
|
|
|
subService.batchInsertPmPdSlab(pmPdSlabDOList);
|
|
|
|
|
System.out.println("PmPdSlab表一保存成功");
|
|
|
|
|
subService.batchInsertPmCmdSlab(pmCmdSlabDOList);
|
|
|
|
|
System.out.println("PmCmdSlab表二保存成功");
|
|
|
|
|
subService.batchInsertPmCmdLargePlt(pmCmdLargePltDOList);
|
|
|
|
|
System.out.println("pmCmdLargePltDO 命令大板 保存成功");
|
|
|
|
|
subService.batchInsertPmPdPlateCut(pmPdPlateCutDOList);
|
|
|
|
|
System.out.println("PmPdPlateCut 大板粗切位置表 保存成功");
|
|
|
|
|
subService.batchInsertPmPdBlockPos(pmPdBlockPosDOList);
|
|
|
|
|
System.out.println("PmPdBlockPos 组合子板位置表 保存成功");
|
|
|
|
|
subService.batchInsertPmPdContSum(pmPdContSumDOList);
|
|
|
|
|
System.out.println("PmPdContSum 合同总量表 保存成功");
|
|
|
|
|
subService.batchInsertPmSmallPltPos(pmSmallPltPosDOList);
|
|
|
|
|
System.out.println("PmSmallPltPos 命令小板位置表 保存成功");
|
|
|
|
|
subService.batchInsertPmCmdSmallPlt(pmCmdSmallPltDOList);
|
|
|
|
|
System.out.println("PmCmdSmallPlt 命令小板表 保存成功");
|
|
|
|
|
subService.batchInsertPmCmdCont(pmCmdContDOList);
|
|
|
|
|
System.out.println("PmCmdCont 命令参数 保存成功");
|
|
|
|
|
|
|
|
|
|
// subService.SaveData(pmPdSlabDOList, pmPdPlateCutDOList, pmPdBlockPosDOList, pmPdContSumDOList, pmSmallPltPosDOList, pmCmdSlabDOList, pmCmdLargePltDOList, pmCmdContDOList, pmCmdSmallPltDOList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|