|
@@ -19,6 +19,8 @@ import org.jeecg.modules.heatsActuals.mapper.HeatsActualsMapper;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.Date;
|
|
|
|
|
@@ -48,98 +50,104 @@ public class BilletBasicInfoServiceImpl extends ServiceImpl<BilletBasicInfoMappe
|
|
|
BilletHotsendChangeShiftMapper billetHotsendChangeShiftMapper;
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void addC(BilletBasicInfo billetBasicInfo) {
|
|
|
- log.info("{}{}", "start钢坯基础信息接收到mqtt消息,开始处理逻辑:", DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()));
|
|
|
- String classShiftGroup = String.format("class:shift:group:%s", billetBasicInfo.getCcmNo()); // 班组
|
|
|
- String classShift = String.format("class:shift:%s", billetBasicInfo.getCcmNo()); // 班别
|
|
|
- String classShiftStr = !oConvertUtils.getString(redisTemplate.opsForValue().get(classShift)).isEmpty() ? oConvertUtils.getString(redisTemplate.opsForValue().get(classShift)) : "";
|
|
|
- String classShiftGroupStr = !oConvertUtils.getString(redisTemplate.opsForValue().get(classShiftGroup)).isEmpty() ? oConvertUtils.getString(redisTemplate.opsForValue().get(classShiftGroup)) : "";
|
|
|
- log.info("{}{}", "钢坯实绩接收时缓存中的班组班别:", classShiftGroupStr+ " " + classShiftStr);
|
|
|
- // 查询钢坯基础是否存在
|
|
|
- LambdaQueryWrapper<BilletBasicInfo> queryWrapper = new LambdaQueryWrapper<BilletBasicInfo>().eq(BilletBasicInfo::getBilletNo, billetBasicInfo.getBilletNo()).eq(BilletBasicInfo::getCcmNo, billetBasicInfo.getCcmNo()).eq(BilletBasicInfo::getHeatNo, billetBasicInfo.getHeatNo()).orderByDesc(BilletBasicInfo::getCreateTime).last("limit 1");
|
|
|
- BilletBasicInfo basicInfo = baseMapper.selectOne(queryWrapper);
|
|
|
- if(oConvertUtils.isNotEmpty(basicInfo) && oConvertUtils.isNotEmpty(basicInfo.getId())){ // 编辑
|
|
|
- log.info("{}{}", "更新钢坯实绩最新一条中的班组班别:", basicInfo.getShiftGroup()+ " " + basicInfo.getShift());
|
|
|
- // 编辑钢坯基础信息
|
|
|
- billetBasicInfo.setId(basicInfo.getId());
|
|
|
- billetBasicInfo.setBilletWeight(basicInfo.getBilletWeight());
|
|
|
- billetBasicInfo.setWeight(basicInfo.getWeight());
|
|
|
- billetBasicInfo.setShift(basicInfo.getShift());
|
|
|
- billetBasicInfo.setActualLength(basicInfo.getActualLength());
|
|
|
- billetBasicInfo.setThickness(basicInfo.getThickness());
|
|
|
- billetBasicInfo.setSpec(basicInfo.getSpec());
|
|
|
- billetBasicInfo.setGrade(basicInfo.getGrade());
|
|
|
- billetBasicInfo.setShiftGroup(basicInfo.getShiftGroup());
|
|
|
- baseMapper.updateById(billetBasicInfo);
|
|
|
- } else {
|
|
|
- // 查询定尺规则
|
|
|
- LambdaQueryWrapper<BilletRulerConfig> queryWrapperbilletRulerConfig = new LambdaQueryWrapper<BilletRulerConfig>().eq(BilletRulerConfig::getLength, billetBasicInfo.getLength());
|
|
|
- BilletRulerConfig billetRulerConfig = billetRulerConfigMapper.selectOne(queryWrapperbilletRulerConfig);
|
|
|
- Double weight = 0.0;
|
|
|
- if(oConvertUtils.isEmpty(billetRulerConfig)){
|
|
|
- weight = billetBasicInfo.getWeight();
|
|
|
- } else{
|
|
|
- weight = billetRulerConfig.getWeight();
|
|
|
- }
|
|
|
- // 新增数据
|
|
|
- billetBasicInfo.setBilletWeight(weight);
|
|
|
- billetBasicInfo.setShift(classShiftStr);
|
|
|
- billetBasicInfo.setShiftGroup(classShiftGroupStr);
|
|
|
+ try {
|
|
|
+ log.info("{}{}", "start钢坯基础信息接收到mqtt消息,开始处理逻辑:", DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()));
|
|
|
+ String classShiftGroup = String.format("class:shift:group:%s", billetBasicInfo.getCcmNo()); // 班组
|
|
|
+ String classShift = String.format("class:shift:%s", billetBasicInfo.getCcmNo()); // 班别
|
|
|
+ String classShiftStr = !oConvertUtils.getString(redisTemplate.opsForValue().get(classShift)).isEmpty() ? oConvertUtils.getString(redisTemplate.opsForValue().get(classShift)) : "";
|
|
|
+ String classShiftGroupStr = !oConvertUtils.getString(redisTemplate.opsForValue().get(classShiftGroup)).isEmpty() ? oConvertUtils.getString(redisTemplate.opsForValue().get(classShiftGroup)) : "";
|
|
|
+ log.info("{}{}", "钢坯实绩接收时缓存中的班组班别:", classShiftGroupStr + " " + classShiftStr);
|
|
|
+ // 查询钢坯基础是否存在
|
|
|
+ LambdaQueryWrapper<BilletBasicInfo> queryWrapper = new LambdaQueryWrapper<BilletBasicInfo>().eq(BilletBasicInfo::getBilletNo, billetBasicInfo.getBilletNo()).eq(BilletBasicInfo::getCcmNo, billetBasicInfo.getCcmNo()).eq(BilletBasicInfo::getHeatNo, billetBasicInfo.getHeatNo()).orderByDesc(BilletBasicInfo::getCreateTime).last("limit 1");
|
|
|
+ BilletBasicInfo basicInfo = baseMapper.selectOne(queryWrapper);
|
|
|
+ if (oConvertUtils.isNotEmpty(basicInfo) && oConvertUtils.isNotEmpty(basicInfo.getId())) { // 编辑
|
|
|
+ log.info("{}{}", "更新钢坯实绩最新一条中的班组班别:", basicInfo.getShiftGroup() + " " + basicInfo.getShift());
|
|
|
+ // 编辑钢坯基础信息
|
|
|
+ billetBasicInfo.setId(basicInfo.getId());
|
|
|
+ billetBasicInfo.setBilletWeight(basicInfo.getBilletWeight());
|
|
|
+ billetBasicInfo.setWeight(basicInfo.getWeight());
|
|
|
+ billetBasicInfo.setShift(basicInfo.getShift());
|
|
|
+ billetBasicInfo.setActualLength(basicInfo.getActualLength());
|
|
|
+ billetBasicInfo.setThickness(basicInfo.getThickness());
|
|
|
+ billetBasicInfo.setSpec(basicInfo.getSpec());
|
|
|
+ billetBasicInfo.setGrade(basicInfo.getGrade());
|
|
|
+ billetBasicInfo.setShiftGroup(basicInfo.getShiftGroup());
|
|
|
+ baseMapper.updateById(billetBasicInfo);
|
|
|
+ } else {
|
|
|
+ // 查询定尺规则
|
|
|
+ LambdaQueryWrapper<BilletRulerConfig> queryWrapperbilletRulerConfig = new LambdaQueryWrapper<BilletRulerConfig>().eq(BilletRulerConfig::getLength, billetBasicInfo.getLength());
|
|
|
+ BilletRulerConfig billetRulerConfig = billetRulerConfigMapper.selectOne(queryWrapperbilletRulerConfig);
|
|
|
+ Double weight = 0.0;
|
|
|
+ if (oConvertUtils.isEmpty(billetRulerConfig)) {
|
|
|
+ weight = billetBasicInfo.getWeight();
|
|
|
+ } else {
|
|
|
+ weight = billetRulerConfig.getWeight();
|
|
|
+ }
|
|
|
+ // 新增数据
|
|
|
+ billetBasicInfo.setBilletWeight(weight);
|
|
|
+ billetBasicInfo.setShift(classShiftStr);
|
|
|
+ billetBasicInfo.setShiftGroup(classShiftGroupStr);
|
|
|
|
|
|
- log.info("{}{}", "新增钢坯实绩时班组班别:", billetBasicInfo.getShiftGroup()+ " " + billetBasicInfo.getShift());
|
|
|
- baseMapper.insert(billetBasicInfo);
|
|
|
+ log.info("{}{}", "新增钢坯实绩时班组班别:", billetBasicInfo.getShiftGroup() + " " + billetBasicInfo.getShift());
|
|
|
+ baseMapper.insert(billetBasicInfo);
|
|
|
|
|
|
- // 炉次实绩出坯量维护
|
|
|
- LambdaQueryWrapper<HeatsActuals> queryWrapperHeatsActuals = new LambdaQueryWrapper<HeatsActuals>().eq(HeatsActuals::getHeatsCode, billetBasicInfo.getHeatNo()).eq(HeatsActuals::getCasterCode, billetBasicInfo.getCcmNo()).orderByDesc(HeatsActuals::getCreateTime).last("limit 1");
|
|
|
- HeatsActuals heatsActuals = heatsActualsMapper.selectOne(queryWrapperHeatsActuals);
|
|
|
- if(oConvertUtils.isNotEmpty(heatsActuals)) {
|
|
|
- heatsActuals.setId(heatsActuals.getId());
|
|
|
- heatsActuals.setBlankOutput(heatsActuals.getBlankOutput() + weight);
|
|
|
- heatsActualsMapper.updateById(heatsActuals);
|
|
|
- }
|
|
|
+ // 炉次实绩出坯量维护
|
|
|
+ LambdaQueryWrapper<HeatsActuals> queryWrapperHeatsActuals = new LambdaQueryWrapper<HeatsActuals>().eq(HeatsActuals::getHeatsCode, billetBasicInfo.getHeatNo()).eq(HeatsActuals::getCasterCode, billetBasicInfo.getCcmNo()).orderByDesc(HeatsActuals::getCreateTime).last("limit 1");
|
|
|
+ HeatsActuals heatsActuals = heatsActualsMapper.selectOne(queryWrapperHeatsActuals);
|
|
|
+ if (oConvertUtils.isNotEmpty(heatsActuals)) {
|
|
|
+ heatsActuals.setId(heatsActuals.getId());
|
|
|
+ heatsActuals.setBlankOutput(heatsActuals.getBlankOutput() + weight);
|
|
|
+ heatsActualsMapper.updateById(heatsActuals);
|
|
|
+ }
|
|
|
|
|
|
- // 当班总数 + 当班总重 信息维护
|
|
|
- LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapperBilletHotsendChangeShift = new LambdaQueryWrapper<BilletHotsendChangeShift>()
|
|
|
- .eq(BilletHotsendChangeShift::getCcmNo, billetBasicInfo.getCcmNo())
|
|
|
- .eq(BilletHotsendChangeShift::getShift, classShiftStr)
|
|
|
- .eq(BilletHotsendChangeShift::getShiftGroup, classShiftGroupStr)
|
|
|
- .orderByDesc(BilletHotsendChangeShift::getCreateTime).last("limit 1");
|
|
|
- BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftMapper.selectOne(queryWrapperBilletHotsendChangeShift);
|
|
|
- if(oConvertUtils.isNotEmpty(billetHotsendChangeShift)){
|
|
|
- billetHotsendChangeShift.setId(billetHotsendChangeShift.getId());
|
|
|
- billetHotsendChangeShift.setShiftProduct(billetHotsendChangeShift.getShiftProduct() + weight);
|
|
|
- billetHotsendChangeShift.setHeatNo(billetBasicInfo.getHeatNo());
|
|
|
- billetHotsendChangeShift.setShiftSum(billetHotsendChangeShift.getShiftSum() + 1);
|
|
|
- billetHotsendChangeShiftMapper.updateById(billetHotsendChangeShift);
|
|
|
- }
|
|
|
+ // 当班总数 + 当班总重 信息维护
|
|
|
+ LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapperBilletHotsendChangeShift = new LambdaQueryWrapper<BilletHotsendChangeShift>()
|
|
|
+ .eq(BilletHotsendChangeShift::getCcmNo, billetBasicInfo.getCcmNo())
|
|
|
+ .eq(BilletHotsendChangeShift::getShift, classShiftStr)
|
|
|
+ .eq(BilletHotsendChangeShift::getShiftGroup, classShiftGroupStr)
|
|
|
+ .orderByDesc(BilletHotsendChangeShift::getCreateTime).last("limit 1");
|
|
|
+ BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftMapper.selectOne(queryWrapperBilletHotsendChangeShift);
|
|
|
+ if (oConvertUtils.isNotEmpty(billetHotsendChangeShift)) {
|
|
|
+ billetHotsendChangeShift.setId(billetHotsendChangeShift.getId());
|
|
|
+ billetHotsendChangeShift.setShiftProduct(billetHotsendChangeShift.getShiftProduct() + weight);
|
|
|
+ billetHotsendChangeShift.setHeatNo(billetBasicInfo.getHeatNo());
|
|
|
+ billetHotsendChangeShift.setShiftSum(billetHotsendChangeShift.getShiftSum() + 1);
|
|
|
+ billetHotsendChangeShiftMapper.updateById(billetHotsendChangeShift);
|
|
|
+ }
|
|
|
|
|
|
- // 钢坯热送单炉支数传递单信息维护
|
|
|
- LambdaQueryWrapper<BilletHotsend> queryBilletWrapper = new LambdaQueryWrapper<BilletHotsend>().eq(BilletHotsend::getHeatNo, billetBasicInfo.getHeatNo())
|
|
|
- .eq(BilletHotsend::getShift, classShiftStr)
|
|
|
- .eq(BilletHotsend::getCcmNo, billetBasicInfo.getCcmNo())
|
|
|
- .eq(BilletHotsend::getShiftGroup, classShiftGroupStr).orderByDesc(BilletHotsend::getCreateTime).last("limit 1");
|
|
|
- BilletHotsend billetHotsendInfo = billetHotsendMapper.selectOne(queryBilletWrapper);
|
|
|
- if(oConvertUtils.isNotEmpty(billetHotsendInfo) && oConvertUtils.isNotEmpty(billetHotsendInfo.getId())){ // 编辑钢坯热送单炉支数传递单
|
|
|
- billetHotsendInfo.setId(billetHotsendInfo.getId());
|
|
|
- billetHotsendInfo.setAmountTotal(billetHotsendInfo.getAmountTotal() + 1);
|
|
|
- billetHotsendInfo.setBlankOutput(billetHotsendInfo.getBlankOutput() + weight); // 出坯量
|
|
|
- billetHotsendInfo.setDecideWeight(billetHotsendInfo.getDecideWeight() + billetBasicInfo.getWeight()); // 定重
|
|
|
- billetHotsendMapper.updateById(billetHotsendInfo);
|
|
|
- } else {
|
|
|
- BilletHotsend billetHotsend = new BilletHotsend();
|
|
|
- billetHotsend.setCcmNo(String.valueOf(billetBasicInfo.getCcmNo())); // 铸机号
|
|
|
- billetHotsend.setHeatNo(billetBasicInfo.getHeatNo()); // 炉号
|
|
|
- billetHotsend.setShiftGroup(classShiftGroupStr); // 班组
|
|
|
- billetHotsend.setShift(classShiftStr); // 班别
|
|
|
- billetHotsend.setSteel(billetBasicInfo.getGrade()); // 钢种
|
|
|
- billetHotsend.setSpec(billetBasicInfo.getSpec()); // 规格
|
|
|
- billetHotsend.setAmountTotal(1); // 支数
|
|
|
- billetHotsend.setBlankOutput(weight); // 出批量
|
|
|
- billetHotsend.setDecideWeight(billetBasicInfo.getWeight()); // 定重
|
|
|
- billetHotsend.setWasteBlankOutput(0.0);
|
|
|
- billetHotsendMapper.insert(billetHotsend);
|
|
|
+ // 钢坯热送单炉支数传递单信息维护
|
|
|
+ LambdaQueryWrapper<BilletHotsend> queryBilletWrapper = new LambdaQueryWrapper<BilletHotsend>().eq(BilletHotsend::getHeatNo, billetBasicInfo.getHeatNo())
|
|
|
+ .eq(BilletHotsend::getShift, classShiftStr)
|
|
|
+ .eq(BilletHotsend::getCcmNo, billetBasicInfo.getCcmNo())
|
|
|
+ .eq(BilletHotsend::getShiftGroup, classShiftGroupStr).orderByDesc(BilletHotsend::getCreateTime).last("limit 1");
|
|
|
+ BilletHotsend billetHotsendInfo = billetHotsendMapper.selectOne(queryBilletWrapper);
|
|
|
+ if (oConvertUtils.isNotEmpty(billetHotsendInfo) && oConvertUtils.isNotEmpty(billetHotsendInfo.getId())) { // 编辑钢坯热送单炉支数传递单
|
|
|
+ billetHotsendInfo.setId(billetHotsendInfo.getId());
|
|
|
+ billetHotsendInfo.setAmountTotal(billetHotsendInfo.getAmountTotal() + 1);
|
|
|
+ billetHotsendInfo.setBlankOutput(billetHotsendInfo.getBlankOutput() + weight); // 出坯量
|
|
|
+ billetHotsendInfo.setDecideWeight(billetHotsendInfo.getDecideWeight() + billetBasicInfo.getWeight()); // 定重
|
|
|
+ billetHotsendMapper.updateById(billetHotsendInfo);
|
|
|
+ } else {
|
|
|
+ BilletHotsend billetHotsend = new BilletHotsend();
|
|
|
+ billetHotsend.setCcmNo(String.valueOf(billetBasicInfo.getCcmNo())); // 铸机号
|
|
|
+ billetHotsend.setHeatNo(billetBasicInfo.getHeatNo()); // 炉号
|
|
|
+ billetHotsend.setShiftGroup(classShiftGroupStr); // 班组
|
|
|
+ billetHotsend.setShift(classShiftStr); // 班别
|
|
|
+ billetHotsend.setSteel(billetBasicInfo.getGrade()); // 钢种
|
|
|
+ billetHotsend.setSpec(billetBasicInfo.getSpec()); // 规格
|
|
|
+ billetHotsend.setAmountTotal(1); // 支数
|
|
|
+ billetHotsend.setBlankOutput(weight); // 出批量
|
|
|
+ billetHotsend.setDecideWeight(billetBasicInfo.getWeight()); // 定重
|
|
|
+ billetHotsend.setWasteBlankOutput(0.0);
|
|
|
+ billetHotsendMapper.insert(billetHotsend);
|
|
|
+ }
|
|
|
}
|
|
|
+ log.info("{}{}", "end钢坯基础信息逻辑处理结束:", DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()));
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("自动化处理钢坯基础信息时发生异常", e);
|
|
|
+ throw e;
|
|
|
}
|
|
|
- log.info("{}{}", "end钢坯基础信息逻辑处理结束:", DateUtils.date2Str(new Date(), DateUtils.datetimeFormat.get()));
|
|
|
}
|
|
|
}
|