feat: 产线负载接口
This commit is contained in:
28
klp-wms/src/main/java/com/klp/domain/vo/LineLoadInfo.java
Normal file
28
klp-wms/src/main/java/com/klp/domain/vo/LineLoadInfo.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package com.klp.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 产线负载信息视图对象
|
||||
*
|
||||
* @author klp
|
||||
* @date 2025-07-24
|
||||
*/
|
||||
@Data
|
||||
public class LineLoadInfo {
|
||||
|
||||
/**
|
||||
* 产线ID
|
||||
*/
|
||||
private Long lineId;
|
||||
|
||||
/**
|
||||
* 关联的排产计划明细数量
|
||||
*/
|
||||
private Integer planDetailCount;
|
||||
|
||||
/**
|
||||
* 排产天数总和
|
||||
*/
|
||||
private Integer totalPlanDays;
|
||||
}
|
||||
@@ -64,5 +64,13 @@ public class WmsProductionLineVo {
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 关联的排产计划明细数量
|
||||
*/
|
||||
private Integer planDetailCount;
|
||||
|
||||
/**
|
||||
* 排产天数总和
|
||||
*/
|
||||
private Integer totalPlanDays;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,11 @@ package com.klp.mapper;
|
||||
|
||||
import com.klp.domain.WmsProductionLine;
|
||||
import com.klp.domain.vo.WmsProductionLineVo;
|
||||
import com.klp.domain.vo.LineLoadInfo;
|
||||
import com.klp.common.core.mapper.BaseMapperPlus;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 产线Mapper接口
|
||||
@@ -12,4 +16,8 @@ import com.klp.common.core.mapper.BaseMapperPlus;
|
||||
*/
|
||||
public interface WmsProductionLineMapper extends BaseMapperPlus<WmsProductionLineMapper, WmsProductionLine, WmsProductionLineVo> {
|
||||
|
||||
/**
|
||||
* 批量查询产线负载信息
|
||||
*/
|
||||
List<LineLoadInfo> selectLineLoadInfo(@Param("lineIds") List<Long> lineIds);
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.klp.domain.bo.WmsProductionLineBo;
|
||||
import com.klp.domain.vo.WmsProductionLineVo;
|
||||
import com.klp.domain.vo.LineLoadInfo;
|
||||
import com.klp.domain.WmsProductionLine;
|
||||
import com.klp.mapper.WmsProductionLineMapper;
|
||||
import com.klp.service.IWmsProductionLineService;
|
||||
@@ -46,6 +47,10 @@ public class WmsProductionLineServiceImpl implements IWmsProductionLineService {
|
||||
public TableDataInfo<WmsProductionLineVo> queryPageList(WmsProductionLineBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<WmsProductionLine> lqw = buildQueryWrapper(bo);
|
||||
Page<WmsProductionLineVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
|
||||
// 填充负载信息
|
||||
fillLoadInfo(result.getRecords());
|
||||
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
@@ -55,7 +60,10 @@ public class WmsProductionLineServiceImpl implements IWmsProductionLineService {
|
||||
@Override
|
||||
public List<WmsProductionLineVo> queryList(WmsProductionLineBo bo) {
|
||||
LambdaQueryWrapper<WmsProductionLine> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
List<WmsProductionLineVo> list = baseMapper.selectVoList(lqw);
|
||||
// 填充负载信息
|
||||
fillLoadInfo(list);
|
||||
return list;
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<WmsProductionLine> buildQueryWrapper(WmsProductionLineBo bo) {
|
||||
@@ -110,4 +118,32 @@ public class WmsProductionLineServiceImpl implements IWmsProductionLineService {
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 填充产线负载信息
|
||||
*/
|
||||
private void fillLoadInfo(List<WmsProductionLineVo> productionLineList) {
|
||||
if (productionLineList == null || productionLineList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
// 获取所有产线ID
|
||||
List<Long> lineIds = productionLineList.stream()
|
||||
.map(WmsProductionLineVo::getLineId)
|
||||
.collect(java.util.stream.Collectors.toList());
|
||||
// 批量查询负载信息
|
||||
List<LineLoadInfo> loadInfoList = baseMapper.selectLineLoadInfo(lineIds);
|
||||
Map<Long, LineLoadInfo> loadInfoMap = loadInfoList.stream()
|
||||
.collect(java.util.stream.Collectors.toMap(LineLoadInfo::getLineId, java.util.function.Function.identity()));
|
||||
// 填充到VO
|
||||
for (WmsProductionLineVo vo : productionLineList) {
|
||||
LineLoadInfo loadInfo = loadInfoMap.get(vo.getLineId());
|
||||
if (loadInfo != null) {
|
||||
vo.setPlanDetailCount(loadInfo.getPlanDetailCount());
|
||||
vo.setTotalPlanDays(loadInfo.getTotalPlanDays());
|
||||
} else {
|
||||
vo.setPlanDetailCount(0);
|
||||
vo.setTotalPlanDays(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,5 +18,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="updateBy" column="update_by"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="selectLineLoadInfo" resultType="com.klp.domain.vo.LineLoadInfo">
|
||||
SELECT
|
||||
line_id AS lineId,
|
||||
COUNT(*) AS planDetailCount,
|
||||
SUM(DATEDIFF(end_date, start_date) + 1) AS totalPlanDays
|
||||
FROM
|
||||
wms_schedule_plan_detail
|
||||
WHERE
|
||||
line_id IN
|
||||
<foreach collection="lineIds" item="lineId" open="(" separator="," close=")">
|
||||
#{lineId}
|
||||
</foreach>
|
||||
AND del_flag = 0
|
||||
GROUP BY
|
||||
line_id
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user