Przeglądaj źródła

update6号机自动化交班

qiangxuan 1 miesiąc temu
rodzic
commit
26191dd116

+ 24 - 0
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/billetActual/controller/BilletHotsendChangeShiftController.java

@@ -111,6 +111,30 @@ public class BilletHotsendChangeShiftController extends JeecgController<BilletHo
 		return Result.OK(null);
 	}
 
+	@ApiOperation(value="5号机自动化交班测试", notes="5号机自动化交班测试")
+	@GetMapping(value = "/autoByCcmNoFive")
+	public Result<String> autoByCcmNoFive(@RequestParam(name="ccmNo", required = false) String ccmNo,
+										 @RequestParam(name="nextId", required = false) Integer nextId,
+										 @RequestParam(name="shift", required = false) String shift,
+										 @RequestParam(name="shiftGroup", required = false) String shiftGroup) {
+		JSONObject jsonObject = new JSONObject();
+		jsonObject.put("changeShiftTime", "2025-04-25 10:21:52");
+		billetHotsendChangeShiftService.autoChangeShift(jsonObject);
+		return Result.OK(null);
+	}
+
+	@ApiOperation(value="6号机自动化交班测试", notes="6号机自动化交班测试")
+	@GetMapping(value = "/autoByCcmNoSix")
+	public Result<String> autoByCcmNoSix(@RequestParam(name="ccmNo", required = false) String ccmNo,
+									  @RequestParam(name="nextId", required = false) Integer nextId,
+									  @RequestParam(name="shift", required = false) String shift,
+									  @RequestParam(name="shiftGroup", required = false) String shiftGroup) {
+		JSONObject jsonObject = new JSONObject();
+		jsonObject.put("changeShiftTime", "2025-04-25 10:21:52");
+		billetHotsendChangeShiftService.autoChangeShiftSix(jsonObject);
+		return Result.OK(null);
+	}
+
 	@ApiOperation(value="获取当前缓存信息", notes="获取当前缓存信息")
 	@GetMapping(value = "/autoByCcmNo1")
 	public Result<String> autoByCcmNo1(@RequestParam(name="ccmNo", required = true) String ccmNo) {

+ 2 - 0
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/billetActual/service/IBilletHotsendChangeShiftService.java

@@ -13,4 +13,6 @@ import org.jeecg.modules.billetActual.entity.BilletHotsendChangeShift;
 public interface IBilletHotsendChangeShiftService extends IService<BilletHotsendChangeShift> {
 
     void autoChangeShift(JSONObject jsonObject);
+
+    void autoChangeShiftSix(JSONObject jsonObject);
 }

+ 299 - 111
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/billetActual/service/impl/BilletHotsendChangeShiftServiceImpl.java

@@ -60,7 +60,7 @@ public class BilletHotsendChangeShiftServiceImpl extends ServiceImpl<BilletHotse
     @Transactional(rollbackFor = Exception.class)
     public void autoChangeShift(JSONObject jsonObj) {
 
-        log.info("{}{}", "C端自动化交班请求参数:", jsonObj);
+        log.info("{}{}", "5号机C端自动化交班请求参数:", jsonObj);
 
         String autoChangeShiftLimitKey = String.format("autoChangeShift:execution:%s", "5");
 
@@ -83,8 +83,8 @@ public class BilletHotsendChangeShiftServiceImpl extends ServiceImpl<BilletHotse
         String nextshiftIdKey = String.format("class:nextshift:Id:%s", "5");
         String currentCacheId = oConvertUtils.getString(redisTemplate.opsForValue().get(nextshiftIdKey));
 
-        log.info(DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()) + " C端自动化当前班次信息值:" + sixShift+ ","+ sixShiftGroup);
-        log.info(DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()) + " C端自动化当前班次信息名:" + currentCacheId + "," + currentShiftName+ ","+ currentShiftGroupName);
+        log.info(DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()) + " 5号机C端自动化当前班次信息值:" + sixShift+ ","+ sixShiftGroup);
+        log.info(DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()) + " 5号机C端自动化当前班次信息名:" + currentCacheId + "," + currentShiftName+ ","+ currentShiftGroupName);
 
         String[] data = {
                 "1 丙 夜", "2 甲 白", "3 乙 中", "4 丙 夜", "5 甲 白", "6 乙 中", "7 丙 夜", "8 甲 白", "9 乙 中", "10 丙 夜",
@@ -96,7 +96,7 @@ public class BilletHotsendChangeShiftServiceImpl extends ServiceImpl<BilletHotse
 
         ShiftInfo nextShiftInfo = ScheduleUtils.findNextShift(data, Integer.valueOf(currentCacheId), currentShiftGroupName, currentShiftName);
         if (nextShiftInfo == null){
-            log.info("{}{}", "获取到下个班组信息为空!", DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()) + "C端自动化交班失败!");
+            log.info("{}{}", "5号机获取到下个班组信息为空!", DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()) + "C端自动化交班失败!");
             return;
         }
 
@@ -112,8 +112,8 @@ public class BilletHotsendChangeShiftServiceImpl extends ServiceImpl<BilletHotse
 
         redisTemplate.opsForValue().set(nextshiftIdKey, nextUniqueShiftId);
 
-        log.info(DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()) + " C端自动化下一个班次信息值:" + finalNextShiftVal + ","+ finalNextShiftGroupVal);
-        log.info(DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()) + " C端自动化下一个班次信息名:" + nextUniqueShiftId + "," + nextShiftGroupName + ","+ nextShiftName);
+        log.info(DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()) + " 5号机C端自动化下一个班次信息值:" + finalNextShiftVal + ","+ finalNextShiftGroupVal);
+        log.info(DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()) + " 5号机C端自动化下一个班次信息名:" + nextUniqueShiftId + "," + nextShiftGroupName + ","+ nextShiftName);
 
         // 设置键并设置过期时间
         redisTemplate.opsForValue().set(autoChangeShiftLimitKey,"executed", EXPIRE_TIME, EXPIRE_TIME_UNIT);
@@ -138,124 +138,312 @@ public class BilletHotsendChangeShiftServiceImpl extends ServiceImpl<BilletHotse
 //            }
 //        }
         BilletHotsendChangeShift billetHotsendChangeShiftVo = new BilletHotsendChangeShift();
+        billetHotsendChangeShiftVo.setCcmNo("5");
         billetHotsendChangeShiftVo.setShiftGroup(finalNextShiftGroupVal);
         billetHotsendChangeShiftVo.setShift(finalNextShiftVal);
         JSONObject jsonObject = autoChangeShiftHandle(billetHotsendChangeShiftVo, sixShiftGroup, sixShift);
-        log.info("C端5号机自动化交班结果:{}{}", jsonObject, DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()));
+        log.info("5号机C端自动化交班结果:{}{}", jsonObject, DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()));
     }
 
+    @Override
+    public void autoChangeShiftSix(JSONObject jsonObj) {
+
+        log.info("{}{}", "C端6号机自动化交班请求参数:", jsonObj);
+
+        String autoChangeShiftLimitKey = String.format("autoChangeShift:execution:%s", "6");
+
+        // 检查键是否存在
+        Boolean isExecutedRecently = redisTemplate.hasKey(autoChangeShiftLimitKey);
+        if (isExecutedRecently == null || isExecutedRecently) {
+            log.info("{}{}", "6号机自动化交班10分钟内已有交班记录,执行失败!", jsonObj);
+            return;
+        }
+
+        String keyShiftGroupsix = String.format("class:shift:group:%s", "6");
+        String keyShiftsix = String.format("class:shift:%s", "6");
+
+        String sixShiftGroup = oConvertUtils.getString(redisTemplate.opsForValue().get(keyShiftGroupsix));
+        String sixShift = oConvertUtils.getString(redisTemplate.opsForValue().get(keyShiftsix));
+
+        String currentShiftGroupName = ShiftGroupEnum.fromCode(sixShiftGroup).name();
+        String currentShiftName = ShiftEnum.fromCode(sixShift).name().replace("班", "");
+
+        String nextshiftIdKey = String.format("class:nextshift:Id:%s", "6");
+        String currentCacheId = oConvertUtils.getString(redisTemplate.opsForValue().get(nextshiftIdKey));
+
+        log.info(DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()) + " 6号机C端自动化当前班次信息值:" + sixShift+ ","+ sixShiftGroup);
+        log.info(DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()) + " 6号机C端自动化当前班次信息名:" + currentCacheId + "," + currentShiftName+ ","+ currentShiftGroupName);
+
+        String[] data = {
+                "1 丙 夜", "2 甲 白", "3 乙 中", "4 丙 夜", "5 甲 白", "6 乙 中", "7 丙 夜", "8 甲 白", "9 乙 中", "10 丙 夜",
+                "11 甲 白", "12 乙 中", "13 丁 夜", "14 丙 白", "15 甲 中", "16 丁 夜", "17 丙 白", "18 甲 中", "19 丁 夜", "20 丙 白",
+                "21 甲 中", "22 丁 夜", "23 丙 白", "24 甲 中", "25 乙 夜", "26 丁 白", "27 丙 中", "28 乙 夜", "29 丁 白", "30 丙 中",
+                "31 乙 夜", "32 丁 白", "33 丙 中", "34 乙 夜", "35 丁 白", "36 丙 中", "37 甲 夜", "38 乙 白", "39 丁 中", "40 甲 夜",
+                "41 乙 白", "42 丁 中", "43 甲 夜", "44 乙 白", "45 丁 中", "46 甲 夜", "47 乙 白", "48 丁 中"
+        };
+
+        ShiftInfo nextShiftInfo = ScheduleUtils.findNextShift(data, Integer.valueOf(currentCacheId), currentShiftGroupName, currentShiftName);
+        if (nextShiftInfo == null){
+            log.info("{}{}", "6号机获取到下个班组信息为空!", DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()) + "6号机C端自动化交班失败!");
+            return;
+        }
+
+        String nextShiftGroupName = nextShiftInfo.getShiftgroup();
+
+        String nextShiftName = nextShiftInfo.getShift();
+
+        int nextUniqueShiftId = nextShiftInfo.getId();
+
+        String finalNextShiftGroupVal = ShiftGroupEnum.getCodeByName(nextShiftName);
+
+        String finalNextShiftVal = ShiftEnum.getCodeByName(nextShiftGroupName + "班");;
+
+        redisTemplate.opsForValue().set(nextshiftIdKey, nextUniqueShiftId);
+
+        log.info(DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()) + " 6号机C端自动化下一个班次信息值:" + finalNextShiftVal + ","+ finalNextShiftGroupVal);
+        log.info(DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()) + " 6号机C端自动化下一个班次信息名:" + nextUniqueShiftId + "," + nextShiftGroupName + ","+ nextShiftName);
+
+        // 设置键并设置过期时间
+        redisTemplate.opsForValue().set(autoChangeShiftLimitKey,"executed", EXPIRE_TIME, EXPIRE_TIME_UNIT);
+        BilletHotsendChangeShift billetHotsendChangeShiftVo = new BilletHotsendChangeShift();
+        billetHotsendChangeShiftVo.setCcmNo("6");
+        billetHotsendChangeShiftVo.setShiftGroup(finalNextShiftGroupVal);
+        billetHotsendChangeShiftVo.setShift(finalNextShiftVal);
+        JSONObject jsonObject = autoSixChangeShiftHandle(billetHotsendChangeShiftVo, sixShiftGroup, sixShift);
+        log.info("6号机C端自动化交班结果:{}{}", jsonObject, DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()));
+    }
+
+    private JSONObject autoSixChangeShiftHandle(BilletHotsendChangeShift billetHotsendChangeShiftVo, String currentShiftGroup, String currentShift) {
+        JSONObject result = new JSONObject();
+        // 缓存交班索引ID
+        String ccmNo = billetHotsendChangeShiftVo.getCcmNo();
+        String nextshiftIdKey = String.format("class:nextshift:Id:%s", ccmNo);
+        String keyShiftGroup = String.format("class:shift:group:%s", ccmNo);
+        String keyShift = String.format("class:shift:%s", ccmNo);
+        // 保存旧的缓存值,用于异常回滚
+        String oldShiftGroup = Optional.ofNullable(redisTemplate.opsForValue().get(keyShiftGroup))
+                .map(Object::toString)
+                .orElse(null);
+        String oldShift = Optional.ofNullable(redisTemplate.opsForValue().get(keyShift))
+                .map(Object::toString)
+                .orElse(null);
+        try {
+            // 先更新班组班别缓存
+            redisTemplate.opsForValue().set(keyShiftGroup, billetHotsendChangeShiftVo.getShiftGroup());
+            redisTemplate.opsForValue().set(keyShift, billetHotsendChangeShiftVo.getShift());
+
+            // 获取当前班组班别
+            BilletHotsendChangeShift billetHotsendChangeShift = baseMapper.selectOne(new LambdaQueryWrapper<BilletHotsendChangeShift>()
+                    .eq(BilletHotsendChangeShift::getCcmNo, ccmNo)
+                    .orderByDesc(BilletHotsendChangeShift::getCreateTime)
+                    .last("limit 1"));
+            if (oConvertUtils.isEmpty(billetHotsendChangeShift)) {
+                result.put("fail", "当班信息查询为空,6号机自动化交班操作失败!");
+                // 自动交班失败,交班ID索引值回滚,保证交班顺序
+                String nextCacheIdRollBack = oConvertUtils.getString(redisTemplate.opsForValue().get(nextshiftIdKey));
+                int nextCacheIdRollBacks = Integer.parseInt(nextCacheIdRollBack);
+                redisTemplate.opsForValue().set(nextshiftIdKey, nextCacheIdRollBacks - 1);
+                // 班组班别回滚
+                redisTemplate.opsForValue().set(keyShiftGroup, oldShiftGroup);
+                redisTemplate.opsForValue().set(keyShift, oldShift);
+                return result;
+            }
+            // 更新当前班次的交班时间,相当于上一个班交班的结束时间
+            billetHotsendChangeShift.setChangeShiftTime(new Date());
+            billetHotsendChangeShift.setUpdateTime(new Date());
+            baseMapper.updateById(billetHotsendChangeShift);
+
+            // 生成新的交班记录 初始化并保存入库
+            BilletHotsendChangeShift billetHotsendChangeShift1 = new BilletHotsendChangeShift();
+            billetHotsendChangeShift1.setId(String.valueOf(IdWorker.getId()));
+            billetHotsendChangeShift1.setCcmNo(ccmNo);
+            billetHotsendChangeShift1.setShift(billetHotsendChangeShiftVo.getShift());
+            billetHotsendChangeShift1.setShiftGroup(billetHotsendChangeShiftVo.getShiftGroup());
+            billetHotsendChangeShift1.setHotfeignAmount(0); // 当前热装支数
+            billetHotsendChangeShift1.setProductAmount(0); // 当前生产支数
+            billetHotsendChangeShift1.setHotsendAmount(0); // 当前热送支数
+            billetHotsendChangeShift1.setStackAmount(0); // 当前起垛支数
+            billetHotsendChangeShift1.setOutCarNum(0); // 车次
+            billetHotsendChangeShift1.setShiftSum(0); // 当班总数
+            billetHotsendChangeShift1.setShiftProduct(0d); // 当班总重
+            billetHotsendChangeShift1.setWasteAmount(0); // 当前废品支数
+            billetHotsendChangeShift1.setCreateTime(new Date());
+            // 3.19 新增班次实绩
+            billetHotsendChangeShift1.setShiftHotsendAmount(0);
+            billetHotsendChangeShift1.setShiftHotsendWeight(0d);
+
+            billetHotsendChangeShift1.setShiftHotfeignAmount(0);
+            billetHotsendChangeShift1.setShiftHotfeignWeight(0d);
+
+            billetHotsendChangeShift1.setShiftStackAmount(0);
+            billetHotsendChangeShift1.setShiftStackWeight(0d);
+
+            billetHotsendChangeShift1.setAllCarNum(0);
+            billetHotsendChangeShift1.setCounts(0);
+            billetHotsendChangeShift1.setBlankOutputs(0d);
+            baseMapper.insert(billetHotsendChangeShift1);
+
+            /**
+             * 6号机根据 铸机号、当班班组、当班班别 查询储运配置信息,倒序取最新的一条,把查询到的牌号、定尺、目的地、新/旧站台
+             * 带到下一个班组中,生成一个新的储运配置信息,并保存到数据库中
+             */
+            LambdaQueryWrapper<ShiftConfiguration> queryWrapper = new LambdaQueryWrapper<ShiftConfiguration>();
+            queryWrapper.eq(ShiftConfiguration::getCcmNo, "6")
+                    .eq(ShiftConfiguration::getShiftGroup, currentShiftGroup)
+                    .eq(ShiftConfiguration::getShift, currentShift)
+                    .orderByDesc(ShiftConfiguration::getCreateTime)
+                    .last("limit 1");
+            ShiftConfiguration shiftConfiguration = shiftConfigurationService.getOne(queryWrapper);
+            if (shiftConfiguration != null){
+                // 生出储运配置信息
+                ShiftConfiguration newShiftConfiguration = new ShiftConfiguration();
+                newShiftConfiguration.setId(String.valueOf(IdWorker.getId()));
+                newShiftConfiguration.setCcmNo(ccmNo);
+                newShiftConfiguration.setShiftGroup(billetHotsendChangeShiftVo.getShiftGroup());
+                newShiftConfiguration.setShift(billetHotsendChangeShiftVo.getShift());
+                newShiftConfiguration.setSteelGrade(shiftConfiguration.getSteelGrade());
+                newShiftConfiguration.setSpec(shiftConfiguration.getSpec());
+                newShiftConfiguration.setDestination(shiftConfiguration.getDestination());
+                newShiftConfiguration.setNewOldPlatform(shiftConfiguration.getNewOldPlatform());
+                newShiftConfiguration.setCreateTime(new Date());
+                newShiftConfiguration.setDate(DateUtils.getDateWithOnlyYearMonthDay(new Date()));
+                shiftConfigurationService.save(newShiftConfiguration);
+                log.info("{}{}", "6号机自动化交班时生成储运配置:", JSON.toJSON(newShiftConfiguration));
+            }
+            result.put("success", "6号机自动化交班操作成功!");
+        } catch (Exception e) {
+            log.error("6号机自动化交班操作出现异常", e);
+            // 回滚缓存
+            if (oldShiftGroup != null && oldShift != null) {
+                redisTemplate.opsForValue().set(keyShiftGroup, oldShiftGroup);
+                redisTemplate.opsForValue().set(keyShift, oldShift);
+            }
+            // 自动交班失败,交班ID索引值回滚,保证交班顺序
+            String nextCacheIdRollBack = oConvertUtils.getString(redisTemplate.opsForValue().get(nextshiftIdKey));
+            int nextCacheIdRollBacks = Integer.parseInt(nextCacheIdRollBack);
+            redisTemplate.opsForValue().set(nextshiftIdKey, nextCacheIdRollBacks - 1);
+            result.put("fail", "6号机自动化交班操作失败,出现异常!");
+        }
+        return result;
+    }
+
+    /**
+     * 5号机自动化交班
+     * @param billetHotsendChangeShiftVo
+     * @param currentShiftGroup
+     * @param currentShift
+     * @return
+     */
     private JSONObject autoChangeShiftHandle(BilletHotsendChangeShift billetHotsendChangeShiftVo, String currentShiftGroup, String currentShift) {
         JSONObject result = new JSONObject();
         // 缓存交班索引ID
-        String nextshiftIdKey = String.format("class:nextshift:Id:%s", "5");
-        List<String> ccmNoList = Arrays.asList("5");
-        for (String ccmNo : ccmNoList){
-            String keyShiftGroup = String.format("class:shift:group:%s", ccmNo);
-            String keyShift = String.format("class:shift:%s", ccmNo);
-            // 保存旧的缓存值,用于异常回滚
-            String oldShiftGroup = Optional.ofNullable(redisTemplate.opsForValue().get(keyShiftGroup))
-                    .map(Object::toString)
-                    .orElse(null);
-            String oldShift = Optional.ofNullable(redisTemplate.opsForValue().get(keyShift))
-                    .map(Object::toString)
-                    .orElse(null);
-            try {
-                // 先更新班组班别缓存
-                redisTemplate.opsForValue().set(keyShiftGroup, billetHotsendChangeShiftVo.getShiftGroup());
-                redisTemplate.opsForValue().set(keyShift, billetHotsendChangeShiftVo.getShift());
-
-                // 获取当前班组班别
-                BilletHotsendChangeShift billetHotsendChangeShift = baseMapper.selectOne(new LambdaQueryWrapper<BilletHotsendChangeShift>()
-                        .eq(BilletHotsendChangeShift::getCcmNo, ccmNo)
-                        .orderByDesc(BilletHotsendChangeShift::getCreateTime)
-                        .last("limit 1"));
-                if (oConvertUtils.isEmpty(billetHotsendChangeShift)) {
-                    result.put("fail", "当班信息查询为空,自动化交班操作失败!");
-                    // 自动交班失败,交班ID索引值回滚,保证交班顺序
-                    String nextCacheIdRollBack = oConvertUtils.getString(redisTemplate.opsForValue().get(nextshiftIdKey));
-                    int nextCacheIdRollBacks = Integer.parseInt(nextCacheIdRollBack);
-                    redisTemplate.opsForValue().set(nextshiftIdKey, nextCacheIdRollBacks - 1);
-                    // 班组班别回滚
-                    redisTemplate.opsForValue().set(keyShiftGroup, oldShiftGroup);
-                    redisTemplate.opsForValue().set(keyShift, oldShift);
-                    return result;
-                }
-                // 更新当前班次的交班时间,相当于上一个班交班的结束时间
-                billetHotsendChangeShift.setChangeShiftTime(new Date());
-                billetHotsendChangeShift.setUpdateTime(new Date());
-                baseMapper.updateById(billetHotsendChangeShift);
-
-                // 生成新的交班记录 初始化并保存入库
-                BilletHotsendChangeShift billetHotsendChangeShift1 = new BilletHotsendChangeShift();
-                billetHotsendChangeShift1.setId(String.valueOf(IdWorker.getId()));
-                billetHotsendChangeShift1.setCcmNo(ccmNo);
-                billetHotsendChangeShift1.setShift(billetHotsendChangeShiftVo.getShift());
-                billetHotsendChangeShift1.setShiftGroup(billetHotsendChangeShiftVo.getShiftGroup());
-                billetHotsendChangeShift1.setHotfeignAmount(0); // 当前热装支数
-                billetHotsendChangeShift1.setProductAmount(0); // 当前生产支数
-                billetHotsendChangeShift1.setHotsendAmount(0); // 当前热送支数
-                billetHotsendChangeShift1.setStackAmount(0); // 当前起垛支数
-                billetHotsendChangeShift1.setOutCarNum(0); // 车次
-                billetHotsendChangeShift1.setShiftSum(0); // 当班总数
-                billetHotsendChangeShift1.setShiftProduct(0d); // 当班总重
-                billetHotsendChangeShift1.setWasteAmount(0); // 当前废品支数
-                billetHotsendChangeShift1.setCreateTime(new Date());
-                // 3.19 新增班次实绩
-                billetHotsendChangeShift1.setShiftHotsendAmount(0);
-                billetHotsendChangeShift1.setShiftHotsendWeight(0d);
-
-                billetHotsendChangeShift1.setShiftHotfeignAmount(0);
-                billetHotsendChangeShift1.setShiftHotfeignWeight(0d);
-
-                billetHotsendChangeShift1.setShiftStackAmount(0);
-                billetHotsendChangeShift1.setShiftStackWeight(0d);
-
-                billetHotsendChangeShift1.setAllCarNum(0);
-                billetHotsendChangeShift1.setCounts(0);
-                billetHotsendChangeShift1.setBlankOutputs(0d);
-                baseMapper.insert(billetHotsendChangeShift1);
-
-                /**
-                 * 5号机根据 铸机号、当班班组、当班班别 查询储运配置信息,倒序取最新的一条,把查询到的牌号、定尺、目的地、新/旧站台
-                 * 带到下一个班组中,生成一个新的储运配置信息,并保存到数据库中
-                 */
-                LambdaQueryWrapper<ShiftConfiguration> queryWrapper = new LambdaQueryWrapper<ShiftConfiguration>();
-                queryWrapper.eq(ShiftConfiguration::getCcmNo, "5")
-                        .eq(ShiftConfiguration::getShiftGroup, currentShiftGroup)
-                        .eq(ShiftConfiguration::getShift, currentShift)
-                        .orderByDesc(ShiftConfiguration::getCreateTime)
-                        .last("limit 1");
-                ShiftConfiguration shiftConfiguration = shiftConfigurationService.getOne(queryWrapper);
-                if (shiftConfiguration != null){
-                    // 生出储运配置信息
-                    ShiftConfiguration newShiftConfiguration = new ShiftConfiguration();
-                    newShiftConfiguration.setId(String.valueOf(IdWorker.getId()));
-                    newShiftConfiguration.setCcmNo(ccmNo);
-                    newShiftConfiguration.setShiftGroup(billetHotsendChangeShiftVo.getShiftGroup());
-                    newShiftConfiguration.setShift(billetHotsendChangeShiftVo.getShift());
-                    newShiftConfiguration.setSteelGrade(shiftConfiguration.getSteelGrade());
-                    newShiftConfiguration.setSpec(shiftConfiguration.getSpec());
-                    newShiftConfiguration.setDestination(shiftConfiguration.getDestination());
-                    newShiftConfiguration.setNewOldPlatform(shiftConfiguration.getNewOldPlatform());
-                    newShiftConfiguration.setCreateTime(new Date());
-                    newShiftConfiguration.setDate(DateUtils.getDateWithOnlyYearMonthDay(new Date()));
-                    shiftConfigurationService.save(newShiftConfiguration);
-                    log.info("{}{}", "5号机生成储运配置:", JSON.toJSON(newShiftConfiguration));
-                }
-                result.put("success", "5号机自动化交班操作成功!");
-            } catch (Exception e) {
-                log.error("自动化交班操作出现异常", e);
-                // 回滚缓存
-                if (oldShiftGroup != null && oldShift != null) {
-                    redisTemplate.opsForValue().set(keyShiftGroup, oldShiftGroup);
-                    redisTemplate.opsForValue().set(keyShift, oldShift);
-                }
+        String ccmNo = billetHotsendChangeShiftVo.getCcmNo();
+        String nextshiftIdKey = String.format("class:nextshift:Id:%s", ccmNo);
+        String keyShiftGroup = String.format("class:shift:group:%s", ccmNo);
+        String keyShift = String.format("class:shift:%s", ccmNo);
+        // 保存旧的缓存值,用于异常回滚
+        String oldShiftGroup = Optional.ofNullable(redisTemplate.opsForValue().get(keyShiftGroup))
+                .map(Object::toString)
+                .orElse(null);
+        String oldShift = Optional.ofNullable(redisTemplate.opsForValue().get(keyShift))
+                .map(Object::toString)
+                .orElse(null);
+        try {
+            // 先更新班组班别缓存
+            redisTemplate.opsForValue().set(keyShiftGroup, billetHotsendChangeShiftVo.getShiftGroup());
+            redisTemplate.opsForValue().set(keyShift, billetHotsendChangeShiftVo.getShift());
+
+            // 获取当前班组班别
+            BilletHotsendChangeShift billetHotsendChangeShift = baseMapper.selectOne(new LambdaQueryWrapper<BilletHotsendChangeShift>()
+                    .eq(BilletHotsendChangeShift::getCcmNo, ccmNo)
+                    .orderByDesc(BilletHotsendChangeShift::getCreateTime)
+                    .last("limit 1"));
+            if (oConvertUtils.isEmpty(billetHotsendChangeShift)) {
+                result.put("fail", "当班信息查询为空,5号机自动化交班操作失败!");
                 // 自动交班失败,交班ID索引值回滚,保证交班顺序
                 String nextCacheIdRollBack = oConvertUtils.getString(redisTemplate.opsForValue().get(nextshiftIdKey));
                 int nextCacheIdRollBacks = Integer.parseInt(nextCacheIdRollBack);
                 redisTemplate.opsForValue().set(nextshiftIdKey, nextCacheIdRollBacks - 1);
-                result.put("fail", "自动化交班操作失败,出现异常!");
+                // 班组班别回滚
+                redisTemplate.opsForValue().set(keyShiftGroup, oldShiftGroup);
+                redisTemplate.opsForValue().set(keyShift, oldShift);
+                return result;
+            }
+            // 更新当前班次的交班时间,相当于上一个班交班的结束时间
+            billetHotsendChangeShift.setChangeShiftTime(new Date());
+            billetHotsendChangeShift.setUpdateTime(new Date());
+            baseMapper.updateById(billetHotsendChangeShift);
+
+            // 生成新的交班记录 初始化并保存入库
+            BilletHotsendChangeShift billetHotsendChangeShift1 = new BilletHotsendChangeShift();
+            billetHotsendChangeShift1.setId(String.valueOf(IdWorker.getId()));
+            billetHotsendChangeShift1.setCcmNo(ccmNo);
+            billetHotsendChangeShift1.setShift(billetHotsendChangeShiftVo.getShift());
+            billetHotsendChangeShift1.setShiftGroup(billetHotsendChangeShiftVo.getShiftGroup());
+            billetHotsendChangeShift1.setHotfeignAmount(0); // 当前热装支数
+            billetHotsendChangeShift1.setProductAmount(0); // 当前生产支数
+            billetHotsendChangeShift1.setHotsendAmount(0); // 当前热送支数
+            billetHotsendChangeShift1.setStackAmount(0); // 当前起垛支数
+            billetHotsendChangeShift1.setOutCarNum(0); // 车次
+            billetHotsendChangeShift1.setShiftSum(0); // 当班总数
+            billetHotsendChangeShift1.setShiftProduct(0d); // 当班总重
+            billetHotsendChangeShift1.setWasteAmount(0); // 当前废品支数
+            billetHotsendChangeShift1.setCreateTime(new Date());
+            // 3.19 新增班次实绩
+            billetHotsendChangeShift1.setShiftHotsendAmount(0);
+            billetHotsendChangeShift1.setShiftHotsendWeight(0d);
+
+            billetHotsendChangeShift1.setShiftHotfeignAmount(0);
+            billetHotsendChangeShift1.setShiftHotfeignWeight(0d);
+
+            billetHotsendChangeShift1.setShiftStackAmount(0);
+            billetHotsendChangeShift1.setShiftStackWeight(0d);
+
+            billetHotsendChangeShift1.setAllCarNum(0);
+            billetHotsendChangeShift1.setCounts(0);
+            billetHotsendChangeShift1.setBlankOutputs(0d);
+            baseMapper.insert(billetHotsendChangeShift1);
+
+            /**
+             * 5号机根据 铸机号、当班班组、当班班别 查询储运配置信息,倒序取最新的一条,把查询到的牌号、定尺、目的地、新/旧站台
+             * 带到下一个班组中,生成一个新的储运配置信息,并保存到数据库中
+             */
+            LambdaQueryWrapper<ShiftConfiguration> queryWrapper = new LambdaQueryWrapper<ShiftConfiguration>();
+            queryWrapper.eq(ShiftConfiguration::getCcmNo, ccmNo)
+                    .eq(ShiftConfiguration::getShiftGroup, currentShiftGroup)
+                    .eq(ShiftConfiguration::getShift, currentShift)
+                    .orderByDesc(ShiftConfiguration::getCreateTime)
+                    .last("limit 1");
+            ShiftConfiguration shiftConfiguration = shiftConfigurationService.getOne(queryWrapper);
+            if (shiftConfiguration != null){
+                // 生出储运配置信息
+                ShiftConfiguration newShiftConfiguration = new ShiftConfiguration();
+                newShiftConfiguration.setId(String.valueOf(IdWorker.getId()));
+                newShiftConfiguration.setCcmNo(ccmNo);
+                newShiftConfiguration.setShiftGroup(billetHotsendChangeShiftVo.getShiftGroup());
+                newShiftConfiguration.setShift(billetHotsendChangeShiftVo.getShift());
+                newShiftConfiguration.setSteelGrade(shiftConfiguration.getSteelGrade());
+                newShiftConfiguration.setSpec(shiftConfiguration.getSpec());
+                newShiftConfiguration.setDestination(shiftConfiguration.getDestination());
+                newShiftConfiguration.setNewOldPlatform(shiftConfiguration.getNewOldPlatform());
+                newShiftConfiguration.setCreateTime(new Date());
+                newShiftConfiguration.setDate(DateUtils.getDateWithOnlyYearMonthDay(new Date()));
+                shiftConfigurationService.save(newShiftConfiguration);
+                log.info("{}{}", "5号机自动化交班生成储运配置:", JSON.toJSON(newShiftConfiguration));
+            }
+            result.put("success", "5号机自动化交班操作成功!");
+        } catch (Exception e) {
+            log.error("5号机自动化交班操作出现异常", e);
+            // 回滚缓存
+            if (oldShiftGroup != null && oldShift != null) {
+                redisTemplate.opsForValue().set(keyShiftGroup, oldShiftGroup);
+                redisTemplate.opsForValue().set(keyShift, oldShift);
             }
+            // 自动交班失败,交班ID索引值回滚,保证交班顺序
+            String nextCacheIdRollBack = oConvertUtils.getString(redisTemplate.opsForValue().get(nextshiftIdKey));
+            int nextCacheIdRollBacks = Integer.parseInt(nextCacheIdRollBack);
+            redisTemplate.opsForValue().set(nextshiftIdKey, nextCacheIdRollBacks - 1);
+            result.put("fail", "5号机自动化交班操作失败,出现异常!");
         }
         return result;
     }

+ 10 - 1
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/push/utils/MqttClientCallback.java

@@ -242,7 +242,16 @@ public class MqttClientCallback implements MqttCallback, MqttCallbackExtended{
                         log.info("{}{}", "5号机自动化交班接收消息:", jsonObject);
                         billetHotsendChangeShiftService.autoChangeShift(jsonObject);
                     } catch (Exception e) {
-                        log.info("{}{}", "mqtt处理自动化交班消息出错: ", e.getMessage());
+                        log.info("{}{}", "mqtt处理5号机自动化交班消息出错: ", e.getMessage());
+                    }
+                    return;
+                case SYN_BILLET_CHANGESHIFT_SIX:
+                    try {
+                        JSONObject jsonObject = JSON.parseObject(payload);
+                        log.info("{}{}", "6号机自动化交班接收消息:", jsonObject);
+                        billetHotsendChangeShiftService.autoChangeShiftSix(jsonObject);
+                    } catch (Exception e) {
+                        log.info("{}{}", "mqtt处理6号机自动化交班消息出错: ", e.getMessage());
                     }
                     return;
                 default:

+ 6 - 2
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/push/utils/TopicType.java

@@ -51,9 +51,13 @@ public enum TopicType {
      */
     SYN_STORAGE_BILL_UPDATE("syn/storageBill/update"),
     /**
-     * 自动化交班
+     * 5号机自动化交班
      */
-    SYN_BILLET_CHANGESHIFT("syn/billet/changeShift");
+    SYN_BILLET_CHANGESHIFT("syn/billet/changeShift"),
+    /**
+     * 6号机自动化交班
+     */
+    SYN_BILLET_CHANGESHIFT_SIX("syn/billet/changeShiftSix");
 
     private String topicValue;