Compare commits
2 Commits
71e2467572
...
4c26e708da
| Author | SHA1 | Date | |
|---|---|---|---|
| 4c26e708da | |||
| 10a28f8c62 |
@@ -346,6 +346,11 @@ public class WmsMaterialCoilVo extends BaseEntity {
|
||||
*/
|
||||
private Integer exclusiveStatus;
|
||||
|
||||
/**
|
||||
* 炉火层级(1=一层,2=二层,3=三层)
|
||||
*/
|
||||
private Integer furnaceLevel;
|
||||
|
||||
// ========== 发货绑定信息(由发货单明细占用) ==========
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package com.klp.domain.vo.anneal;
|
||||
|
||||
import com.klp.domain.vo.WmsMaterialCoilVo;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 炉火实绩明细视图对象
|
||||
@@ -33,4 +35,12 @@ public class WmsAnnealPerformanceDetailVo {
|
||||
private String currentCoilNo;
|
||||
|
||||
private BigDecimal netWeight;
|
||||
|
||||
private Long logicWarehouseId;
|
||||
|
||||
private String logicWarehouseName;
|
||||
|
||||
private Integer furnaceLevel;
|
||||
|
||||
private List<WmsMaterialCoilVo> coils;
|
||||
}
|
||||
|
||||
@@ -1,15 +1,28 @@
|
||||
package com.klp.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.klp.common.core.domain.PageQuery;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.domain.bo.WmsAnnealPerformanceBo;
|
||||
import com.klp.domain.bo.WmsMaterialCoilBo;
|
||||
import com.klp.domain.vo.WmsMaterialCoilVo;
|
||||
import com.klp.domain.vo.anneal.WmsAnnealPerformanceDetailVo;
|
||||
import com.klp.domain.vo.anneal.WmsAnnealPerformanceSummaryVo;
|
||||
import com.klp.domain.vo.anneal.WmsAnnealPerformanceVo;
|
||||
import com.klp.domain.WmsFurnacePlanCoil;
|
||||
import com.klp.domain.WmsWarehouse;
|
||||
import com.klp.mapper.WmsAnnealPerformanceMapper;
|
||||
import com.klp.mapper.WmsFurnacePlanCoilMapper;
|
||||
import com.klp.mapper.WmsWarehouseMapper;
|
||||
import com.klp.service.IWmsAnnealPerformanceService;
|
||||
import com.klp.service.IWmsMaterialCoilService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 炉火实绩Service业务层处理
|
||||
@@ -22,11 +35,112 @@ import java.util.List;
|
||||
public class WmsAnnealPerformanceServiceImpl implements IWmsAnnealPerformanceService {
|
||||
|
||||
private final WmsAnnealPerformanceMapper performanceMapper;
|
||||
private final WmsFurnacePlanCoilMapper planCoilMapper;
|
||||
private final WmsWarehouseMapper warehouseMapper;
|
||||
private final IWmsMaterialCoilService materialCoilService;
|
||||
|
||||
@Override
|
||||
public WmsAnnealPerformanceVo queryPerformance(WmsAnnealPerformanceBo bo) {
|
||||
WmsAnnealPerformanceSummaryVo summary = performanceMapper.selectSummary(bo);
|
||||
List<WmsAnnealPerformanceDetailVo> details = performanceMapper.selectDetails(bo);
|
||||
|
||||
if (details != null && !details.isEmpty()) {
|
||||
// 收集所有计划ID
|
||||
List<Long> planIds = details.stream()
|
||||
.map(WmsAnnealPerformanceDetailVo::getPlanId)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!planIds.isEmpty()) {
|
||||
// 批量查询所有计划的钢卷关联记录
|
||||
List<WmsFurnacePlanCoil> allPlanCoils = planCoilMapper.selectList(
|
||||
new LambdaQueryWrapper<WmsFurnacePlanCoil>()
|
||||
.in(WmsFurnacePlanCoil::getPlanId, planIds)
|
||||
.eq(WmsFurnacePlanCoil::getDelFlag, 0)
|
||||
);
|
||||
|
||||
// 按planId分组
|
||||
Map<Long, List<WmsFurnacePlanCoil>> planCoilsMap = allPlanCoils.stream()
|
||||
.collect(Collectors.groupingBy(WmsFurnacePlanCoil::getPlanId));
|
||||
|
||||
// 收集所有逻辑库区ID
|
||||
Set<Long> allLogicWarehouseIds = allPlanCoils.stream()
|
||||
.map(WmsFurnacePlanCoil::getLogicWarehouseId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 批量查询逻辑库区名称
|
||||
Map<Long, String> logicWarehouseNameMap = new HashMap<>();
|
||||
if (!allLogicWarehouseIds.isEmpty()) {
|
||||
List<WmsWarehouse> warehouses = warehouseMapper.selectBatchIds(allLogicWarehouseIds);
|
||||
for (WmsWarehouse warehouse : warehouses) {
|
||||
logicWarehouseNameMap.put(warehouse.getWarehouseId(), warehouse.getWarehouseName());
|
||||
}
|
||||
}
|
||||
|
||||
// 收集所有钢卷ID
|
||||
Set<Long> allCoilIds = allPlanCoils.stream()
|
||||
.map(WmsFurnacePlanCoil::getCoilId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 批量查询钢卷信息
|
||||
Map<Long, WmsMaterialCoilVo> coilVoMap = new HashMap<>();
|
||||
if (!allCoilIds.isEmpty()) {
|
||||
WmsMaterialCoilBo coilBo = new WmsMaterialCoilBo();
|
||||
coilBo.setCoilIds(allCoilIds.stream().map(String::valueOf).collect(Collectors.joining(",")));
|
||||
PageQuery pageQuery = new PageQuery();
|
||||
pageQuery.setPageNum(1);
|
||||
pageQuery.setPageSize(Integer.MAX_VALUE);
|
||||
TableDataInfo<WmsMaterialCoilVo> coilPage = materialCoilService.queryPageList(coilBo, pageQuery);
|
||||
if (coilPage != null && coilPage.getRows() != null) {
|
||||
for (WmsMaterialCoilVo coilVo : coilPage.getRows()) {
|
||||
if (coilVo.getCoilId() != null) {
|
||||
coilVoMap.put(coilVo.getCoilId(), coilVo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 处理每个计划
|
||||
for (WmsAnnealPerformanceDetailVo detail : details) {
|
||||
Long planId = detail.getPlanId();
|
||||
List<WmsFurnacePlanCoil> planCoils = planCoilsMap.get(planId);
|
||||
|
||||
if (planCoils == null || planCoils.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 为每个钢卷设置逻辑库区ID、层级和钢卷信息
|
||||
List<WmsMaterialCoilVo> coilVos = new ArrayList<>();
|
||||
for (WmsFurnacePlanCoil planCoil : planCoils) {
|
||||
Long coilId = planCoil.getCoilId();
|
||||
if (coilId == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
WmsMaterialCoilVo coilVo = coilVoMap.get(coilId);
|
||||
if (coilVo == null) {
|
||||
coilVo = new WmsMaterialCoilVo();
|
||||
coilVo.setCoilId(coilId);
|
||||
}
|
||||
|
||||
// 设置逻辑库区ID和层级(每个钢卷可能不同)
|
||||
if (planCoil.getLogicWarehouseId() != null) {
|
||||
coilVo.setWarehouseId(planCoil.getLogicWarehouseId());
|
||||
coilVo.setWarehouseName(logicWarehouseNameMap.get(planCoil.getLogicWarehouseId()));
|
||||
}
|
||||
// 设置炉火层级
|
||||
coilVo.setFurnaceLevel(planCoil.getFurnaceLevel());
|
||||
|
||||
coilVos.add(coilVo);
|
||||
}
|
||||
detail.setCoils(coilVos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
WmsAnnealPerformanceVo vo = new WmsAnnealPerformanceVo();
|
||||
vo.setSummary(summary);
|
||||
vo.setDetails(details);
|
||||
|
||||
@@ -39,16 +39,11 @@
|
||||
p.target_furnace_id AS targetFurnaceId,
|
||||
f.furnace_name AS targetFurnaceName,
|
||||
p.actual_start_time AS actualStartTime,
|
||||
p.end_time AS endTime,
|
||||
mc.coil_id AS coilId,
|
||||
mc.enter_coil_no AS enterCoilNo,
|
||||
mc.current_coil_no AS currentCoilNo,
|
||||
mc.net_weight AS netWeight
|
||||
p.end_time AS endTime
|
||||
FROM wms_furnace_plan p
|
||||
INNER JOIN wms_furnace_plan_coil pc ON pc.plan_id = p.plan_id AND pc.del_flag = 0
|
||||
INNER JOIN wms_material_coil mc ON mc.coil_id = pc.coil_id AND mc.del_flag = 0
|
||||
LEFT JOIN wms_furnace f ON f.furnace_id = p.target_furnace_id
|
||||
<include refid="AnnealPerformanceWhere" />
|
||||
GROUP BY p.plan_id, p.plan_no, p.target_furnace_id, f.furnace_name, p.actual_start_time, p.end_time
|
||||
ORDER BY p.actual_start_time DESC, p.plan_no DESC
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user