Merge branch '0.8.X' of https://gitee.com/hdka/klp-oa into 0.8.X

This commit is contained in:
砂糖
2025-11-25 17:29:18 +08:00
9 changed files with 131 additions and 3 deletions

View File

@@ -3,6 +3,7 @@ package com.klp.controller;
import java.util.List;
import java.util.Arrays;
import com.klp.domain.vo.WmsDeliveryPlanStatisticsVo;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
@@ -96,4 +97,15 @@ public class WmsDeliveryPlanController extends BaseController {
@PathVariable Long[] planIds) {
return toAjax(iWmsDeliveryPlanService.deleteWithValidByIds(Arrays.asList(planIds), true));
}
/**
* 获取发货计划统计信息
*
* @param planId 计划ID可选
*/
@GetMapping("/statistics")
public R<List<WmsDeliveryPlanStatisticsVo>> getStatistics(@RequestParam(required = false) Long planId) {
List<WmsDeliveryPlanStatisticsVo> statistics = iWmsDeliveryPlanService.getDeliveryPlanStatistics(planId);
return R.ok(statistics);
}
}

View File

@@ -0,0 +1,46 @@
package com.klp.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
* 发货计划统计信息VO
*/
@Data
public class WmsDeliveryPlanStatisticsVo {
/**
* 计划ID
*/
private Long planId;
/**
* 计划名称
*/
private String planName;
/**
* 发货单数量
*/
private Integer waybillCount = 0;
/**
* 总卷数
*/
private Integer totalCoilCount = 0;
/**
* 总吨数(吨)
*/
private BigDecimal totalWeight = BigDecimal.ZERO;
/**
* 完成进度(百分比)
*/
private BigDecimal completionRate = BigDecimal.ZERO;
/**
* 已完成发货单数量
*/
private Integer completedWaybillCount = 0;
}

View File

@@ -1,11 +1,14 @@
package com.klp.domain.vo;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
@@ -17,7 +20,7 @@ import lombok.Data;
*/
@Data
@ExcelIgnoreUnannotated
public class WmsDeliveryPlanVo {
public class WmsDeliveryPlanVo extends BaseEntity {
private static final long serialVersionUID = 1L;
@@ -46,5 +49,9 @@ public class WmsDeliveryPlanVo {
@ExcelProperty(value = "备注")
private String remark;
/**
* 关联的发货单列表
*/
private List<WmsDeliveryWaybillVo> waybills;
}

View File

@@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
@@ -16,7 +17,7 @@ import lombok.Data;
*/
@Data
@ExcelIgnoreUnannotated
public class WmsDeliveryWaybillDetailVo {
public class WmsDeliveryWaybillDetailVo extends BaseEntity {
private static final long serialVersionUID = 1L;

View File

@@ -6,6 +6,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
@@ -17,7 +18,7 @@ import lombok.Data;
*/
@Data
@ExcelIgnoreUnannotated
public class WmsDeliveryWaybillVo {
public class WmsDeliveryWaybillVo extends BaseEntity {
private static final long serialVersionUID = 1L;

View File

@@ -1,9 +1,12 @@
package com.klp.mapper;
import com.klp.domain.WmsDeliveryPlan;
import com.klp.domain.vo.WmsDeliveryPlanStatisticsVo;
import com.klp.domain.vo.WmsDeliveryPlanVo;
import com.klp.common.core.mapper.BaseMapperPlus;
import java.util.List;
/**
* 发货计划Mapper接口
*
@@ -12,4 +15,5 @@ import com.klp.common.core.mapper.BaseMapperPlus;
*/
public interface WmsDeliveryPlanMapper extends BaseMapperPlus<WmsDeliveryPlanMapper, WmsDeliveryPlan, WmsDeliveryPlanVo> {
List<WmsDeliveryPlanStatisticsVo> selectDeliveryPlanStatistics(Long planId);
}

View File

@@ -1,6 +1,7 @@
package com.klp.service;
import com.klp.domain.WmsDeliveryPlan;
import com.klp.domain.vo.WmsDeliveryPlanStatisticsVo;
import com.klp.domain.vo.WmsDeliveryPlanVo;
import com.klp.domain.bo.WmsDeliveryPlanBo;
import com.klp.common.core.page.TableDataInfo;
@@ -46,4 +47,6 @@ public interface IWmsDeliveryPlanService {
* 校验并批量删除发货计划信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
List<WmsDeliveryPlanStatisticsVo> getDeliveryPlanStatistics(Long planId);
}

View File

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import com.klp.domain.vo.WmsDeliveryPlanStatisticsVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsDeliveryPlanBo;
@@ -15,6 +16,7 @@ import com.klp.domain.WmsDeliveryPlan;
import com.klp.mapper.WmsDeliveryPlanMapper;
import com.klp.service.IWmsDeliveryPlanService;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@@ -107,4 +109,15 @@ public class WmsDeliveryPlanServiceImpl implements IWmsDeliveryPlanService {
}
return baseMapper.deleteBatchIds(ids) > 0;
}
/**
* 获取发货计划统计信息
*
* @param planId 计划ID可选
* @return 统计信息列表
*/
public List<WmsDeliveryPlanStatisticsVo> getDeliveryPlanStatistics(Long planId) {
return baseMapper.selectDeliveryPlanStatistics(planId);
}
}

View File

@@ -16,5 +16,46 @@
<result property="updateBy" column="update_by"/>
</resultMap>
<select id="selectDeliveryPlanStatistics" resultType="com.klp.domain.vo.WmsDeliveryPlanStatisticsVo">
SELECT
dp.plan_id as planId,
dp.plan_name as planName,
COUNT(DISTINCT dw.waybill_id) as waybillCount,
COALESCE(SUM(completed_waybills.completed_count), 0) as completedWaybillCount,
COALESCE(SUM(detail_stats.total_coil_count), 0) as totalCoilCount,
COALESCE(SUM(detail_stats.total_weight), 0) as totalWeight,
CASE
WHEN COUNT(DISTINCT dw.waybill_id) > 0 THEN
ROUND((COALESCE(SUM(completed_waybills.completed_count), 0) * 100.0) / COUNT(DISTINCT dw.waybill_id), 2)
ELSE 0
END as completionRate
FROM wms_delivery_plan dp
LEFT JOIN wms_delivery_waybill dw ON dp.plan_id = dw.plan_id AND dw.del_flag = 0
LEFT JOIN (
SELECT
waybill_id,
COUNT(*) as total_coil_count,
SUM(weight/1000.0) as total_weight
FROM wms_delivery_waybill_detail
WHERE del_flag = 0
GROUP BY waybill_id
) detail_stats ON dw.waybill_id = detail_stats.waybill_id
LEFT JOIN (
SELECT
plan_id,
COUNT(*) as completed_count
FROM wms_delivery_waybill
WHERE status = 2 AND del_flag = 0
GROUP BY plan_id
) completed_waybills ON dp.plan_id = completed_waybills.plan_id
WHERE dp.del_flag = 0
<if test="planId != null">
AND dp.plan_id = #{planId}
</if>
GROUP BY dp.plan_id, dp.plan_name
ORDER BY dp.create_time DESC
</select>
</mapper>