From 43111edc5468e04825eaec8cdc8db2b0e7635057 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 23:34:43 +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=EF=BC=88=E7=BB=A7=E7=BB=AD=E4=BC=98=E5=8C=96=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mappers/AccountHeadMapperEx.java | 4 + .../datasource/mappers/DepotHeadMapperEx.java | 8 +- .../erp/datasource/vo/FinishDepositVo.java | 52 ++++----- .../erp/datasource/vo/MaterialCountVo.java | 26 +++++ .../erp/datasource/vo/MaterialsListVo.java | 24 +++++ .../accountHead/AccountHeadService.java | 4 + .../service/depotHead/DepotHeadService.java | 101 +++++++++++++----- .../mapper_xml/AccountHeadMapperEx.xml | 15 ++- .../mapper_xml/DepotHeadMapperEx.xml | 27 +++-- 9 files changed, 195 insertions(+), 66 deletions(-) create mode 100644 jshERP-boot/src/main/java/com/jsh/erp/datasource/vo/MaterialCountVo.java create mode 100644 jshERP-boot/src/main/java/com/jsh/erp/datasource/vo/MaterialsListVo.java diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/AccountHeadMapperEx.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/AccountHeadMapperEx.java index 8e18a2a1..2067d946 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/AccountHeadMapperEx.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/AccountHeadMapperEx.java @@ -3,6 +3,7 @@ package com.jsh.erp.datasource.mappers; import com.jsh.erp.datasource.entities.AccountHead; import com.jsh.erp.datasource.entities.AccountHeadExample; import com.jsh.erp.datasource.entities.AccountHeadVo4ListEx; +import com.jsh.erp.datasource.entities.AccountItem; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; @@ -58,6 +59,9 @@ public interface AccountHeadMapperEx { List getAccountHeadListByHandsPersonIds(@Param("handsPersonIds") String[] handsPersonIds); + List getFinancialBillNoByBillIdList( + @Param("idList") List idList); + List getFinancialBillNoByBillId( @Param("billId") Long billId); } \ No newline at end of file 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 5ec41089..c2c6d639 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 @@ -57,11 +57,11 @@ public interface DepotHeadMapperEx { @Param("accountId") Long accountId, @Param("remark") String remark); - String findMaterialsListByHeaderId( - @Param("id") Long id); + List findMaterialsListMapByHeaderIdList( + @Param("idList") List idList); - BigDecimal getMaterialCountByHeaderId( - @Param("id") Long id); + List getMaterialCountListByHeaderIdList( + @Param("idList") List idList); List findInOutDetail( @Param("beginTime") String beginTime, diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/vo/FinishDepositVo.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/vo/FinishDepositVo.java index e0d61ace..1124aa37 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/vo/FinishDepositVo.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/vo/FinishDepositVo.java @@ -1,26 +1,26 @@ -package com.jsh.erp.datasource.vo; - -import java.math.BigDecimal; - -public class FinishDepositVo { - - private String number; - - private BigDecimal finishDeposit; - - public String getNumber() { - return number; - } - - public void setNumber(String number) { - this.number = number; - } - - public BigDecimal getFinishDeposit() { - return finishDeposit; - } - - public void setFinishDeposit(BigDecimal finishDeposit) { - this.finishDeposit = finishDeposit; - } -} +package com.jsh.erp.datasource.vo; + +import java.math.BigDecimal; + +public class FinishDepositVo { + + private String number; + + private BigDecimal finishDeposit; + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public BigDecimal getFinishDeposit() { + return finishDeposit; + } + + public void setFinishDeposit(BigDecimal finishDeposit) { + this.finishDeposit = finishDeposit; + } +} diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/vo/MaterialCountVo.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/vo/MaterialCountVo.java new file mode 100644 index 00000000..f559793c --- /dev/null +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/vo/MaterialCountVo.java @@ -0,0 +1,26 @@ +package com.jsh.erp.datasource.vo; + +import java.math.BigDecimal; + +public class MaterialCountVo { + + private Long headerId; + + private BigDecimal materialCount; + + public Long getHeaderId() { + return headerId; + } + + public void setHeaderId(Long headerId) { + this.headerId = headerId; + } + + public BigDecimal getMaterialCount() { + return materialCount; + } + + public void setMaterialCount(BigDecimal materialCount) { + this.materialCount = materialCount; + } +} diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/vo/MaterialsListVo.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/vo/MaterialsListVo.java new file mode 100644 index 00000000..4092f904 --- /dev/null +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/vo/MaterialsListVo.java @@ -0,0 +1,24 @@ +package com.jsh.erp.datasource.vo; + +public class MaterialsListVo { + + private Long headerId; + + private String materialsList; + + public Long getHeaderId() { + return headerId; + } + + public void setHeaderId(Long headerId) { + this.headerId = headerId; + } + + public String getMaterialsList() { + return materialsList; + } + + public void setMaterialsList(String materialsList) { + this.materialsList = materialsList; + } +} diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/accountHead/AccountHeadService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/accountHead/AccountHeadService.java index db634328..347a8896 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/accountHead/AccountHeadService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/accountHead/AccountHeadService.java @@ -402,6 +402,10 @@ public class AccountHeadService { return resList; } + public List getFinancialBillNoByBillIdList(List idList) { + return accountHeadMapperEx.getFinancialBillNoByBillIdList(idList); + } + public List getFinancialBillNoByBillId(Long billId) { return accountHeadMapperEx.getFinancialBillNoByBillId(billId); } 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 f96a38e1..db9144ec 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 @@ -108,7 +108,6 @@ public class DepotHeadService { public List select(String type, String subType, String roleType, String hasDebt, String status, String purchaseStatus, String number, String linkNumber, String beginTime, String endTime, String materialParam, Long organId, Long creator, Long depotId, Long accountId, String remark, int offset, int rows) throws Exception { List resList = new ArrayList<>(); - List list=new ArrayList<>(); try{ String [] depotArray = getDepotArray(subType); String [] creatorArray = getCreatorArray(roleType); @@ -119,7 +118,7 @@ public class DepotHeadService { Map accountMap = accountService.getAccountMap(); beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); - list=depotHeadMapperEx.selectByConditionDepotHead(type, subType, creatorArray, hasDebt, statusArray, purchaseStatusArray, number, linkNumber, beginTime, endTime, + List 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<>(); @@ -130,7 +129,10 @@ public class DepotHeadService { } //通过批量查询去构造map Map finishDepositMap = getFinishDepositMapByNumberList(numberList); + Map financialBillNoMap = getFinancialBillNoMapByBillIdList(idList); Map billSizeMap = getBillSizeMapByLinkNumberList(numberList); + Map materialsListMap = findMaterialsListMapByHeaderIdList(idList); + Map materialCountListMap = getMaterialCountListMapByHeaderIdList(idList); for (DepotHeadVo4List dh : list) { if(accountMap!=null && StringUtil.isNotEmpty(dh.getAccountIdList()) && StringUtil.isNotEmpty(dh.getAccountMoneyList())) { String accountStr = accountService.getAccountStrByIdAndMoney(accountMap, dh.getAccountIdList(), dh.getAccountMoneyList()); @@ -153,15 +155,20 @@ public class DepotHeadService { if(dh.getDeposit() == null) { dh.setDeposit(BigDecimal.ZERO); } - dh.setFinishDeposit(finishDepositMap.get(dh.getNumber())); + //已经完成的欠款 + if(finishDepositMap!=null) { + dh.setFinishDeposit(finishDepositMap.get(dh.getNumber()) != null ? finishDepositMap.get(dh.getNumber()) : BigDecimal.ZERO); + } //欠款计算 BigDecimal discountLastMoney = dh.getDiscountLastMoney()!=null?dh.getDiscountLastMoney():BigDecimal.ZERO; BigDecimal otherMoney = dh.getOtherMoney()!=null?dh.getOtherMoney():BigDecimal.ZERO; BigDecimal changeAmount = dh.getChangeAmount()!=null?dh.getChangeAmount():BigDecimal.ZERO; dh.setDebt(discountLastMoney.add(otherMoney).subtract((dh.getDeposit().add(changeAmount)))); //是否有付款单或收款单 - int financialBillNoSize = accountHeadService.getFinancialBillNoByBillId(dh.getId()).size(); - dh.setHasFinancialFlag(financialBillNoSize>0); + if(financialBillNoMap!=null) { + Integer financialBillNoSize = financialBillNoMap.get(dh.getId()); + dh.setHasFinancialFlag(financialBillNoSize!=null && financialBillNoSize>0); + } //是否有退款单 if(billSizeMap!=null) { Integer billListSize = billSizeMap.get(dh.getNumber()); @@ -174,9 +181,13 @@ public class DepotHeadService { dh.setOperTimeStr(getCenternTime(dh.getOperTime())); } //商品信息简述 - dh.setMaterialsList(findMaterialsListByHeaderId(dh.getId())); + if(materialsListMap!=null) { + dh.setMaterialsList(materialsListMap.get(dh.getId())); + } //商品总数量 - dh.setMaterialCount(getMaterialCountByHeaderId(dh.getId())); + if(materialCountListMap!=null) { + dh.setMaterialCount(materialCountListMap.get(dh.getId())); + } //以销定购的情况(不能显示销售单据的金额和客户名称) if(StringUtil.isNotEmpty(purchaseStatus)) { dh.setOrganName("****"); @@ -309,6 +320,15 @@ public class DepotHeadService { return billListMap; } + public Map getFinancialBillNoMapByBillIdList(List idList) { + List list = accountHeadService.getFinancialBillNoByBillIdList(idList); + Map billListMap = new HashMap<>(); + for(AccountItem accountItem : list){ + billListMap.put(accountItem.getBillId(), 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); @@ -528,24 +548,22 @@ public class DepotHeadService { return result; } - public String findMaterialsListByHeaderId(Long id)throws Exception { - String result = null; - try{ - result = depotHeadMapperEx.findMaterialsListByHeaderId(id); - }catch(Exception e){ - JshException.readFail(logger, e); + public Map findMaterialsListMapByHeaderIdList(List idList)throws Exception { + List list = depotHeadMapperEx.findMaterialsListMapByHeaderIdList(idList); + Map materialsListMap = new HashMap<>(); + for(MaterialsListVo materialsListVo : list){ + materialsListMap.put(materialsListVo.getHeaderId(), materialsListVo.getMaterialsList()); } - return result; + return materialsListMap; } - private BigDecimal getMaterialCountByHeaderId(Long id) { - BigDecimal result = null; - try{ - result = depotHeadMapperEx.getMaterialCountByHeaderId(id); - }catch(Exception e){ - JshException.readFail(logger, e); + public Map getMaterialCountListMapByHeaderIdList(List idList)throws Exception { + List list = depotHeadMapperEx.getMaterialCountListByHeaderIdList(idList); + Map materialCountListMap = new HashMap<>(); + for(MaterialCountVo materialCountVo : list){ + materialCountListMap.put(materialCountVo.getHeaderId(), materialCountVo.getMaterialCount()); } - return result; + return materialCountListMap; } public List findInOutDetail(String beginTime, String endTime, String type, String [] creatorArray, @@ -734,12 +752,21 @@ public class DepotHeadService { public List getDetailByNumber(String number)throws Exception { List resList = new ArrayList(); - List list = null; try{ Map personMap = personService.getPersonMap(); Map accountMap = accountService.getAccountMap(); - list = depotHeadMapperEx.getDetailByNumber(number); + List list = depotHeadMapperEx.getDetailByNumber(number); 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 financialBillNoMap = getFinancialBillNoMapByBillIdList(idList); + Map billSizeMap = getBillSizeMapByLinkNumberList(numberList); + Map materialsListMap = findMaterialsListMapByHeaderIdList(idList); for (DepotHeadVo4List dh : list) { if(accountMap!=null && StringUtil.isNotEmpty(dh.getAccountIdList()) && StringUtil.isNotEmpty(dh.getAccountMoneyList())) { String accountStr = accountService.getAccountStrByIdAndMoney(accountMap, dh.getAccountIdList(), dh.getAccountMoneyList()); @@ -760,16 +787,23 @@ public class DepotHeadService { dh.setTotalPrice(dh.getTotalPrice().abs()); } //是否有付款单或收款单 - int financialBillNoSize = accountHeadService.getFinancialBillNoByBillId(dh.getId()).size(); - dh.setHasFinancialFlag(financialBillNoSize>0); + if(financialBillNoMap!=null) { + Integer financialBillNoSize = financialBillNoMap.get(dh.getId()); + dh.setHasFinancialFlag(financialBillNoSize!=null && 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())); } dh.setOperTimeStr(getCenternTime(dh.getOperTime())); - dh.setMaterialsList(findMaterialsListByHeaderId(dh.getId())); + //商品信息简述 + if(materialsListMap!=null) { + dh.setMaterialsList(materialsListMap.get(dh.getId())); + } dh.setCreatorName(userService.getUser(dh.getCreator()).getUsername()); resList.add(dh); } @@ -1159,6 +1193,12 @@ public class DepotHeadService { endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); List list=depotHeadMapperEx.debtList(organId, type, subType, creatorArray, status, number, beginTime, endTime, materialParam, depotArray); if (null != list) { + List idList = new ArrayList<>(); + for (DepotHeadVo4List dh : list) { + idList.add(dh.getId()); + } + //通过批量查询去构造map + Map materialsListMap = findMaterialsListMapByHeaderIdList(idList); for (DepotHeadVo4List dh : list) { if(dh.getChangeAmount() != null) { dh.setChangeAmount(dh.getChangeAmount().abs()); @@ -1198,7 +1238,10 @@ public class DepotHeadService { dh.setFinishDebt(finishDebt); //待收欠款 dh.setDebt(needDebt.subtract(allBillDebt).subtract(finishDebt)); - dh.setMaterialsList(findMaterialsListByHeaderId(dh.getId())); + //商品信息简述 + if(materialsListMap!=null) { + dh.setMaterialsList(materialsListMap.get(dh.getId())); + } resList.add(dh); } } diff --git a/jshERP-boot/src/main/resources/mapper_xml/AccountHeadMapperEx.xml b/jshERP-boot/src/main/resources/mapper_xml/AccountHeadMapperEx.xml index e2f14ac5..e3db7b87 100644 --- a/jshERP-boot/src/main/resources/mapper_xml/AccountHeadMapperEx.xml +++ b/jshERP-boot/src/main/resources/mapper_xml/AccountHeadMapperEx.xml @@ -189,10 +189,23 @@ and ifnull(delete_flag,'0') !='1' + + \ No newline at end of file diff --git a/jshERP-boot/src/main/resources/mapper_xml/DepotHeadMapperEx.xml b/jshERP-boot/src/main/resources/mapper_xml/DepotHeadMapperEx.xml index b24206ac..0022d8f5 100644 --- a/jshERP-boot/src/main/resources/mapper_xml/DepotHeadMapperEx.xml +++ b/jshERP-boot/src/main/resources/mapper_xml/DepotHeadMapperEx.xml @@ -243,18 +243,32 @@ and ifnull(dh.delete_Flag,'0') !='1') tb - + select jsh_depot_item.header_id, group_concat(concat(jsh_material.name,' ',ifnull(jsh_material.standard,''),' ',ifnull(jsh_material.model,''))) as materialsList from jsh_depot_item left join jsh_material on jsh_depot_item.material_id = jsh_material.Id and ifnull(jsh_material.delete_Flag,'0') !='1' - where jsh_depot_item.header_id = #{id} + where 1=1 + + and jsh_depot_item.header_id in + + #{item} + + and ifnull(jsh_depot_item.delete_flag,'0') !='1' + group by jsh_depot_item.header_id - + select header_id, sum(oper_number) materialCount from jsh_depot_item + where 1=1 + + and header_id in + + #{item} + + and ifnull(delete_flag,'0') !='1' + group by header_id