diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java index 0e50b583..f533e547 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java @@ -124,7 +124,7 @@ public class DepotItemController { @GetMapping(value = "/findStockByDepotAndBarCode") @ApiOperation(value = "根据商品条码和仓库id查询库存数量") public BaseResponseInfo findStockByDepotAndBarCode( - @RequestParam("depotId") Long depotId, + @RequestParam(value = "depotId",required = false) Long depotId, @RequestParam("barCode") String barCode, HttpServletRequest request) throws Exception{ BaseResponseInfo res = new BaseResponseInfo(); @@ -286,7 +286,7 @@ public class DepotItemController { @RequestParam("mpList") String mpList, HttpServletRequest request)throws Exception { BaseResponseInfo res = new BaseResponseInfo(); - Map map = new HashMap(); + Map map = new HashMap<>(); try { String timeA = Tools.firstDayOfMonth(monthTime) + BusinessConstants.DAY_FIRST_TIME; String timeB = Tools.lastDayOfMonth(monthTime) + BusinessConstants.DAY_LAST_TIME; @@ -299,7 +299,7 @@ public class DepotItemController { //存放数据json数组 JSONArray dataArray = new JSONArray(); if (null != dataList) { - List idList = new ArrayList(); + List idList = new ArrayList<>(); for (DepotItemVo4WithInfoEx m : dataList) { idList.add(m.getMId()); } @@ -316,20 +316,10 @@ public class DepotItemController { item.put("materialOther", materialOther); item.put("materialColor", diEx.getMColor()); item.put("unitName", diEx.getMaterialUnit()); - BigDecimal prevSum = BigDecimal.ZERO; - BigDecimal inSum = BigDecimal.ZERO; - BigDecimal outSum = BigDecimal.ZERO; - BigDecimal thisSum = BigDecimal.ZERO; - for(Long depotId: depotList) { - BigDecimal prevSumStock = depotItemService.getStockByParam(depotId,mId,null,timeA); - BigDecimal inSumStock = depotItemService.getInNumByParam(depotId,mId,timeA,timeB); - BigDecimal outSumStock = depotItemService.getOutNumByParam(depotId,mId,timeA,timeB); - BigDecimal thisSumStock = depotItemService.getStockByParam(depotId,mId,null,timeB); - prevSum = prevSum.add(prevSumStock); - inSum = inSum.add(inSumStock); - outSum = outSum.add(outSumStock); - thisSum = thisSum.add(thisSumStock); - } + BigDecimal prevSum = depotItemService.getStockByParamWithDepotList(depotList,mId,null,timeA); + BigDecimal inSum = depotItemService.getInNumByParamWithDepotList(depotList,mId,timeA,timeB); + BigDecimal outSum = depotItemService.getOutNumByParamWithDepotList(depotList,mId,timeA,timeB); + BigDecimal thisSum = depotItemService.getStockByParamWithDepotList(depotList,mId,null,timeB); item.put("prevSum", prevSum); item.put("inSum", inSum); item.put("outSum", outSum); @@ -371,7 +361,7 @@ public class DepotItemController { @RequestParam("materialParam") String materialParam, HttpServletRequest request) throws Exception{ BaseResponseInfo res = new BaseResponseInfo(); - Map map = new HashMap(); + Map map = new HashMap<>(); try { String endTime = Tools.lastDayOfMonth(monthTime) + BusinessConstants.DAY_LAST_TIME; List depotList = StringUtil.strToLongList(depotIds); @@ -381,11 +371,7 @@ public class DepotItemController { if (null != dataList) { for (DepotItemVo4WithInfoEx diEx : dataList) { Long mId = diEx.getMId(); - BigDecimal thisSum = BigDecimal.ZERO; - for(Long depotId: depotList) { - BigDecimal thisSumStock = depotItemService.getStockByParam(depotId,mId,null,endTime); - thisSum = thisSum.add(thisSumStock); - } + BigDecimal thisSum = depotItemService.getStockByParamWithDepotList(depotList,mId,null,endTime); BigDecimal unitPrice = diEx.getPurchaseDecimal(); if(unitPrice == null) { unitPrice = BigDecimal.ZERO; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java index ba9f0176..bac6adc9 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java @@ -78,8 +78,8 @@ public interface DepotItemMapperEx { @Param("beginTime") String beginTime, @Param("endTime") String endTime); - BigDecimal getStockCheckSum( - @Param("depotId") Long depotId, + BigDecimal getStockCheckSumByDepotList( + @Param("depotList") List depotList, @Param("mId") Long mId, @Param("beginTime") String beginTime, @Param("endTime") String endTime); @@ -90,8 +90,8 @@ public interface DepotItemMapperEx { @Param("beginTime") String beginTime, @Param("endTime") String endTime); - DepotItemVo4Stock getStockByParam( - @Param("depotId") Long depotId, + DepotItemVo4Stock getStockByParamWithDepotList( + @Param("depotList") List depotList, @Param("mId") Long mId, @Param("beginTime") String beginTime, @Param("endTime") String endTime); @@ -104,12 +104,6 @@ public interface DepotItemMapperEx { */ List findDepotItemListBydepotheadId(@Param("depotheadId")Long depotheadId, @Param("enableSerialNumber")String enableSerialNumber); - /** - * 根据单据主表id删除单据子表数据 - * 物理删除,已弃用 - * */ - @Deprecated - int deleteDepotItemByDepotHeadIds(@Param("depotheadIds")Long []depotHeadIds); /** * 根据单据主表id删除单据子表数据 * */ diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java index 24515bd7..f10269e2 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java @@ -28,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @@ -581,7 +582,7 @@ public class DepotItemService { } /** - * 库存统计 + * 库存统计-单仓库 * @param depotId * @param mId * @param beginTime @@ -589,11 +590,27 @@ public class DepotItemService { * @return */ public BigDecimal getStockByParam(Long depotId, Long mId, String beginTime, String endTime){ + List depotList = new ArrayList<>(); + if(depotId != null) { + depotList.add(depotId); + } + return getStockByParamWithDepotList(depotList, mId, beginTime, endTime); + } + + /** + * 库存统计-多仓库 + * @param depotList + * @param mId + * @param beginTime + * @param endTime + * @return + */ + public BigDecimal getStockByParamWithDepotList(List depotList, Long mId, String beginTime, String endTime){ //初始库存 - BigDecimal initStock = materialService.getInitStockByMid(depotId, mId); + BigDecimal initStock = materialService.getInitStockByMidAndDepotList(depotList, mId); //盘点复盘后数量的变动 - BigDecimal stockCheckSum = depotItemMapperEx.getStockCheckSum(depotId, mId, beginTime, endTime); - DepotItemVo4Stock stockObj = depotItemMapperEx.getStockByParam(depotId, mId, beginTime, endTime); + BigDecimal stockCheckSum = depotItemMapperEx.getStockCheckSumByDepotList(depotList, mId, beginTime, endTime); + DepotItemVo4Stock stockObj = depotItemMapperEx.getStockByParamWithDepotList(depotList, mId, beginTime, endTime); BigDecimal stockSum = BigDecimal.ZERO; if(stockObj!=null) { BigDecimal inTotal = stockObj.getInTotal(); @@ -611,15 +628,15 @@ public class DepotItemService { } /** - * 入库统计 - * @param depotId + * 入库统计-多仓库 + * @param depotList * @param mId * @param beginTime * @param endTime * @return */ - public BigDecimal getInNumByParam(Long depotId, Long mId, String beginTime, String endTime){ - DepotItemVo4Stock stockObj = depotItemMapperEx.getStockByParam(depotId, mId, beginTime, endTime); + public BigDecimal getInNumByParamWithDepotList(List depotList, Long mId, String beginTime, String endTime){ + DepotItemVo4Stock stockObj = depotItemMapperEx.getStockByParamWithDepotList(depotList, mId, beginTime, endTime); BigDecimal stockSum = BigDecimal.ZERO; if(stockObj!=null) { BigDecimal inTotal = stockObj.getInTotal(); @@ -632,15 +649,15 @@ public class DepotItemService { } /** - * 出库统计 - * @param depotId + * 出库统计-多仓库 + * @param depotList * @param mId * @param beginTime * @param endTime * @return */ - public BigDecimal getOutNumByParam(Long depotId, Long mId, String beginTime, String endTime){ - DepotItemVo4Stock stockObj = depotItemMapperEx.getStockByParam(depotId, mId, beginTime, endTime); + public BigDecimal getOutNumByParamWithDepotList(List depotList, Long mId, String beginTime, String endTime){ + DepotItemVo4Stock stockObj = depotItemMapperEx.getStockByParamWithDepotList(depotList, mId, beginTime, endTime); BigDecimal stockSum = BigDecimal.ZERO; if(stockObj!=null) { BigDecimal outTotal = stockObj.getOutTotal(); diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/material/MaterialService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/material/MaterialService.java index f68bec9a..cad6994c 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/material/MaterialService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/material/MaterialService.java @@ -762,15 +762,16 @@ public class MaterialService { } /** - * 根据商品获取初始库存,仓库为空的时候查全部库存 + * 根据商品获取初始库存-多仓库 + * @param depotList * @param materialId * @return */ - public BigDecimal getInitStockByMid(Long depotId, Long materialId) { + public BigDecimal getInitStockByMidAndDepotList(List depotList, Long materialId) { BigDecimal stock = BigDecimal.ZERO; MaterialInitialStockExample example = new MaterialInitialStockExample(); - if(depotId!=null) { - example.createCriteria().andMaterialIdEqualTo(materialId).andDepotIdEqualTo(depotId) + if(depotList!=null && depotList.size()>0) { + example.createCriteria().andMaterialIdEqualTo(materialId).andDepotIdIn(depotList) .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); } else { example.createCriteria().andMaterialIdEqualTo(materialId) diff --git a/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml b/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml index 6029219b..67265b97 100644 --- a/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml +++ b/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml @@ -273,7 +273,7 @@ and ifnull(dh.delete_flag,'0') !='1' - select ifnull(sum(di.basic_number),0) stockCheckSum from jsh_depot_head dh left JOIN jsh_depot_item di on dh.id=di.header_id where 1=1 @@ -281,8 +281,11 @@ and di.material_id=#{mId} and dh.sub_type='盘点复盘' - - and di.depot_id=#{depotId} + + and di.depot_id in + + #{item} + and dh.oper_time >= #{beginTime} @@ -319,16 +322,22 @@ - select - sum(case when dh.type='入库' and di.depot_id=#{depotId} then di.basic_number else 0 end) as inTotal, - sum(case when dh.type='出库' and dh.sub_type!='调拨' and di.depot_id=#{depotId} then di.basic_number else 0 end) as outTotal, - sum(case when dh.sub_type='调拨' and di.another_depot_id=#{depotId} then di.basic_number else 0 end) as transfInTotal, - sum(case when dh.sub_type='调拨' and di.depot_id=#{depotId} then di.basic_number else 0 end) as transfOutTotal, - sum(case when dh.sub_type='组装单' and di.material_type='组合件' and di.depot_id=#{depotId} then di.basic_number else 0 end) as assemInTotal, - sum(case when dh.sub_type='组装单' and di.material_type='普通子件' and di.depot_id=#{depotId} then di.basic_number else 0 end) as assemOutTotal, - sum(case when dh.sub_type='拆卸单' and di.material_type='普通子件' and di.depot_id=#{depotId} then di.basic_number else 0 end) as disAssemInTotal, - sum(case when dh.sub_type='拆卸单' and di.material_type='组合件' and di.depot_id=#{depotId} then di.basic_number else 0 end) as disAssemOutTotal + sum(case when dh.type='入库' then di.basic_number else 0 end) as inTotal, + sum(case when dh.type='出库' and dh.sub_type!='调拨' then di.basic_number else 0 end) as outTotal, + sum(case when dh.sub_type='调拨' then di.basic_number else 0 end) as transfInTotal, + sum(case when dh.sub_type='调拨' then di.basic_number else 0 end) as transfOutTotal, + sum(case when dh.sub_type='组装单' and di.material_type='组合件' then di.basic_number else 0 end) as assemInTotal, + sum(case when dh.sub_type='组装单' and di.material_type='普通子件' then di.basic_number else 0 end) as assemOutTotal, + sum(case when dh.sub_type='拆卸单' and di.material_type='普通子件' then di.basic_number else 0 end) as disAssemInTotal, + sum(case when dh.sub_type='拆卸单' and di.material_type='组合件' then di.basic_number else 0 end) as disAssemOutTotal from jsh_depot_head dh left join jsh_depot_item di on dh.id=di.header_id and ifnull(di.delete_flag,'0') !='1' @@ -362,17 +371,6 @@ and ifnull(mat.delete_flag,'0') !='1' - - delete from jsh_depot_item - where 1=1 - and header_id in - ( - - #{depotheadId} - - ) - - update jsh_depot_item set delete_flag='1'