From d4a5fa7944c89d8455b26cd5c9e8b9fdabd95a96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A3=E5=9C=A3=E5=8D=8E?= <752718920@qq.com> Date: Wed, 23 Nov 2022 01:10:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=8D=95=E6=8D=AE=E7=9A=84?= =?UTF-8?q?=E9=A2=9D=E6=9F=A5=E8=AF=A2=E5=88=97=E8=A1=A8=E7=9A=84=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E6=8F=90=E9=AB=98=E6=9F=A5=E8=AF=A2=E9=80=9F?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/mappers/DepotHeadMapperEx.java | 9 ++-- .../service/depotHead/DepotHeadService.java | 52 ++++++++++++++++--- .../mapper_xml/DepotHeadMapperEx.xml | 12 +++-- 3 files changed, 57 insertions(+), 16 deletions(-) diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperEx.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperEx.java index 288c1f42..5ec41089 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperEx.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperEx.java @@ -1,10 +1,7 @@ package com.jsh.erp.datasource.mappers; import com.jsh.erp.datasource.entities.DepotHead; -import com.jsh.erp.datasource.vo.DepotHeadVo4InDetail; -import com.jsh.erp.datasource.vo.DepotHeadVo4InOutMCount; -import com.jsh.erp.datasource.vo.DepotHeadVo4List; -import com.jsh.erp.datasource.vo.DepotHeadVo4StatementAccount; +import com.jsh.erp.datasource.vo.*; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; @@ -230,8 +227,8 @@ public interface DepotHeadMapperEx { @Param("materialParam") String materialParam, @Param("depotArray") String[] depotArray); - BigDecimal getFinishDepositByNumber( - @Param("number") String number); + List getFinishDepositByNumberList( + @Param("numberList") List numberList); BigDecimal getFinishDepositByNumberExceptCurrent( @Param("linkNumber") String linkNumber, diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java index 31e9349b..f96a38e1 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java @@ -7,10 +7,7 @@ import com.jsh.erp.datasource.entities.*; import com.jsh.erp.datasource.mappers.DepotHeadMapper; import com.jsh.erp.datasource.mappers.DepotHeadMapperEx; import com.jsh.erp.datasource.mappers.DepotItemMapperEx; -import com.jsh.erp.datasource.vo.DepotHeadVo4InDetail; -import com.jsh.erp.datasource.vo.DepotHeadVo4InOutMCount; -import com.jsh.erp.datasource.vo.DepotHeadVo4List; -import com.jsh.erp.datasource.vo.DepotHeadVo4StatementAccount; +import com.jsh.erp.datasource.vo.*; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; import com.jsh.erp.service.account.AccountService; @@ -125,6 +122,15 @@ public class DepotHeadService { list=depotHeadMapperEx.selectByConditionDepotHead(type, subType, creatorArray, hasDebt, statusArray, purchaseStatusArray, number, linkNumber, beginTime, endTime, materialParam, organId, organArray, creator, depotId, depotArray, accountId, remark, offset, rows); if (null != list) { + List idList = new ArrayList<>(); + List numberList = new ArrayList<>(); + for (DepotHeadVo4List dh : list) { + idList.add(dh.getId()); + numberList.add(dh.getNumber()); + } + //通过批量查询去构造map + Map finishDepositMap = getFinishDepositMapByNumberList(numberList); + Map billSizeMap = getBillSizeMapByLinkNumberList(numberList); for (DepotHeadVo4List dh : list) { if(accountMap!=null && StringUtil.isNotEmpty(dh.getAccountIdList()) && StringUtil.isNotEmpty(dh.getAccountMoneyList())) { String accountStr = accountService.getAccountStrByIdAndMoney(accountMap, dh.getAccountIdList(), dh.getAccountMoneyList()); @@ -147,7 +153,7 @@ public class DepotHeadService { if(dh.getDeposit() == null) { dh.setDeposit(BigDecimal.ZERO); } - dh.setFinishDeposit(depotHeadMapperEx.getFinishDepositByNumber(dh.getNumber())); + dh.setFinishDeposit(finishDepositMap.get(dh.getNumber())); //欠款计算 BigDecimal discountLastMoney = dh.getDiscountLastMoney()!=null?dh.getDiscountLastMoney():BigDecimal.ZERO; BigDecimal otherMoney = dh.getOtherMoney()!=null?dh.getOtherMoney():BigDecimal.ZERO; @@ -157,8 +163,10 @@ public class DepotHeadService { int financialBillNoSize = accountHeadService.getFinancialBillNoByBillId(dh.getId()).size(); dh.setHasFinancialFlag(financialBillNoSize>0); //是否有退款单 - int billListSize = getBillListByLinkNumber(dh.getNumber()).size(); - dh.setHasBackFlag(billListSize>0); + if(billSizeMap!=null) { + Integer billListSize = billSizeMap.get(dh.getNumber()); + dh.setHasBackFlag(billListSize!=null && billListSize>0); + } if(StringUtil.isNotEmpty(dh.getSalesMan())) { dh.setSalesManStr(personService.getPersonByMapAndIds(personMap,dh.getSalesMan())); } @@ -283,6 +291,24 @@ public class DepotHeadService { return creator; } + public Map getFinishDepositMapByNumberList(List numberList) { + List list = depotHeadMapperEx.getFinishDepositByNumberList(numberList); + Map finishDepositMap = new HashMap<>(); + for(FinishDepositVo finishDepositVo : list){ + finishDepositMap.put(finishDepositVo.getNumber(), finishDepositVo.getFinishDeposit()); + } + return finishDepositMap; + } + + public Map getBillSizeMapByLinkNumberList(List numberList) throws Exception { + List list = getBillListByLinkNumberList(numberList); + Map billListMap = new HashMap<>(); + for(DepotHead depotHead : list){ + billListMap.put(depotHead.getLinkNumber(), list.size()); + } + return billListMap; + } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) public int insertDepotHead(JSONObject obj, HttpServletRequest request)throws Exception { DepotHead depotHead = JSONObject.parseObject(obj.toJSONString(), DepotHead.class); @@ -768,6 +794,18 @@ public class DepotHeadService { return depotHeadMapper.selectByExample(example); } + /** + * 根据原单号查询关联的单据列表(批量) + * @param linkNumberList + * @return + * @throws Exception + */ + public List getBillListByLinkNumberList(List linkNumberList)throws Exception { + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andLinkNumberIn(linkNumberList).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + return depotHeadMapper.selectByExample(example); + } + /** * 根据原单号查询关联的单据列表 * @param linkNumber diff --git a/jshERP-boot/src/main/resources/mapper_xml/DepotHeadMapperEx.xml b/jshERP-boot/src/main/resources/mapper_xml/DepotHeadMapperEx.xml index 831ef3cf..b24206ac 100644 --- a/jshERP-boot/src/main/resources/mapper_xml/DepotHeadMapperEx.xml +++ b/jshERP-boot/src/main/resources/mapper_xml/DepotHeadMapperEx.xml @@ -954,10 +954,16 @@ order by dh.oper_time desc - + select dh.link_number number, ifnull(sum(dh.deposit),0) finishDeposit from jsh_depot_head dh - where dh.link_number=#{number} + where 1=1 + + and dh.link_number in + + #{item} + + and ifnull(dh.delete_flag,'0') !='1'