Kaynağa Gözat

完善生成组坯号的位数以及5号机没有目的地时根据数量生成钢坯实绩的组坯号

lingpeng.li 1 ay önce
ebeveyn
işleme
0cb7c1ddb8

+ 55 - 17
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/actualControl/billetActual/billetActual/service/impl/BilletBasicInfoServiceImpl.java

@@ -104,20 +104,53 @@ public class BilletBasicInfoServiceImpl extends ServiceImpl<BilletBasicInfoMappe
         billetBasicInfo.setBilletWeight(weight);
         billetBasicInfo.setWeight(weight);
         if (billetBasicInfo.getCcmNo() == 5) { // 5#
-            // 循环处理number
-            for (int i = 0; i < number; i++) {
-                BigDecimal nextBilletNo = new BigDecimal(billetBasicInfo.getBilletNo());
-                billetBasicInfo.setBilletNo(String.valueOf(nextBilletNo.add(BigDecimal.ONE)));
-                billetBasicInfo.setHeatnoIndex(billetBasicInfo.getHeatnoIndex() + 1);
-                // 将对象转换为 Map
-                Map<String, Object> map = JSON.parseObject(JSON.toJSONString(billetBasicInfo), Map.class);
-                // 创建 MqttClientUtil 实例并调用非静态方法 pushCData
-                MqttClientUtil mqttClientUtil = new MqttClientUtil();
-                // 钢坯实绩
-                mqttClientUtil.pushCData(configMqttMapper, map, "trace/performance/billet/add");
-                // #棒一数据处理
-                if ("roll_club_one".equals(belongTable) && oConvertUtils.isNotEmpty(btchid)){ // 5号机去棒一
-                    sendRollClubOne(billetBasicInfo, btchid);
+            if (oConvertUtils.isNotEmpty(belongTable) && oConvertUtils.isNotEmpty(btchid)) {
+                // 循环处理number
+                for (int i = 0; i < number; i++) {
+                    BigDecimal nextBilletNo = new BigDecimal(billetBasicInfo.getBilletNo());
+                    billetBasicInfo.setBilletNo(String.valueOf(nextBilletNo.add(BigDecimal.ONE)));
+                    billetBasicInfo.setHeatnoIndex(billetBasicInfo.getHeatnoIndex() + 1);
+                    // 将对象转换为 Map
+                    Map<String, Object> map = JSON.parseObject(JSON.toJSONString(billetBasicInfo), Map.class);
+                    // 创建 MqttClientUtil 实例并调用非静态方法 pushCData
+                    MqttClientUtil mqttClientUtil = new MqttClientUtil();
+                    // 钢坯实绩
+                    mqttClientUtil.pushCData(configMqttMapper, map, "trace/performance/billet/add");
+                    // #棒一数据处理
+                    if ("roll_club_one".equals(belongTable) && oConvertUtils.isNotEmpty(btchid)) { // 5号机去棒一
+                        sendRollClubOne(billetBasicInfo, btchid);
+                    }
+                }
+            }else {
+                // 情况 2:belongTable 或 btchid 任一为空,4支一组组坯处理
+                Integer heatnoIndex = billetBasicInfo.getHeatnoIndex();
+                List<Map<String, Object>> pushedDataList = new ArrayList<>();
+
+                for (int i = 0; i < number; i += 4) {
+                    String billetsNos = "";
+                    String assemblyNumber = generateUniqueAssemblyNumber(billetBasicInfo.getCcmNo(), billetBasicInfo.getHeatNo());
+                    double weightAll = 0.0;
+
+                    for (int j = 0; j < 4 && i + j < number; j++) {
+                        BigDecimal nextBilletNo = new BigDecimal(billetBasicInfo.getBilletNo());
+                        billetBasicInfo.setBilletNo(String.valueOf(nextBilletNo.add(BigDecimal.ONE)));
+                        billetBasicInfo.setHeatnoIndex(++heatnoIndex);
+                        billetBasicInfo.setAssemblyNumber(assemblyNumber);
+
+                        Map<String, Object> map = JSON.parseObject(JSON.toJSONString(billetBasicInfo), Map.class);
+                        pushedDataList.add(map);
+
+                        MqttClientUtil mqttClientUtil = new MqttClientUtil();
+                        mqttClientUtil.pushCData(configMqttMapper, map, "trace/performance/billet/add");
+
+                        billetsNos += billetBasicInfo.getBilletNo() + ",";
+                        weightAll += billetBasicInfo.getBilletWeight();
+                    }
+
+                    // 去除末尾 ,
+                    billetsNos = billetsNos.substring(0, billetsNos.length() - 1);
+                    // 先处理组坯
+                    sendAssemblyNumber(billetBasicInfo, billetsNos, assemblyNumber, weightAll);
                 }
             }
         } else if (billetBasicInfo.getCcmNo() == 6) {
@@ -263,7 +296,7 @@ public class BilletBasicInfoServiceImpl extends ServiceImpl<BilletBasicInfoMappe
     private String generateUniqueBilletNo(Integer ccmNo, String heatNo) {
         String billetNo;
         do {
-            billetNo = heatNo +  (int)(Math.random() * 10000);
+            billetNo = heatNo + String.format("%04d", (int)(Math.random() * 10000));
         } while (billetBasicInfoMapper.exists(new QueryWrapper<BilletBasicInfo>().eq("billet_no", billetNo). eq("ccm_no", ccmNo)));
         return billetNo;
     }
@@ -276,11 +309,16 @@ public class BilletBasicInfoServiceImpl extends ServiceImpl<BilletBasicInfoMappe
     private String generateUniqueAssemblyNumber(Integer ccmNo, String heatNo) {
         String assembly_number;
         do {
-            assembly_number = heatNo +  (int)(Math.random() * 1000000);
-        } while (billetAssemblyNumberMapper.exists(new QueryWrapper<BilletAssemblyNumber>().eq("assembly_number", assembly_number). eq("ccm_no", ccmNo)));
+            assembly_number = heatNo + String.format("%07d", (int)(Math.random() * 10000000));
+        } while (billetAssemblyNumberMapper.exists(
+                new QueryWrapper<BilletAssemblyNumber>()
+                        .eq("assembly_number", assembly_number)
+                        .eq("ccm_no", ccmNo))
+        );
         return assembly_number;
     }
 
+
     @Override
     public void addC(BilletBasicInfo billetBasicInfo) {
         LambdaQueryWrapper<BilletBasicInfo> queryWrapper = new LambdaQueryWrapper<BilletBasicInfo>().eq(BilletBasicInfo::getBilletNo, billetBasicInfo.getBilletNo());