|
|
|
@ -748,7 +748,7 @@ public class SubController {
|
|
|
|
|
*/
|
|
|
|
|
public void SetGrpDataBySlab(SlabInfoDO SInfo) {
|
|
|
|
|
|
|
|
|
|
gltGrpOrderFir.parallelStream().forEach(e -> {
|
|
|
|
|
gltGrpOrderFir.forEach(e -> {
|
|
|
|
|
|
|
|
|
|
// gltGCalGrp 产生可计算分组
|
|
|
|
|
|
|
|
|
@ -760,7 +760,13 @@ 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
|
|
|
|
@ -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<PmPdSlabDO> 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);
|
|
|
|
|