|
@@ -29,12 +29,18 @@ import org.jeecg.modules.billet.billetHotsendChangeShift.entity.BilletHotsendCha
|
|
|
import org.jeecg.modules.billet.billetHotsendChangeShift.service.IBilletHotsendChangeShiftService;
|
|
|
import org.jeecg.modules.billet.billetOriginalProductRecord.entity.BilletOriginalProductRecord;
|
|
|
import org.jeecg.modules.billet.billetOriginalProductRecord.service.IBilletOriginalProductRecordService;
|
|
|
+import org.jeecg.modules.billet.rollClubOne.dto.RollClubOneQueryDTO;
|
|
|
+import org.jeecg.modules.billet.rollClubOne.service.IRollClubOneService;
|
|
|
+import org.jeecg.modules.billet.rollClubOne.vo.RollClubOneVO;
|
|
|
import org.jeecg.modules.billet.rollClubThree.entity.RollClubThreeDetails;
|
|
|
import org.jeecg.modules.billet.rollClubThree.service.IRollClubThreeDetailsService;
|
|
|
import org.jeecg.modules.billet.rollClubTwo.entity.RollClubTwoDetails;
|
|
|
import org.jeecg.modules.billet.rollClubTwo.service.IRollClubTwoDetailsService;
|
|
|
import org.jeecg.modules.billet.rollDeputyCross.entity.RollDeputyCrossDetails;
|
|
|
import org.jeecg.modules.billet.rollDeputyCross.service.IRollDeputyCrossDetailsService;
|
|
|
+import org.jeecg.modules.billet.rollHeight.dto.RollHeightQueryDTO;
|
|
|
+import org.jeecg.modules.billet.rollHeight.service.IRollHeightService;
|
|
|
+import org.jeecg.modules.billet.rollHeight.vo.RollHeightVO;
|
|
|
import org.jeecg.modules.billet.rollOldAreas.entity.RollOldAreasDetails;
|
|
|
import org.jeecg.modules.billet.rollOldAreas.service.IRollOldAreasDetailsService;
|
|
|
import org.jeecg.modules.billet.rollOutShipp.entity.RollOutShippDetails;
|
|
@@ -62,6 +68,8 @@ import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.net.URLEncoder;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.Stream;
|
|
@@ -102,10 +110,14 @@ public class StorageBillPrintController extends JeecgController<StorageBillPrint
|
|
|
private IBilletHotsendChangeShiftService billetHotsendChangeShiftService;
|
|
|
|
|
|
@Autowired
|
|
|
- private IBilletOriginalProductRecordService billetOriginalProductRecordService;
|
|
|
+ private IRollClubOneService rollClubOneService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IRollHeightService rollHeightService;
|
|
|
|
|
|
@Autowired
|
|
|
- BilletRulerConfigMapper billetRulerConfigMapper;
|
|
|
+ private IBilletOriginalProductRecordService billetOriginalProductRecordService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private ISysDictService sysDictService;
|
|
|
@Autowired
|
|
@@ -503,106 +515,96 @@ public class StorageBillPrintController extends JeecgController<StorageBillPrint
|
|
|
exportRows.add(exportRow);
|
|
|
});
|
|
|
|
|
|
- QueryWrapper<BilletOriginalProductRecord> recordQueryWrapper = new QueryWrapper<>();
|
|
|
+ //导出棒一或者高线数据
|
|
|
+ if("5".equals(storageBillPrint.getCcmNo())){
|
|
|
+ RollClubOneQueryDTO rollClubOneQueryDTO = new RollClubOneQueryDTO();
|
|
|
+ rollClubOneQueryDTO.setCcmNo(storageBillPrint.getCcmNo());
|
|
|
+ rollClubOneQueryDTO.setStartTime(startTime);
|
|
|
+ rollClubOneQueryDTO.setEndTime(endTime);
|
|
|
+ if(!oConvertUtils.isNotEmpty(storageBillPrint.getHeatNo())){
|
|
|
+ rollClubOneQueryDTO.setHeatNo(storageBillPrint.getHeatNo());
|
|
|
+ }
|
|
|
|
|
|
- // 手动设置必要条件,避免 QueryGenerator 自动生成不必要的条件
|
|
|
- if (oConvertUtils.isNotEmpty(storageBillPrint.getCcmNo())) {
|
|
|
- recordQueryWrapper.eq("ccm_no", storageBillPrint.getCcmNo());
|
|
|
- }
|
|
|
+ List<RollClubOneVO> rollClubOneVOS = rollClubOneService.rollClubOneList(rollClubOneQueryDTO);
|
|
|
|
|
|
- // 修改时间范围查询条件为 >= startTime 且 <= endTime
|
|
|
- recordQueryWrapper.ge("create_time", startTime) // 大于等于开始时间
|
|
|
- .le("create_time", endTime); // 小于等于结束时间
|
|
|
+ // 数据处理
|
|
|
+ List<StorageCenterExportRow> exportOneList = rollClubOneService.buildExportData(rollClubOneVOS);
|
|
|
+ exportRows.addAll(exportOneList);
|
|
|
|
|
|
- // Step.2 获取导出数据
|
|
|
- // 打印完整的查询条件
|
|
|
- List<BilletOriginalProductRecord> list = billetOriginalProductRecordService.list(recordQueryWrapper);
|
|
|
+ }else if("6".equals(storageBillPrint.getCcmNo())){
|
|
|
+ RollHeightQueryDTO rollHeightQueryDTO = new RollHeightQueryDTO();
|
|
|
+ rollHeightQueryDTO.setCcmNo(storageBillPrint.getCcmNo());
|
|
|
+ rollHeightQueryDTO.setStartTime(startTime);
|
|
|
+ rollHeightQueryDTO.setEndTime(endTime);
|
|
|
+ if(!oConvertUtils.isNotEmpty(storageBillPrint.getHeatNo())){
|
|
|
+ rollHeightQueryDTO.setHeatNo(storageBillPrint.getHeatNo());
|
|
|
+ }
|
|
|
|
|
|
- ObjectMapper objectMapper = new ObjectMapper();
|
|
|
+ List<RollHeightVO> rollHeightVOS = rollHeightService.rollHeightList(rollHeightQueryDTO);
|
|
|
|
|
|
- List<RollClubOneExportVO> oneList = new ArrayList<>();
|
|
|
- for (BilletOriginalProductRecord record : list) {
|
|
|
+ // 过滤掉未确认(confirmTime == null)的记录
|
|
|
+ rollHeightVOS = rollHeightVOS.stream()
|
|
|
+ .filter(vo -> vo.getStorageCenterHeatNoInvoicing() != null &&
|
|
|
+ vo.getStorageCenterHeatNoInvoicing().getRollHeightDetails() != null &&
|
|
|
+ vo.getStorageCenterHeatNoInvoicing().getRollHeightDetails().getConfirmTime() != null)
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
- Map<String, Integer> lengthCountMap = new HashMap<>();
|
|
|
+ // 数据处理
|
|
|
+ List<StorageCenterExportRow> exportHeightList = rollHeightService.buildExportData(rollHeightVOS);
|
|
|
|
|
|
- // 3. 解析 JSON 明细
|
|
|
- String detailJson = record.getRollClubOneDetails();
|
|
|
- if (StringUtils.isNotBlank(detailJson)) {
|
|
|
- try {
|
|
|
- JsonNode rootNode = objectMapper.readTree(detailJson);
|
|
|
-
|
|
|
- String heatNo = record.getHeatNo();
|
|
|
- String ccmNo = record.getCcmNo();
|
|
|
- Date createTime = record.getCreateTime();
|
|
|
-
|
|
|
- // 品号从 grade 映射
|
|
|
- String brandNum = Optional.ofNullable(record.getGrade())
|
|
|
- .map(bn -> sysDictService.queryDictTextByKey("billet_spec", bn))
|
|
|
- .orElseGet(() -> sysDictService.queryDictTextByKey("billet_spec", "5"));
|
|
|
-
|
|
|
- // 各定尺计数
|
|
|
- JsonNode lengthGroupNode = rootNode.get("lengthGroupCount");
|
|
|
- if (lengthGroupNode != null && lengthGroupNode.isObject()) {
|
|
|
- lengthGroupNode.fields().forEachRemaining(e ->
|
|
|
- lengthCountMap.merge(e.getKey(), e.getValue().asInt(), Integer::sum)
|
|
|
- );
|
|
|
- }
|
|
|
+ exportRows.addAll(exportHeightList);
|
|
|
|
|
|
- // 【新增】跳过没有定尺数据的记录
|
|
|
- if (lengthCountMap.isEmpty()) {
|
|
|
- log.info("heatNo={} 的 lengthGroupCount 为空,跳过处理", heatNo);
|
|
|
- continue;
|
|
|
- }
|
|
|
|
|
|
- // 4. 根据每种定尺构建 sizeDetail & rollSendDetail
|
|
|
- for (Map.Entry<String, Integer> entry : lengthCountMap.entrySet()) {
|
|
|
- String length = entry.getKey();
|
|
|
- int count = entry.getValue();
|
|
|
+ LambdaQueryWrapper<BilletOriginalProductRecord> heightQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ heightQueryWrapper.eq(BilletOriginalProductRecord::getCcmNo, storageBillPrint.getCcmNo());
|
|
|
|
|
|
- RollClubOneExportVO rollClubOneExportVO = new RollClubOneExportVO();
|
|
|
+ // 炉号查询
|
|
|
+ if (oConvertUtils.isNotEmpty(storageBillPrint.getHeatNo())) {
|
|
|
+ heightQueryWrapper.eq(BilletOriginalProductRecord::getHeatNo, storageBillPrint.getHeatNo());
|
|
|
+ }
|
|
|
|
|
|
- rollClubOneExportVO.setHeatNo(heatNo);
|
|
|
- rollClubOneExportVO.setSize(length);
|
|
|
- rollClubOneExportVO.setCount(count);
|
|
|
- rollClubOneExportVO.setCcmNo(ccmNo);
|
|
|
- rollClubOneExportVO.setBrandNum(brandNum);
|
|
|
- rollClubOneExportVO.setCreateTime(createTime);
|
|
|
+ // 添加 ColdBilletInfo 不为 null 的条件
|
|
|
+ heightQueryWrapper.isNotNull(BilletOriginalProductRecord::getColdBilletInfo);
|
|
|
|
|
|
- oneList.add(rollClubOneExportVO);
|
|
|
- }
|
|
|
+ List<BilletOriginalProductRecord> list = billetOriginalProductRecordService.list(heightQueryWrapper);
|
|
|
|
|
|
- } catch (Exception e) {
|
|
|
- log.info("JSON 解析失败,数据:{}", detailJson, e);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ List<RollHeightVO> rollHeightColdList = rollHeightService.handleColdBillet(list);
|
|
|
|
|
|
- oneList.forEach(x -> {
|
|
|
- StorageCenterExportRow exportRow = new StorageCenterExportRow();
|
|
|
- exportRow.setAmount(x.getCount());
|
|
|
- exportRow.setCcmNo(Integer.valueOf(x.getCcmNo()));
|
|
|
- exportRow.setEndPoint("棒一");
|
|
|
- exportRow.setFactoryDate(DateUtils.date2Str(x.getCreateTime(), DateUtils.datetimeFormat.get()));
|
|
|
- exportRow.setHeatNo(x.getHeatNo());
|
|
|
- exportRow.setLicensePlate("辊道");
|
|
|
- BigDecimal result = safeToBigDecimal(x.getSize()).divide(BigDecimal.valueOf(1000));
|
|
|
- if (result != null) {
|
|
|
- exportRow.setSize("170*170*" + result.toPlainString());
|
|
|
- }
|
|
|
- BigDecimal singleWeight = new BigDecimal(x.getSize())
|
|
|
- .divide(new BigDecimal("1000"), 3, RoundingMode.HALF_UP)
|
|
|
- .multiply(meterWeightFactor)
|
|
|
- .setScale(3, RoundingMode.HALF_UP);
|
|
|
+ // 过滤掉未确认(confirmTime == null)的记录
|
|
|
+ rollHeightColdList = rollHeightColdList.stream()
|
|
|
+ .filter(vo -> vo.getStorageCenterHeatNoInvoicing() != null &&
|
|
|
+ vo.getStorageCenterHeatNoInvoicing().getRollHeightDetails() != null &&
|
|
|
+ vo.getStorageCenterHeatNoInvoicing().getRollHeightDetails().getConfirmTime() != null)
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
- BigDecimal weight = singleWeight.multiply(BigDecimal.valueOf(x.getCount()));
|
|
|
- exportRow.setWeightPerPiece(singleWeight);
|
|
|
- exportRow.setTotalWeight(weight);
|
|
|
- exportRow.setBrand(x.getBrandNum());
|
|
|
+ // 数据处理
|
|
|
+ List<StorageCenterExportRow> exportHeightColdList = rollHeightService.buildExportData(rollHeightColdList);
|
|
|
|
|
|
- exportRows.add(exportRow);
|
|
|
- });
|
|
|
+ exportRows.addAll(exportHeightColdList);
|
|
|
+ }
|
|
|
|
|
|
- exportRows.sort(Comparator.comparing(StorageCenterExportRow::getFactoryDate));
|
|
|
+
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+
|
|
|
+ List<StorageCenterExportRow> filteredRows = exportRows.stream()
|
|
|
+ .filter(row -> {
|
|
|
+ try {
|
|
|
+ Date factoryDate = sdf.parse(row.getFactoryDate());
|
|
|
+ return !factoryDate.before(startTime) && !factoryDate.after(endTime);
|
|
|
+ } catch (ParseException e) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .sorted((r1, r2) -> {
|
|
|
+ try {
|
|
|
+ Date d1 = sdf.parse(r1.getFactoryDate());
|
|
|
+ Date d2 = sdf.parse(r2.getFactoryDate());
|
|
|
+ return d1.compareTo(d2);
|
|
|
+ } catch (ParseException e) {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
// 设置响应
|
|
|
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
|
@@ -613,7 +615,7 @@ public class StorageBillPrintController extends JeecgController<StorageBillPrint
|
|
|
// 导出
|
|
|
EasyExcel.write(response.getOutputStream(), StorageCenterExportRow.class)
|
|
|
.sheet("装运打印信息")
|
|
|
- .doWrite(exportRows);
|
|
|
+ .doWrite(filteredRows);
|
|
|
} catch (Exception e) {
|
|
|
log.error("导出Excel失败:", e);
|
|
|
}
|