Files
klp-oa/klp-wms/src/main/java/com/klp/controller/WmsRawMaterialController.java
Joshi 2df0bab257 feat(wms): 添加第二个表格统计功能
- 在 IWmsRawMaterialService 中新增 queryStatistics 方法用于统计原材料数据
- 在 WmsRawMaterialController 中添加 /statistics 接口端点
- 在 WmsRawMaterialMapper 中新增 selectStatistics 查询方法
- 在 XML 映射文件中实现统计查询的 SQL 语句
- 在服务实现类中完成统计逻辑,按厂家、材质、规格分组计算钢卷件数和重量
- 新增 ManufacturerStatisticsVo、MaterialStatisticsVo、SpecificationStatisticsVo 和 WmsRawMaterialStatisticsVo 数据传输对象
- 实现多层级数据聚合统计功能,包括厂家、材质、规格维度的数据汇总
2026-03-03 15:24:50 +08:00

140 lines
4.6 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.List;
import java.util.Arrays;
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.WmsRawMaterialVo;
import com.klp.domain.vo.dashboard.ManufacturerStatisticsVo;
import com.klp.domain.bo.WmsRawMaterialBo;
import com.klp.service.IWmsRawMaterialService;
import com.klp.common.core.page.TableDataInfo;
/**
* 原材料
*
* @author Joshi
* @date 2025-07-18
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/wms/rawMaterial")
public class WmsRawMaterialController extends BaseController {
private final IWmsRawMaterialService iWmsRawMaterialService;
/**
* 查询原材料列表
*/
@GetMapping("/list")
public TableDataInfo<WmsRawMaterialVo> list(WmsRawMaterialBo bo, PageQuery pageQuery) {
return iWmsRawMaterialService.queryPageList(bo, pageQuery);
}
/**
* 查询原材料列表带BOM信息
*/
@GetMapping("/listWithBom")
public TableDataInfo<WmsRawMaterialVo> listWithBom(WmsRawMaterialBo bo, PageQuery pageQuery) {
// 限制最大 pageSize 为 1000防止查询过多数据导致性能问题
if (pageQuery.getPageSize() != null && pageQuery.getPageSize() > 1000) {
pageQuery.setPageSize(1000);
}
return iWmsRawMaterialService.queryPageListWithBom(bo, pageQuery);
}
/**
* 导出原材料列表
*/
@Log(title = "原材料", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsRawMaterialBo bo, HttpServletResponse response) {
List<WmsRawMaterialVo> list = iWmsRawMaterialService.queryList(bo);
ExcelUtil.exportExcel(list, "原材料", WmsRawMaterialVo.class, response);
}
/**
* 获取原材料详细信息
*
* @param rawMaterialId 主键
*/
@GetMapping("/{rawMaterialId}")
public R<WmsRawMaterialVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long rawMaterialId) {
return R.ok(iWmsRawMaterialService.queryById(rawMaterialId));
}
/**
* 新增原材料
*/
@Log(title = "原材料", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<WmsRawMaterialBo> add(@Validated(AddGroup.class) @RequestBody WmsRawMaterialBo bo) {
return R.ok(iWmsRawMaterialService.insertByBo(bo));
}
/**
* 修改原材料
*/
@Log(title = "原材料", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsRawMaterialBo bo) {
return toAjax(iWmsRawMaterialService.updateByBo(bo));
}
/**
* 删除原材料
*
* @param rawMaterialIds 主键串
*/
@Log(title = "原材料", businessType = BusinessType.DELETE)
@DeleteMapping("/{rawMaterialIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] rawMaterialIds) {
return toAjax(iWmsRawMaterialService.deleteWithValidByIds(Arrays.asList(rawMaterialIds), true));
}
/**
* 查询原材料列表(含需求、库存、在途信息)
*/
@GetMapping("/listWithDemand")
public TableDataInfo<WmsRawMaterialVo> listWithDemand(WmsRawMaterialBo bo, PageQuery pageQuery) {
return iWmsRawMaterialService.queryPageListWithDemand(bo, pageQuery);
}
/**
* 新增原材料并自动创建BOM带默认属性
*/
@Log(title = "原材料", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/addWithBom")
public R<WmsRawMaterialBo> addWithBom(@Validated(AddGroup.class) @RequestBody WmsRawMaterialBo bo) {
return R.ok(iWmsRawMaterialService.insertByBo(bo));
}
/**
* 统计原材料按厂家、材质、规格的钢卷件数和重量
*/
@GetMapping("/statistics")
public R<List<ManufacturerStatisticsVo>> statistics() {
return R.ok(iWmsRawMaterialService.queryStatistics());
}
}