Przeglądaj źródła

送样卡增加牌号以及轧钢棒一返回起始根和终止根

lingpeng.li 1 miesiąc temu
rodzic
commit
79e9e1b710

+ 42 - 9
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/billetOriginalProductRecord/controller/BilletOriginalProductRecordController.java

@@ -39,6 +39,7 @@ import org.jeecg.modules.billet.billetOriginalProductRecord.vo.LengthCountVO;
 import org.jeecg.modules.billet.storageBill.entity.HeatsActualsInfo;
 import org.jeecg.modules.billet.storageBill.entity.StorageBillPrint;
 import org.jeecg.modules.billet.storageBill.service.IStorageBillPrintService;
+import org.jeecg.modules.carUnit.service.ISysDictService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -81,6 +82,10 @@ public class BilletOriginalProductRecordController extends JeecgController<Bille
 
 	 @Autowired
 	 private IStorageBillPrintService storageBillPrintService;
+
+	 @Autowired
+	 private ISysDictService sysDictService;
+
 	 /**
 	 * 分页列表查询
 	 *
@@ -336,20 +341,43 @@ public class BilletOriginalProductRecordController extends JeecgController<Bille
 	 @ApiOperation("送样卡获取定尺支数明细表")
 	 @GetMapping("/lengthDetailsTable")
 	 public Result<List<LengthCountVO>> getLengthDetailsTable(LengthCountQueryDTO queryDTO) {
-		 if (queryDTO == null || StringUtils.isBlank(queryDTO.getCcmNo()) || StringUtils.isBlank(queryDTO.getChangeShiftId())) {
+		 if (queryDTO == null || StringUtils.isBlank(queryDTO.getCcmNo())) {
 			 return Result.error("参数不能为空");
 		 }
 
-		 LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
-		 queryWrapper.eq(BilletHotsendChangeShift::getId, queryDTO.getChangeShiftId())
-				 .eq(BilletHotsendChangeShift::getCcmNo, queryDTO.getCcmNo());
+		 String shiftGroup = "";
+		 String shift = "";
+		 BilletHotsendChangeShift billetHotsendChangeShift;
 
-		 BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
-		 if (billetHotsendChangeShift == null) {
-			 log.info("查询班次信息失败,交班记录为空!失败时间:{}", new Date());
-			 return Result.OK(Collections.emptyList());
-		 }
+		 if(oConvertUtils.isEmpty(queryDTO.getChangeShiftId())){
+			 // 从 Redis 获取班次信息
+			 String classShiftGroup = String.format("class:shift:group:%s", queryDTO.getCcmNo()); // 班组
+			 String classShift = String.format("class:shift:%s",queryDTO.getCcmNo()); // 班别
+			 shift = !oConvertUtils.getString(redisTemplate.opsForValue().get(classShift)).isEmpty() ? oConvertUtils.getString(redisTemplate.opsForValue().get(classShift)) : "";
+			 shiftGroup = !oConvertUtils.getString(redisTemplate.opsForValue().get(classShiftGroup)).isEmpty() ? oConvertUtils.getString(redisTemplate.opsForValue().get(classShiftGroup)) : "";
+			 // 根据铸机号、缓存中的当前班次,倒序最新一条,获取交班记录中的创建时间
+			 LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
+			 queryWrapper.eq(BilletHotsendChangeShift::getCcmNo, queryDTO.getCcmNo())
+					 .eq(BilletHotsendChangeShift::getShift, shift)
+					 .eq(BilletHotsendChangeShift::getShiftGroup, shiftGroup)
+					 .orderByDesc(BilletHotsendChangeShift::getCreateTime)
+					 .last("limit 1");
+			 billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
+			 if (billetHotsendChangeShift == null){
+				 log.info("查询班次信息失败,交班记录为空!失败时间:{}", new Date());
+				 return Result.OK(Collections.emptyList());
+			 }
+		 }else {
+			 LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
+			 queryWrapper.eq(BilletHotsendChangeShift::getId, queryDTO.getChangeShiftId())
+					 .eq(BilletHotsendChangeShift::getCcmNo, queryDTO.getCcmNo());
 
+			  billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
+			 if (billetHotsendChangeShift == null) {
+				 log.info("查询班次信息失败,交班记录为空!失败时间:{}", new Date());
+				 return Result.OK(Collections.emptyList());
+			 }
+		 }
 		 QueryWrapper<BilletOriginalProductRecord> queryWrapperB = new QueryWrapper<>();
 		 queryWrapperB.eq("ccm_no", queryDTO.getCcmNo())
 				 .eq("shift", billetHotsendChangeShift.getShift())
@@ -369,6 +397,10 @@ public class BilletOriginalProductRecordController extends JeecgController<Bille
 				 JsonNode root = objectMapper.readTree(json);
 				 LengthCountVO vo = new LengthCountVO();
 				 vo.setHeatNo(record.getHeatNo());
+				 String brandNum = Optional.ofNullable(record.getGrade())
+						 .map(bn -> sysDictService.queryDictTextByKey("billet_spec", bn))
+						 .orElseGet(() -> sysDictService.queryDictTextByKey("billet_spec", "5"));
+				 vo.setBrandNum(brandNum);
 
 				 for (Iterator<Map.Entry<String, JsonNode>> it = root.fields(); it.hasNext(); ) {
 					 Map.Entry<String, JsonNode> entry = it.next();
@@ -866,4 +898,5 @@ public class BilletOriginalProductRecordController extends JeecgController<Bille
 			 record.setRemark(record.getRemark());
 		 }
 	 }
+
  }

+ 1 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/billetOriginalProductRecord/vo/LengthCountVO.java

@@ -9,5 +9,6 @@ import java.util.Map;
 public class LengthCountVO {
 
     private String heatNo;
+    private String brandNum;
     private Map<String, Integer> lengthCountMap = new LinkedHashMap<>();
 }

+ 17 - 9
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/rollClubOne/service/impl/RollClubOneServiceImpl.java

@@ -270,7 +270,7 @@ public class RollClubOneServiceImpl extends ServiceImpl<RollClubOneMapper, RollC
             oneQueryWrapper.le(BilletOriginalProductRecord::getCreateTime, endDate);
         }
 
-        oneQueryWrapper.orderByDesc(BilletOriginalProductRecord::getCreateTime);
+        oneQueryWrapper.orderByAsc(BilletOriginalProductRecord::getCreateTime);
 
         List<BilletOriginalProductRecord> list = billetOriginalProductRecordService.list(oneQueryWrapper);
 
@@ -408,10 +408,12 @@ public class RollClubOneServiceImpl extends ServiceImpl<RollClubOneMapper, RollC
         return oConvertUtils.getString(redisTemplate.opsForValue().get(key));
     }
 
+
     public Map<String, RollClubOneHeatVO.RollOneHeatNo> buildRollOneHeatNoMap(List<BilletOriginalProductRecord> oneList) {
         Map<String, RollClubOneHeatVO.RollOneHeatNo> resultMap = new HashMap<>();
-        Map<String, BigDecimal> lengthWeightCache = new HashMap<>(); // 缓存定尺重量
-        Map<String, String> lengthSpecCache = new HashMap<>(); // 缓存定尺 → spec 映射
+        Map<String, BigDecimal> lengthWeightCache = new HashMap<>();
+        Map<String, String> lengthSpecCache = new HashMap<>();
+        Map<String, Integer> lengthCumulativeCountMap = new HashMap<>(); // 新增:记录每种定尺的累计终止根数
 
         ObjectMapper objectMapper = new ObjectMapper();
 
@@ -420,18 +422,16 @@ public class RollClubOneServiceImpl extends ServiceImpl<RollClubOneMapper, RollC
             RollClubOneHeatVO.RollOneHeatNo rollOneHeatNo = new RollClubOneHeatVO.RollOneHeatNo();
             List<RollClubOneHeatVO.SizeDetail> sizeDetailsList = new ArrayList<>();
             List<RollClubOneHeatVO.RollSendDetail> rollSendDetailList = new ArrayList<>();
-            
+
             String detailJson = record.getRollClubOneDetails();
 
             if (StringUtils.isNotBlank(detailJson)) {
                 try {
                     JsonNode rootNode = objectMapper.readTree(detailJson);
 
-                    // 解析总数与总重量
                     rollOneHeatNo.setTotalAmount(getIntValue(rootNode, "directRollingTotalCount"));
                     rollOneHeatNo.setTotalWeight(getBigDecimalValue(rootNode, "directRollingTotalWeight"));
 
-                    // 解析定尺明细
                     JsonNode lengthGroupNode = rootNode.get("lengthGroupCount");
                     if (lengthGroupNode != null && lengthGroupNode.isObject()) {
                         Iterator<Map.Entry<String, JsonNode>> fields = lengthGroupNode.fields();
@@ -442,7 +442,7 @@ public class RollClubOneServiceImpl extends ServiceImpl<RollClubOneMapper, RollC
                             lengthCountMap.merge(length, count, Integer::sum);
                         }
                     }
-                    // 构造 SizeDetail 和 RollSendDetail
+
                     for (Map.Entry<String, Integer> entry : lengthCountMap.entrySet()) {
                         String length = entry.getKey();
                         int count = entry.getValue();
@@ -471,12 +471,19 @@ public class RollClubOneServiceImpl extends ServiceImpl<RollClubOneMapper, RollC
 
                         BigDecimal totalWeight = unitWeight.multiply(BigDecimal.valueOf(count));
 
-                        // sizeDetail // 定尺明细
+                        // ⭐ 计算起始根数与终止根数
+                        int lastEndAmount = lengthCumulativeCountMap.getOrDefault(length, 0);
+                        int startAmount = lastEndAmount + 1;
+                        int endAmount = lastEndAmount + count;
+                        lengthCumulativeCountMap.put(length, endAmount); // 更新累计值
+
+                        // sizeDetail
                         RollClubOneHeatVO.SizeDetail sizeDetail = new RollClubOneHeatVO.SizeDetail();
                         sizeDetail.setSize(Integer.valueOf(length));
                         sizeDetail.setSizeAmount(count);
                         sizeDetail.setSizeWeight(totalWeight);
-                        // 起始根 or 结束根处理
+                        sizeDetail.setStartAmount(startAmount);
+                        sizeDetail.setEndAmount(endAmount);
                         sizeDetailsList.add(sizeDetail);
 
                         // rollSendDetail
@@ -502,6 +509,7 @@ public class RollClubOneServiceImpl extends ServiceImpl<RollClubOneMapper, RollC
         return resultMap;
     }
 
+
     // 工具方法:解析 int
     private Integer getIntValue(JsonNode node, String fieldName) {
         JsonNode valueNode = node.get(fieldName);

+ 2 - 2
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/rollClubOne/vo/RollClubOneHeatVO.java

@@ -66,10 +66,10 @@ public class RollClubOneHeatVO {
         private BigDecimal sizeWeight;
 
         @ApiModelProperty(value = "当前定尺起始根")
-        private BigDecimal startAmount;
+        private Integer startAmount;
 
         @ApiModelProperty(value = "当前定尺结束根")
-        private BigDecimal endAmount;
+        private Integer endAmount;
 
     }
 }