|
@@ -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;
|
|
|
}
|