Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanOptimizeManagerImpl.java =================================================================== diff -u -r39397 -r39426 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanOptimizeManagerImpl.java (.../InvoicePlanOptimizeManagerImpl.java) (revision 39397) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanOptimizeManagerImpl.java (.../InvoicePlanOptimizeManagerImpl.java) (revision 39426) @@ -1233,7 +1233,7 @@ filterParams.setGroupByDepart(true); //需要将下面的这个方法返回的数据结果的集合转换成按科室进行分组 Collection result = getWaitDeliverGoods(filterParams); - return groupApplicationGoodsVoListByDepart(result, filterParams); + return groupAndSortApplicationGoodsVoListByDepart(result, filterParams); } /** Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r39399 -r39426 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 39399) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 39426) @@ -733,7 +733,7 @@ * @param filterParams * @return */ - protected Collection groupApplicationGoodsVoListByDepart(Collection result,SearchInvoicePlanOrGoodsParams filterParams){ + protected Collection groupAndSortApplicationGoodsVoListByDepart(Collection result,SearchInvoicePlanOrGoodsParams filterParams){ Collection list = new ArrayList(); if(CollectionUtils.isNotEmpty(result)){ String orgUnitCoding = filterParams.getOrgUnitCoding(); @@ -754,7 +754,8 @@ Map orgUnitCodingToOrgUnitMap = new HashMap(); List orgUnitList = orgUnitManager.getCollection("orgUnitCoding", departCodeList); orgUnitList.stream().forEach(orgUnit -> { - orgUnitCodingToOrgUnitMap.put(orgUnit.getOrgUnitCoding(), orgUnit); + String departCoding = orgUnit.getOrgUnitCoding(); + orgUnitCodingToOrgUnitMap.put(departCoding, orgUnit); }); Map> departCodingToApplicationGoodsVoListMap = new HashMap>(); for(ApplicationGoodsVo vo : result){ @@ -771,14 +772,59 @@ ApplicationGoodsVo vo = new ApplicationGoodsVo(); OrgUnit orgUnit = orgUnitCodingToOrgUnitMap.get(entry.getKey()); vo.setDepart(orgUnit == null ? "" : orgUnit.getName()); - vo.setApplicationGoodsVoList(entry.getValue()); + Collection applicationGoodsVoList = entry.getValue(); + vo.setApplicationGoodsVoList(applicationGoodsVoList); + vo.setApplicationGoodsAmountOfDepart(getApplicationGoodsTotalAmount(applicationGoodsVoList)); + //科室编码对应的科室id(用于后续科室的待发货物品的科室排序) + vo.setOrgUnitId(orgUnit == null ? Long.MAX_VALUE : orgUnit.getId()); list.add(vo); } } } + //待发货物品排序 + if(CollectionUtils.isNotEmpty(list)){ + List listResult = new ArrayList(list); + Collections.sort(listResult, new Comparator() { + + @Override + public int compare(ApplicationGoodsVo o1, ApplicationGoodsVo o2) { + //按申请物品数量降序 + if(o1.getApplicationGoodsAmountOfDepart() > o2.getApplicationGoodsAmountOfDepart()){ + return -1; + }else if(o1.getApplicationGoodsAmountOfDepart() < o2.getApplicationGoodsAmountOfDepart()){ + return 1; + }else{ + //申请物品数量相同时,按科室id升序 + if(o1.getOrgUnitId() > o2.getOrgUnitId()){ + return 1; + }else if(o1.getOrgUnitId() < o2.getOrgUnitId()){ + return -1; + } + } + return 0; + } + + }); + return listResult; + } return list; } + /** + * 统计申请物品数量的总和 + * @param applicationGoodsVoList 申请物品的集合 + * @return + */ + private int getApplicationGoodsTotalAmount(Collection applicationGoodsVoList){ + int applicationGoodsTotalAmount = 0; + if(CollectionUtils.isNotEmpty(applicationGoodsVoList)){ + for(ApplicationGoodsVo applicationGoodsVo : applicationGoodsVoList){ + applicationGoodsTotalAmount = MathTools.add(applicationGoodsTotalAmount, applicationGoodsVo.getCount()).intValue(); + } + } + return applicationGoodsTotalAmount; + } + @Override public Collection getDepartInvoiePlanGoodsGroupByDepartCode( SearchInvoicePlanOrGoodsParams filterParams) { Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/vo/ApplicationGoodsVo.java =================================================================== diff -u -r39368 -r39426 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/vo/ApplicationGoodsVo.java (.../ApplicationGoodsVo.java) (revision 39368) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/vo/ApplicationGoodsVo.java (.../ApplicationGoodsVo.java) (revision 39426) @@ -126,6 +126,14 @@ * 该科室下的待发货物品汇总-DGSFYBJY-74 */ private Collection applicationGoodsVoList; + /** + * 科室待发货物品总数量(用于待发货物品结果的排序)-DGSFYBJY-74 + */ + private int applicationGoodsAmountOfDepart; + /** + * 科室id(用于待发货物品结果的排序)-DGSFYBJY-74 + */ + private Long orgUnitId; /** * 整箱申请数量GYEY-761 @@ -423,6 +431,22 @@ this.applicationGoodsVoList = applicationGoodsVoList; } + public int getApplicationGoodsAmountOfDepart() { + return applicationGoodsAmountOfDepart; + } + + public void setApplicationGoodsAmountOfDepart(int applicationGoodsAmountOfDepart) { + this.applicationGoodsAmountOfDepart = applicationGoodsAmountOfDepart; + } + + public Long getOrgUnitId() { + return orgUnitId; + } + + public void setOrgUnitId(Long orgUnitId) { + this.orgUnitId = orgUnitId; + } + public Integer getFullCaseApplicationAmount() { return fullCaseApplicationAmount; }