|
|
|
@ -156,25 +156,25 @@ public class SubController {
|
|
|
|
|
//region ***配置项参数***
|
|
|
|
|
|
|
|
|
|
//不可自动组板订单信息
|
|
|
|
|
private static List<PmIrsubableContDO> plistpmIrsubableContDO=new ArrayList<>();
|
|
|
|
|
private static List<PmIrsubableContDO> plistpmIrsubableContDO = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
//不可自动组板板坯信息
|
|
|
|
|
private static List<PmIrsubableSlabDO> plistpmIrsubableSlabDO=new ArrayList<>();
|
|
|
|
|
private static List<PmIrsubableSlabDO> plistpmIrsubableSlabDO = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
//自动替代配置参数
|
|
|
|
|
private static List<PmAutoSubSettingDO> plistpmAutoSubSettingDO=new ArrayList<>();
|
|
|
|
|
private static List<PmAutoSubSettingDO> plistpmAutoSubSettingDO = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
//钢种信息配置
|
|
|
|
|
private static List<PmRetainStDO> plistpmRetainStDO=new ArrayList<>();
|
|
|
|
|
private static List<PmRetainStDO> plistpmRetainStDO = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
//仓库信息配置
|
|
|
|
|
private static List<PmRetainStackDO> plistpmRetainStackDO=new ArrayList<>();
|
|
|
|
|
private static List<PmRetainStackDO> plistpmRetainStackDO = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
//自动替代日志
|
|
|
|
|
private static List<PmSubLogDO> plistpmSubLogDO=new ArrayList<>();
|
|
|
|
|
private static List<PmSubLogDO> plistpmSubLogDO = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
//记录已被使用的订单号
|
|
|
|
|
private static List<GPreOrder> plistOrdHis=new ArrayList<>();
|
|
|
|
|
private static List<GPreOrder> plistOrdHis = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
//endregion
|
|
|
|
|
|
|
|
|
@ -197,7 +197,7 @@ public class SubController {
|
|
|
|
|
System.out.println(ltInt.get(i));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
JsonData xx= new JsonData();
|
|
|
|
|
JsonData xx = new JsonData();
|
|
|
|
|
xx.setCode(0);
|
|
|
|
|
xx.setData(ltInt);
|
|
|
|
|
xx.setMsg("成功");
|
|
|
|
@ -229,47 +229,47 @@ public class SubController {
|
|
|
|
|
logger.info("***初次分组数量*** " + gltGrpOrderFir.size());
|
|
|
|
|
|
|
|
|
|
//被使用的订单数据实例化
|
|
|
|
|
plistOrdHis=new ArrayList<>();
|
|
|
|
|
plistOrdHis = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
//循环板坯
|
|
|
|
|
plistSlab.forEach(p -> {
|
|
|
|
|
logger.info("*************板坯开始{}************* ", p.getSlabNo());
|
|
|
|
|
logger.info("***板坯信息:{} 厚宽长:{}*{}*{} ", p.getSlabNo(), p.getSlabActThk(), p.getSlabActWid(), p.getSlabActLen());
|
|
|
|
|
logger.info("*************板坯开始{}************* ", p.getSlabNo());
|
|
|
|
|
logger.info("***板坯信息:{} 厚宽长:{}*{}*{} ", p.getSlabNo(), p.getSlabActThk(), p.getSlabActWid(), p.getSlabActLen());
|
|
|
|
|
|
|
|
|
|
// 判断板坯的长度是否在plistpmAutoSubSettingDO配置的范围内
|
|
|
|
|
if (p.getSlabActLen().compareTo(plistpmAutoSubSettingDO.get(0).getMatLenMin()) < 0 && p.getSlabActLen().compareTo(plistpmAutoSubSettingDO.get(0).getMatLenMax()) > 0) {
|
|
|
|
|
logger.info("***板坯信息被排除:{} 长度不在范围内 ", p.getSlabNo() );
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 判断板坯的长度是否在plistpmAutoSubSettingDO配置的范围内
|
|
|
|
|
if (p.getSlabActLen().compareTo(plistpmAutoSubSettingDO.get(0).getMatLenMin()) < 0 && p.getSlabActLen().compareTo(plistpmAutoSubSettingDO.get(0).getMatLenMax()) > 0) {
|
|
|
|
|
logger.info("***板坯信息被排除:{} 长度不在范围内 ", p.getSlabNo());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 判断板坯的宽度是否在plistpmAutoSubSettingDO配置的范围内
|
|
|
|
|
if (p.getSlabActWid().compareTo(plistpmAutoSubSettingDO.get(0).getMatWidthMin()) < 0 && p.getSlabActWid().compareTo(plistpmAutoSubSettingDO.get(0).getMatWidthMax()) > 0) {
|
|
|
|
|
logger.info("***板坯信息被排除:{} 宽度不在范围内 ", p.getSlabNo() );
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 判断板坯的宽度是否在plistpmAutoSubSettingDO配置的范围内
|
|
|
|
|
if (p.getSlabActWid().compareTo(plistpmAutoSubSettingDO.get(0).getMatWidthMin()) < 0 && p.getSlabActWid().compareTo(plistpmAutoSubSettingDO.get(0).getMatWidthMax()) > 0) {
|
|
|
|
|
logger.info("***板坯信息被排除:{} 宽度不在范围内 ", p.getSlabNo());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 判断板坯的厚度是否在plistpmAutoSubSettingDO配置的范围内
|
|
|
|
|
if (p.getSlabActThk().compareTo(plistpmAutoSubSettingDO.get(0).getMatThickMin()) < 0 && p.getSlabActThk().compareTo(plistpmAutoSubSettingDO.get(0).getMatThickMax()) > 0) {
|
|
|
|
|
logger.info("***板坯信息被排除:{} 厚度不在范围内 ", p.getSlabNo() );
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 判断板坯的厚度是否在plistpmAutoSubSettingDO配置的范围内
|
|
|
|
|
if (p.getSlabActThk().compareTo(plistpmAutoSubSettingDO.get(0).getMatThickMin()) < 0 && p.getSlabActThk().compareTo(plistpmAutoSubSettingDO.get(0).getMatThickMax()) > 0) {
|
|
|
|
|
logger.info("***板坯信息被排除:{} 厚度不在范围内 ", p.getSlabNo());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//判断plistpmIrsubableSlabDO是否包含P.SlabNO范围内
|
|
|
|
|
if (plistpmIrsubableSlabDO.stream().anyMatch(x -> x.getSlabNo().equals(p.getSlabNo()))) {
|
|
|
|
|
logger.info("***板坯信息被排除:{} 不可组板 ", p.getSlabNo() );
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//判断plistpmIrsubableSlabDO是否包含P.SlabNO范围内
|
|
|
|
|
if (plistpmIrsubableSlabDO.stream().anyMatch(x -> x.getSlabNo().equals(p.getSlabNo()))) {
|
|
|
|
|
logger.info("***板坯信息被排除:{} 不可组板 ", p.getSlabNo());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//判断plistpmRetainStDO是否包含P的钢种,判断这个板坯的钢种是否可组板
|
|
|
|
|
if (plistpmRetainStDO.stream().anyMatch(x -> x.getStNo().equals(p.getStNo()))) {
|
|
|
|
|
logger.info("***板坯信息被排除:{} 不可组板 ", p.getSlabNo() );
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//判断plistpmRetainStDO是否包含P的钢种,判断这个板坯的钢种是否可组板
|
|
|
|
|
if (plistpmRetainStDO.stream().anyMatch(x -> x.getStNo().equals(p.getStNo()))) {
|
|
|
|
|
logger.info("***板坯信息被排除:{} 不可组板 ", p.getSlabNo());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
gltGCalGrp = new ArrayList<>();
|
|
|
|
|
//二次分组
|
|
|
|
|
SetGrpDataBySlab(p);
|
|
|
|
|
try {
|
|
|
|
|
gltGCalGrp = new ArrayList<>();
|
|
|
|
|
//二次分组
|
|
|
|
|
SetGrpDataBySlab(p);
|
|
|
|
|
|
|
|
|
|
logger.info("***二次分组数量*** " + gltGCalGrp.size());
|
|
|
|
|
|
|
|
|
@ -289,21 +289,22 @@ public class SubController {
|
|
|
|
|
|
|
|
|
|
gltSelGGrpCalRslt = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
SetGroupCalRslt(p);
|
|
|
|
|
|
|
|
|
|
//存储数据,组板结果
|
|
|
|
|
SaveHisData(p);
|
|
|
|
|
SetGroupCalRslt(p);
|
|
|
|
|
|
|
|
|
|
logger.info("结果数据板坯号:{};数量:{}", p.getSlabNo(), gltGGrpCalRslt.size());
|
|
|
|
|
}
|
|
|
|
|
if (gltSelGGrpCalRslt.size() > 0) {
|
|
|
|
|
now = new Date();
|
|
|
|
|
//数据整理
|
|
|
|
|
SetSaveDate(p);
|
|
|
|
|
//开启事务
|
|
|
|
|
TransactionStatus transactionStatus = transactionService.begin();
|
|
|
|
|
try {
|
|
|
|
|
//存储数据,组板结果
|
|
|
|
|
SaveHisData(p);
|
|
|
|
|
//保存数据
|
|
|
|
|
SaveData();
|
|
|
|
|
// bOffTaskLineService.saveOffTask(bPlanHeadAndLineVos);
|
|
|
|
|
//bOffTaskLineService.saveOffTask(bPlanHeadAndLineVos);
|
|
|
|
|
transactionService.commit(transactionStatus);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
logger.error("保存事务回滚:" + p.getSlabNo(), e);
|
|
|
|
@ -330,12 +331,13 @@ public class SubController {
|
|
|
|
|
//存储数据,组板结果
|
|
|
|
|
plistpmSubHisDO.forEach(e -> {
|
|
|
|
|
|
|
|
|
|
String strMaxSeq = subService.GetMaxSeq(SInfo.getPono());
|
|
|
|
|
//TODO:未获取轧制命令最大序号
|
|
|
|
|
int intSeq = 1;//Integer.parseInt(subService.GetMaxSeq().substring(subService.GetMaxSeq().length() - 4));
|
|
|
|
|
int intSeq = Integer.parseInt(strMaxSeq.substring(strMaxSeq.length() - 3));
|
|
|
|
|
|
|
|
|
|
String virtualSlabNo = generateVirtualSlabNoSave(e.getVirtualSlabNo(), intSeq);
|
|
|
|
|
|
|
|
|
|
String strGuid = e.getVirtualSlabNo();
|
|
|
|
|
String strGuid = e.getRelKey();
|
|
|
|
|
|
|
|
|
|
//获取虚拟板坯号
|
|
|
|
|
e.setVirtualSlabNo(virtualSlabNo);
|
|
|
|
@ -343,11 +345,11 @@ public class SubController {
|
|
|
|
|
subService.InsertPmSubHisDO(e);
|
|
|
|
|
//删选plistpmSubOrdDO中虚拟板坯号等于strGuid的信息
|
|
|
|
|
plistpmSubOrdDO.stream()
|
|
|
|
|
.filter(f -> !f.getVirtualSlabNo().equals(strGuid))
|
|
|
|
|
.filter(f -> !f.getRelKey().equals(strGuid))
|
|
|
|
|
.collect(Collectors.toList()).forEach(m -> {
|
|
|
|
|
m.setVirtualSlabNo(virtualSlabNo);
|
|
|
|
|
subService.InsertPmSubOrdDO(m);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
@ -623,8 +625,7 @@ public class SubController {
|
|
|
|
|
logger.info("30:订单合约信息信息:" + plistQdToPoOrderDO.size());
|
|
|
|
|
|
|
|
|
|
logger.info("获取基础数据完成");
|
|
|
|
|
if (plistpmAutoSubSettingDO.size()>0)
|
|
|
|
|
{
|
|
|
|
|
if (plistpmAutoSubSettingDO.size() > 0) {
|
|
|
|
|
logger.info("配置信息-》 是否启动 :{}", plistpmAutoSubSettingDO.get(0).getIsStartFlag());
|
|
|
|
|
logger.info("配置信息-》 启动时间范围 :{}~{}", plistpmAutoSubSettingDO.get(0).getStartTime(), plistpmAutoSubSettingDO.get(0).getEndTime());
|
|
|
|
|
logger.info("配置信息-》 优先模式 :{}", plistpmAutoSubSettingDO.get(0).getPriMode());
|
|
|
|
@ -659,9 +660,9 @@ public class SubController {
|
|
|
|
|
public void SetPreData() {
|
|
|
|
|
|
|
|
|
|
//实例化订单列表
|
|
|
|
|
gltOrder =new ArrayList<>();
|
|
|
|
|
gltOrder = new ArrayList<>();
|
|
|
|
|
//实例化订单分组
|
|
|
|
|
gltGrpOrderFir=new ArrayList<>();
|
|
|
|
|
gltGrpOrderFir = new ArrayList<>();
|
|
|
|
|
//订单数据处理
|
|
|
|
|
SetOrderLackData();
|
|
|
|
|
|
|
|
|
@ -1359,13 +1360,12 @@ public class SubController {
|
|
|
|
|
PmProContProdAttrDO finalPpcpa = ppcpa;
|
|
|
|
|
if (plistpmAutoSubSettingDO.stream().filter(p ->
|
|
|
|
|
p.getOrderWidthMin().intValue() <= finalPpcpa.getOrderWidth().intValue()
|
|
|
|
|
&& finalPpcpa.getOrderWidth().intValue() <= p.getOrderWidthMax().intValue()
|
|
|
|
|
&& p.getOrderThickMin().intValue() <= finalPpcpa.getOrderThick().intValue()
|
|
|
|
|
&& finalPpcpa.getOrderThick().intValue() <= p.getOrderThickMax().intValue()
|
|
|
|
|
&& p.getDelivyDateFrom().compareTo(finalPpcpa.getDelivyDate())<= 0
|
|
|
|
|
&& finalPpcpa.getDelivyDate().compareTo(p.getDelivyDateTo())<=0).count()<=0)
|
|
|
|
|
{
|
|
|
|
|
logger.info("订单:{} 不可自动组板,尺寸厚度{},宽度{},交货期{} 不在范围内", i.getOrderNo(),finalPpcpa.getOrderThick(), finalPpcpa.getOrderWidth(),new SimpleDateFormat("yyyy-MM-dd").format(finalPpcpa.getDelivyDate()));
|
|
|
|
|
&& finalPpcpa.getOrderWidth().intValue() <= p.getOrderWidthMax().intValue()
|
|
|
|
|
&& p.getOrderThickMin().intValue() <= finalPpcpa.getOrderThick().intValue()
|
|
|
|
|
&& finalPpcpa.getOrderThick().intValue() <= p.getOrderThickMax().intValue()
|
|
|
|
|
&& p.getDelivyDateFrom().compareTo(finalPpcpa.getDelivyDate()) <= 0
|
|
|
|
|
&& finalPpcpa.getDelivyDate().compareTo(p.getDelivyDateTo()) <= 0).count() <= 0) {
|
|
|
|
|
logger.info("订单:{} 不可自动组板,尺寸厚度{},宽度{},交货期{} 不在范围内", i.getOrderNo(), finalPpcpa.getOrderThick(), finalPpcpa.getOrderWidth(), new SimpleDateFormat("yyyy-MM-dd").format(finalPpcpa.getDelivyDate()));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1504,7 +1504,7 @@ public class SubController {
|
|
|
|
|
GGCR.setCal_Len(intMaxLen);
|
|
|
|
|
GGCR.setLtInfoGPreOrder(e.getLtInfoGPreOrder());
|
|
|
|
|
gltGGrpCalRslt.add(GGCR);
|
|
|
|
|
}catch (Exception ex){
|
|
|
|
|
} catch (Exception ex) {
|
|
|
|
|
logger.info("***计算结果异常:" + ex.getMessage());
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
@ -1534,19 +1534,19 @@ public class SubController {
|
|
|
|
|
|
|
|
|
|
int intOrdCount = p.getCal_Len() / e.getLen();
|
|
|
|
|
|
|
|
|
|
if (ltOrder.stream().filter(f -> f.equals(e.getOrderNo())).count() == intOrdCount) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (ltOrder.stream().filter(f -> f.equals(e.getOrderNo())).count() == intOrdCount) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//被使用过的订单ID排除在外
|
|
|
|
|
if (plistOrdHis.stream().filter(f -> f.getIDValue()==e.getIDValue()).count()>0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//被使用过的订单ID排除在外
|
|
|
|
|
if (plistOrdHis.stream().filter(f -> f.getIDValue() == e.getIDValue()).count() > 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ltOrder.add(e.getOrderNo());//添加订单号
|
|
|
|
|
ltValues.add(e.getIDValue());//价值
|
|
|
|
|
ltweights.add(e.getLen());//长度
|
|
|
|
|
});
|
|
|
|
|
ltOrder.add(e.getOrderNo());//添加订单号
|
|
|
|
|
ltValues.add(e.getIDValue());//价值
|
|
|
|
|
ltweights.add(e.getLen());//长度
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 生成 values 和 weights 数组
|
|
|
|
|
long[] values = new long[ltValues.size()];
|
|
|
|
@ -1742,75 +1742,75 @@ public class SubController {
|
|
|
|
|
}
|
|
|
|
|
//判断结算结果长度和成材率是否可用
|
|
|
|
|
gltGGrpCalRslt.parallelStream().forEach(p -> {
|
|
|
|
|
try {
|
|
|
|
|
//没有成材率
|
|
|
|
|
if (p.getRate() == null) {
|
|
|
|
|
p.setIntUseFlg(0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//成材率大于90%
|
|
|
|
|
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.max(p.getVirtualSlab_Wid(), p.getVirtualSlab_Len());
|
|
|
|
|
// 板坯厚度起止SLAB_THICK_FROM/TO包含余坯实际厚度;
|
|
|
|
|
// 板坯宽度起止SLAB_WIDTH_FROM/TO包含余坯实际宽度;
|
|
|
|
|
// 加热炉类型为‘C’,轧制产线号等于产线号后两位,连铸机类型等于1;
|
|
|
|
|
if (plistPmSlabSpecBtDO.stream().filter(e -> e.getSlabThickFrom().compareTo(p.getVirtualSlab_Thk()) <= 0
|
|
|
|
|
&& e.getSlabThickTo().compareTo(p.getVirtualSlab_Thk()) >= 0
|
|
|
|
|
&& e.getSlabWidthFrom().compareTo(BigDecimal.valueOf(minWid)) <= 0
|
|
|
|
|
&& e.getSlabWidthTo().compareTo(BigDecimal.valueOf(minWid)) >= 0
|
|
|
|
|
&& e.getFurType().equals("C")
|
|
|
|
|
&& 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
|
|
|
|
|
&& e.getSlabThickTo().compareTo(p.getVirtualSlab_Thk()) >= 0
|
|
|
|
|
&& e.getSlabWidthFrom().compareTo(BigDecimal.valueOf(minWid)) <= 0
|
|
|
|
|
&& e.getSlabWidthTo().compareTo(BigDecimal.valueOf(minWid)) >= 0
|
|
|
|
|
&& e.getFurType().equals("C")
|
|
|
|
|
&& 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
|
|
|
|
|
&& e.getSlabThickTo().compareTo(p.getVirtualSlab_Thk()) >= 0
|
|
|
|
|
&& e.getSlabWidthFrom().compareTo(BigDecimal.valueOf(minWid)) <= 0
|
|
|
|
|
&& e.getSlabWidthTo().compareTo(BigDecimal.valueOf(minWid)) >= 0
|
|
|
|
|
&& e.getFurType().equals("C")
|
|
|
|
|
&& e.getRollLineNo().equals(SInfo.getMscLineNo().substring(SInfo.getMscLineNo().length() - 2))
|
|
|
|
|
&& e.getCcType().equals("1")
|
|
|
|
|
).findFirst().orElse(null).getSlabMaxLen().intValue();
|
|
|
|
|
|
|
|
|
|
//不能小于最小值
|
|
|
|
|
if (maxLen <= intSlanLenMin) {
|
|
|
|
|
p.setIntUseFlg(0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//不能大于最大值
|
|
|
|
|
if (maxLen >= intSlanLenMax) {
|
|
|
|
|
p.setIntUseFlg(0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
//数据不可用
|
|
|
|
|
p.setIntUseFlg(0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//数据可用
|
|
|
|
|
p.setIntUseFlg(1);
|
|
|
|
|
} catch (Exception e){
|
|
|
|
|
log.error("new2", e);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
//没有成材率
|
|
|
|
|
if (p.getRate() == null) {
|
|
|
|
|
p.setIntUseFlg(0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//成材率大于90%
|
|
|
|
|
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.max(p.getVirtualSlab_Wid(), p.getVirtualSlab_Len());
|
|
|
|
|
// 板坯厚度起止SLAB_THICK_FROM/TO包含余坯实际厚度;
|
|
|
|
|
// 板坯宽度起止SLAB_WIDTH_FROM/TO包含余坯实际宽度;
|
|
|
|
|
// 加热炉类型为‘C’,轧制产线号等于产线号后两位,连铸机类型等于1;
|
|
|
|
|
if (plistPmSlabSpecBtDO.stream().filter(e -> e.getSlabThickFrom().compareTo(p.getVirtualSlab_Thk()) <= 0
|
|
|
|
|
&& e.getSlabThickTo().compareTo(p.getVirtualSlab_Thk()) >= 0
|
|
|
|
|
&& e.getSlabWidthFrom().compareTo(BigDecimal.valueOf(minWid)) <= 0
|
|
|
|
|
&& e.getSlabWidthTo().compareTo(BigDecimal.valueOf(minWid)) >= 0
|
|
|
|
|
&& e.getFurType().equals("C")
|
|
|
|
|
&& 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
|
|
|
|
|
&& e.getSlabThickTo().compareTo(p.getVirtualSlab_Thk()) >= 0
|
|
|
|
|
&& e.getSlabWidthFrom().compareTo(BigDecimal.valueOf(minWid)) <= 0
|
|
|
|
|
&& e.getSlabWidthTo().compareTo(BigDecimal.valueOf(minWid)) >= 0
|
|
|
|
|
&& e.getFurType().equals("C")
|
|
|
|
|
&& 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
|
|
|
|
|
&& e.getSlabThickTo().compareTo(p.getVirtualSlab_Thk()) >= 0
|
|
|
|
|
&& e.getSlabWidthFrom().compareTo(BigDecimal.valueOf(minWid)) <= 0
|
|
|
|
|
&& e.getSlabWidthTo().compareTo(BigDecimal.valueOf(minWid)) >= 0
|
|
|
|
|
&& e.getFurType().equals("C")
|
|
|
|
|
&& e.getRollLineNo().equals(SInfo.getMscLineNo().substring(SInfo.getMscLineNo().length() - 2))
|
|
|
|
|
&& e.getCcType().equals("1")
|
|
|
|
|
).findFirst().orElse(null).getSlabMaxLen().intValue();
|
|
|
|
|
|
|
|
|
|
//不能小于最小值
|
|
|
|
|
if (maxLen <= intSlanLenMin) {
|
|
|
|
|
p.setIntUseFlg(0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//不能大于最大值
|
|
|
|
|
if (maxLen >= intSlanLenMax) {
|
|
|
|
|
p.setIntUseFlg(0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
//数据不可用
|
|
|
|
|
p.setIntUseFlg(0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//数据可用
|
|
|
|
|
p.setIntUseFlg(1);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error("new2", e);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//选择最优结果
|
|
|
|
@ -1909,6 +1909,7 @@ public class SubController {
|
|
|
|
|
|
|
|
|
|
// 生成虚拟板坯号
|
|
|
|
|
pmSubOrdDO.setVirtualSlabNo(virtualSlabNo); // 虚拟板坯号
|
|
|
|
|
pmSubOrdDO.setRelKey(virtualSlabNo); // 关系号
|
|
|
|
|
pmSubOrdDO.setSlabNo(SInfo.getSlabNo()); // 板坯号
|
|
|
|
|
|
|
|
|
|
// 手动为每个字段赋值
|
|
|
|
@ -1988,14 +1989,13 @@ public class SubController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 生成虚拟板坯号的方法保存
|
|
|
|
|
private String generateVirtualSlabNoSave(String pono ,int i) {
|
|
|
|
|
private String generateVirtualSlabNoSave(String pono, int i) {
|
|
|
|
|
|
|
|
|
|
return pono + "S9" + String.format("%03d", i+1);
|
|
|
|
|
return pono + "S9" + String.format("%03d", i + 1);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//设置保存数据
|
|
|
|
|
public void SetSaveDate(SlabInfoDO SInfo) {
|
|
|
|
|
SetPmPdSlab(SInfo);//组板板坯表 命令板坯表 命令大板表
|
|
|
|
@ -2054,20 +2054,20 @@ public class SubController {
|
|
|
|
|
String erpUtSpec2 = "";
|
|
|
|
|
String erpUtSpec3 = "";
|
|
|
|
|
if (resultQdToPoOrderDO.isPresent()) {
|
|
|
|
|
erpUtSpec1 = nvl(resultQdToPoOrderDO.get().getErpUtSpec1(),"");
|
|
|
|
|
erpUtSpec2 = nvl(resultQdToPoOrderDO.get().getErpUtSpec2(),"");
|
|
|
|
|
erpUtSpec3 = nvl(resultQdToPoOrderDO.get().getErpUtSpec3(),"");
|
|
|
|
|
if(!erpUtSpec1.isEmpty()){
|
|
|
|
|
erpUtSpec1 = nvl(resultQdToPoOrderDO.get().getErpUtSpec1(), "");
|
|
|
|
|
erpUtSpec2 = nvl(resultQdToPoOrderDO.get().getErpUtSpec2(), "");
|
|
|
|
|
erpUtSpec3 = nvl(resultQdToPoOrderDO.get().getErpUtSpec3(), "");
|
|
|
|
|
if (!erpUtSpec1.isEmpty()) {
|
|
|
|
|
if (!ultDetectMethodCodeBuilder.toString().contains(erpUtSpec1)) {
|
|
|
|
|
ultDetectMethodCodeBuilder.append(erpUtSpec1).append("-");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(!erpUtSpec2.isEmpty()){
|
|
|
|
|
if (!erpUtSpec2.isEmpty()) {
|
|
|
|
|
if (!ultDetectMethodCodeBuilder.toString().contains(erpUtSpec2)) {
|
|
|
|
|
ultDetectMethodCodeBuilder.append(erpUtSpec2).append("-");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(!erpUtSpec3.isEmpty()){
|
|
|
|
|
if (!erpUtSpec3.isEmpty()) {
|
|
|
|
|
if (!ultDetectMethodCodeBuilder.toString().contains(erpUtSpec3)) {
|
|
|
|
|
ultDetectMethodCodeBuilder.append(erpUtSpec3).append("-");
|
|
|
|
|
}
|
|
|
|
@ -2165,7 +2165,7 @@ public class SubController {
|
|
|
|
|
Long slabPdQty = plistPmPdSlabInfoDO.stream()
|
|
|
|
|
.filter(item -> item != null && ggcr != null && ggcr.getSlabNo() != null && ggcr.getSlabNo().equals(item.getSlabNo()))
|
|
|
|
|
.count();
|
|
|
|
|
if(slabPdQty > 0){
|
|
|
|
|
if (slabPdQty > 0) {
|
|
|
|
|
Optional<PmPdSlabInfoDO> resultPmPdSlabInfoDO = plistPmPdSlabInfoDO.stream()
|
|
|
|
|
.filter(item -> ggcr.getSlabNo().equals(item.getSlabNo()))
|
|
|
|
|
.findFirst();
|
|
|
|
@ -2396,7 +2396,7 @@ public class SubController {
|
|
|
|
|
Long slabPdQty = plistPmPdSlabInfoDO.stream()
|
|
|
|
|
.filter(item -> item != null && pmPdSlabDO != null && pmPdSlabDO.getSlabNo() != null && pmPdSlabDO.getSlabNo().equals(item.getSlabNo()))
|
|
|
|
|
.count();
|
|
|
|
|
if(slabPdQty>0){
|
|
|
|
|
if (slabPdQty > 0) {
|
|
|
|
|
Optional<PmPdSlabInfoDO> resultPmPdSlabInfoDO = plistPmPdSlabInfoDO.stream()
|
|
|
|
|
.filter(item -> pmPdSlabDO.getSlabNo().equals(item.getSlabNo()))
|
|
|
|
|
.findFirst();
|
|
|
|
@ -2611,19 +2611,19 @@ public class SubController {
|
|
|
|
|
pmCmdContDO.setHeadCut(pmPdSlabDOItem.get().getHeadCut().intValue());
|
|
|
|
|
pmCmdContDO.setTailCut(pmPdSlabDOItem.get().getTailCut().intValue());
|
|
|
|
|
pmCmdContDO.setCutModeCode(pmContMscTechDOItem.get().getAdModeCode());
|
|
|
|
|
if(pmContMscTechDOItem.get().getGFlag() != null){
|
|
|
|
|
if (pmContMscTechDOItem.get().getGFlag() != null) {
|
|
|
|
|
pmCmdContDO.setGFlag(String.valueOf(pmContMscTechDOItem.get().getGFlag()));
|
|
|
|
|
}
|
|
|
|
|
if(pmContMscTechDOItem.get().getCsFlag() != null){
|
|
|
|
|
if (pmContMscTechDOItem.get().getCsFlag() != null) {
|
|
|
|
|
pmCmdContDO.setCsFlag(String.valueOf(pmContMscTechDOItem.get().getCsFlag()));
|
|
|
|
|
}
|
|
|
|
|
if(pmContMscTechDOItem.get().getDssFlag() != null){
|
|
|
|
|
if (pmContMscTechDOItem.get().getDssFlag() != null) {
|
|
|
|
|
pmCmdContDO.setDssFlag(String.valueOf(pmContMscTechDOItem.get().getDssFlag()));
|
|
|
|
|
}
|
|
|
|
|
if(pmContMscTechDOItem.get().getDsFlag() != null){
|
|
|
|
|
if (pmContMscTechDOItem.get().getDsFlag() != null) {
|
|
|
|
|
pmCmdContDO.setDsFlag(String.valueOf(pmContMscTechDOItem.get().getDsFlag()));
|
|
|
|
|
}
|
|
|
|
|
if(pmContMscTechDOItem.get().getSsFlag() != null){
|
|
|
|
|
if (pmContMscTechDOItem.get().getSsFlag() != null) {
|
|
|
|
|
pmCmdContDO.setSsFlag(String.valueOf(pmContMscTechDOItem.get().getSsFlag()));
|
|
|
|
|
}
|
|
|
|
|
pmCmdContDO.setHeatTreatMode(pmContMscTechDOItem.get().getHeatTreatMode());
|
|
|
|
@ -2668,8 +2668,8 @@ public class SubController {
|
|
|
|
|
System.out.println("PmPdSlab表一保存成功");
|
|
|
|
|
subService.batchInsertPmCmdSlab(pmCmdSlabDOList);
|
|
|
|
|
System.out.println("PmCmdSlab表二保存成功");
|
|
|
|
|
subService.batchInsertPmCmdLargePlt(pmCmdLargePltDOList);
|
|
|
|
|
System.out.println("pmCmdLargePltDO 命令大板 保存成功");
|
|
|
|
|
subService.batchInsertPmCmdLargePlt(pmCmdLargePltDOList);
|
|
|
|
|
System.out.println("pmCmdLargePltDO 命令大板 保存成功");
|
|
|
|
|
subService.batchInsertPmPdPlateCut(pmPdPlateCutDOList);
|
|
|
|
|
System.out.println("PmPdPlateCut 大板粗切位置表 保存成功");
|
|
|
|
|
subService.batchInsertPmPdBlockPos(pmPdBlockPosDOList);
|
|
|
|
|