feat(wms): 新增材质异常钢卷查询功能
- 在IWmsMaterialCoilService中添加queryMaterialMismatchCoils方法定义 - 在WmsMaterialCoilController中新增查询材质异常钢卷的API接口 - 在WmsMaterialCoilMapper中添加selectMaterialMismatchCoilsPage分页查询方法 - 在WmsMaterialCoilMapper.xml中实现材质异常钢卷的SQL查询逻辑 - 在WmsMaterialCoilServiceImpl中实现材质异常钢卷查询的具体业务逻辑 - 通过关联查询优化性能,避免N+1问题并支持分页返回结果
This commit is contained in:
@@ -605,6 +605,19 @@ public class WmsMaterialCoilController extends BaseController {
|
||||
return R.ok(mismatchedCoils);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询材质异常的钢卷
|
||||
* 对比wms_material_coil.packing_status与wms_product.material或wms_raw_material.material
|
||||
* 返回材质不匹配的钢卷列表,用于数据异常排查
|
||||
*
|
||||
* @param pageQuery 分页参数
|
||||
* @return 材质异常的钢卷列表(分页)
|
||||
*/
|
||||
@GetMapping("/queryMaterialMismatchCoils")
|
||||
public TableDataInfo<WmsMaterialCoilVo> queryMaterialMismatchCoils(PageQuery pageQuery) {
|
||||
return iWmsMaterialCoilService.queryMaterialMismatchCoils(pageQuery);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.klp.mapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.klp.domain.WmsMaterialCoil;
|
||||
import com.klp.domain.vo.WmsMaterialCoilDeliveryExportVo;
|
||||
import com.klp.domain.vo.WmsMaterialCoilVo;
|
||||
@@ -112,5 +113,10 @@ List<WmsMaterialCoilDeliveryExportVo> selectDeliveryExportListByCoilIds(@Param("
|
||||
* @return 每个仓库的钢卷数量
|
||||
*/
|
||||
List<Map<String, Object>> selectWarehouseIdCount(@Param("list") List<Long> warehouseIds);
|
||||
|
||||
/**
|
||||
* 分页查询材质异常的钢卷
|
||||
*/
|
||||
IPage<WmsMaterialCoil> selectMaterialMismatchCoilsPage(IPage<WmsMaterialCoil> page);
|
||||
}
|
||||
|
||||
|
||||
@@ -275,5 +275,14 @@ public interface IWmsMaterialCoilService {
|
||||
* @return 不匹配的钢卷列表
|
||||
*/
|
||||
List<WmsMaterialCoilVo> queryMismatchedItemCoils();
|
||||
|
||||
/**
|
||||
* 查询材质异常的钢卷(packing_status与wms_product.material或wms_raw_material.material不匹配)
|
||||
* 通过itemType确定关联的表,对比packing_status和关联表的material字段
|
||||
*
|
||||
* @param pageQuery 分页参数
|
||||
* @return 材质异常的钢卷列表(分页)
|
||||
*/
|
||||
TableDataInfo<WmsMaterialCoilVo> queryMaterialMismatchCoils(PageQuery pageQuery);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.klp.common.core.domain.entity.SysUser;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
@@ -5163,5 +5164,27 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
return voList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询材质异常的钢卷(packing_status与wms_product.material或wms_raw_material.material不匹配)
|
||||
* 通过SQL关联查询优化性能,避免N+1问题
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<WmsMaterialCoilVo> queryMaterialMismatchCoils(PageQuery pageQuery) {
|
||||
IPage<WmsMaterialCoil> page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
|
||||
IPage<WmsMaterialCoil> result = baseMapper.selectMaterialMismatchCoilsPage(page);
|
||||
|
||||
List<WmsMaterialCoilVo> voList = new ArrayList<>();
|
||||
if (result.getRecords() != null && !result.getRecords().isEmpty()) {
|
||||
voList = result.getRecords().stream()
|
||||
.map(coil -> BeanUtil.toBean(coil, WmsMaterialCoilVo.class))
|
||||
.collect(Collectors.toList());
|
||||
fillRelatedObjectsBatch(voList);
|
||||
}
|
||||
|
||||
IPage<WmsMaterialCoilVo> voPage = new Page<>(result.getCurrent(), result.getSize(), result.getTotal());
|
||||
voPage.setRecords(voList);
|
||||
return TableDataInfo.build(voPage);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -936,5 +936,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
GROUP BY warehouse_id
|
||||
</select>
|
||||
|
||||
<!-- 分页查询材质异常的钢卷 -->
|
||||
<select id="selectMaterialMismatchCoilsPage" resultMap="WmsMaterialCoilResult">
|
||||
SELECT mc.*
|
||||
FROM wms_material_coil mc
|
||||
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id AND rm.del_flag = 0
|
||||
LEFT JOIN wms_product wp ON mc.item_type = 'product' AND mc.item_id = wp.product_id AND wp.del_flag = 0
|
||||
WHERE mc.del_flag = 0
|
||||
AND mc.item_id IS NOT NULL
|
||||
AND mc.item_type IS NOT NULL
|
||||
AND mc.packing_status IS NOT NULL
|
||||
AND (
|
||||
(mc.item_type = 'raw_material' AND rm.material IS NOT NULL AND mc.packing_status != rm.material)
|
||||
OR
|
||||
(mc.item_type = 'product' AND wp.material IS NOT NULL AND mc.packing_status != wp.material)
|
||||
)
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user