2025-02-27

main
sunhao 1 month ago
parent 2498e73918
commit 0de5bcc304

@ -359,7 +359,6 @@ public class SubController {
return JsonData.buildSuccess();
}
public void SaveHisData(SlabInfoDO SInfo) {
String strMaxSeq = subService.GetMaxSeq(SInfo.getPono());
@ -435,8 +434,6 @@ public class SubController {
*/
public void GetDataInfo(SubParams subParams) {
logger.info("*****开始获取数据******");
//region ***多线程获取基础数据***
@ -770,6 +767,186 @@ public class SubController {
GCG.setLtInfoGPreOrder(new CopyOnWriteArrayList<>());
e.getLtInfoGPreOrder().forEach(f -> {
try {
//同钢种判断
if (!SInfo.getStNo().equals(f.getInfoPmContMscTechDO().getStNo()))
{
return;
}
//产线相同
if (!SInfo.getMscLineNo().equals(f.getInfoPmContMscTechDO().getMscLineNo()))
{
return;
}
//化学成分 chemical composition
if (!ChkChemical(SInfo, f)) {
return;
}
} catch (Exception e1) {
log.error("化学成分", e1);
return;
}
try {
//低倍检测 low-power check
if (!ChkLowPower(SInfo, f)) {
return;
}
} catch (Exception e1) {
log.error("低倍检测", e1);
return;
}
//GCG.setLtInfoGPreOrder(new ArrayList<>());
GCG.getLtInfoGPreOrder().add(f);//添加订单信息
});
//存在订单,添加可计算分组
if (GCG.getLtInfoGPreOrder().size() > 0) {
//GCG.getLtInfoGPreOrder().stream().filter(e->e.)
//最大宽度
OptionalInt maxWidth = GCG.getLtInfoGPreOrder().stream()
.mapToInt(GPreOrder::getWid)
.max();
//最大宽度余量
OptionalInt maxAddWidth = GCG.getLtInfoGPreOrder().stream()
.mapToInt(GPreOrder::getWidthAddv)
.max();
//宽展比 保留2位小数
BigDecimal decWidRate = BigDecimal.valueOf(maxWidth.orElse(0)).divide(SInfo.getSlabActWid(), 2, RoundingMode.HALF_UP);
//最大厚度公差最小值
Optional<BigDecimal> maxTolThkMin = GCG.getLtInfoGPreOrder().stream()
.map(GPreOrder::getThickTolMin)
.reduce(BigDecimal::max);
//厚度追加值
BigDecimal decThkAdd= BigDecimal.ZERO;
String strThkTolType;
if (GCG.getLtInfoGPreOrder().get(0).getInfoQdToPoOrderDO().getThkTolType() != null) {
strThkTolType = GCG.getLtInfoGPreOrder().get(0).getInfoQdToPoOrderDO().getThkTolType();
} else {
strThkTolType = "*";
}
//存在数据,判断热处理模式
if (plistPmThickAddvBtDO.stream().anyMatch(p -> p.getMscLineNo().equals(SInfo.getMscLineNo())
&& p.getTolTypeCode().equals(strThkTolType)
&& p.getPlateThickFrom().compareTo(GCG.getLtInfoGPreOrder().get(0).getThk()) <= 0
&& p.getPlateThickTo().compareTo(GCG.getLtInfoGPreOrder().get(0).getThk()) >= 0
&& p.getCombinePlateWidthFrom().compareTo(BigDecimal.valueOf(maxWidth.orElse(0) + maxAddWidth.orElse(0))) <= 0
&& p.getCombinePlateWidthTo().compareTo(BigDecimal.valueOf(maxWidth.orElse(0) + maxAddWidth.orElse(0))) >= 0
)) {
if (GCG.getLtInfoGPreOrder().get(0).getInfoPmContMscTechDO().getWholeHeatTreatmentType().contains("Q")) {
decThkAdd = plistPmThickAddvBtDO.stream().filter(p -> p.getMscLineNo().equals(SInfo.getMscLineNo())
&& p.getTolTypeCode().equals(strThkTolType)
&& p.getWholeHeatTreatmentType().equals("Q")
&& p.getPlateThickFrom().compareTo(GCG.getLtInfoGPreOrder().get(0).getThk()) <= 0
&& p.getPlateThickTo().compareTo(GCG.getLtInfoGPreOrder().get(0).getThk()) >= 0
&& p.getCombinePlateWidthFrom().compareTo(BigDecimal.valueOf(maxWidth.orElse(0) + maxAddWidth.orElse(0))) <= 0
&& p.getCombinePlateWidthTo().compareTo(BigDecimal.valueOf(maxWidth.orElse(0) + maxAddWidth.orElse(0))) >= 0
).collect(Collectors.toList()).get(0).getThickAddv();
} else {
decThkAdd = plistPmThickAddvBtDO.stream().filter(p -> p.getMscLineNo().equals(SInfo.getMscLineNo())
&& p.getTolTypeCode().equals(strThkTolType)
&& p.getWholeHeatTreatmentType().equals("*")
&& p.getPlateThickFrom().compareTo(GCG.getLtInfoGPreOrder().get(0).getThk()) <= 0
&& p.getPlateThickTo().compareTo(GCG.getLtInfoGPreOrder().get(0).getThk()) >= 0
&& p.getCombinePlateWidthFrom().compareTo(BigDecimal.valueOf(maxWidth.orElse(0) + maxAddWidth.orElse(0))) <= 0
&& p.getCombinePlateWidthTo().compareTo(BigDecimal.valueOf(maxWidth.orElse(0) + maxAddWidth.orElse(0))) >= 0
).collect(Collectors.toList()).get(0).getThickAddv();
}
}
//轧制厚度 厚度+厚度公差下限最大值+厚度追加值
BigDecimal decThk = e.getThk().add(maxTolThkMin.orElse(BigDecimal.ZERO)).add(decThkAdd);
//轧制宽度 最大宽度+宽度余量
int intWid = maxWidth.orElse(0) + maxAddWidth.orElse(0);
//切边
int intTrimWid = 0;
String strWithSideFlag = "C";
if (GCG.getLtInfoGPreOrder().get(0).getInfoPmProContProdAttrDO().getProdAMark()==null
|| GCG.getLtInfoGPreOrder().get(0).getInfoPmProContProdAttrDO().getProdAMark().equals(""))
{
strWithSideFlag="C";
}else{
strWithSideFlag=GCG.getLtInfoGPreOrder().get(0).getInfoPmProContProdAttrDO().getProdAMark();
}
//切边量
String finalStrWithSideFlag = strWithSideFlag;
if (plistPmPlateTrimBtDO.stream().anyMatch(p -> p.getMscLineNo().equals(SInfo.getMscLineNo())
&& p.getPlateThickFrom().compareTo(decThk) <= 0
&& p.getPlateThickTo().compareTo(decThk) >= 0
&& p.getSmallPlateLenFrom().compareTo(BigDecimal.valueOf(GCG.getLtInfoGPreOrder().get(0).getLen())) <= 0
&& p.getSmallPlateLenTo().compareTo(BigDecimal.valueOf(GCG.getLtInfoGPreOrder().get(0).getLen())) >= 0
&& p.getCombinePlateWidthFrom().compareTo(BigDecimal.valueOf(maxWidth.orElse(0) + maxAddWidth.orElse(0))) <= 0
&& p.getCombinePlateWidthTo().compareTo(BigDecimal.valueOf(maxWidth.orElse(0) + maxAddWidth.orElse(0))) >= 0
&& p.getWidenFrom().compareTo(decWidRate) <= 0
&& p.getWidenTo().compareTo(decWidRate) >= 0
&& p.getWithSideFlag().equals(finalStrWithSideFlag)
)) {
String finalStrWithSideFlag1 = strWithSideFlag;
intTrimWid = plistPmPlateTrimBtDO.stream().filter(p -> p.getMscLineNo().equals(SInfo.getMscLineNo())
&& p.getPlateThickFrom().compareTo(decThk) <= 0
&& p.getPlateThickTo().compareTo(decThk) >= 0
&& p.getSmallPlateLenFrom().compareTo(BigDecimal.valueOf(GCG.getLtInfoGPreOrder().get(0).getLen())) <= 0
&& p.getSmallPlateLenTo().compareTo(BigDecimal.valueOf(GCG.getLtInfoGPreOrder().get(0).getLen())) >= 0
&& p.getCombinePlateWidthFrom().compareTo(BigDecimal.valueOf(maxWidth.orElse(0) + maxAddWidth.orElse(0))) <= 0
&& p.getCombinePlateWidthTo().compareTo(BigDecimal.valueOf(maxWidth.orElse(0) + maxAddWidth.orElse(0))) >= 0
&& p.getWidenFrom().compareTo(decWidRate) <= 0
&& p.getWidenTo().compareTo(decWidRate) >= 0
&& p.getWithSideFlag().equals(finalStrWithSideFlag1)
).collect(Collectors.toList()).get(0).getTrimWidth().intValue();
}
//轧制宽度= 最大宽度 + 最大宽度余量 + 切边量
intWid = intWid + intTrimWid;
//宽度
GCG.setWid(intWid);
//厚度
GCG.setThk(decThk);
//切边
GCG.setWid_Add(intTrimWid);
gltGCalGrp.add(GCG);
}
});
}
/**
* -
*/
public void SetGrpConBinDataBySlab(SlabInfoDO SInfo) {
//1.筛选记录过的结果(化学成分和低倍的判断)压缩比和宽展比验证
//2.
gltGrpOrderFir.parallelStream().forEach(e -> {
// gltGCalGrp 产生可计算分组
//压缩比 Compression ratio
//宽展比 Wide ratio
//钢种标准对比
GCalGrp GCG = new GCalGrp();
GCG.setLtInfoGPreOrder(new CopyOnWriteArrayList<>());
e.getLtInfoGPreOrder().forEach(f -> {
try {
//同钢种判断
@ -784,7 +961,7 @@ public class SubController {
return;
}
// 化学成分 chemical composition
//化学成分 chemical composition
if (!ChkChemical(SInfo, f)) {
return;
}
@ -1569,12 +1746,17 @@ public class SubController {
// 检查当前订单是否与已有的分组匹配
if (gltGrpOrderFir.stream().anyMatch(e -> e.getWid().equals(p.getInfoPmProContProdAttrDO().getOrderWidth()) &&
e.getThk().equals(p.getInfoPmProContProdAttrDO().getOrderThick()) &&
e.getSG_STD().equals(p.getInfoPmProContProdAttrDO().getSgStd()))) {
e.getST_NO().equals(p.getInfoPmContMscTechDO().getStNo()) &&
e.getTHK_MIN().equals(p.getInfoPmProContProdAttrDO().getThickTolMin()) &&
e.getTHK_MAX().equals(p.getInfoPmProContProdAttrDO().getThickTolMax())
)) {
// 如果匹配成功,将订单添加到相应的分组中
GGrpOrderFir GGOF = gltGrpOrderFir.stream().filter(e -> e.getWid().equals(p.getInfoPmProContProdAttrDO().getOrderWidth())
&& e.getThk().equals(p.getInfoPmProContProdAttrDO().getOrderThick())
&& e.getSG_STD().equals(p.getInfoPmProContProdAttrDO().getSgStd())
GGrpOrderFir GGOF = gltGrpOrderFir.stream().filter(e -> e.getWid().equals(p.getInfoPmProContProdAttrDO().getOrderWidth()) &&
e.getThk().equals(p.getInfoPmProContProdAttrDO().getOrderThick()) &&
e.getST_NO().equals(p.getInfoPmContMscTechDO().getStNo()) &&
e.getTHK_MIN().equals(p.getInfoPmProContProdAttrDO().getThickTolMin()) &&
e.getTHK_MAX().equals(p.getInfoPmProContProdAttrDO().getThickTolMax())
).findFirst().orElse(null);
if (GGOF.getLtInfoGPreOrder() == null) {
GGOF.setLtInfoGPreOrder(new ArrayList<>()); // 确保列表已初始化
@ -1589,7 +1771,13 @@ public class SubController {
GGOF.setWid(p.getInfoPmProContProdAttrDO().getOrderWidth());
GGOF.setThk(p.getInfoPmProContProdAttrDO().getOrderThick());
//GGOF.setLen(p.getInfoPmProContProdAttrDO().getOrderLen());
GGOF.setSG_STD(p.getInfoPmProContProdAttrDO().getSgStd());
//GGOF.setSG_STD(p.getInfoPmProContProdAttrDO().getSgStd());
//内部钢种
GGOF.setST_NO(p.getInfoPmContMscTechDO().getStNo());
//厚度公差下限
GGOF.setTHK_MIN(p.getInfoPmProContProdAttrDO().getThickTolMin());
//厚度公差上限
GGOF.setTHK_MAX(p.getInfoPmProContProdAttrDO().getThickTolMax());
GGOF.setLtInfoGPreOrder(new ArrayList<>()); // 初始化列表
GGOF.getLtInfoGPreOrder().add(p);

@ -13,10 +13,8 @@ public class GCalGrp {
//板坯号
private String SlabNo;
//虚拟号
private String VirtualSlabNo;
//合同号
private int IDValue;
//宽度
@ -27,6 +25,8 @@ public class GCalGrp {
private int Len;
//标准
private String SG_STD;
//内部钢种
private String ST_NO;
//宽度余量
private int Wid_Add;
//最大轧制长度
@ -51,9 +51,13 @@ public class GCalGrp {
private int Rep_Len;
//全部合同信息
private List<GPreOrder> LtInfoGPreOrder;
//实际合同信息
private List<GPreOrder> LtActInfoGPreOrder;
//组合标识
private int CombinationFlag;
//组合信息
private List<GComBOrder> LtInfoCombGPreOrder;
}

@ -0,0 +1,23 @@
package net.xdclass.shopmanager.model;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.List;
@Data
@EqualsAndHashCode(callSuper = false)
public class GComBOrder {
//订单X坐标
private int X_POS_ORD;
//订单Y坐标
private int Y_POS_ORD;
//订单信息
private GPreOrder infoGPreOrder;
}

@ -13,17 +13,32 @@ public class GGrpOrderFir {
//合同号
private int IDValue;
//宽度
private BigDecimal Wid;
//厚度
private BigDecimal Thk;
//长度
private Integer Len;
//标准
private String SG_STD;
//内部钢种
private String ST_NO;
//厚度公差下限
private BigDecimal THK_MIN;
//厚度公差上限
private BigDecimal THK_MAX;
//轴合同排他标记
private int AXLE_FLG;
//合同信息
private List<GPreOrder> LtInfoGPreOrder;
}

@ -55,4 +55,5 @@ public class GPreOrder {
//合同
private QdToPoOrderDO infoQdToPoOrderDO;
}

Loading…
Cancel
Save