Files
klp-oa/klp-wms/src/main/java/com/klp/controller/WmsDeliveryWaybillDetailController.java
Joshi dc170c77d9 feat(delivery): 添加按负责人查询已绑定钢卷功能
- 在 IWmsDeliveryWaybillDetailService 中新增 getBoundCoilIdsByPrincipal 方法
- 在 WmsDeliveryWaybillDetailController 中添加 coilListByPrincipal 接口
- 实现 WmsDeliveryWaybillDetailServiceImpl 中的 getBoundCoilIdsByPrincipal 逻辑
- 使用 LambdaQueryWrapper 查询指定负责人的运单及关联钢卷信息
- 添加参数校验和空值处理机制
2026-04-27 17:28:19 +08:00

191 lines
7.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.klp.controller;
import java.util.*;
import java.util.stream.Collectors;
import com.klp.domain.vo.WmsMaterialCoilVo;
import org.springframework.format.annotation.DateTimeFormat;
import com.klp.domain.vo.WmsMaterialCoilBindVo;
import com.klp.domain.vo.WmsDeliveryCoilRelationVo;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.annotation.Log;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.domain.vo.WmsDeliveryWaybillDetailVo;
import com.klp.domain.bo.WmsDeliveryWaybillDetailBo;
import com.klp.service.IWmsDeliveryWaybillDetailService;
import com.klp.domain.bo.WmsMaterialCoilBo;
import com.klp.service.IWmsMaterialCoilService;
import com.klp.common.core.page.TableDataInfo;
/**
* 发货单明细
*
* @author klp
* @date 2025-11-25
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/wms/deliveryWaybillDetail")
public class WmsDeliveryWaybillDetailController extends BaseController {
private final IWmsDeliveryWaybillDetailService iWmsDeliveryWaybillDetailService;
private final IWmsMaterialCoilService iWmsMaterialCoilService;
/**
* 查询发货单明细列表
*/
@GetMapping("/list")
public TableDataInfo<WmsDeliveryWaybillDetailVo> list(WmsDeliveryWaybillDetailBo bo, PageQuery pageQuery) {
return iWmsDeliveryWaybillDetailService.queryPageList(bo, pageQuery);
}
/**
* 导出发货单明细列表
*/
@Log(title = "发货单明细", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsDeliveryWaybillDetailBo bo, HttpServletResponse response) {
List<WmsDeliveryWaybillDetailVo> list = iWmsDeliveryWaybillDetailService.queryList(bo);
ExcelUtil.exportExcel(list, "发货单明细", WmsDeliveryWaybillDetailVo.class, response);
}
/**
* 获取发货单明细详细信息
*
* @param detailId 主键
*/
@GetMapping("/{detailId}")
public R<WmsDeliveryWaybillDetailVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long detailId) {
return R.ok(iWmsDeliveryWaybillDetailService.queryById(detailId));
}
/**
* 根据钢卷ID查询发货关联信息发货单明细+发货单+发货计划+钢卷信息)
*
* @param coilId 钢卷ID
*/
@GetMapping("/coilRelation/{coilId}")
public R<WmsDeliveryCoilRelationVo> getCoilRelation(@NotNull(message = "钢卷ID不能为空")
@PathVariable Long coilId) {
return R.ok(iWmsDeliveryWaybillDetailService.queryRelationByCoilId(coilId));
}
/**
* 新增发货单明细
*/
@Log(title = "发货单明细", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsDeliveryWaybillDetailBo bo) {
return toAjax(iWmsDeliveryWaybillDetailService.insertByBo(bo));
}
/**
* 批量新增发货单明细
*/
@Log(title = "发货单明细", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/batch")
public R<Void> batchAdd(@Validated(AddGroup.class) @RequestBody List<WmsDeliveryWaybillDetailBo> boList) {
return toAjax(iWmsDeliveryWaybillDetailService.insertBatchByBo(boList));
}
/**
* 修改发货单明细
*/
@Log(title = "发货单明细", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsDeliveryWaybillDetailBo bo) {
return toAjax(iWmsDeliveryWaybillDetailService.updateByBo(bo));
}
/**
* 删除发货单明细
*
* @param detailIds 主键串
*/
@Log(title = "发货单明细", businessType = BusinessType.DELETE)
@DeleteMapping("/{detailIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] detailIds) {
return toAjax(iWmsDeliveryWaybillDetailService.deleteWithValidByIds(Arrays.asList(detailIds), true));
}
/**
* 查询已发货绑定的钢卷列表
*/
@GetMapping("/boundCoilList")
public TableDataInfo<WmsMaterialCoilBindVo> boundCoilList(
WmsMaterialCoilBo bo,
PageQuery pageQuery,
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime,
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime) {
List<Long> boundCoilIds;
if (startTime != null || endTime != null) {
boundCoilIds = iWmsDeliveryWaybillDetailService.getBoundCoilIdsByTimeRange(startTime, endTime);
} else {
boundCoilIds = iWmsDeliveryWaybillDetailService.getBoundCoilIds();
}
if (boundCoilIds == null || boundCoilIds.isEmpty()) {
return new TableDataInfo<>();
}
bo.setCoilIds(boundCoilIds.stream().map(String::valueOf).collect(java.util.stream.Collectors.joining(",")));
bo.setStatusFirst(true); // 未发货的排在前面
return iWmsMaterialCoilService.queryPageListWithBindInfo(bo, pageQuery);
}
/**
* 统计已发货绑定钢卷的汇总数据
* 根据coilIds查询条件统计毛重、净重、数量等指标
*/
@GetMapping("/statistics")
public R<java.util.Map<String, java.math.BigDecimal>> getStatistics(
WmsMaterialCoilBo bo,
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime,
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime) {
List<Long> boundCoilIds;
if (startTime != null || endTime != null) {
boundCoilIds = iWmsDeliveryWaybillDetailService.getBoundCoilIdsByTimeRange(startTime, endTime);
} else {
boundCoilIds = iWmsDeliveryWaybillDetailService.getBoundCoilIds();
}
if (boundCoilIds == null || boundCoilIds.isEmpty()) {
return R.ok(new HashMap<>());
}
bo.setCoilIds(boundCoilIds.stream().map(String::valueOf).collect(Collectors.joining(",")));
return R.ok(iWmsMaterialCoilService.getStatistics(bo));
}
/**
* 根据负责人(principal)查询已发货绑定的钢卷列表
*/
@GetMapping("/coilListByPrincipal")
public List<WmsMaterialCoilVo> coilListByPrincipal(
@RequestParam(required = false) String principal) {
List<Long> boundCoilIds = iWmsDeliveryWaybillDetailService.getBoundCoilIdsByPrincipal(principal);
if (boundCoilIds == null || boundCoilIds.isEmpty()) {
return Collections.emptyList();
}
WmsMaterialCoilBo wmsMaterialCoilBo = new WmsMaterialCoilBo();
wmsMaterialCoilBo.setCoilIds(boundCoilIds.stream().map(String::valueOf).collect(Collectors.joining(",")));
return iWmsMaterialCoilService.queryList(wmsMaterialCoilBo);
}
}