feat: 产线负载接口

This commit is contained in:
JR
2025-07-30 16:42:34 +08:00
parent d699efca54
commit b74c977c60
5 changed files with 97 additions and 1 deletions

View 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;
}

View File

@@ -64,5 +64,13 @@ public class WmsProductionLineVo {
@ExcelProperty(value = "备注")
private String remark;
/**
* 关联的排产计划明细数量
*/
private Integer planDetailCount;
/**
* 排产天数总和
*/
private Integer totalPlanDays;
}

View File

@@ -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);
}

View File

@@ -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);
}
}
}
}

View File

@@ -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>