优化商品库存查询接口

This commit is contained in:
季圣华
2021-11-25 01:14:00 +08:00
parent de53f2eb3a
commit 61b40f4726
4 changed files with 45 additions and 22 deletions

View File

@@ -592,7 +592,7 @@ public class MaterialController {
* 商品库存查询 * 商品库存查询
* @param currentPage * @param currentPage
* @param pageSize * @param pageSize
* @param depotId * @param depotIds
* @param categoryId * @param categoryId
* @param materialParam * @param materialParam
* @param mpList * @param mpList
@@ -606,7 +606,7 @@ public class MaterialController {
@ApiOperation(value = "商品库存查询") @ApiOperation(value = "商品库存查询")
public BaseResponseInfo getListWithStock(@RequestParam("currentPage") Integer currentPage, public BaseResponseInfo getListWithStock(@RequestParam("currentPage") Integer currentPage,
@RequestParam("pageSize") Integer pageSize, @RequestParam("pageSize") Integer pageSize,
@RequestParam(value = "depotId", required = false) Long depotId, @RequestParam(value = "depotIds", required = false) String depotIds,
@RequestParam(value = "categoryId", required = false) Long categoryId, @RequestParam(value = "categoryId", required = false) Long categoryId,
@RequestParam("materialParam") String materialParam, @RequestParam("materialParam") String materialParam,
@RequestParam("zeroStock") Integer zeroStock, @RequestParam("zeroStock") Integer zeroStock,
@@ -618,13 +618,24 @@ public class MaterialController {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
try { try {
List<Long> idList = new ArrayList<>(); List<Long> idList = new ArrayList<>();
List<Long> depotList = new ArrayList<>();
if(categoryId != null){ if(categoryId != null){
idList = materialService.getListByParentId(categoryId); idList = materialService.getListByParentId(categoryId);
} }
List<MaterialVo4Unit> dataList = materialService.getListWithStock(depotId, idList, StringUtil.toNull(materialParam), zeroStock, if(StringUtil.isNotEmpty(depotIds)) {
depotList = StringUtil.strToLongList(depotIds);
} else {
//未选择仓库时默认为当前用户有权限的仓库
JSONArray depotArr = depotService.findDepotByCurrentUser();
for(Object obj: depotArr) {
JSONObject object = JSONObject.parseObject(obj.toString());
depotList.add(object.getLong("id"));
}
}
List<MaterialVo4Unit> dataList = materialService.getListWithStock(depotList, idList, StringUtil.toNull(materialParam), zeroStock,
StringUtil.safeSqlParse(column), StringUtil.safeSqlParse(order), (currentPage-1)*pageSize, pageSize); StringUtil.safeSqlParse(column), StringUtil.safeSqlParse(order), (currentPage-1)*pageSize, pageSize);
int total = materialService.getListWithStockCount(depotId, idList, StringUtil.toNull(materialParam), zeroStock); int total = materialService.getListWithStockCount(depotList, idList, StringUtil.toNull(materialParam), zeroStock);
MaterialVo4Unit materialVo4Unit= materialService.getTotalStockAndPrice(depotId, idList, StringUtil.toNull(materialParam)); MaterialVo4Unit materialVo4Unit= materialService.getTotalStockAndPrice(depotList, idList, StringUtil.toNull(materialParam));
map.put("total", total); map.put("total", total);
map.put("currentStock", materialVo4Unit.getCurrentStock()); map.put("currentStock", materialVo4Unit.getCurrentStock());
map.put("currentStockPrice", materialVo4Unit.getCurrentStockPrice()); map.put("currentStockPrice", materialVo4Unit.getCurrentStockPrice());

View File

@@ -89,7 +89,7 @@ public interface MaterialMapperEx {
List<MaterialVo4Unit> getMaterialByBarCode(@Param("barCodeArray") String [] barCodeArray); List<MaterialVo4Unit> getMaterialByBarCode(@Param("barCodeArray") String [] barCodeArray);
List<MaterialVo4Unit> getListWithStock( List<MaterialVo4Unit> getListWithStock(
@Param("depotId") Long depotId, @Param("depotList") List<Long> depotList,
@Param("idList") List<Long> idList, @Param("idList") List<Long> idList,
@Param("materialParam") String materialParam, @Param("materialParam") String materialParam,
@Param("zeroStock") Integer zeroStock, @Param("zeroStock") Integer zeroStock,
@@ -99,13 +99,13 @@ public interface MaterialMapperEx {
@Param("rows") Integer rows); @Param("rows") Integer rows);
int getListWithStockCount( int getListWithStockCount(
@Param("depotId") Long depotId, @Param("depotList") List<Long> depotList,
@Param("idList") List<Long> idList, @Param("idList") List<Long> idList,
@Param("materialParam") String materialParam, @Param("materialParam") String materialParam,
@Param("zeroStock") Integer zeroStock); @Param("zeroStock") Integer zeroStock);
MaterialVo4Unit getTotalStockAndPrice( MaterialVo4Unit getTotalStockAndPrice(
@Param("depotId") Long depotId, @Param("depotList") List<Long> depotList,
@Param("idList") List<Long> idList, @Param("idList") List<Long> idList,
@Param("materialParam") String materialParam); @Param("materialParam") String materialParam);

View File

@@ -872,17 +872,17 @@ public class MaterialService {
return materialMapperEx.getMaterialByBarCode(barCodeArray); return materialMapperEx.getMaterialByBarCode(barCodeArray);
} }
public List<MaterialVo4Unit> getListWithStock(Long depotId, List<Long> idList, String materialParam, Integer zeroStock, public List<MaterialVo4Unit> getListWithStock(List<Long> depotList, List<Long> idList, String materialParam, Integer zeroStock,
String column, String order, Integer offset, Integer rows) { String column, String order, Integer offset, Integer rows) {
return materialMapperEx.getListWithStock(depotId, idList, materialParam, zeroStock, column, order, offset, rows); return materialMapperEx.getListWithStock(depotList, idList, materialParam, zeroStock, column, order, offset, rows);
} }
public int getListWithStockCount(Long depotId, List<Long> idList, String materialParam, Integer zeroStock) { public int getListWithStockCount(List<Long> depotList, List<Long> idList, String materialParam, Integer zeroStock) {
return materialMapperEx.getListWithStockCount(depotId, idList, materialParam, zeroStock); return materialMapperEx.getListWithStockCount(depotList, idList, materialParam, zeroStock);
} }
public MaterialVo4Unit getTotalStockAndPrice(Long depotId, List<Long> idList, String materialParam) { public MaterialVo4Unit getTotalStockAndPrice(List<Long> depotList, List<Long> idList, String materialParam) {
return materialMapperEx.getTotalStockAndPrice(depotId, idList, materialParam); return materialMapperEx.getTotalStockAndPrice(depotList, idList, materialParam);
} }
@Transactional(value = "transactionManager", rollbackFor = Exception.class) @Transactional(value = "transactionManager", rollbackFor = Exception.class)

View File

@@ -339,8 +339,11 @@
select m.*, me.commodity_unit unitName, mc.name categoryName, me.bar_code, select m.*, me.commodity_unit unitName, mc.name categoryName, me.bar_code,
ifnull(me.purchase_decimal,0) purchase_decimal, ifnull(me.purchase_decimal,0) purchase_decimal,
(select ifnull(sum(mis.number),0) from jsh_material_initial_stock mis where mis.material_id = m.id (select ifnull(sum(mis.number),0) from jsh_material_initial_stock mis where mis.material_id = m.id
<if test="depotId != null"> <if test="depotList.size()>0">
and mis.depot_id = #{depotId} and mis.depot_id in
<foreach collection="depotList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if> </if>
) initialStock, ) initialStock,
ifnull(sum(mcs.current_number),0) currentStock, ifnull(sum(mcs.current_number),0) currentStock,
@@ -352,8 +355,11 @@
left JOIN jsh_material_category mc on m.category_id = mc.id and ifnull(mc.delete_Flag,'0') !='1' left JOIN jsh_material_category mc on m.category_id = mc.id and ifnull(mc.delete_Flag,'0') !='1'
where 1=1 where 1=1
and me.default_flag=1 and me.default_flag=1
<if test="depotId != null"> <if test="depotList.size()>0">
and mcs.depot_id = #{depotId} and mcs.depot_id in
<foreach collection="depotList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if> </if>
<if test="idList.size()>0"> <if test="idList.size()>0">
and m.category_id in and m.category_id in
@@ -390,8 +396,11 @@
left JOIN jsh_material_category mc on m.category_id = mc.id and ifnull(mc.delete_Flag,'0') !='1' left JOIN jsh_material_category mc on m.category_id = mc.id and ifnull(mc.delete_Flag,'0') !='1'
where 1=1 where 1=1
and me.default_flag=1 and me.default_flag=1
<if test="depotId != null"> <if test="depotList.size()>0">
and mcs.depot_id = #{depotId} and mcs.depot_id in
<foreach collection="depotList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if> </if>
<if test="idList.size()>0"> <if test="idList.size()>0">
and m.category_id in and m.category_id in
@@ -422,8 +431,11 @@
left JOIN jsh_material_category mc on m.category_id = mc.id and ifnull(mc.delete_Flag,'0') !='1' left JOIN jsh_material_category mc on m.category_id = mc.id and ifnull(mc.delete_Flag,'0') !='1'
where 1=1 where 1=1
and me.default_flag=1 and me.default_flag=1
<if test="depotId != null"> <if test="depotList.size()>0">
and mcs.depot_id = #{depotId} and mcs.depot_id in
<foreach collection="depotList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</if> </if>
<if test="idList.size()>0"> <if test="idList.size()>0">
and m.category_id in and m.category_id in