From 779b89117770b73c46826e410969f8ad558102ca Mon Sep 17 00:00:00 2001 From: BKGY_MYT <1536233200@qq.com> Date: Wed, 12 Feb 2025 15:38:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shopmanager/controller/SubController.java | 793 ++++++++++-------- .../xdclass/shopmanager/mapper/SubMapper.java | 9 + .../shopmanager/service/SubService.java | 6 + .../service/impl/SubServiceImpl.java | 24 + .../tool/service/TransactionService.java | 58 ++ .../src/main/resources/mapper/SubMapper.xml | 605 +++++++++++++ 6 files changed, 1147 insertions(+), 348 deletions(-) create mode 100644 1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/tool/service/TransactionService.java diff --git a/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/controller/SubController.java b/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/controller/SubController.java index 644ddba..9c4aeb2 100644 --- a/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/controller/SubController.java +++ b/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/controller/SubController.java @@ -6,15 +6,18 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import net.xdclass.shopmanager.model.*; import net.xdclass.shopmanager.service.SubService; +import net.xdclass.shopmanager.tool.service.TransactionService; import net.xdclass.shopmanager.util.JsonData; import org.apache.commons.lang3.math.NumberUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.TransactionStatus; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; + import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; @@ -34,6 +37,9 @@ public class SubController { @Autowired private SubService subService; + @Autowired + private TransactionService transactionService; + private final static Logger logger = LoggerFactory.getLogger(SubController.class); //region ***全局变量过程数据*** @@ -135,9 +141,9 @@ public class SubController { //TODO 需要添加 QD_TO_PO_ORDER 的查询记录 private static Date now; //组板履历表 - private static List plistpmSubHisDO=new ArrayList<>(); + private static List plistpmSubHisDO = new ArrayList<>(); //组板订单详细表 - private static List plistpmSubOrdDO=new ArrayList<>(); + private static List plistpmSubOrdDO = new ArrayList<>(); // //加热炉板坯最小长度 // private static int gintSlabMinLen; @@ -149,22 +155,22 @@ public class SubController { //region ***配置项参数*** //不可自动组板订单信息 - private static List plistpmIrsubableContDO=new ArrayList<>(); + private static List plistpmIrsubableContDO = new ArrayList<>(); //不可自动组板板坯信息 - private static List plistpmIrsubableSlabDO=new ArrayList<>(); + private static List plistpmIrsubableSlabDO = new ArrayList<>(); //自动替代配置参数 - private static List plistpmAutoSubSettingDO=new ArrayList<>(); + private static List plistpmAutoSubSettingDO = new ArrayList<>(); //钢种信息配置 - private static List plistpmRetainStDO=new ArrayList<>(); + private static List plistpmRetainStDO = new ArrayList<>(); //仓库信息配置 - private static List plistpmRetainStackDO=new ArrayList<>(); + private static List plistpmRetainStackDO = new ArrayList<>(); //自动替代日志 - private static List plistpmSubLogDO=new ArrayList<>(); + private static List plistpmSubLogDO = new ArrayList<>(); //endregion @@ -181,13 +187,14 @@ public class SubController { long[] capacities = {7}; //初始化方案 Loader.loadNativeLibraries(); +// System.load("E:/XTGT/ortools-win32-x86-64-9.7.2996/ortools-win32-x86-64/jniortools.dll"); // 调用 solve 方法来解决问题 ArrayList ltInt = solve(values, weights, capacities); for (int i = 0; i < ltInt.size(); i++) { System.out.println(ltInt.get(i)); } - JsonData xx= new JsonData(); + JsonData xx = new JsonData(); xx.setCode(0); xx.setData(ltInt); xx.setMsg("成功"); @@ -195,6 +202,17 @@ public class SubController { return xx; } + @ApiOperation("数据处理") + @PostMapping("SubData1") + public JsonData SubData1(String strSlab) { + System.out.println("调用成功"); + JsonData xx = new JsonData(); + xx.setCode(0); + xx.setData(null); + xx.setMsg("123"); + return xx; + } + @ApiOperation("数据处理") @PostMapping("SubData") public JsonData SubData(String strSlab) { @@ -210,7 +228,7 @@ public class SubController { //循环板坯 plistSlab.forEach(p -> { logger.info("*************板坯开始{}************* ", p.getSlabNo()); - logger.info("***板坯信息:{} 厚宽长:{}*{}*{} ",p.getSlabNo(), p.getSlabActThk(),p.getSlabActWid(),p.getSlabActLen()); + logger.info("***板坯信息:{} 厚宽长:{}*{}*{} ", p.getSlabNo(), p.getSlabActThk(), p.getSlabActWid(), p.getSlabActLen()); try { gltGCalGrp = new ArrayList<>(); //二次分组 @@ -235,21 +253,32 @@ public class SubController { gltSelGGrpCalRslt = new ArrayList<>(); SetGroupCalRslt(p); - //存储数据,组板结果 - plistpmSubHisDO.forEach(e->{ - subService.InsertPmSubHisDO(e); - }); + //存储数据,组板结果 + plistpmSubHisDO.forEach(e -> { + subService.InsertPmSubHisDO(e); + }); - plistpmSubOrdDO.forEach(e->{ - subService.InsertPmSubOrdDO(e); - }); + plistpmSubOrdDO.forEach(e -> { + subService.InsertPmSubOrdDO(e); + }); logger.info("结果数据板坯号:{};数量:{}", p.getSlabNo(), gltGGrpCalRslt.size()); } - // if (gltGGrpCalRslt.size() > 0) { - // now = new Date(); - // SetSaveDate(p); - // } + if (gltSelGGrpCalRslt.size() > 0) { + now = new Date(); + SetSaveDate(p); + //开启事务 + TransactionStatus transactionStatus = transactionService.begin(); + try { + SaveData(); +// bOffTaskLineService.saveOffTask(bPlanHeadAndLineVos); + transactionService.commit(transactionStatus); + } catch (Exception e) { + logger.error("保存事务回滚:" + p.getSlabNo(), e); + //回滚事务 + transactionService.rollback(transactionStatus); + } + } } catch (Exception e) { logger.error("板坯报错:" + p.getSlabNo(), e); @@ -534,8 +563,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()); @@ -592,7 +620,8 @@ public class SubController { //钢种标准对比 GCalGrp GCG = new GCalGrp(); - GCG.setLtInfoGPreOrder(new ArrayList<>()); +// GCG.setLtInfoGPreOrder(new ArrayList<>()); + List gPreOrders = new CopyOnWriteArrayList<>(); e.getLtInfoGPreOrder().parallelStream().forEach(f -> { try { @@ -613,70 +642,74 @@ public class SubController { log.error("低倍检测", e1); return; } - + gPreOrders.add(f); //GCG.setLtInfoGPreOrder(new ArrayList<>()); - GCG.getLtInfoGPreOrder().add(f);//添加订单信息 +// GCG.getLtInfoGPreOrder().add(f);//添加订单信息 }); - + GCG.setLtInfoGPreOrder(gPreOrders);//添加订单信息 //存在订单,添加可计算分组 if (GCG.getLtInfoGPreOrder().size() > 0) { + try { - //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 maxTolThkMin = GCG.getLtInfoGPreOrder().stream() - .map(GPreOrder::getThickTolMin) - .reduce(BigDecimal::max); - - //轧制厚度 厚度+厚度公差下限最大值 - BigDecimal decThk = e.getThk().add(maxTolThkMin.orElse(BigDecimal.ZERO)); - - //轧制宽度 最大宽度+宽度余量 - int intWid = maxWidth.orElse(0) + maxAddWidth.orElse(0); - - //切边 - int intTrimWid = 0; - //切边量 - if (plistPmPlateTrimBtDO.stream().anyMatch(p -> p.getMscLineNo().equals("1030") - && p.getPlateThickFrom().compareTo(decThk) <= 0 - && p.getPlateThickTo().compareTo(decThk) >= 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 - )) { - - intTrimWid = plistPmPlateTrimBtDO.stream().filter(p -> p.getMscLineNo().equals("1030") + //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 maxTolThkMin = GCG.getLtInfoGPreOrder().stream() + .map(GPreOrder::getThickTolMin) + .reduce(BigDecimal::max); + + //轧制厚度 厚度+厚度公差下限最大值 + BigDecimal decThk = e.getThk().add(maxTolThkMin.orElse(BigDecimal.ZERO)); + + //轧制宽度 最大宽度+宽度余量 + int intWid = maxWidth.orElse(0) + maxAddWidth.orElse(0); + + //切边 + int intTrimWid = 0; + //切边量 + if (plistPmPlateTrimBtDO.stream().anyMatch(p -> p.getMscLineNo().equals("1030") && p.getPlateThickFrom().compareTo(decThk) <= 0 && p.getPlateThickTo().compareTo(decThk) >= 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 - ).collect(Collectors.toList()).get(0).getTrimWidth().intValue(); - } - //轧制宽度= 最大宽度 + 最大宽度余量 + 切边量 - intWid = intWid + intTrimWid; - //宽度 - GCG.setWid(intWid); - - //厚度 - GCG.setThk(decThk); + )) { + + intTrimWid = plistPmPlateTrimBtDO.stream().filter(p -> p.getMscLineNo().equals("1030") + && p.getPlateThickFrom().compareTo(decThk) <= 0 + && p.getPlateThickTo().compareTo(decThk) >= 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 + ).collect(Collectors.toList()).get(0).getTrimWidth().intValue(); + } + //轧制宽度= 最大宽度 + 最大宽度余量 + 切边量 + intWid = intWid + intTrimWid; + //宽度 + GCG.setWid(intWid); - //切边 - GCG.setWid_Add(intTrimWid); + //厚度 + GCG.setThk(decThk); + //切边 + GCG.setWid_Add(intTrimWid); + } catch (Exception e1) { + log.error("计算分组", e1); + return; + } gltGCalGrp.add(GCG); } @@ -1337,12 +1370,12 @@ public class SubController { public void SetGroupCalRslt(SlabInfoDO SInfo) { //剩余长度小于加热炉最小长度 - if (SInfo.getRemLen().compareTo(BigDecimal.valueOf(2200))<0){ + if (SInfo.getRemLen().compareTo(BigDecimal.valueOf(2200)) < 0) { return; } //剩余宽度小于加热炉最小宽度 - if (SInfo.getRemWid().compareTo(BigDecimal.valueOf(1200))<0){ + if (SInfo.getRemWid().compareTo(BigDecimal.valueOf(1200)) < 0) { return; } @@ -1352,7 +1385,7 @@ public class SubController { int intRollMinLen = plistPmPdConstBtDO.stream().filter(p -> p.getRollLineNo().equals("30")).findFirst().orElse(null).getHpmMinPLen().intValue(); //初始化分组数据 - gltGGrpCalRslt=new ArrayList<>(); + gltGGrpCalRslt = new ArrayList<>(); //gltGCalGrp.parallelStream().forEach(e->{ gltGCalGrp.parallelStream().forEach(e -> { @@ -1396,217 +1429,220 @@ public class SubController { //分组计算 //gltGGrpCalRslt.parallelStream().forEach(p -> { gltGGrpCalRslt.parallelStream().forEach(p -> { - // 测试数据 - //处理数据多处理 - List ltValues = new ArrayList<>(); - List ltweights = new ArrayList<>(); - List ltOrder = new ArrayList<>(); - - //logger.info( "订单总数量:" + p.getLtInfoGPreOrder().size()); - if (p == null) { - return; - } - if (p.getLtInfoGPreOrder() == null) { - return; - } - //计算可处理数据最大值 - p.getLtInfoGPreOrder().forEach(e -> { + try { + // 测试数据 + //处理数据多处理 + List ltValues = new ArrayList<>(); + List ltweights = new ArrayList<>(); + List ltOrder = new ArrayList<>(); + + //logger.info( "订单总数量:" + p.getLtInfoGPreOrder().size()); + if (p == null) { + return; + } + if (p.getLtInfoGPreOrder() == null) { + return; + } + //计算可处理数据最大值 + p.getLtInfoGPreOrder().forEach(e -> { + + int intOrdCount = p.getCal_Len() / e.getLen(); + + if (ltOrder.stream().filter(f -> f.equals(e.getOrderNo())).count() == intOrdCount) { + return; + } + ltOrder.add(e.getOrderNo());//添加订单号 + ltValues.add(e.getIDValue());//价值 + ltweights.add(e.getLen());//长度 + }); - int intOrdCount = p.getCal_Len() / e.getLen(); + // 生成 values 和 weights 数组 + long[] values = new long[ltValues.size()]; + long[][] weights = new long[1][ltweights.size()]; - if (ltOrder.stream().filter(f -> f.equals(e.getOrderNo())).count() == intOrdCount) { + for (int i = 0; i < ltValues.size(); i++) { + values[i] = ltValues.get(i); // 从订单中获取 value + weights[0][i] = ltweights.get(i) + 5; // 从订单中获取 weights + } + + //是否展宽 + //String brnNeed=""; + //if (p.getCal_Wid()>SInfo.getSlabActWid().intValue()){ + // brnNeed="1";//展宽 + //}else { + // brnNeed="0";//不展宽 + //} + + //TODO:轧制方向,轧制模式 没有其他值暂不考虑,之后数据完善后需要考虑 + PmPlateCutLenBtDO PPCLB = plistPmPlateCutLenBtDO.stream(). + filter(f -> f.getMscLineNo().equals("1030") + && 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 + && f.getSlabThickTo().compareTo(SInfo.getSlabActThk()) >= 0 + && f.getCombinePlateWidthFrom().compareTo(BigDecimal.valueOf(p.getCal_Wid())) <= 0 + && f.getCombinePlateWidthTo().compareTo(BigDecimal.valueOf(p.getCal_Wid())) >= 0 + ).findFirst().orElse(null); + + if (PPCLB == null) { return; } - ltOrder.add(e.getOrderNo());//添加订单号 - ltValues.add(e.getIDValue());//价值 - ltweights.add(e.getLen());//长度 - }); - // 生成 values 和 weights 数组 - long[] values = new long[ltValues.size()]; - long[][] weights = new long[1][ltweights.size()]; + //切缝长度 + int intPlateCutWidth = PPCLB.getPlateCutWidth().intValue(); - for (int i = 0; i < ltValues.size(); i++) { - values[i] = ltValues.get(i); // 从订单中获取 value - weights[0][i] = ltweights.get(i) + 5; // 从订单中获取 weights - } + //切头 + int intHead = PPCLB.getHeadCut().intValue(); + //切尾 + int intTail = PPCLB.getTailCut().intValue(); - //是否展宽 - //String brnNeed=""; - //if (p.getCal_Wid()>SInfo.getSlabActWid().intValue()){ - // brnNeed="1";//展宽 - //}else { - // brnNeed="0";//不展宽 - //} - - //TODO:轧制方向,轧制模式 没有其他值暂不考虑,之后数据完善后需要考虑 - PmPlateCutLenBtDO PPCLB = plistPmPlateCutLenBtDO.stream(). - filter(f -> f.getMscLineNo().equals("1030") - && 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 - && f.getSlabThickTo().compareTo(SInfo.getSlabActThk()) >= 0 - && f.getCombinePlateWidthFrom().compareTo(BigDecimal.valueOf(p.getCal_Wid())) <= 0 - && f.getCombinePlateWidthTo().compareTo(BigDecimal.valueOf(p.getCal_Wid())) >= 0 - ).findFirst().orElse(null); - - if (PPCLB == null) { - return; - } + //去掉切头尾长度 + int intCap = p.getCal_Len() - intHead - intTail; - //切缝长度 - int intPlateCutWidth = PPCLB.getPlateCutWidth().intValue(); + long[] capacities = {intCap}; - //切头 - int intHead = PPCLB.getHeadCut().intValue(); - //切尾 - int intTail = PPCLB.getTailCut().intValue(); + //初始化方案 + Loader.loadNativeLibraries(); - //去掉切头尾长度 - int intCap = p.getCal_Len() - intHead - intTail; + //logger.info("values Size:{}", p.getLtInfoGPreOrder().size()); + //for (int i = 0; i < ltweights.size(); i++) { + // + // logger.info("weights:{}", ltweights.get(i)); + // + //} - long[] capacities = {intCap}; + // 调用 solve 方法来解决问题 + ArrayList ltInt = solve(values, weights, capacities); - //初始化方案 - Loader.loadNativeLibraries(); + //实例化实际订单号 + p.setLtActInfoGPreOrder(new ArrayList<>()); + //循环返回的订单插入到实际数组中 + for (int i = 0; i < ltInt.size(); i++) { + int indexi = i; + p.getLtActInfoGPreOrder().add(p.getLtInfoGPreOrder().stream().filter(m -> m.getIDValue() == ltInt.get(indexi)).collect(Collectors.toList()).get(0)); + } - //logger.info("values Size:{}", p.getLtInfoGPreOrder().size()); - //for (int i = 0; i < ltweights.size(); i++) { - // - // logger.info("weights:{}", ltweights.get(i)); - // - //} + //根据实际订单再计算 + // - // 调用 solve 方法来解决问题 - ArrayList ltInt = solve(values, weights, capacities); + if (p.getLtActInfoGPreOrder().size() == 0) { + return; + } - //实例化实际订单号 - p.setLtActInfoGPreOrder(new ArrayList<>()); - //循环返回的订单插入到实际数组中 - for (int i = 0; i < ltInt.size(); i++) { - int indexi = i; - p.getLtActInfoGPreOrder().add(p.getLtInfoGPreOrder().stream().filter(m -> m.getIDValue() == ltInt.get(indexi)).collect(Collectors.toList()).get(0)); - } + //最大宽度 + OptionalInt maxWidth = p.getLtActInfoGPreOrder().stream() + .mapToInt(GPreOrder::getWid) + .max(); + //最大宽度余量 + OptionalInt maxAddWidth = p.getLtActInfoGPreOrder().stream() + .mapToInt(GPreOrder::getWidthAddv) + .max(); - //根据实际订单再计算 - // + //宽展比 保留2位小数 + BigDecimal decWidRate = BigDecimal.valueOf(maxWidth.orElse(0)).divide(SInfo.getRemWid(), 2, RoundingMode.HALF_UP); - if (p.getLtActInfoGPreOrder().size() == 0) { - return; - } + //最大厚度公差最小值 + Optional maxTolThkMin = p.getLtActInfoGPreOrder().stream() + .map(GPreOrder::getThickTolMin) + .reduce(BigDecimal::max); - //最大宽度 - OptionalInt maxWidth = p.getLtActInfoGPreOrder().stream() - .mapToInt(GPreOrder::getWid) - .max(); - //最大宽度余量 - OptionalInt maxAddWidth = p.getLtActInfoGPreOrder().stream() - .mapToInt(GPreOrder::getWidthAddv) - .max(); + //轧制厚度 厚度+厚度公差下限最大值 + BigDecimal decThk = p.getThk().add(maxTolThkMin.orElse(BigDecimal.ZERO)); - //宽展比 保留2位小数 - BigDecimal decWidRate = BigDecimal.valueOf(maxWidth.orElse(0)).divide(SInfo.getRemWid(), 2, RoundingMode.HALF_UP); + //轧制宽度 最大宽度+宽度余量 + int intWid = maxWidth.orElse(0) + maxAddWidth.orElse(0); - //最大厚度公差最小值 - Optional maxTolThkMin = p.getLtActInfoGPreOrder().stream() - .map(GPreOrder::getThickTolMin) - .reduce(BigDecimal::max); - - //轧制厚度 厚度+厚度公差下限最大值 - BigDecimal decThk = p.getThk().add(maxTolThkMin.orElse(BigDecimal.ZERO)); - - //轧制宽度 最大宽度+宽度余量 - int intWid = maxWidth.orElse(0) + maxAddWidth.orElse(0); - - //切边 - int intTrimWid = 0; - //切边量 - if (plistPmPlateTrimBtDO.stream().anyMatch(f -> f.getMscLineNo().equals("1030") - && f.getPlateThickFrom().compareTo(decThk) <= 0 - && f.getPlateThickTo().compareTo(decThk) >= 0 - && f.getCombinePlateWidthFrom().compareTo(BigDecimal.valueOf(maxWidth.orElse(0) + maxAddWidth.orElse(0))) <= 0 - && f.getCombinePlateWidthTo().compareTo(BigDecimal.valueOf(maxWidth.orElse(0) + maxAddWidth.orElse(0))) >= 0 - && f.getWidenFrom().compareTo(decWidRate) <= 0 - && f.getWidenTo().compareTo(decWidRate) >= 0 - )) { - intTrimWid = plistPmPlateTrimBtDO.stream().filter(f -> f.getMscLineNo().equals("1030") + //切边 + int intTrimWid = 0; + //切边量 + if (plistPmPlateTrimBtDO.stream().anyMatch(f -> f.getMscLineNo().equals("1030") && f.getPlateThickFrom().compareTo(decThk) <= 0 && f.getPlateThickTo().compareTo(decThk) >= 0 && f.getCombinePlateWidthFrom().compareTo(BigDecimal.valueOf(maxWidth.orElse(0) + maxAddWidth.orElse(0))) <= 0 && f.getCombinePlateWidthTo().compareTo(BigDecimal.valueOf(maxWidth.orElse(0) + maxAddWidth.orElse(0))) >= 0 && f.getWidenFrom().compareTo(decWidRate) <= 0 && f.getWidenTo().compareTo(decWidRate) >= 0 - ).collect(Collectors.toList()).get(0).getTrimWidth().intValue(); - } - //轧制宽度= 最大宽度 + 最大宽度余量 + 切边量 - intWid = intWid + intTrimWid; - - //厚度 获取p.getLtActInfoGPreOrder()中厚度公差最小值+厚度 - p.setCal_Thk(decThk); - //宽度 获取p.getLtActInfoGPreOrder() 中宽度的最大值 - p.setCal_Wid(intWid); - //宽度余量 获取p.getLtActInfoGPreOrder() 中宽度的最大值 - p.setWid_Add(maxAddWidth.orElse(0)); - //切边余量 - p.setTrimming(intTrimWid); - //切缝 - p.setPlate_Cut_Wid(intPlateCutWidth); - - //订单合计长度+切缝 TODO:取样长度是否加入计算,后续再优化 - int intSumOrderLen = p.getLtActInfoGPreOrder().stream().mapToInt(GPreOrder::getLen).sum(); - int intSumPlateCutWid = p.getLtActInfoGPreOrder().size() * intPlateCutWidth; - p.setEff_Len(intSumOrderLen + intSumPlateCutWid); - - PmPlateCutLenBtDO PPCLB_Act = plistPmPlateCutLenBtDO.stream(). - filter(f -> f.getMscLineNo().equals("1030") - && 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 - && f.getSlabThickTo().compareTo(SInfo.getSlabActThk()) >= 0 - && f.getCombinePlateWidthFrom().compareTo(BigDecimal.valueOf(p.getCal_Wid())) <= 0 - && f.getCombinePlateWidthTo().compareTo(BigDecimal.valueOf(p.getCal_Wid())) >= 0 - ).findFirst().orElse(null); - - if (PPCLB_Act == null) { - return; - } - - //切头 - p.setHead_Len(PPCLB_Act.getHeadCut().intValue()); - //切尾 - p.setTail_Len(PPCLB_Act.getTailCut().intValue()); - //轧制长度 - p.setCal_Len(p.getEff_Len() + PPCLB_Act.getHeadCut().intValue() + PPCLB_Act.getTailCut().intValue()); - - //板坯厚度 - p.setVirtualSlab_Thk(SInfo.getSlabActThk()); - //板坯宽度 - 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.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)); - - //成材率计算 - BigDecimal rolledVolume = p.getCal_Thk() - .multiply(BigDecimal.valueOf(p.getCal_Wid())) - .multiply(BigDecimal.valueOf(p.getEff_Len())); - - BigDecimal slabVolume = SInfo.getSlabActThk() - .multiply(SInfo.getRemWid()) - .multiply(BigDecimal.valueOf(p.getVirtualSlab_Len())); - - BigDecimal yieldRate = rolledVolume.divide(slabVolume, 2, RoundingMode.HALF_UP); // 保留4位小数 + )) { + intTrimWid = plistPmPlateTrimBtDO.stream().filter(f -> f.getMscLineNo().equals("1030") + && f.getPlateThickFrom().compareTo(decThk) <= 0 + && f.getPlateThickTo().compareTo(decThk) >= 0 + && f.getCombinePlateWidthFrom().compareTo(BigDecimal.valueOf(maxWidth.orElse(0) + maxAddWidth.orElse(0))) <= 0 + && f.getCombinePlateWidthTo().compareTo(BigDecimal.valueOf(maxWidth.orElse(0) + maxAddWidth.orElse(0))) >= 0 + && f.getWidenFrom().compareTo(decWidRate) <= 0 + && f.getWidenTo().compareTo(decWidRate) >= 0 + ).collect(Collectors.toList()).get(0).getTrimWidth().intValue(); + } + //轧制宽度= 最大宽度 + 最大宽度余量 + 切边量 + intWid = intWid + intTrimWid; - // 设置成材率到 p 对象中 - p.setRate(yieldRate); + //厚度 获取p.getLtActInfoGPreOrder()中厚度公差最小值+厚度 + p.setCal_Thk(decThk); + //宽度 获取p.getLtActInfoGPreOrder() 中宽度的最大值 + p.setCal_Wid(intWid); + //宽度余量 获取p.getLtActInfoGPreOrder() 中宽度的最大值 + p.setWid_Add(maxAddWidth.orElse(0)); + //切边余量 + p.setTrimming(intTrimWid); + //切缝 + p.setPlate_Cut_Wid(intPlateCutWidth); + + //订单合计长度+切缝 TODO:取样长度是否加入计算,后续再优化 + int intSumOrderLen = p.getLtActInfoGPreOrder().stream().mapToInt(GPreOrder::getLen).sum(); + int intSumPlateCutWid = p.getLtActInfoGPreOrder().size() * intPlateCutWidth; + p.setEff_Len(intSumOrderLen + intSumPlateCutWid); + + PmPlateCutLenBtDO PPCLB_Act = plistPmPlateCutLenBtDO.stream(). + filter(f -> f.getMscLineNo().equals("1030") + && 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 + && f.getSlabThickTo().compareTo(SInfo.getSlabActThk()) >= 0 + && f.getCombinePlateWidthFrom().compareTo(BigDecimal.valueOf(p.getCal_Wid())) <= 0 + && f.getCombinePlateWidthTo().compareTo(BigDecimal.valueOf(p.getCal_Wid())) >= 0 + ).findFirst().orElse(null); + + if (PPCLB_Act == null) { + return; + } + //切头 + p.setHead_Len(PPCLB_Act.getHeadCut().intValue()); + //切尾 + p.setTail_Len(PPCLB_Act.getTailCut().intValue()); + //轧制长度 + p.setCal_Len(p.getEff_Len() + PPCLB_Act.getHeadCut().intValue() + PPCLB_Act.getTailCut().intValue()); + + //板坯厚度 + p.setVirtualSlab_Thk(SInfo.getSlabActThk()); + //板坯宽度 + 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.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)); + + //成材率计算 + BigDecimal rolledVolume = p.getCal_Thk() + .multiply(BigDecimal.valueOf(p.getCal_Wid())) + .multiply(BigDecimal.valueOf(p.getEff_Len())); + + BigDecimal slabVolume = SInfo.getSlabActThk() + .multiply(SInfo.getRemWid()) + .multiply(BigDecimal.valueOf(p.getVirtualSlab_Len())); + + BigDecimal yieldRate = rolledVolume.divide(slabVolume, 2, RoundingMode.HALF_UP); // 保留4位小数 + + // 设置成材率到 p 对象中 + p.setRate(yieldRate); + } catch (Exception e) { + log.error("new1", e); + } }); //判断结果数据是否存在 if (gltGGrpCalRslt.size() == 0) { @@ -1614,73 +1650,75 @@ public class SubController { } //判断结算结果长度和成材率是否可用 gltGGrpCalRslt.parallelStream().forEach(p -> { - - //没有成材率 - 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); - - + 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; + } }); //选择最优结果 @@ -1701,9 +1739,11 @@ public class SubController { public void ChosBestRsl(SlabInfoDO SInfo) { + //gltGGrpCalRslt 的 getIntUseF + // 筛选 UseFlg == 1 的数据 List filteredList = gltGGrpCalRslt.stream() - .filter(g -> g.getIntUseFlg()== 1) + .filter(g -> nvl(g.getIntUseFlg(),0) == 1) .collect(Collectors.toList()); // 找到重量最大成材率最大的数据 @@ -1724,6 +1764,10 @@ public class SubController { String virtualSlabNo = generateVirtualSlabNo(SInfo.getPono()); pmSubHisDO.setVirtualSlabNo(virtualSlabNo); // 虚拟板坯号 + maxWeightMaxYieldRate.get().setSlabNo(SInfo.getSlabNo()); + maxWeightMaxYieldRate.get().setVirtualSlabNo(virtualSlabNo); + + // 手动为每个字段赋值 pmSubHisDO.setSlabThick(maxRate.getVirtualSlab_Thk()); // 厚度 pmSubHisDO.setSlabWid(BigDecimal.valueOf(maxRate.getVirtualSlab_Wid())); // 宽度 @@ -1758,7 +1802,7 @@ public class SubController { pmSubHisDO.setNeedSlabLen(BigDecimal.valueOf(maxRate.getVirtualSlab_Len())); // 必要板坯长度 pmSubHisDO.setNeedSlabWt(maxRate.getVirtualSlab_Wgt()); // 必要板坯重量 - plistpmSubHisDO.add(pmSubHisDO); + plistpmSubHisDO.add(pmSubHisDO); //子表信息 // 使用 AtomicInteger 获取索引 AtomicInteger index = new AtomicInteger(0); @@ -1781,9 +1825,9 @@ public class SubController { pmSubOrdDO.setOrderWidth(BigDecimal.valueOf(gPreOrder.getWid())); // 订货宽度 pmSubOrdDO.setLenAim(BigDecimal.valueOf(gPreOrder.getLen())); // 订货长度 - pmSubOrdDO.setPosX(BigDecimal.valueOf( intX.intValue())); // X坐标,假设默认为0 - intX.addAndGet(gPreOrder.getLen()+5);//X坐标 - pmSubOrdDO.setPosY(BigDecimal.valueOf(maxRate.getTrimming()+gPreOrder.getWidthAddv())); // Y坐标,假设默认为0 + pmSubOrdDO.setPosX(BigDecimal.valueOf(intX.intValue())); // X坐标,假设默认为0 + intX.addAndGet(gPreOrder.getLen() + 5);//X坐标 + pmSubOrdDO.setPosY(BigDecimal.valueOf(maxRate.getTrimming() + gPreOrder.getWidthAddv())); // Y坐标,假设默认为0 pmSubOrdDO.setDelivyDate(new Date()); // 交货日期,假设默认为当前时间 pmSubOrdDO.setAxisOrd("0"); // 轴合同 @@ -1808,14 +1852,14 @@ public class SubController { } ); - //判断长宽大小 - BigDecimal decLen =BigDecimal.valueOf(SInfo.getRemLen().intValue()-maxRate.getVirtualSlab_Len()); - BigDecimal DecWid =SInfo.getRemWid(); + //判断长宽大小 + 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{ + } else { SInfo.setRemLen(decLen); SInfo.setRemWid(DecWid); } @@ -1889,7 +1933,44 @@ public class SubController { pmPdSlabDO.setCutModeCode(resultPmContMscTechDO.get().getCutModeCode()); //TODO 缺少质量模块MES合同主档QD_TO_PO_ORDER - pmPdSlabDO.setUltCode(resultPmContMscTechDO.get().getUltCode());//TODO 遍历组板合同,根据合同号从质量模块MES合同主档QD_TO_PO_ORDER读取ERP_UT_SPEC1探伤标准1、ERP_UT_SPEC2超声探伤标2、ERP_UT_SPEC3超声探伤标3,去重后所有数据拼接成一条记录 +// pmPdSlabDO.setUltCode(resultPmContMscTechDO.get().getUltCode()); + //TODO 遍历组板合同,根据合同号从质量模块MES合同主档QD_TO_PO_ORDER读取ERP_UT_SPEC1探伤标准1、ERP_UT_SPEC2超声探伤标2、ERP_UT_SPEC3超声探伤标3,去重后所有数据拼接成一条记录 + //遍历 orderNoList 拿每一条orderNo查询plistQdToPoOrderDO 获取ERP_UT_SPEC1,ERP_UT_SPEC2,ERP_UT_SPEC3 ,将获取的每一个探伤标准 去重后拼接成一条记录 + StringBuilder ultDetectMethodCodeBuilder = new StringBuilder(); + String ultCode = ""; + for (String orderNo : orderNoList) { + Optional resultQdToPoOrderDO = plistQdToPoOrderDO.stream() + .filter(item -> orderNo.equals(item.getOrderNo())) + .findFirst(); + String erpUtSpec1 = ""; + 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()){ + if (!ultDetectMethodCodeBuilder.toString().contains(erpUtSpec1)) { + ultDetectMethodCodeBuilder.append(erpUtSpec1).append("-"); + } + } + if(!erpUtSpec2.isEmpty()){ + if (!ultDetectMethodCodeBuilder.toString().contains(erpUtSpec2)) { + ultDetectMethodCodeBuilder.append(erpUtSpec2).append("-"); + } + } + if(!erpUtSpec3.isEmpty()){ + if (!ultDetectMethodCodeBuilder.toString().contains(erpUtSpec3)) { + ultDetectMethodCodeBuilder.append(erpUtSpec3).append("-"); + } + } + } + ultCode = ultDetectMethodCodeBuilder.toString(); + if (!ultCode.isEmpty()) { + ultCode = ultCode.substring(0, ultCode.length() - 1); + } + pmPdSlabDO.setUltDetectMethodCode(ultCode); + } String ultDetectMethodCode = ""; String coolCode = ""; @@ -1973,11 +2054,15 @@ public class SubController { pmPdSlabDO.setHpFlameCleanDiv(resultPmContMscTechDO1.get().getFlameCleanDiv()); pmPdSlabDO.setSlabFinishCode(resultPmContMscTechDO1.get().getSlabFinishCode()); - - Optional resultPmPdSlabInfoDO = plistPmPdSlabInfoDO.stream() + Long slabPdQty = plistPmPdSlabInfoDO.stream() .filter(item -> ggcr.getSlabNo().equals(item.getSlabNo())) - .findFirst(); - pmPdSlabDO.setSlabPlaceCode(resultPmPdSlabInfoDO.get().getSlabPlaceCode()); + .count(); + if(slabPdQty > 0){ + Optional resultPmPdSlabInfoDO = plistPmPdSlabInfoDO.stream() + .filter(item -> ggcr.getSlabNo().equals(item.getSlabNo())) + .findFirst(); + pmPdSlabDO.setSlabPlaceCode(resultPmPdSlabInfoDO.get().getSlabPlaceCode()); + } pmPdSlabDO.setRollAimThick(ggcr.getCal_Thk()); pmPdSlabDO.setRollAimWidth(BigDecimal.valueOf(ggcr.getCal_Wid())); @@ -2193,12 +2278,17 @@ public class SubController { pmCmdSlabDO.setPreCleanSlabWt(pmPdSlabDO.getPreCleanSlabWt()); pmCmdSlabDO.setPreCleanSlabMaxWt(pmPdSlabDO.getPreCleanSlabMaxWt()); pmCmdSlabDO.setPreCleanSlabMinWt(pmPdSlabDO.getPreCleanSlabMinWt()); - - Optional resultPmPdSlabInfoDO = plistPmPdSlabInfoDO.stream() + Long slabPdQty = plistPmPdSlabInfoDO.stream() .filter(item -> pmPdSlabDO.getSlabNo().equals(item.getSlabNo())) - .findFirst(); - pmCmdSlabDO.setMoldThick(resultPmPdSlabInfoDO.get().getMatActThick().intValue()); - pmCmdSlabDO.setMoldWid(resultPmPdSlabInfoDO.get().getMatActWidth().intValue()); + .count(); + if(slabPdQty>0){ + Optional resultPmPdSlabInfoDO = plistPmPdSlabInfoDO.stream() + .filter(item -> pmPdSlabDO.getSlabNo().equals(item.getSlabNo())) + .findFirst(); + pmCmdSlabDO.setMoldThick(resultPmPdSlabInfoDO.get().getMatActThick().intValue()); + pmCmdSlabDO.setMoldWid(resultPmPdSlabInfoDO.get().getMatActWidth().intValue()); + } + pmCmdSlabDO.setInfurSlabThick(pmPdSlabDO.getInfurSlabThick()); pmCmdSlabDO.setInfurSlabWid(pmPdSlabDO.getInfurSlabWid()); @@ -2412,7 +2502,7 @@ public class SubController { pmCmdContDO.setSsFlag(String.valueOf(pmContMscTechDOItem.get().getSsFlag())); pmCmdContDO.setHeatTreatMode(pmContMscTechDOItem.get().getHeatTreatMode()); pmCmdContDO.setUltDetectMethodCode(pmContMscTechDOItem.get().getUltDetectMethodCode()); - pmCmdContDO.setUltCode("");//TODO 遍根据合同号从质量模块MES合同主档QD_TO_PO_ORDER读取超声探伤标准1、超声探伤标2、超声探伤标3、超声探伤标4、超声探伤标5,去重后所有数据用‘-’拼接成一条记录 + pmCmdContDO.setUltCode(pmPdSlabDOItem.get().getUltCode());//TODO 遍根据合同号从质量模块MES合同主档QD_TO_PO_ORDER读取超声探伤标准1、超声探伤标2、超声探伤标3、超声探伤标4、超声探伤标5,去重后所有数据用‘-’拼接成一条记录 pmCmdContDO.setMscLineNo(mscLineNo); pmCmdContDO.setCreatedBy(781L);//TODO 创建人修改人,暂时默认781 BKGY pmCmdContDO.setLastUpdatedBy(781L); @@ -2447,4 +2537,11 @@ public class SubController { pmCmdSmallPltDOList.add(pmCmdSmallPltDO); } + public void SaveData() { + subService.batchInsertPmPdSlab(pmPdSlabDOList); + subService.batchInsertPmCmdSlab(pmCmdSlabDOList); +// subService.SaveData(pmPdSlabDOList, pmPdPlateCutDOList, pmPdBlockPosDOList, pmPdContSumDOList, pmSmallPltPosDOList, pmCmdSlabDOList, pmCmdLargePltDOList, pmCmdContDOList, pmCmdSmallPltDOList); + } + + } diff --git a/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/mapper/SubMapper.java b/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/mapper/SubMapper.java index 756c3f1..d2df4bf 100644 --- a/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/mapper/SubMapper.java +++ b/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/mapper/SubMapper.java @@ -5,6 +5,7 @@ import net.xdclass.shopmanager.model.*; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.List; import java.util.Map; @@ -100,4 +101,12 @@ public interface SubMapper extends BaseMapper { List getPmPdSlabInfo(); List getQdToPoOrder(); + + BigDecimal getMaxPmPdSlabId(); + + void batchInsertPmPdSlab(List pmPdSlabDOList); + + void batchInsertPmCmdSlab(List pmCmdSlabDOList); + + BigDecimal getMaxPmCmdSlabId(); } diff --git a/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/service/SubService.java b/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/service/SubService.java index a166b29..6db5c82 100644 --- a/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/service/SubService.java +++ b/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/service/SubService.java @@ -97,4 +97,10 @@ public interface SubService { List getPmPdSlabInfo(); List getQdToPoOrder(); + + void SaveData(List pmPdSlabDOList, List pmPdPlateCutDOList, List pmPdBlockPosDOList, List pmPdContSumDOList, List pmSmallPltPosDOList, List pmCmdSlabDOList, List pmCmdLargePltDOList, List pmCmdContDOList, List pmCmdSmallPltDOList); + + void batchInsertPmPdSlab(List pmPdSlabDOList); + + void batchInsertPmCmdSlab(List pmCmdSlabDOList); } diff --git a/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/service/impl/SubServiceImpl.java b/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/service/impl/SubServiceImpl.java index 344f11a..595d4fc 100644 --- a/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/service/impl/SubServiceImpl.java +++ b/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/service/impl/SubServiceImpl.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.List; @Service @@ -243,5 +244,28 @@ public class SubServiceImpl implements SubService { return subMapper.getQdToPoOrder(); } + @Override + public void SaveData(List pmPdSlabDOList, List pmPdPlateCutDOList, List pmPdBlockPosDOList, List pmPdContSumDOList, List pmSmallPltPosDOList, List pmCmdSlabDOList, List pmCmdLargePltDOList, List pmCmdContDOList, List pmCmdSmallPltDOList) { + + } + + @Override + public void batchInsertPmPdSlab(List pmPdSlabDOList) { + BigDecimal id = subMapper.getMaxPmPdSlabId(); + for (int i = 0 ; i < pmPdSlabDOList.size() ; i++){ + pmPdSlabDOList.get(i).setPmPdSlabId(id.add(BigDecimal.valueOf(i+1))); + } + subMapper.batchInsertPmPdSlab(pmPdSlabDOList); + } + + @Override + public void batchInsertPmCmdSlab(List pmCmdSlabDOList) { + BigDecimal id = subMapper.getMaxPmCmdSlabId(); + for (int i = 0 ; i < pmCmdSlabDOList.size() ; i++){ + pmCmdSlabDOList.get(i).setPmCmdSlabId(id.add(BigDecimal.valueOf(i+1))); + } + subMapper.batchInsertPmCmdSlab(pmCmdSlabDOList); + } + } diff --git a/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/tool/service/TransactionService.java b/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/tool/service/TransactionService.java new file mode 100644 index 0000000..13cf21c --- /dev/null +++ b/1024shop-manager/1024shop-manager/src/main/java/net/xdclass/shopmanager/tool/service/TransactionService.java @@ -0,0 +1,58 @@ +package net.xdclass.shopmanager.tool.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.stereotype.Component; +import org.springframework.transaction.TransactionDefinition; +import org.springframework.transaction.TransactionStatus; +import org.springframework.transaction.support.DefaultTransactionDefinition; + +/** + * @author holly + * @date 2023/4/13 + * @description 事务控制 + */ +@Component +public class TransactionService { + @Autowired + private DataSourceTransactionManager transactionManager; + + /** + * 开启新事务 + */ + public TransactionStatus begin() { + DefaultTransactionDefinition def = new DefaultTransactionDefinition(); + //事物隔离级别(读已提交) + def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED); + //默认事务 + return transactionManager.getTransaction(def); + } + + /** + * 开启事务 + */ + public TransactionStatus begin(int isolationLevel, int propagationBehavior) { + DefaultTransactionDefinition def = new DefaultTransactionDefinition(); + //事物隔离级别 + def.setIsolationLevel(isolationLevel); + //事务传播行为 + def.setPropagationBehavior(propagationBehavior); + //默认事务 + return transactionManager.getTransaction(def); + } + + /** + * 提交事务 + */ + public void commit(TransactionStatus transactionStatus) { + //提交事务 + transactionManager.commit(transactionStatus); + } + + /** + * 回滚事务 + */ + public void rollback(TransactionStatus transactionStatus) { + transactionManager.rollback(transactionStatus); + } +} \ No newline at end of file diff --git a/1024shop-manager/1024shop-manager/src/main/resources/mapper/SubMapper.xml b/1024shop-manager/1024shop-manager/src/main/resources/mapper/SubMapper.xml index 847c359..eacf4ca 100644 --- a/1024shop-manager/1024shop-manager/src/main/resources/mapper/SubMapper.xml +++ b/1024shop-manager/1024shop-manager/src/main/resources/mapper/SubMapper.xml @@ -357,4 +357,609 @@ ) + + + INSERT INTO PM_PD_SLAB ( + PM_PD_SLAB_ID, + VIRTUAL_SLAB_NO, + MAT_DESIGN_KIND, + SLAB_NO, + PONO, + SLAB_DIV_NO, + FORM_PLATE_MODE, + PICK_MODE_LEN_DIR, + PICK_MODE_WID_DIR, + FUR_TYPE, + AUTO_MANUAL_FLAG, + ORDER_REMAIN_DIV, + CAN_DEL_FLAG, + ORDER_NUM_IN_PLATE, + TOT_SMALL_PLATE_NUM, + AD_TYPE_CODE, + AD_MODE_CODE, + ULT_CODE, + COOL_CODE, + CTRL_ROLL_CODE, + WITH_SIDE_FLAG, + CUT_MODE_CODE, + HEAD_CUT, + TAIL_CUT, + URG_ORDER_FLAG, + SG_SIGN, + ST_NO, + ST_NO1, + ST_NO2, + ST_NO3, + ST_NO4, + ST_NO5, + ST_NO6, + ST_NO7, + ST_NO8, + ST_NO9, + OUT_SG_NO, + SG_DECIDE_TIME, + PRE_CLEAN_SLAB_THICK, + PRE_CLEAN_SLAB_WIDTH, + PRE_CLEAN_SLAB_LEN, + PRE_CLEAN_SLAB_MAX_LEN, + PRE_CLEAN_SLAB_MIN_LEN, + PRE_CLEAN_SLAB_WT, + PRE_CLEAN_SLAB_MAX_WT, + PRE_CLEAN_SLAB_MIN_WT, + INFUR_SLAB_THICK, + INFUR_SLAB_WID, + INFUR_SLAB_LEN, + INFUR_SLAB_MAX_LEN, + INFUR_SLAB_MIN_LEN, + INFUR_SLAB_WT, + INFUR_SLAB_MAX_WT, + INFUR_SLAB_MIN_WT, + NEED_SLAB_LEN, + NEED_SLAB_WT, + FIX_SLAB_LEN_FLAG, + FIX_SLAB_LEN, + SLAB_CLEAN_WT_LOSS_RATE_ST, + SLAB_CLEAN_WT_LOSS_RATE_FR, + HP_FLAME_CLEAN_DIV, + SLAB_FINISH_CODE, + SLAB_PLACE_CODE, + ROLL_AIM_THICK, + ROLL_AIM_WIDTH, + ROLL_AIM_LEN, + ORDER_THICK_AXIS, + COMBINE_PLATE_WIDTH, + COMBINE_PLATE_LEN, + ROLL_WT_HP, + ROLL_THICK_TOL_MAX, + ROLL_THICK_TOL_MIN, + NORM_YIELD, + COMMAND_YIELD, + ROLL_YIELD, + EDGER_USE_FLAG, + BROAD_MAS_USE_FLAG, + FORM_MAS_USE_FLAG, + ROLL_DIRECT_CODE, + SAMPLE_LEN_HEAD, + SAMPLE_LEN_TAIL, + SAMPLE_LEN_MID, + RS_CODE, + BROAD_FLAG, + TAPER_ROLL_THICK1, + TAPER_ROLL_THICK_MAX1, + TAPER_ROLL_THICK_MIN1, + TAPER_ROLL_THICK2, + TAPER_ROLL_THICK_MAX2, + TAPER_ROLL_THICK_MIN2, + TAPER_ROLL_THICK3, + TAPER_ROLL_THICK_MAX3, + TAPER_ROLL_THICK_MIN3, + TAPER_ROLL_WIDTH, + TAPER_ROLL_LEN1, + TAPER_ROLL_LEN2, + TAPER_ROLL_LEN3, + TAPER_ROLL_LEN4, + LAST_SLAB_FLAG, + ADD_SLAB_FLAG, + SHP_CODE, + ULT_DETECT_METHOD_CODE, + TAPER_ROLL_THICK4, + TAPER_ROLL_THICK_MAX4, + TAPER_ROLL_THICK_MIN4, + TAPER_ROLL_THICK5, + TAPER_ROLL_THICK_MAX5, + TAPER_ROLL_THICK_MIN5, + TAPER_ROLL_THICK6, + TAPER_ROLL_THICK_MAX6, + TAPER_ROLL_THICK_MIN6, + TAPER_ROLL_THICK7, + TAPER_ROLL_THICK_MAX7, + TAPER_ROLL_THICK_MIN7, + TAPER_ROLL_LEN6, + TAPER_ROLL_LEN7, + TENANT_ID, + OBJECT_VERSION_NUMBER, + CREATION_DATE, + CREATED_BY, + LAST_UPDATED_BY, + LAST_UPDATE_DATE, + ATTRIBUTE1, + ATTRIBUTE2, + ATTRIBUTE3, + ATTRIBUTE4, + ATTRIBUTE5, + PD_STATUS_HP, + PD_RESP, + IG_MAT_DESIGN_KIND, + INGOT_TYPE, + TWO_ROLL_INTERIM_FLAG, + ORDER_NO_AXIS, + MSC_LINE_NO, + TRANS_FLAG, + ) VALUES ( + #{pmPdSlabId}, + #{virtualSlabNo}, + #{matDesignKind}, + #{slabNo}, + #{pono}, + #{slabDivNo}, + #{formPlateMode}, + #{pickModeLenDir}, + #{pickModeWidDir}, + #{furType}, + #{autoManualFlag}, + #{orderRemainDiv}, + #{canDelFlag}, + #{orderNumInPlate}, + #{totSmallPlateNum}, + #{adTypeCode}, + #{adModeCode}, + #{ultCode}, + #{coolCode}, + #{ctrlRollCode}, + #{withSideFlag}, + #{cutModeCode}, + #{headCut}, + #{tailCut}, + #{urgOrderFlag}, + #{sgSign}, + #{stNo}, + #{stNo1}, + #{stNo2}, + #{stNo3}, + #{stNo4}, + #{stNo5}, + #{stNo6}, + #{stNo7}, + #{stNo8}, + #{stNo9}, + #{outSgNo}, + #{sgDecideTime}, + #{preCleanSlabThick}, + #{preCleanSlabWidth}, + #{preCleanSlabLen}, + #{preCleanSlabMaxLen}, + #{preCleanSlabMinLen}, + #{preCleanSlabWt}, + #{preCleanSlabMaxWt}, + #{preCleanSlabMinWt}, + #{infurSlabThick}, + #{infurSlabWid}, + #{infurSlabLen}, + #{infurSlabMaxLen}, + #{infurSlabMinLen}, + #{infurSlabWt}, + #{infurSlabMaxWt}, + #{infurSlabMinWt}, + #{needSlabLen}, + #{needSlabWt}, + #{fixSlabLenFlag}, + #{fixSlabLen}, + #{slabCleanWtLossRateSt}, + #{slabCleanWtLossRateFr}, + #{hpFlameCleanDiv}, + #{slabFinishCode}, + #{slabPlaceCode}, + #{rollAimThick}, + #{rollAimWidth}, + #{rollAimLen}, + #{orderThickAxis}, + #{combinePlateWidth}, + #{combinePlateLen}, + #{rollWtHp}, + #{rollThickTolMax}, + #{rollThickTolMin}, + #{normYield}, + #{commandYield}, + #{rollYield}, + #{edgerUseFlag}, + #{broadMasUseFlag}, + #{formMasUseFlag}, + #{rollDirectCode}, + #{sampleLenHead}, + #{sampleLenTail}, + #{sampleLenMid}, + #{rsCode}, + #{broadFlag}, + #{taperRollThick1}, + #{taperRollThickMax1}, + #{taperRollThickMin1}, + #{taperRollThick2}, + #{taperRollThickMax2}, + #{taperRollThickMin2}, + #{taperRollThick3}, + #{taperRollThickMax3}, + #{taperRollThickMin3}, + #{taperRollWidth}, + #{taperRollLen1}, + #{taperRollLen2}, + #{taperRollLen3}, + #{taperRollLen4}, + #{lastSlabFlag}, + #{addSlabFlag}, + #{shpCode}, + #{ultDetectMethodCode}, + #{taperRollThick4}, + #{taperRollThickMax4}, + #{taperRollThickMin4}, + #{taperRollThick5}, + #{taperRollThickMax5}, + #{taperRollThickMin5}, + #{taperRollThick6}, + #{taperRollThickMax6}, + #{taperRollThickMin6}, + #{taperRollThick7}, + #{taperRollThickMax7}, + #{taperRollThickMin7}, + #{taperRollLen6}, + #{taperRollLen7}, + #{tenantId}, + #{objectVersionNumber}, + #{creationDate}, + #{createdBy}, + #{lastUpdatedBy}, + #{lastUpdateDate}, + #{attribute1}, + #{attribute2}, + #{attribute3}, + #{attribute4}, + #{attribute5}, + #{pdStatusHp}, + #{pdResp}, + #{igMatDesignKind}, + #{ingotType}, + #{twoRollInterimFlag}, + #{orderNoAxis}, + #{mscLineNo}, + #{transFlag}, + + + + + + INSERT INTO PM_PD_SLAB ( + PM_PD_SLAB_ID, + VIRTUAL_SLAB_NO, + MAT_DESIGN_KIND, + SLAB_NO, + PONO, + SLAB_DIV_NO, + FORM_PLATE_MODE, + PICK_MODE_LEN_DIR, + PICK_MODE_WID_DIR, + FUR_TYPE, + AUTO_MANUAL_FLAG, + ORDER_REMAIN_DIV, + CAN_DEL_FLAG, + ORDER_NUM_IN_PLATE, + TOT_SMALL_PLATE_NUM, + AD_TYPE_CODE, + AD_MODE_CODE, + ULT_CODE, + COOL_CODE, + CTRL_ROLL_CODE, + WITH_SIDE_FLAG, + CUT_MODE_CODE, + HEAD_CUT, + TAIL_CUT, + URG_ORDER_FLAG, + SG_SIGN, + ST_NO, + ST_NO1, + ST_NO2, + ST_NO3, + ST_NO4, + ST_NO5, + ST_NO6, + ST_NO7, + ST_NO8, + ST_NO9, + OUT_SG_NO, + SG_DECIDE_TIME, + PRE_CLEAN_SLAB_THICK, + PRE_CLEAN_SLAB_WIDTH, + PRE_CLEAN_SLAB_LEN, + PRE_CLEAN_SLAB_MAX_LEN, + PRE_CLEAN_SLAB_MIN_LEN, + PRE_CLEAN_SLAB_WT, + PRE_CLEAN_SLAB_MAX_WT, + PRE_CLEAN_SLAB_MIN_WT, + INFUR_SLAB_THICK, + INFUR_SLAB_WID, + INFUR_SLAB_LEN, + INFUR_SLAB_MAX_LEN, + INFUR_SLAB_MIN_LEN, + INFUR_SLAB_WT, + INFUR_SLAB_MAX_WT, + INFUR_SLAB_MIN_WT, + NEED_SLAB_LEN, + NEED_SLAB_WT, + FIX_SLAB_LEN_FLAG, + FIX_SLAB_LEN, + SLAB_CLEAN_WT_LOSS_RATE_ST, + SLAB_CLEAN_WT_LOSS_RATE_FR, + HP_FLAME_CLEAN_DIV, + SLAB_FINISH_CODE, + SLAB_PLACE_CODE, + ROLL_AIM_THICK, + ROLL_AIM_WIDTH, + ROLL_AIM_LEN, + ORDER_THICK_AXIS, + COMBINE_PLATE_WIDTH, + COMBINE_PLATE_LEN, + ROLL_WT_HP, + ROLL_THICK_TOL_MAX, + ROLL_THICK_TOL_MIN, + NORM_YIELD, + COMMAND_YIELD, + ROLL_YIELD, + EDGER_USE_FLAG, + BROAD_MAS_USE_FLAG, + FORM_MAS_USE_FLAG, + ROLL_DIRECT_CODE, + SAMPLE_LEN_HEAD, + SAMPLE_LEN_TAIL, + SAMPLE_LEN_MID, + RS_CODE, + BROAD_FLAG, + TAPER_ROLL_THICK1, + TAPER_ROLL_THICK_MAX1, + TAPER_ROLL_THICK_MIN1, + TAPER_ROLL_THICK2, + TAPER_ROLL_THICK_MAX2, + TAPER_ROLL_THICK_MIN2, + TAPER_ROLL_THICK3, + TAPER_ROLL_THICK_MAX3, + TAPER_ROLL_THICK_MIN3, + TAPER_ROLL_WIDTH, + TAPER_ROLL_LEN1, + TAPER_ROLL_LEN2, + TAPER_ROLL_LEN3, + TAPER_ROLL_LEN4, + LAST_SLAB_FLAG, + ADD_SLAB_FLAG, + SHP_CODE, + ULT_DETECT_METHOD_CODE, + TAPER_ROLL_THICK4, + TAPER_ROLL_THICK_MAX4, + TAPER_ROLL_THICK_MIN4, + TAPER_ROLL_THICK5, + TAPER_ROLL_THICK_MAX5, + TAPER_ROLL_THICK_MIN5, + TAPER_ROLL_THICK6, + TAPER_ROLL_THICK_MAX6, + TAPER_ROLL_THICK_MIN6, + TAPER_ROLL_THICK7, + TAPER_ROLL_THICK_MAX7, + TAPER_ROLL_THICK_MIN7, + TAPER_ROLL_LEN6, + TAPER_ROLL_LEN7, + TENANT_ID, + OBJECT_VERSION_NUMBER, + CREATION_DATE, + CREATED_BY, + LAST_UPDATED_BY, + LAST_UPDATE_DATE, + ATTRIBUTE1, + ATTRIBUTE2, + ATTRIBUTE3, + ATTRIBUTE4, + ATTRIBUTE5, + PD_STATUS_HP, + PD_RESP, + IG_MAT_DESIGN_KIND, + INGOT_TYPE, + TWO_ROLL_INTERIM_FLAG, + ORDER_NO_AXIS, + MSC_LINE_NO, + TRANS_FLAG + ) VALUES + + ( + #{item.pmPdSlabId}, + #{item.virtualSlabNo}, + #{item.matDesignKind}, + #{item.slabNo}, + #{item.pono}, + #{item.slabDivNo}, + #{item.formPlateMode}, + #{item.pickModeLenDir}, + #{item.pickModeWidDir}, + #{item.furType}, + #{item.autoManualFlag}, + #{item.orderRemainDiv}, + #{item.canDelFlag}, + #{item.orderNumInPlate}, + #{item.totSmallPlateNum}, + #{item.adTypeCode}, + #{item.adModeCode}, + #{item.ultCode}, + #{item.coolCode}, + #{item.ctrlRollCode}, + #{item.withSideFlag}, + #{item.cutModeCode}, + #{item.headCut}, + #{item.tailCut}, + #{item.urgOrderFlag}, + #{item.sgSign}, + #{item.stNo}, + #{item.stNo1}, + #{item.stNo2}, + #{item.stNo3}, + #{item.stNo4}, + #{item.stNo5}, + #{item.stNo6}, + #{item.stNo7}, + #{item.stNo8}, + #{item.stNo9}, + #{item.outSgNo}, + #{item.sgDecideTime}, + #{item.preCleanSlabThick}, + #{item.preCleanSlabWidth}, + #{item.preCleanSlabLen}, + #{item.preCleanSlabMaxLen}, + #{item.preCleanSlabMinLen}, + #{item.preCleanSlabWt}, + #{item.preCleanSlabMaxWt}, + #{item.preCleanSlabMinWt}, + #{item.infurSlabThick}, + #{item.infurSlabWid}, + #{item.infurSlabLen}, + #{item.infurSlabMaxLen}, + #{item.infurSlabMinLen}, + #{item.infurSlabWt}, + #{item.infurSlabMaxWt}, + #{item.infurSlabMinWt}, + #{item.needSlabLen}, + #{item.needSlabWt}, + #{item.fixSlabLenFlag}, + #{item.fixSlabLen}, + #{item.slabCleanWtLossRateSt}, + #{item.slabCleanWtLossRateFr}, + #{item.hpFlameCleanDiv}, + #{item.slabFinishCode}, + #{item.slabPlaceCode}, + #{item.rollAimThick}, + #{item.rollAimWidth}, + #{item.rollAimLen}, + #{item.orderThickAxis}, + #{item.combinePlateWidth}, + #{item.combinePlateLen}, + #{item.rollWtHp}, + #{item.rollThickTolMax}, + #{item.rollThickTolMin}, + #{item.normYield}, + #{item.commandYield}, + #{item.rollYield}, + #{item.edgerUseFlag}, + #{item.broadMasUseFlag}, + #{item.formMasUseFlag}, + #{item.rollDirectCode}, + #{item.sampleLenHead}, + #{item.sampleLenTail}, + #{item.sampleLenMid}, + #{item.rsCode}, + #{item.broadFlag}, + #{item.taperRollThick1}, + #{item.taperRollThickMax1}, + #{item.taperRollThickMin1}, + #{item.taperRollThick2}, + #{item.taperRollThickMax2}, + #{item.taperRollThickMin2}, + #{item.taperRollThick3}, + #{item.taperRollThickMax3}, + #{item.taperRollThickMin3}, + #{item.taperRollWidth}, + #{item.taperRollLen1}, + #{item.taperRollLen2}, + #{item.taperRollLen3}, + #{item.taperRollLen4}, + #{item.lastSlabFlag}, + #{item.addSlabFlag}, + #{item.shpCode}, + #{item.ultDetectMethodCode}, + #{item.taperRollThick4}, + #{item.taperRollThickMax4}, + #{item.taperRollThickMin4}, + #{item.taperRollThick5}, + #{item.taperRollThickMax5}, + #{item.taperRollThickMin5}, + #{item.taperRollThick6}, + #{item.taperRollThickMax6}, + #{item.taperRollThickMin6}, + #{item.taperRollThick7}, + #{item.taperRollThickMax7}, + #{item.taperRollThickMin7}, + #{item.taperRollLen6}, + #{item.taperRollLen7}, + #{item.tenantId}, + #{item.objectVersionNumber}, + #{item.creationDate}, + #{item.createdBy}, + #{item.lastUpdatedBy}, + #{item.lastUpdateDate}, + #{item.attribute1}, + #{item.attribute2}, + #{item.attribute3}, + #{item.attribute4}, + #{item.attribute5}, + #{item.pdStatusHp}, + #{item.pdResp}, + #{item.igMatDesignKind}, + #{item.ingotType}, + #{item.twoRollInterimFlag}, + #{item.orderNoAxis}, + #{item.mscLineNo}, + #{item.transFlag} + ) + + + + + + INSERT INTO pm_cmd_slab ( + PM_CMD_SLAB_ID, PONO_SLAB_NO, TMP_SLAB_NO, PD_BACKLOG_SEQ, PD_BACKLOG_CODE, SLAB_NO, VIRTUAL_SLAB_NO, PD_STATUS_HP, + SHORT_SLAB_NUM_IN_LONG, BIG_PLATE_NUM, SLAB_DIV_NO, ORDER_NUM_IN_PLATE, ORDER_REMAIN_DIV, MAT_DESIGN_KIND, PROD_CODE_HP, + SG_SIGN, ST_NO, SLAB_HT_FLAG, PRE_CLEAN_SLAB_THICK, PRE_CLEAN_SLAB_WIDTH, PRE_CLEAN_SLAB_LEN, PRE_CLEAN_SLAB_MAX_LEN, + PRE_CLEAN_SLAB_MIN_LEN, PRE_CLEAN_SLAB_WT, PRE_CLEAN_SLAB_MAX_WT, PRE_CLEAN_SLAB_MIN_WT, MOLD_THICK, MOLD_WID, + INFUR_SLAB_THICK, INFUR_SLAB_WID, INFUR_SLAB_LEN, INFUR_SLAB_MAX_LEN, INFUR_SLAB_MIN_LEN, INFUR_SLAB_WT, + INFUR_SLAB_MAX_WT, INFUR_SLAB_MIN_WT, NEED_SLAB_LEN, NEED_SLAB_WT, FIX_SLAB_LEN_FLAG, FIX_SLAB_LEN, + ROLL_MAX_PRE_CLEAN_SLAB_LEN, ROLL_MAX_PRE_CLEAN_SLAB_WT, SLAB_PLACE_CODE, HP_FLAME_CLEAN_DIV, SLAB_FINISH_CODE, + SLAB_CLEAN_WT_LOSS_RATE_ST, SLAB_CLEAN_WT_LOSS_RATE_FR, COOL_CODE, LAST_SLAB_FLAG, ADD_SLAB_FLAG, SLAB_PRE_PROC1, + SLAB_PRE_PROC2, SLAB_PRE_PROC3, SLAB_PRE_PROC4, SLAB_PRE_PROC5, SLAB_PRE_PROC6, SLAB_PRE_PROC7, SLAB_PRE_PROC8, + SLAB_PRE_PROC9, SLAB_PRE_PROC10, SLAB_PRE_PROC11, SLAB_PRE_PROC12, SLAB_PRE_PROC13, SLAB_PRE_PROC14, SLAB_PRE_PROC15, + SLAB_STACK_INDICATE, HOT_SEND_DIV, FUR_TYPE, HOT_CHARGE_FLAG, ROLL_PLAN_NO, NEW_TEST_NO, FORM_PLATE_TIME, SHP_CODE, + PONO, MSC_LINE_NO, TENANT_ID, OBJECT_VERSION_NUMBER, CREATION_DATE, CREATED_BY, LAST_UPDATED_BY, LAST_UPDATE_DATE, + ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3, ATTRIBUTE4, ATTRIBUTE5, ORDER_NO_AXIS, TRANS_FLAG, IG_MAT_DESIGN_KIND, INGOT_TYPE, + IS_MERGE + ) + VALUES + + ( + #{item.pmCmdSlabId}, #{item.ponoSlabNo}, #{item.tmpSlabNo}, #{item.pdBacklogSeq}, #{item.pdBacklogCode}, #{item.slabNo}, + #{item.virtualSlabNo}, #{item.pdStatusHp}, #{item.shortSlabNumInLong}, #{item.bigPlateNum}, #{item.slabDivNo}, + #{item.orderNumInPlate}, #{item.orderRemainDiv}, #{item.matDesignKind}, #{item.prodCodeHp}, #{item.sgSign}, + #{item.stNo}, #{item.slabHtFlag}, #{item.preCleanSlabThick}, #{item.preCleanSlabWidth}, #{item.preCleanSlabLen}, + #{item.preCleanSlabMaxLen}, #{item.preCleanSlabMinLen}, #{item.preCleanSlabWt}, #{item.preCleanSlabMaxWt}, + #{item.preCleanSlabMinWt}, #{item.moldThick}, #{item.moldWid}, #{item.infurSlabThick}, #{item.infurSlabWid}, + #{item.infurSlabLen}, #{item.infurSlabMaxLen}, #{item.infurSlabMinLen}, #{item.infurSlabWt}, #{item.infurSlabMaxWt}, + #{item.infurSlabMinWt}, #{item.needSlabLen}, #{item.needSlabWt}, #{item.fixSlabLenFlag}, #{item.fixSlabLen}, + #{item.rollMaxPreCleanSlabLen}, #{item.rollMaxPreCleanSlabWt}, #{item.slabPlaceCode}, #{item.hpFlameCleanDiv}, + #{item.slabFinishCode}, #{item.slabCleanWtLossRateSt}, #{item.slabCleanWtLossRateFr}, #{item.coolCode}, + #{item.lastSlabFlag}, #{item.addSlabFlag}, #{item.slabPreProc1}, #{item.slabPreProc2}, #{item.slabPreProc3}, + #{item.slabPreProc4}, #{item.slabPreProc5}, #{item.slabPreProc6}, #{item.slabPreProc7}, #{item.slabPreProc8}, + #{item.slabPreProc9}, #{item.slabPreProc10}, #{item.slabPreProc11}, #{item.slabPreProc12}, #{item.slabPreProc13}, + #{item.slabPreProc14}, #{item.slabPreProc15}, #{item.slabStackIndicate}, #{item.hotSendDiv}, #{item.furType}, + #{item.hotChargeFlag}, #{item.rollPlanNo}, #{item.newTestNo}, #{item.formPlateTime}, #{item.shpCode}, #{item.pono}, + #{item.mscLineNo}, #{item.tenantId}, #{item.objectVersionNumber}, #{item.creationDate}, #{item.createdBy}, + #{item.lastUpdatedBy}, #{item.lastUpdateDate}, #{item.attribute1}, #{item.attribute2}, #{item.attribute3}, + #{item.attribute4}, #{item.attribute5}, #{item.orderNoAxis}, #{item.transFlag}, #{item.igMatDesignKind}, + #{item.ingotType}, #{item.isMerge} + ) + + +