存储数据

main
sunhao 2 weeks ago
parent 24b976e2d1
commit 4907538eea

@ -129,6 +129,7 @@ public class SubController {
private static List<PmSlabSpecBtDO> plistPmSlabSpecBtDO;
//板坯信息表
private static List<PmPdSlabInfoDO> plistPmPdSlabInfoDO; //TODO 需要添加此表信息的查询
//TODO 需要添加 QD_TO_PO_ORDER 的查询记录
private static Date now;
//组板履历表
@ -143,6 +144,28 @@ public class SubController {
//endregion
//region ***配置项参数***
//不可自动组板订单信息
private static List<PmIrsubableContDO> plistpmIrsubableContDO=new ArrayList<>();
//不可自动组板板坯信息
private static List<PmIrsubableSlabDO> plistpmIrsubableSlabDO=new ArrayList<>();
//自动替代配置参数
private static List<PmAutoSubSettingDO> plistpmAutoSubSettingDO=new ArrayList<>();
//钢种信息配置
private static List<PmRetainStDO> plistpmRetainStDO=new ArrayList<>();
//仓库信息配置
private static List<PmRetainStackDO> plistpmRetainStackDO=new ArrayList<>();
//自动替代日志
private static List<PmSubLogDO> plistpmSubLogDO=new ArrayList<>();
//endregion
@ApiOperation("求解处理")
@PostMapping("Solver")
public JsonData Solver() {
@ -185,6 +208,7 @@ public class SubController {
//循环板坯
plistSlab.forEach(p -> {
logger.info("*************板坯开始{}************* ", p.getSlabNo());
logger.info("***板坯信息:{} 厚宽长:{}*{}*{} ",p.getSlabNo(), p.getSlabActThk(),p.getSlabActWid(),p.getSlabActLen());
try {
gltGCalGrp = new ArrayList<>();
//二次分组
@ -193,11 +217,30 @@ public class SubController {
logger.info("***二次分组数量*** " + gltGCalGrp.size());
if (gltGCalGrp.size() > 0) {
//板坯长度和宽度调换
if (p.getSlabActLen().compareTo(p.getSlabActWid()) <= 0) {
// 当 p.getSlabActLen() 小于或等于 p.getSlabActWid() 时执行的代码
p.setRemLen(p.getSlabActWid());
p.setRemWid(p.getSlabActLen());
} else {
p.setRemLen(p.getSlabActLen());
p.setRemWid(p.getSlabActWid());
}
gltGGrpCalRslt = new ArrayList<>();
gltSelGGrpCalRslt= new ArrayList<>();
gltSelGGrpCalRslt = new ArrayList<>();
SetGroupCalRslt(p);
//存储数据,组板结果
plistpmSubHisDO.forEach(e->{
subService.InsertPmSubHisDO(e);
});
plistpmSubOrdDO.forEach(e->{
subService.InsertPmSubOrdDO(e);
});
logger.info("结果数据板坯号:{};数量:{}", p.getSlabNo(), gltGGrpCalRslt.size());
}
@ -205,6 +248,7 @@ public class SubController {
// now = new Date();
// SetSaveDate(p);
// }
} catch (Exception e) {
logger.error("板坯报错:" + p.getSlabNo(), e);
}
@ -231,7 +275,7 @@ public class SubController {
//region ***多线程获取基础数据***
// 创建线程池
ExecutorService executorService = Executors.newFixedThreadPool(24);
ExecutorService executorService = Executors.newFixedThreadPool(29);
//初始化方案
Loader.loadNativeLibraries();
@ -270,7 +314,7 @@ public class SubController {
//5生产合同产品属性表
tasks.add(() -> {
// plistPmProContProdAttrDO = subService.getPmProCountProdAttr();
Thread.sleep(10000); // 休眠10秒钟
Thread.sleep(1000); // 休眠1秒钟
// logger.info("******5生产合同产品属性表数据获取完毕*******");
return null;
});
@ -404,7 +448,36 @@ public class SubController {
//24连铸板坯生产规格基准表
tasks.add(() -> {
plistPmSlabSpecBtDO = subService.getPmSlabSpecBt();
// logger.info("******23连铸板坯生产规格基准表数据获取完毕*******");
return null;
});
//25不可自动组板订单信息
tasks.add(() -> {
plistpmIrsubableContDO = subService.getPmIrsubableCont();
return null;
});
//26不可自动组板板坯信息
tasks.add(() -> {
plistpmIrsubableSlabDO = subService.getPmIrsubableSlab();
return null;
});
//27自动组板配置信息
tasks.add(() -> {
plistpmAutoSubSettingDO = subService.getPmAutoSubSetting();
return null;
});
//28钢种配置信息
tasks.add(() -> {
plistpmRetainStDO = subService.getPmRetainSt();
return null;
});
//29仓库配置信息
tasks.add(() -> {
plistpmRetainStackDO = subService.getPmRetainStack();
return null;
});
@ -438,6 +511,35 @@ public class SubController {
logger.info("21:炉次待委托表:" + plistQeTqPonoWaitTestDO.size());
logger.info("22:坯料低倍委托实绩表:" + plistQeTqSlabMacroResultDO.size());
logger.info("23:连铸板坯生产规格基准表:" + plistPmSlabSpecBtDO.size());
logger.info("24:不可自动组板订单信息:" + plistpmIrsubableContDO.size());
logger.info("25:不可自动组板板坯信息:" + plistpmIrsubableSlabDO.size());
logger.info("26:钢种配置信息:" + plistpmRetainStDO.size());
logger.info("27:仓库配置信息:" + plistpmRetainStackDO.size());
logger.info("28:自动组板配置信息:" + plistpmAutoSubSettingDO.size());
logger.info("获取基础数据完成");
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());
logger.info("配置信息-》 最低成材率 {}", plistpmAutoSubSettingDO.get(0).getStockRate());
logger.info("配置信息-》 最大剩余长度 {}", plistpmAutoSubSettingDO.get(0).getResidueLen());
logger.info("配置信息-》 板坯长度范围 {}~{}", plistpmAutoSubSettingDO.get(0).getMatLenMin(), plistpmAutoSubSettingDO.get(0).getMatLenMax());
logger.info("配置信息-》 板坯宽度范围 {}~{}", plistpmAutoSubSettingDO.get(0).getMatWidthMin(), plistpmAutoSubSettingDO.get(0).getMatWidthMax());
logger.info("配置信息-》 板坯厚度范围 {}~{}", plistpmAutoSubSettingDO.get(0).getMatThickMin(), plistpmAutoSubSettingDO.get(0).getMatThickMax());
logger.info("配置信息-》 订单宽度范围 {}~{}", plistpmAutoSubSettingDO.get(0).getOrderWidthMin(), plistpmAutoSubSettingDO.get(0).getOrderWidthMax());
logger.info("配置信息-》 订单厚度范围 {}~{}", plistpmAutoSubSettingDO.get(0).getOrderThickMin(), plistpmAutoSubSettingDO.get(0).getOrderThickMax());
logger.info("配置信息-》 订单交货期范围 {}~{}", plistpmAutoSubSettingDO.get(0).getDelivyDateFrom(), plistpmAutoSubSettingDO.get(0).getDelivyDateTo());
logger.info("配置信息-》 可用仓库 {}", plistpmAutoSubSettingDO.get(0).getUseableDstock());
logger.info("配置信息-》 优先模式 {}", plistpmAutoSubSettingDO.get(0).getPriMode());
logger.info("配置信息-》 超投条件 {}", plistpmAutoSubSettingDO.get(0).getOvershootCondition());
logger.info("配置信息-》 库存最低成材率 {}", plistpmAutoSubSettingDO.get(0).getStockRate());
logger.info("配置信息-》 库存时间 {}", plistpmAutoSubSettingDO.get(0).getStockDay());
logger.info("配置信息-》 交货期最低成材率:{}", plistpmAutoSubSettingDO.get(0).getDeliveryRate());
logger.info("配置信息-》 交货期偏移量 {}", plistpmAutoSubSettingDO.get(0).getDeliveryOffsetDay());
}
// 关闭线程池
executorService.shutdown();
@ -1218,11 +1320,24 @@ public class SubController {
*/
public void SetGroupCalRslt(SlabInfoDO SInfo) {
//剩余长度小于加热炉最小长度
if (SInfo.getRemLen().compareTo(BigDecimal.valueOf(2200))<0){
return;
}
//剩余宽度小于加热炉最小宽度
if (SInfo.getRemWid().compareTo(BigDecimal.valueOf(1200))<0){
return;
}
//轧机最大长度
int intRollMaxLen = plistPmPdConstBtDO.stream().filter(p -> p.getRollLineNo().equals("30")).findFirst().orElse(null).getHpmMaxPLen().intValue();
//轧机最小长度
int intRollMinLen = plistPmPdConstBtDO.stream().filter(p -> p.getRollLineNo().equals("30")).findFirst().orElse(null).getHpmMinPLen().intValue();
//初始化分组数据
gltGGrpCalRslt=new ArrayList<>();
//gltGCalGrp.parallelStream().forEach(e->{
gltGCalGrp.parallelStream().forEach(e -> {
//实例化计算结果数组
@ -1234,13 +1349,13 @@ public class SubController {
//轧制最大厚度
BigDecimal intThk = e.getThk();
//板坯长度
int intSlabLen = SInfo.getSlabActLen().intValue();
int intSlabLen = SInfo.getRemLen().intValue();
//判断可轧制最大长度 TODO厚度计算Decimal取整计算会有误差后续判断误差值修正计算
if ((SInfo.getSlabActLen().multiply(SInfo.getSlabActThk()).multiply(SInfo.getSlabActWid()).divide(intThk.multiply(BigDecimal.valueOf(intWid)), RoundingMode.HALF_UP)).compareTo(BigDecimal.valueOf(intRollMaxLen)) > 0) {
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.getSlabActLen().multiply(SInfo.getSlabActThk()).multiply(SInfo.getSlabActWid()).divide(intThk.multiply(BigDecimal.valueOf(intWid)), RoundingMode.HALF_UP)).intValue();
intMaxLen = (SInfo.getRemLen().multiply(SInfo.getSlabActThk()).multiply(SInfo.getRemWid()).divide(intThk.multiply(BigDecimal.valueOf(intWid)), RoundingMode.HALF_UP)).intValue();
}
//不能小于可轧制的最小长度
if (intMaxLen < intRollMinLen) {
@ -1311,7 +1426,7 @@ public class SubController {
//TODO轧制方向轧制模式 没有其他值暂不考虑,之后数据完善后需要考虑
PmPlateCutLenBtDO PPCLB = plistPmPlateCutLenBtDO.stream().
filter(f -> f.getMscLineNo().equals("1030")
&& f.getBrrNeed().equals((p.getCal_Wid() > SInfo.getSlabActWid().intValue()) ? "1" : "0")
&& f.getBrrNeed().equals((p.getCal_Wid() > SInfo.getRemWid().intValue()) ? "1" : "0")
&& f.getPlateThickFrom().compareTo(p.getCal_Thk()) <= 0
&& f.getPlateThickTo().compareTo(p.getCal_Thk()) >= 0
&& f.getSlabThickFrom().compareTo(SInfo.getSlabActThk()) <= 0
@ -1375,7 +1490,7 @@ public class SubController {
.max();
//宽展比 保留2位小数
BigDecimal decWidRate = BigDecimal.valueOf(maxWidth.orElse(0)).divide(SInfo.getSlabActWid(), 2, RoundingMode.HALF_UP);
BigDecimal decWidRate = BigDecimal.valueOf(maxWidth.orElse(0)).divide(SInfo.getRemWid(), 2, RoundingMode.HALF_UP);
//最大厚度公差最小值
Optional<BigDecimal> maxTolThkMin = p.getLtActInfoGPreOrder().stream()
@ -1429,7 +1544,7 @@ public class SubController {
PmPlateCutLenBtDO PPCLB_Act = plistPmPlateCutLenBtDO.stream().
filter(f -> f.getMscLineNo().equals("1030")
&& f.getBrrNeed().equals((p.getCal_Wid() > SInfo.getSlabActWid().intValue()) ? "1" : "0")
&& f.getBrrNeed().equals((p.getCal_Wid() > SInfo.getRemWid().intValue()) ? "1" : "0")
&& f.getPlateThickFrom().compareTo(p.getCal_Thk()) <= 0
&& f.getPlateThickTo().compareTo(p.getCal_Thk()) >= 0
&& f.getSlabThickFrom().compareTo(SInfo.getSlabActThk()) <= 0
@ -1452,12 +1567,12 @@ public class SubController {
//板坯厚度
p.setVirtualSlab_Thk(SInfo.getSlabActThk());
//板坯宽度
p.setVirtualSlab_Wid(SInfo.getSlabActWid().intValue());
p.setVirtualSlab_Wid(SInfo.getRemWid().intValue());
//板坯长度
BigDecimal virtualSlabLen = p.getCal_Thk()
.multiply(BigDecimal.valueOf(p.getCal_Wid()))
.multiply(BigDecimal.valueOf(p.getCal_Len()))
.divide(SInfo.getSlabActThk().multiply(SInfo.getSlabActWid()), 0, RoundingMode.CEILING);
.divide(SInfo.getSlabActThk().multiply(SInfo.getRemWid()), 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)).divide(BigDecimal.valueOf(1000000000), 2, RoundingMode.HALF_UP));
@ -1468,7 +1583,7 @@ public class SubController {
.multiply(BigDecimal.valueOf(p.getEff_Len()));
BigDecimal slabVolume = SInfo.getSlabActThk()
.multiply(SInfo.getSlabActWid())
.multiply(SInfo.getRemWid())
.multiply(BigDecimal.valueOf(p.getVirtualSlab_Len()));
BigDecimal yieldRate = rolledVolume.divide(slabVolume, 2, RoundingMode.HALF_UP); // 保留4位小数
@ -1477,7 +1592,10 @@ public class SubController {
p.setRate(yieldRate);
});
//判断结果数据是否存在
if (gltGGrpCalRslt.size() == 0) {
return;
}
//判断结算结果长度和成材率是否可用
gltGGrpCalRslt.parallelStream().forEach(p -> {
@ -1487,12 +1605,12 @@ public class SubController {
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包含余坯实际厚度;
@ -1506,6 +1624,7 @@ public class SubController {
&& 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
@ -1514,6 +1633,7 @@ public class SubController {
&& 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
@ -1550,6 +1670,9 @@ public class SubController {
//选择最优结果
ChosBestRsl(SInfo);
//递归
SetGroupCalRslt(SInfo);
//递归
////小于最小入炉尺寸
//if (SInfo.getRemLen().intValue() <2200)
@ -1668,19 +1791,33 @@ public class SubController {
}
);
}
plistpmSubHisDO.forEach(p->{
subService.InsertPmSubHisDO(p);
});
plistpmSubOrdDO.forEach(p->{
//判断长宽大小
BigDecimal decLen =BigDecimal.valueOf(SInfo.getRemLen().intValue()-maxRate.getVirtualSlab_Len());
BigDecimal DecWid =SInfo.getRemWid();
if (decLen.compareTo(DecWid) <= 0) {
// 当 p.getSlabActLen() 小于或等于 p.getSlabActWid() 时执行的代码
SInfo.setRemLen(DecWid);
SInfo.setRemWid(decLen);
}else{
SInfo.setRemLen(decLen);
SInfo.setRemWid(DecWid);
}
subService.InsertPmSubOrdDO(p);
}
});
//存储数据,组板结果
// plistpmSubHisDO.forEach(p->{
//
// subService.InsertPmSubHisDO(p);
//
// });
//
// plistpmSubOrdDO.forEach(p->{
//
// subService.InsertPmSubOrdDO(p);
//
// });
}

@ -86,4 +86,14 @@ public interface SubMapper extends BaseMapper<Map> {
void InsertPmSubHisDO(PmSubHisDO p);
void InsertPmSubOrdDO(PmSubOrdDO p);
List<PmIrsubableContDO> getPmIrsubableCont();
List<PmIrsubableSlabDO> getPmIrsubableSlab();
List<PmAutoSubSettingDO> getPmAutoSubSetting();
List<PmRetainStDO> getPmRetainSt();
List<PmRetainStackDO> getPmRetainStack();
}

@ -2,7 +2,9 @@ package net.xdclass.shopmanager.model;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -13,7 +15,7 @@ import lombok.EqualsAndHashCode;
* </p>
*
* @author SunH
* @since 2024-12-18
* @since 2025-02-10
*/
@Data
@EqualsAndHashCode(callSuper = false)
@ -25,6 +27,7 @@ public class PmAutoSubSettingDO implements Serializable {
/**
* ID
*/
@TableId(value = "ID", type = IdType.AUTO)
private BigDecimal id;
/**
@ -103,7 +106,7 @@ public class PmAutoSubSettingDO implements Serializable {
private String isUseSt;
/**
*
*
*/
private String useableDstock;
@ -197,5 +200,15 @@ public class PmAutoSubSettingDO implements Serializable {
private String attribute5;
/**
*
*/
private BigDecimal triggerCycle;
/**
*
*/
private String overshootCondition;
}

@ -83,4 +83,14 @@ public interface SubService {
void InsertPmSubHisDO(PmSubHisDO p);
void InsertPmSubOrdDO(PmSubOrdDO p);
List<PmIrsubableContDO> getPmIrsubableCont();
List<PmIrsubableSlabDO> getPmIrsubableSlab();
List<PmAutoSubSettingDO> getPmAutoSubSetting();
List<PmRetainStDO> getPmRetainSt();
List<PmRetainStackDO> getPmRetainStack();
}

@ -208,5 +208,30 @@ public class SubServiceImpl implements SubService {
subMapper.InsertPmSubOrdDO(p);
}
@Override
public List<PmIrsubableContDO> getPmIrsubableCont() {
return subMapper.getPmIrsubableCont();
}
@Override
public List<PmIrsubableSlabDO> getPmIrsubableSlab() {
return subMapper.getPmIrsubableSlab();
}
@Override
public List<PmAutoSubSettingDO> getPmAutoSubSetting() {
return subMapper.getPmAutoSubSetting();
}
@Override
public List<PmRetainStDO> getPmRetainSt() {
return subMapper.getPmRetainSt();
}
@Override
public List<PmRetainStackDO> getPmRetainStack() {
return subMapper.getPmRetainStack();
}
}

@ -2,35 +2,36 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.xdclass.shopmanager.mapper.SubMapper">
<!--测试查询板坯SQL-->
<!-- <select id="getSlabInfo" resultType="net.xdclass.shopmanager.model.SlabInfoDO">-->
<!-- SELECT DISTINCT-->
<!-- PPCB.SLAB_CUT_GAP &#45;&#45;切缝-->
<!-- ,ms.*-->
<!-- FROM XISC_MM.MM_SLAB MS &#45;&#45;MM_SLAB 板坯表-->
<!-- LEFT JOIN PM_PD_SLAB PPS ON PPS.SLAB_NO = MS.SLAB_NO &#45;&#45;PM_PD_SLAB 组板板坯表-->
<!-- LEFT JOIN PM_PD_CONST_BT PPCB ON PPCB.ROLL_LINE_NO = SUBSTR(MS.MSC_LINE_NO,3,2)-->
<!-- WHERE 1=1-->
<!-- AND MS.MSC_LINE_NO='1030' &#45;&#45;5米轧线-->
<!-- </select>-->
<!--实际的查询板坯SQL-->
<!--测试查询板坯SQL-->
<!-- <select id="getSlabInfo" resultType="net.xdclass.shopmanager.model.SlabInfoDO">-->
<!-- SELECT DISTINCT-->
<!-- PPCB.SLAB_CUT_GAP &#45;&#45;切缝-->
<!-- ,ms.*-->
<!-- FROM XISC_MM.MM_SLAB MS &#45;&#45;MM_SLAB 板坯表-->
<!-- LEFT JOIN PM_PD_SLAB PPS ON PPS.SLAB_NO = MS.SLAB_NO &#45;&#45;PM_PD_SLAB 组板板坯表-->
<!-- LEFT JOIN PM_PD_CONST_BT PPCB ON PPCB.ROLL_LINE_NO = SUBSTR(MS.MSC_LINE_NO,3,2)-->
<!-- WHERE 1=1-->
<!-- AND MS.MSC_LINE_NO='1030' &#45;&#45;5米轧线-->
<!-- </select>-->
<!--实际的查询板坯SQL-->
<select id="getSlabInfo" resultType="net.xdclass.shopmanager.model.SlabInfoDO">
SELECT DISTINCT
MS.MSC_LINE_NO --产线
,PPCB.SLAB_CUT_GAP --切缝
,MS.NEXT_WHOLE_BACKLOG_CODE -- 全程工序代码
,MS.SLAB_STATUS
,(MS.SLAB_ACT_LEN -(SELECT SUM(NVL(P1.NEED_SLAB_LEN ,0)+PPCB.SLAB_CUT_GAP) FROM PM_PD_SLAB P1 WHERE P1.SLAB_NO = MS.SLAB_NO)-PPCB.SLAB_CUT_GAP) remain_slab_len --剩余长度
,MS.*
FROM XISC_MM.MM_SLAB MS --MM_SLAB 板坯表
LEFT JOIN PM_PD_SLAB PPS ON PPS.SLAB_NO = MS.SLAB_NO --PM_PD_SLAB 组板板坯表
LEFT JOIN PM_PD_CONST_BT PPCB ON PPCB.ROLL_LINE_NO = SUBSTR(MS.MSC_LINE_NO,3,2)
WHERE 1=1
AND MS.MSC_LINE_NO='1030' --5米轧线
AND MS.SLAB_NO = 'C40022070400'
-- AND MS.SLAB_NO = 'C40022070500'
-- AND ((SELECT SUM(NVL(P1.NEED_SLAB_WT,0)) FROM PM_PD_SLAB P1 WHERE P1.SLAB_NO = MS.SLAB_NO)= MS.SLAB_ACT_WGT
SELECT DISTINCT MS.MSC_LINE_NO --产线
, PPCB.SLAB_CUT_GAP --切缝
, MS.NEXT_WHOLE_BACKLOG_CODE -- 全程工序代码
, MS.SLAB_STATUS
, (MS.SLAB_ACT_LEN - (SELECT SUM(NVL(P1.NEED_SLAB_LEN, 0) + PPCB.SLAB_CUT_GAP)
FROM PM_PD_SLAB P1
WHERE P1.SLAB_NO = MS.SLAB_NO) - PPCB.SLAB_CUT_GAP) remain_slab_len --剩余长度
, MS.*
FROM XISC_MM.MM_SLAB MS --MM_SLAB 板坯表
LEFT JOIN PM_PD_SLAB PPS ON PPS.SLAB_NO = MS.SLAB_NO --PM_PD_SLAB 组板板坯表
LEFT JOIN PM_PD_CONST_BT PPCB ON PPCB.ROLL_LINE_NO = SUBSTR(MS.MSC_LINE_NO, 3, 2)
WHERE 1 = 1
AND MS.MSC_LINE_NO = '1030' --5米轧线
-- AND MS.SLAB_NO = 'C50015130500'
AND MS.SLAB_NO = 'C50015130100'
-- AND ((SELECT SUM(NVL(P1.NEED_SLAB_WT,0)) FROM PM_PD_SLAB P1 WHERE P1.SLAB_NO = MS.SLAB_NO)= MS.SLAB_ACT_WGT
-- OR (SELECT SUM(NVl(P1.NEED_SLAB_WT,0)) FROM PM_PD_SLAB P1 WHERE P1.SLAB_NO = MS.SLAB_NO) = 0)--重量相同
-- AND SUBSTR(MS.NEXT_WHOLE_BACKLOG_CODE,2,1) !='B' --全程工序代码第二位不能是B不嫩是火切工序
-- AND MS.SLAB_STATUS ='29' --在制余材
@ -48,30 +49,28 @@
<select id="getOrderInfo" resultType="net.xdclass.shopmanager.model.PmProContDO">
SELECT ppc.* FROM PM_PRO_CONT ppc
LEFT JOIN XISC_CT.CT_MAIN CM ON PPC.ORDER_NO = CM.ORDER_NO
LEFT JOIN PM_PRO_CONT_PROD_ATTR ppcpa ON ppcpa.ORDER_NO = ppc.ORDER_NO
LEFT JOIN PM_CONT_MSC_TECH PCMT ON PCMT.ORDER_NO = ppc.ORDER_NO
LEFT JOIN XISC_CT.CT_MAIN CM ON PPC.ORDER_NO = CM.ORDER_NO
LEFT JOIN PM_PRO_CONT_PROD_ATTR ppcpa ON ppcpa.ORDER_NO = ppc.ORDER_NO
LEFT JOIN PM_CONT_MSC_TECH PCMT ON PCMT.ORDER_NO = ppc.ORDER_NO
AND ppc.PRO_CONT_ID = pcmt.PRO_CONT_ID
AND cm.MSC_LINE_NO = pcmt.MSC_LINE_NO --PM_PRO_CONT没有MSC_LINE_NO
WHERE 1=1
-- AND ppc.ORDER_NO='522484Q020'
<!-- AND PCMT.FUR_TYPE ='C' &#45;&#45;加热炉类型 C 没有注解C和S 都代表什么-->
<!-- AND cm.ORDER_STATUS >=40 AND cm.ORDER_STATUS <67-->
<!-- AND ppcpa.ORDER_TYPE_CODE <> 'QFH'-->
<!-- AND PPC.ON_PD_FLAG <>1 &#45;&#45;不用验证操作者-->
<!-- AND PPC.PD_LACK_QTY >0 &#45;&#45;欠量大于0-->
<!-- AND PPC.PD_HOLD_FLAG <>1 &#45;&#45; 不能封锁状态-->
<!-- AND pcmt.ROLL_DIRECT_CODE ='L'&#45;&#45;轧制方向代码-->
WHERE 1=1
-- AND ppc.ORDER_NO='522484Q020'
<!-- AND PCMT.FUR_TYPE ='C' &#45;&#45;加热炉类型 C 没有注解C和S 都代表什么-->
<!-- AND cm.ORDER_STATUS >=40 AND cm.ORDER_STATUS <67-->
<!-- AND ppcpa.ORDER_TYPE_CODE <> 'QFH'-->
<!-- AND PPC.ON_PD_FLAG <>1 &#45;&#45;不用验证操作者-->
<!-- AND PPC.PD_LACK_QTY >0 &#45;&#45;欠量大于0-->
<!-- AND PPC.PD_HOLD_FLAG <>1 &#45;&#45; 不能封锁状态-->
<!-- AND pcmt.ROLL_DIRECT_CODE ='L'&#45;&#45;轧制方向代码-->
</select>
<!--生产合同产品属性表-->
<select id="getPmProCountProdAttr" resultType="net.xdclass.shopmanager.model.PmProContProdAttrDO">
SELECT
*
FROM
PM_PRO_CONT_PROD_ATTR
SELECT *
FROM PM_PRO_CONT_PROD_ATTR
-- WHERE ORDER_NO ='522484Q020'
</select>
@ -79,226 +78,211 @@
<!--合同产线工艺参数表-->
<select id="getPmContMscTech" resultType="net.xdclass.shopmanager.model.PmContMscTechDO">
SELECT
*
FROM
PM_CONT_MSC_TECH
SELECT *
FROM PM_CONT_MSC_TECH
-- WHERE ORDER_NO ='522484Q020'
</select>
<!--组板设计规则集-->
<select id="getPmPdRuleSet" resultType="net.xdclass.shopmanager.model.PmPdRuleSetDO">
SELECT
*
FROM
PM_PD_RULE_SET
SELECT *
FROM PM_PD_RULE_SET
</select>
<!--组板设计规则集-->
<select id="getPmPdRuleItem" resultType="net.xdclass.shopmanager.model.PmPdRuleItemDO">
SELECT
*
FROM
PM_PD_RULE_ITEM
SELECT *
FROM PM_PD_RULE_ITEM
</select>
<!--最小轧制厚度公差范围基准表-->
<select id="getPmMinThickTolBt" resultType="net.xdclass.shopmanager.model.PmMinThickTolBtDO">
SELECT
*
FROM
PM_MIN_THICK_TOL_BT
SELECT *
FROM PM_MIN_THICK_TOL_BT
</select>
<!--钢板轧制规格对应收得率基准表-->
<select id="getPmPlateSpecYieldBt" resultType="net.xdclass.shopmanager.model.PmPlateSpecYieldBtDO">
SELECT
*
FROM
PM_PLATE_SPEC_YIELD_BT
SELECT *
FROM PM_PLATE_SPEC_YIELD_BT
</select>
<!--强度级别对照基准表-->
<select id="getPmStCodeBt" resultType="net.xdclass.shopmanager.model.PmStCodeBtDO">
SELECT
*
FROM
PM_ST_CODE_BT
SELECT *
FROM PM_ST_CODE_BT
</select>
<!--粗切位置决定基准表-->
<select id="getPmCutPlaceBt" resultType="net.xdclass.shopmanager.model.PmCutPlaceBtDO">
SELECT
*
FROM
PM_CUT_PLACE_BT
SELECT *
FROM PM_CUT_PLACE_BT
</select>
<!-- 组板常数基准表-->
<select id="getPmPdConstBt" resultType="net.xdclass.shopmanager.model.PmPdConstBtDO">
SELECT
*
FROM
PM_PD_CONST_BT
SELECT *
FROM PM_PD_CONST_BT
</select>
<!--钢板切缝切头尾范围基准表-->
<select id="getPmPlateCutLenBt" resultType="net.xdclass.shopmanager.model.PmPlateCutLenBtDO">
SELECT
*
FROM
PM_PLATE_CUT_LEN_BT
SELECT *
FROM PM_PLATE_CUT_LEN_BT
</select>
<!--组板临时收得率基准表-->
<select id="getPmPdTmpYieldBt" resultType="net.xdclass.shopmanager.model.PmPdTmpYieldBtDO">
SELECT
*
FROM
PM_PD_TMP_YIELD_BT
SELECT *
FROM PM_PD_TMP_YIELD_BT
</select>
<!--钢板切边量基准表-->
<select id="getPmPlateTrimBt" resultType="net.xdclass.shopmanager.model.PmPlateTrimBtDO">
SELECT
*
FROM
PM_PLATE_TRIM_BT
SELECT *
FROM PM_PLATE_TRIM_BT
</select>
<!--余材组板内部钢种以优充次对照表-->
<select id="getPmSlabReplBt" resultType="net.xdclass.shopmanager.model.PmSlabReplBtDO">
SELECT
*
FROM
PM_SLAB_REPL_BT
SELECT *
FROM PM_SLAB_REPL_BT
</select>
<!--热处理炉基准规格表-->
<select id="getPmHeatTreatFurnaceBt" resultType="net.xdclass.shopmanager.model.PmHeatTreatFurnaceBtDO">
SELECT
*
FROM
PM_HEAT_TREAT_FURNACE_BT
SELECT *
FROM PM_HEAT_TREAT_FURNACE_BT
</select>
<!--特殊钢种余量增加表-->
<select id="getPmSpeStAddvBt" resultType="net.xdclass.shopmanager.model.PmSpeStAddvBtDO">
SELECT
*
FROM
PM_SPE_ST_ADDV_BT
SELECT *
FROM PM_SPE_ST_ADDV_BT
</select>
<!--合同处理成分结果数据-->
<select id="getQdToLineupResultChe" resultType="net.xdclass.shopmanager.model.QdToLineupResultCheDO">
SELECT
*
FROM
XISC_QD.QD_TO_LINEUP_RESULT_CHE
SELECT *
FROM XISC_QD.QD_TO_LINEUP_RESULT_CHE
</select>
<!--合同处理坯料性能要求-->
<select id="getQdToLineupResultSlabphy" resultType="net.xdclass.shopmanager.model.QdToLineupResultSlabphyDO">
SELECT
*
FROM
XISC_QD.QD_TO_LINEUP_RESULT_SLABPHY
SELECT *
FROM XISC_QD.QD_TO_LINEUP_RESULT_SLABPHY
</select>
<!--炉次工序成分代表实绩表-->
<select id="getQeTqHeatcheStandResult" resultType="net.xdclass.shopmanager.model.QeTqHeatcheStandResultDO">
SELECT
*
FROM
XISC_QE.QE_TQ_HEATCHE_STAND_RESULT
SELECT *
FROM XISC_QE.QE_TQ_HEATCHE_STAND_RESULT
</select>
<!--炉次待委托表-->
<select id="getQeTqPonoWaitTest" resultType="net.xdclass.shopmanager.model.QeTqPonoWaitTestDO">
SELECT
*
FROM
XISC_QE.QE_TQ_PONO_WAIT_TEST
SELECT *
FROM XISC_QE.QE_TQ_PONO_WAIT_TEST
</select>
<!--坯料低倍委托实绩表-->
<select id="getQeTqSlabMacroResult" resultType="net.xdclass.shopmanager.model.QeTqSlabMacroResultDO">
SELECT
*
FROM
XISC_QE.QE_TQ_SLAB_MACRO_RESULT
SELECT *
FROM XISC_QE.QE_TQ_SLAB_MACRO_RESULT
</select>
<!--连铸板坯生产规格基准表-->
<select id="getPmSlabSpecBt" resultType="net.xdclass.shopmanager.model.PmSlabSpecBtDO">
SELECT
*
FROM
PM_SLAB_SPEC_BT
SELECT *
FROM PM_SLAB_SPEC_BT
</select>
<!--不可自动组板订单信息-->
<select id="getPmIrsubableCont" resultType="net.xdclass.shopmanager.model.PmIrsubableContDO">
SELECT *
FROM PM_IRSUBABLE_CONT
</select>
<insert id="InsertPmSubOrdDO" parameterType="net.xdclass.shopmanager.model.PmSubOrdDO" keyProperty="id">
INSERT INTO PM_SUB_ORD (
ORDER_NO, VIRTUAL_SLAB_NO, SG_SIGN, ST_NO, ORDER_THICK, ORDER_WIDTH,
LEN_AIM, POS_X, POS_Y, DELIVY_DATE, AXIS_ORD, LACK_NUM, OVER_NUM,
CREATION_DATE, CREATED_BY, LAST_UPDATED_BY, LAST_UPDATE_DATE, TENANT_ID,
OBJECT_VERSION_NUMBER, ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3, ATTRIBUTE4,
ATTRIBUTE5, ORDER_SEQ_NO
)
VALUES (
#{orderNo}, #{virtualSlabNo}, #{sgSign}, #{stNo}, #{orderThick}, #{orderWidth},
#{lenAim}, #{posX}, #{posY}, #{delivyDate}, #{axisOrd}, #{lackNum}, #{overNum},
#{creationDate}, #{createdBy}, #{lastUpdatedBy}, #{lastUpdateDate}, #{tenantId},
#{objectVersionNumber}, #{attribute1}, #{attribute2}, #{attribute3}, #{attribute4},
#{attribute5}, #{orderSeqNo}
)
</insert>
<!--不可自动组板板坯信息-->
<select id="getPmIrsubableSlab" resultType="net.xdclass.shopmanager.model.PmIrsubableSlabDO">
SELECT *
FROM Pm_Irsubable_Slab
</select>
<insert id="InsertPmSubHisDO" parameterType="net.xdclass.shopmanager.model.PmSubHisDO" keyProperty="id">
<select id="getPmAutoSubSetting" resultType="net.xdclass.shopmanager.model.PmAutoSubSettingDO">
SELECT *
FROM PM_AUTO_SUB_SETTING
INSERT INTO PM_SUB_HIS (
SLAB_NO, SUB_YIELD, REL_YIELD, SUB_RESULT, SUB_INFO, PROCESS_CODE,
FORM_PLATE_MODE, ST_NO, SLAB_THICK, SLAB_WID, SLAB_LEN, SLAB_WT, SUB_TIME,
CREATION_DATE, CREATED_BY, LAST_UPDATED_BY, LAST_UPDATE_DATE, ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3, ATTRIBUTE4,
ATTRIBUTE5, VIRTUAL_SLAB_NO, ROLL_THK, ROLL_WID, ROLL_LEN, HEAD_CUT,
TAIL_CUT, WID_CUT, SLIT_LEN, NEED_SLAB_LEN, NEED_SLAB_WT
)
VALUES (
#{slabNo}, #{subYield}, #{relYield}, #{subResult}, #{subInfo}, #{processCode},
#{formPlateMode}, #{stNo}, #{slabThick}, #{slabWid}, #{slabLen}, #{slabWt}, #{subTime},
#{creationDate}, #{createdBy}, #{lastUpdatedBy}, #{lastUpdateDate}, #{attribute1}, #{attribute2}, #{attribute3}, #{attribute4},
#{attribute5}, #{virtualSlabNo}, #{rollThk}, #{rollWid}, #{rollLen}, #{headCut},
#{tailCut}, #{widCut}, #{slitLen}, #{needSlabLen}, #{needSlabWt}
)
</select>
<select id="getPmRetainSt" resultType="net.xdclass.shopmanager.model.PmRetainStDO">
SELECT *
FROM PM_RETAIN_ST
</select>
<select id="getPmRetainStack" resultType="net.xdclass.shopmanager.model.PmRetainStackDO">
SELECT *
FROM PM_RETAIN_STACK
</select>
<insert id="InsertPmSubOrdDO" parameterType="net.xdclass.shopmanager.model.PmSubOrdDO" keyProperty="id">
INSERT INTO PM_SUB_ORD (ORDER_NO, VIRTUAL_SLAB_NO, SG_SIGN, ST_NO, ORDER_THICK, ORDER_WIDTH,
LEN_AIM, POS_X, POS_Y, DELIVY_DATE, AXIS_ORD, LACK_NUM, OVER_NUM,
CREATION_DATE, CREATED_BY, LAST_UPDATED_BY, LAST_UPDATE_DATE, TENANT_ID,
OBJECT_VERSION_NUMBER, ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3, ATTRIBUTE4,
ATTRIBUTE5, ORDER_SEQ_NO)
VALUES (#{orderNo}, #{virtualSlabNo}, #{sgSign}, #{stNo}, #{orderThick}, #{orderWidth},
#{lenAim}, #{posX}, #{posY}, #{delivyDate}, #{axisOrd}, #{lackNum}, #{overNum},
#{creationDate}, #{createdBy}, #{lastUpdatedBy}, #{lastUpdateDate}, #{tenantId},
#{objectVersionNumber}, #{attribute1}, #{attribute2}, #{attribute3}, #{attribute4},
#{attribute5}, #{orderSeqNo})
</insert>
<insert id="InsertPmSubHisDO" parameterType="net.xdclass.shopmanager.model.PmSubHisDO" keyProperty="id">
INSERT INTO PM_SUB_HIS (SLAB_NO, SUB_YIELD, REL_YIELD, SUB_RESULT, SUB_INFO, PROCESS_CODE,
FORM_PLATE_MODE, ST_NO, SLAB_THICK, SLAB_WID, SLAB_LEN, SLAB_WT, SUB_TIME,
CREATION_DATE, CREATED_BY, LAST_UPDATED_BY, LAST_UPDATE_DATE, ATTRIBUTE1, ATTRIBUTE2,
ATTRIBUTE3, ATTRIBUTE4,
ATTRIBUTE5, VIRTUAL_SLAB_NO, ROLL_THK, ROLL_WID, ROLL_LEN, HEAD_CUT,
TAIL_CUT, WID_CUT, SLIT_LEN, NEED_SLAB_LEN, NEED_SLAB_WT)
VALUES (#{slabNo}, #{subYield}, #{relYield}, #{subResult}, #{subInfo}, #{processCode},
#{formPlateMode}, #{stNo}, #{slabThick}, #{slabWid}, #{slabLen}, #{slabWt}, #{subTime},
#{creationDate}, #{createdBy}, #{lastUpdatedBy}, #{lastUpdateDate}, #{attribute1}, #{attribute2},
#{attribute3}, #{attribute4},
#{attribute5}, #{virtualSlabNo}, #{rollThk}, #{rollWid}, #{rollLen}, #{headCut},
#{tailCut}, #{widCut}, #{slitLen}, #{needSlabLen}, #{needSlabWt})
</insert>
<!-- TENANT_ID,-->
<!-- OBJECT_VERSION_NUMBER,-->
<!-- , #{item.tenantId},-->
<!-- #{item.objectVersionNumber}-->
<!-- OBJECT_VERSION_NUMBER,-->
<!-- , #{item.tenantId},-->
<!-- #{item.objectVersionNumber}-->
<!-- 批量插入记录 -->
<insert id="batchInsertPmSubHisDO" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
INSERT INTO PM_SUB_HIS (
SLAB_NO, SUB_YIELD, REL_YIELD, SUB_RESULT, SUB_INFO, PROCESS_CODE,
SLAB_NO, SUB_YIELD, REL_YIELD, SUB_RESULT, SUB_INFO, PROCESS_CODE,
FORM_PLATE_MODE, ST_NO, SLAB_THICK, SLAB_WID, SLAB_LEN, SLAB_WT, SUB_TIME,
CREATION_DATE, CREATED_BY, LAST_UPDATED_BY, LAST_UPDATE_DATE, ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3, ATTRIBUTE4,
CREATION_DATE, CREATED_BY, LAST_UPDATED_BY, LAST_UPDATE_DATE, ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3, ATTRIBUTE4,
ATTRIBUTE5, VIRTUAL_SLAB_NO, ROLL_THK, ROLL_WID, ROLL_LEN, HEAD_CUT,
TAIL_CUT, WID_CUT, SLIT_LEN, NEED_SLAB_LEN, NEED_SLAB_WT
)
VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.slabNo}, #{item.subYield}, #{item.relYield}, #{item.subResult}, #{item.subInfo}, #{item.processCode},
#{item.formPlateMode}, #{item.stNo}, #{item.slabThick}, #{item.slabWid}, #{item.slabLen}, #{item.slabWt}, #{item.subTime},
#{item.creationDate}, #{item.createdBy}, #{item.lastUpdatedBy}, #{item.lastUpdateDate}, #{item.attribute1}, #{item.attribute2}, #{item.attribute3}, #{item.attribute4},
#{item.attribute5}, #{item.virtualSlabNo}, #{item.rollThk}, #{item.rollWid}, #{item.rollLen}, #{item.headCut},
#{item.slabNo}, #{item.subYield}, #{item.relYield}, #{item.subResult}, #{item.subInfo}, #{item.processCode},
#{item.formPlateMode}, #{item.stNo}, #{item.slabThick}, #{item.slabWid}, #{item.slabLen}, #{item.slabWt},
#{item.subTime},
#{item.creationDate}, #{item.createdBy}, #{item.lastUpdatedBy}, #{item.lastUpdateDate}, #{item.attribute1},
#{item.attribute2}, #{item.attribute3}, #{item.attribute4},
#{item.attribute5}, #{item.virtualSlabNo}, #{item.rollThk}, #{item.rollWid}, #{item.rollLen},
#{item.headCut},
#{item.tailCut}, #{item.widCut}, #{item.slitLen}, #{item.needSlabLen}, #{item.needSlabWt}
)
</foreach>
@ -317,8 +301,10 @@
VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.orderNo}, #{item.virtualSlabNo}, #{item.sgSign}, #{item.stNo}, #{item.orderThick}, #{item.orderWidth},
#{item.lenAim}, #{item.posX}, #{item.posY}, #{item.delivyDate}, #{item.axisOrd}, #{item.lackNum}, #{item.overNum},
#{item.orderNo}, #{item.virtualSlabNo}, #{item.sgSign}, #{item.stNo}, #{item.orderThick},
#{item.orderWidth},
#{item.lenAim}, #{item.posX}, #{item.posY}, #{item.delivyDate}, #{item.axisOrd}, #{item.lackNum},
#{item.overNum},
#{item.creationDate}, #{item.createdBy}, #{item.lastUpdatedBy}, #{item.lastUpdateDate}, #{item.tenantId},
#{item.objectVersionNumber}, #{item.attribute1}, #{item.attribute2}, #{item.attribute3}, #{item.attribute4},
#{item.attribute5}, #{item.orderSeqNo}

@ -96,7 +96,7 @@ public class MyBatisPlusGenerator {
//.setInclude("QE_TQ_HEATCHE_STAND_RESULT","QE_TQ_PONO_WAIT_TEST","QE_TQ_SLAB_MACRO_RESULT")
.setInclude("PM_SUB_HIS","PM_SUB_ORD")
.setInclude("PM_AUTO_SUB_SETTING")
// 生成的表, 支持多表一起生成,以数组形式填写
//TODO TODO TODO TODO 两个方式,直接写,或者使用命令行输入

Loading…
Cancel
Save