优化进销存统计报表的查询速度

This commit is contained in:
季圣华
2021-12-07 22:47:06 +08:00
parent e7d7666b3d
commit 7d208afeba
3 changed files with 33 additions and 30 deletions

View File

@@ -1307,4 +1307,11 @@ where (ub.type='RoleFunctions') and r.tenant_id is not null;
alter table jsh_unit add other_unit_two varchar(50) DEFAULT NULL COMMENT '副单位2' after other_unit; alter table jsh_unit add other_unit_two varchar(50) DEFAULT NULL COMMENT '副单位2' after other_unit;
alter table jsh_unit add other_unit_three varchar(50) DEFAULT NULL COMMENT '副单位3' after other_unit_two; alter table jsh_unit add other_unit_three varchar(50) DEFAULT NULL COMMENT '副单位3' after other_unit_two;
alter table jsh_unit add ratio_two int(11) DEFAULT NULL COMMENT '比例2' after ratio; alter table jsh_unit add ratio_two int(11) DEFAULT NULL COMMENT '比例2' after ratio;
alter table jsh_unit add ratio_three int(11) DEFAULT NULL COMMENT '比例3' after ratio_two; alter table jsh_unit add ratio_three int(11) DEFAULT NULL COMMENT '比例3' after ratio_two;
-- --------------------------------------------------------
-- 时间 2021年12月07日
-- by jishenghua
-- 更新菜单名称-进货统计改为采购统计
-- --------------------------------------------------------
update jsh_function set name='采购统计' where name='进货统计';

View File

@@ -317,9 +317,10 @@ public class DepotItemController {
item.put("materialColor", diEx.getMColor()); item.put("materialColor", diEx.getMColor());
item.put("unitName", diEx.getMaterialUnit()); item.put("unitName", diEx.getMaterialUnit());
BigDecimal prevSum = depotItemService.getStockByParamWithDepotList(depotList,mId,null,timeA); BigDecimal prevSum = depotItemService.getStockByParamWithDepotList(depotList,mId,null,timeA);
BigDecimal inSum = depotItemService.getInNumByParamWithDepotList(depotList,mId,timeA,timeB); Map<String,BigDecimal> intervalMap = depotItemService.getIntervalMapByParamWithDepotList(depotList,mId,timeA,timeB);
BigDecimal outSum = depotItemService.getOutNumByParamWithDepotList(depotList,mId,timeA,timeB); BigDecimal inSum = intervalMap.get("inSum");
BigDecimal thisSum = depotItemService.getStockByParamWithDepotList(depotList,mId,null,timeB); BigDecimal outSum = intervalMap.get("outSum");
BigDecimal thisSum = prevSum.add(inSum).subtract(outSum);
item.put("prevSum", prevSum); item.put("prevSum", prevSum);
item.put("inSum", inSum); item.put("inSum", inSum);
item.put("outSum", outSum); item.put("outSum", outSum);
@@ -426,6 +427,7 @@ public class DepotItemController {
BigDecimal OutSum = depotItemService.buyOrSale("出库", "采购退货", diEx.getMId(), monthTime, "number"); BigDecimal OutSum = depotItemService.buyOrSale("出库", "采购退货", diEx.getMId(), monthTime, "number");
BigDecimal InSumPrice = depotItemService.buyOrSale("入库", "采购", diEx.getMId(), monthTime, "price"); BigDecimal InSumPrice = depotItemService.buyOrSale("入库", "采购", diEx.getMId(), monthTime, "price");
BigDecimal OutSumPrice = depotItemService.buyOrSale("出库", "采购退货", diEx.getMId(), monthTime, "price"); BigDecimal OutSumPrice = depotItemService.buyOrSale("出库", "采购退货", diEx.getMId(), monthTime, "price");
BigDecimal InOutSumPrice = InSumPrice.subtract(OutSumPrice);
item.put("barCode", diEx.getBarCode()); item.put("barCode", diEx.getBarCode());
item.put("materialName", diEx.getMName()); item.put("materialName", diEx.getMName());
item.put("materialModel", diEx.getMModel()); item.put("materialModel", diEx.getMModel());
@@ -440,6 +442,7 @@ public class DepotItemController {
item.put("outSum", OutSum); item.put("outSum", OutSum);
item.put("inSumPrice", InSumPrice); item.put("inSumPrice", InSumPrice);
item.put("outSumPrice", OutSumPrice); item.put("outSumPrice", OutSumPrice);
item.put("inOutSumPrice",InOutSumPrice);//实际采购金额
dataArray.add(item); dataArray.add(item);
} }
} }

View File

@@ -28,10 +28,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service @Service
public class DepotItemService { public class DepotItemService {
@@ -628,45 +625,41 @@ public class DepotItemService {
} }
/** /**
* 入库统计-多仓库 * 统计时间段内的入库和出库数量-多仓库
* @param depotList * @param depotList
* @param mId * @param mId
* @param beginTime * @param beginTime
* @param endTime * @param endTime
* @return * @return
*/ */
public BigDecimal getInNumByParamWithDepotList(List<Long> depotList, Long mId, String beginTime, String endTime){ public Map<String, BigDecimal> getIntervalMapByParamWithDepotList(List<Long> depotList, Long mId, String beginTime, String endTime){
Map<String,BigDecimal> intervalMap = new HashMap<>();
BigDecimal inSum = BigDecimal.ZERO;
BigDecimal outSum = BigDecimal.ZERO;
//盘点复盘后数量的变动
BigDecimal stockCheckSum = depotItemMapperEx.getStockCheckSumByDepotList(depotList, mId, beginTime, endTime);
DepotItemVo4Stock stockObj = depotItemMapperEx.getStockByParamWithDepotList(depotList, mId, beginTime, endTime); DepotItemVo4Stock stockObj = depotItemMapperEx.getStockByParamWithDepotList(depotList, mId, beginTime, endTime);
BigDecimal stockSum = BigDecimal.ZERO;
if(stockObj!=null) { if(stockObj!=null) {
BigDecimal inTotal = stockObj.getInTotal(); BigDecimal inTotal = stockObj.getInTotal();
BigDecimal transfInTotal = stockObj.getTransfInTotal(); BigDecimal transfInTotal = stockObj.getTransfInTotal();
BigDecimal assemInTotal = stockObj.getAssemInTotal(); BigDecimal assemInTotal = stockObj.getAssemInTotal();
BigDecimal disAssemInTotal = stockObj.getDisAssemInTotal(); BigDecimal disAssemInTotal = stockObj.getDisAssemInTotal();
stockSum = inTotal.add(transfInTotal).add(assemInTotal).add(disAssemInTotal); inSum = inTotal.add(transfInTotal).add(assemInTotal).add(disAssemInTotal);
}
return stockSum;
}
/**
* 出库统计-多仓库
* @param depotList
* @param mId
* @param beginTime
* @param endTime
* @return
*/
public BigDecimal getOutNumByParamWithDepotList(List<Long> 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(); BigDecimal outTotal = stockObj.getOutTotal();
BigDecimal transfOutTotal = stockObj.getTransfOutTotal(); BigDecimal transfOutTotal = stockObj.getTransfOutTotal();
BigDecimal assemOutTotal = stockObj.getAssemOutTotal(); BigDecimal assemOutTotal = stockObj.getAssemOutTotal();
BigDecimal disAssemOutTotal = stockObj.getDisAssemOutTotal(); BigDecimal disAssemOutTotal = stockObj.getDisAssemOutTotal();
stockSum = outTotal.subtract(transfOutTotal).subtract(assemOutTotal).subtract(disAssemOutTotal); outSum = outTotal.subtract(transfOutTotal).subtract(assemOutTotal).subtract(disAssemOutTotal);
} }
return stockSum; if(stockCheckSum.compareTo(BigDecimal.ZERO)>0) {
inSum = inSum.add(stockCheckSum);
} else {
//盘点复盘数量为负数代表出库
outSum = outSum.subtract(stockCheckSum);
}
intervalMap.put("inSum", inSum);
intervalMap.put("outSum", outSum);
return intervalMap;
} }
/** /**