|
@@ -1,6 +1,7 @@
|
|
package org.jeecg.modules.billet.billetOriginalProductRecord.controller;
|
|
package org.jeecg.modules.billet.billetOriginalProductRecord.controller;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
|
|
+import java.text.DecimalFormat;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -569,6 +570,7 @@ public class BilletOriginalProductRecordController extends JeecgController<Bille
|
|
billetOriginalProductRecordDetails.setBilletOriginalProductRecordList(billetOriginalProductRecordList);
|
|
billetOriginalProductRecordDetails.setBilletOriginalProductRecordList(billetOriginalProductRecordList);
|
|
billetOriginalProductRecordDetails.setSizeInfo(billetHotsendChangeShift.getSizeInfo());
|
|
billetOriginalProductRecordDetails.setSizeInfo(billetHotsendChangeShift.getSizeInfo());
|
|
billetOriginalProductRecordDetails.setContent(billetHotsendChangeShift.getContent());
|
|
billetOriginalProductRecordDetails.setContent(billetHotsendChangeShift.getContent());
|
|
|
|
+ billetOriginalProductRecordDetails.setConfirmStatus(billetHotsendChangeShift.getConfirmStatus());
|
|
return Result.OK(billetOriginalProductRecordDetails);
|
|
return Result.OK(billetOriginalProductRecordDetails);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -991,6 +993,95 @@ public class BilletOriginalProductRecordController extends JeecgController<Bille
|
|
return heatsActualsInfoList;
|
|
return heatsActualsInfoList;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @ApiOperation(value="钢坯堆垛原始生产记录查询", notes="钢坯原始堆垛生产记录查询")
|
|
|
|
+ @GetMapping(value = "/queryBilletStackRecordByCcmNo")
|
|
|
|
+ public Result<List<BilletOriginalHeatNoDetail>> queryBilletStackRecordByCcmNo(@RequestParam(name="ccmNo", required = false) String ccmNo,
|
|
|
|
+ @RequestParam(name="changeShiftId", required = false) String changeShiftId,
|
|
|
|
+ @RequestParam(name="queryType") String queryType) {
|
|
|
|
+ List<BilletOriginalHeatNoDetail> billetOriginalHeatNoDetailList = new ArrayList<>();
|
|
|
|
+ BilletHotsendChangeShift billetHotsendChangeShift;
|
|
|
|
+ if ("1".equals(queryType)){
|
|
|
|
+ String classShiftGroup = String.format("class:shift:group:%s", ccmNo); // 班组
|
|
|
|
+ String classShift = String.format("class:shift:%s",ccmNo); // 班别
|
|
|
|
+ String shift = !oConvertUtils.getString(redisTemplate.opsForValue().get(classShift)).isEmpty() ? oConvertUtils.getString(redisTemplate.opsForValue().get(classShift)) : "";
|
|
|
|
+ String shiftGroup = !oConvertUtils.getString(redisTemplate.opsForValue().get(classShiftGroup)).isEmpty() ? oConvertUtils.getString(redisTemplate.opsForValue().get(classShiftGroup)) : "";
|
|
|
|
+
|
|
|
|
+ if (oConvertUtils.isEmpty(shiftGroup) || oConvertUtils.isEmpty(shift)){
|
|
|
|
+ return Result.error("班组班别获取为空,钢坯堆垛原始生产记录查询失败!");
|
|
|
|
+ }
|
|
|
|
+ // 根据ccmNo、shift、shiftGroup查询最新的交班记录
|
|
|
|
+ LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ queryWrapper.eq(BilletHotsendChangeShift::getCcmNo, ccmNo)
|
|
|
|
+ .eq(BilletHotsendChangeShift::getShift, shift)
|
|
|
|
+ .eq(BilletHotsendChangeShift::getShiftGroup, shiftGroup)
|
|
|
|
+ .isNull(BilletHotsendChangeShift::getChangeShiftTime)
|
|
|
|
+ .orderByDesc(BilletHotsendChangeShift::getCreateTime)
|
|
|
|
+ .last("limit 1");
|
|
|
|
+ billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
|
|
|
|
+ if (billetHotsendChangeShift == null){
|
|
|
|
+ log.info("{}{}", "钢坯堆垛原始生产记录,交班记录为空!", ccmNo + "失败时间:" + new Date());
|
|
|
|
+ return Result.error("交班信息为空,钢坯堆垛原始生产记录查询失败!");
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ billetHotsendChangeShift = billetHotsendChangeShiftService.getById(changeShiftId);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ QueryWrapper<BilletOriginalProductRecord> queryWrapper3 = new QueryWrapper<>();
|
|
|
|
+ queryWrapper3.eq("ccm_no", ccmNo)
|
|
|
|
+ .eq("shift", billetHotsendChangeShift.getShift())
|
|
|
|
+ .eq("shift_group", billetHotsendChangeShift.getShiftGroup());
|
|
|
|
+ if ("1".equals(queryType)){
|
|
|
|
+ queryWrapper3.between("create_time", billetHotsendChangeShift.getCreateTime(), new Date());
|
|
|
|
+ }else {
|
|
|
|
+ queryWrapper3.between("create_time", billetHotsendChangeShift.getCreateTime(), billetHotsendChangeShift.getChangeShiftTime());
|
|
|
|
+ }
|
|
|
|
+ // 通过铸机号、班组、班别、交班开始时间 查询钢坯堆垛生产原始记录
|
|
|
|
+ List<BilletOriginalProductRecord> billetOriginalProductRecordList = billetOriginalProductRecordService.list(queryWrapper3);
|
|
|
|
+ if (oConvertUtils.listIsEmpty(billetOriginalProductRecordList)){
|
|
|
|
+ return Result.OK(billetOriginalHeatNoDetailList);
|
|
|
|
+ }
|
|
|
|
+ billetOriginalProductRecordList.forEach(x -> {
|
|
|
|
+ BilletOriginalHeatNoDetail billetOriginalHeatNoDetail = new BilletOriginalHeatNoDetail();
|
|
|
|
+ billetOriginalHeatNoDetail.setCcmNo(x.getCcmNo());
|
|
|
|
+ billetOriginalHeatNoDetail.setHeatNo(x.getHeatNo());
|
|
|
|
+ billetOriginalHeatNoDetail.setBrandNum(x.getGrade());
|
|
|
|
+ billetOriginalHeatNoDetail.setShiftGroup(x.getShiftGroup());
|
|
|
|
+ billetOriginalHeatNoDetail.setShift(x.getShift());
|
|
|
|
+ if (oConvertUtils.isNotEmpty(x.getStackLength())){
|
|
|
|
+ billetOriginalHeatNoDetail.setStackLength(x.getStackLength());
|
|
|
|
+ String stackLengthJson = x.getStackLength();
|
|
|
|
+ JSONArray jsonArray = JSON.parseArray(stackLengthJson);
|
|
|
|
+ // 初始化总数和总重
|
|
|
|
+ int totalCount = 0;
|
|
|
|
+ double totalWeight = 0.0d;
|
|
|
|
+ // 遍历 JSON 数组计算总数和总重
|
|
|
|
+ for (int i = 0; i < jsonArray.size(); i++) {
|
|
|
|
+ JSONObject item = jsonArray.getJSONObject(i);
|
|
|
|
+ // 获取 stackingCount 字段并累加到总数
|
|
|
|
+ int count = item.getIntValue("stackingCount");
|
|
|
|
+ // 如果 stackingCount 为 0,跳过该项
|
|
|
|
+ if (count == 0) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ totalCount += count;
|
|
|
|
+ // 获取 stackingWeight 字段并累加到总重
|
|
|
|
+ double weight = item.getDoubleValue("stackingWeight");
|
|
|
|
+ totalWeight += weight;
|
|
|
|
+ }
|
|
|
|
+ // 使用 DecimalFormat 四舍五入 保留四位小数
|
|
|
|
+ DecimalFormat df = new DecimalFormat("#.####");
|
|
|
|
+ String formattedWeight = df.format(totalWeight);
|
|
|
|
+ double roundedWeight = Double.parseDouble(formattedWeight);
|
|
|
|
+ billetOriginalHeatNoDetail.setAmountTotal(totalCount);
|
|
|
|
+ billetOriginalHeatNoDetail.setBlankOutput(roundedWeight);
|
|
|
|
+ }
|
|
|
|
+ billetOriginalHeatNoDetailList.add(billetOriginalHeatNoDetail);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ return Result.OK(billetOriginalHeatNoDetailList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
private List<Map<String, Object>> handleStorageBillPrintHotCharge(List<StorageBillPrint> storageBillPrintList, String heatNo) {
|
|
private List<Map<String, Object>> handleStorageBillPrintHotCharge(List<StorageBillPrint> storageBillPrintList, String heatNo) {
|
|
List<Map<String, Object>> hotChargeList = new ArrayList<>();
|
|
List<Map<String, Object>> hotChargeList = new ArrayList<>();
|
|
List<Map<String, Object>> finalResult = new ArrayList<>();
|
|
List<Map<String, Object>> finalResult = new ArrayList<>();
|