Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r15529 -r15547 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 15529) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 15547) @@ -14,6 +14,7 @@ import java.util.Date; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -2001,8 +2002,10 @@ .getOrgUnitByOrgName(ra_1.getDepart()); if (orgUnit != null) { summary.setDepartBarcode(orgUnit.getBarcode()); + summary.setOrgUnitCoding(orgUnit.getOrgUnitCoding()); }else{ summary.setDepartBarcode(""); + summary.setOrgUnitCoding(""); } } @@ -4453,4 +4456,18 @@ } return null; } + + @Override + public List findNoPrintListCodes(String[] allNeedToPrintDept, List needToPrintList) { + List noPrintList = new LinkedList<>(); + if (allNeedToPrintDept != null && CollectionUtils.isNotEmpty(needToPrintList)) { + for (String code : allNeedToPrintDept) { + if (!needToPrintList.contains(code)) { + noPrintList.add(code); + } + } + return noPrintList; + } + return null; + } } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/dwr/table/RecyclingApplicationTableManager.java =================================================================== diff -u -r15359 -r15547 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/dwr/table/RecyclingApplicationTableManager.java (.../RecyclingApplicationTableManager.java) (revision 15359) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/dwr/table/RecyclingApplicationTableManager.java (.../RecyclingApplicationTableManager.java) (revision 15547) @@ -12,9 +12,11 @@ import java.util.Comparator; import java.util.Date; import java.util.HashMap; +import java.util.LinkedList; import java.util.List; import java.util.Map; +import com.forgon.directory.service.OrgUnitManager; import com.forgon.results.handler.LendGoodsBriefHandler; import com.forgon.results.handler.ResultBackHandler; import net.sf.json.JSONException; @@ -40,7 +42,6 @@ import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager; import com.forgon.disinfectsystem.entity.assestmanagement.DiposableGoodsInstance; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; -import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock; import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; @@ -49,11 +50,9 @@ import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication; import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingRecord; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; -import com.forgon.disinfectsystem.print.vo.PrintPageVo; import com.forgon.disinfectsystem.print.vo.PrintRowVo; import com.forgon.disinfectsystem.print.vo.PrintSummaryVo; import com.forgon.disinfectsystem.printRecyclingApplicationConfig.service.PrintConfigManager; -import com.forgon.disinfectsystem.recyclingapplication.service.InvoicePlanManager; import com.forgon.disinfectsystem.recyclingapplication.service.RecyclingApplicationManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; import com.forgon.disinfectsystem.vo.RecyclingApplicationVo; @@ -94,7 +93,13 @@ private ObjectDao objectDao; private DateQueryAdapter dateQueryAdapter; - + + private OrgUnitManager orgUnitManager; + + public void setOrgUnitManager(OrgUnitManager orgUnitManager) { + this.orgUnitManager = orgUnitManager; + } + public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { this.dateQueryAdapter = dateQueryAdapter; } @@ -1068,6 +1073,7 @@ } List printSummaryList = new ArrayList(); + String[] allneedToPrintDept = null; String action = jsonObject.optString("action"); if ("batchPrint".equalsIgnoreCase(action)){ @@ -1083,6 +1089,7 @@ String departCodes = config.getDepartCodes(); if (departCodes.length() > 0){ String[] depts = departCodes.split(";"); + allneedToPrintDept = depts; // 判断有没项目个性化打印的配置 String customProject = printScope.optString("customProject"); @@ -1140,9 +1147,7 @@ String printUser = AcegiHelper.getLoginUserFullName(); for (String dept : depts) { - recyclingApplicationManager.getPrintObjectOfDept( - printScope, dept, printUser, printSummaryList); - + recyclingApplicationManager.getPrintObjectOfDept(printScope, dept, printUser, printSummaryList); } } } @@ -1176,49 +1181,29 @@ // 采用在客户端分页技术,简化服务器端的代码,避免因为一行的打印内容过多换行造成分页不准确的问题 JSONObject printSummaryObj = recyclingApplicationManager.getPrintObjectByTimePeriod( printScope, fromTime, toTime, printUser); - return printSummaryObj.toString(); - - - } + } JsonObject json = new JsonObject(); - if (printSummaryList.size() >0){ + //需要打印的部门名单 + List needToPrintList = new LinkedList<>(); int pageAmount = 0; for (PrintSummaryVo summary: printSummaryList){ -// summary.setTotalPrice(0.0); -// if(CollectionUtils.isNotEmpty(summary.getPages())){ -// for(PrintPageVo ppv:summary.getPages()){ -// if(CollectionUtils.isNotEmpty(ppv.getRows())){ -// for(PrintRowVo prv:ppv.getRows()){ -// //默认数量为申请数量,如果为回收申请单,则取回收数量 -// int amount = prv.getApplyAmount(); -// if(DatabaseUtil.isPoIdValid(prv.getApplicationId())){ -// //取到申请单对象(如果不是回收申请单数量取申请数量、否则取回收数量) -// RecyclingApplication recyclingApplication = -// recyclingApplicationManager.getRecyclingApplicationById(prv.getApplicationId()); -// if(recyclingApplication != null -// && InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION.equals(recyclingApplication.getType())){ -// amount = prv.getRecyclingAmount(); -// } -// } -// BigDecimal bg = MathTools.mul(amount, prv.getPrice()); -// prv.setRowPrice(bg == null ? 0.0 : bg.doubleValue()); -// summary.setTotalPrice(summary.getTotalPrice() + prv.getRowPrice()); -// } -// } -// } -// } pageAmount += summary.getPageAmount(); + needToPrintList.add(summary.getOrgUnitCoding()); } - + + List noPrintListCodes = recyclingApplicationManager.findNoPrintListCodes(allneedToPrintDept, needToPrintList); + List noPrintListNames = orgUnitManager.findDeptNameByOrgUnitCodes(noPrintListCodes); + json.addProperty("success", true); - - Gson gson = new GsonBuilder().create(); - + Gson gson = new GsonBuilder().create(); JsonArray jsonArray = gson.toJsonTree(printSummaryList).getAsJsonArray(); json.add("data", jsonArray); json.addProperty("totalPageAmount", pageAmount); + if (CollectionUtils.isNotEmpty(noPrintListNames)){ + json.add("noPrintList",gson.toJsonTree(noPrintListNames).getAsJsonArray()); + } } else{ Index: ssts-print/src/main/java/com/forgon/disinfectsystem/print/vo/PrintSummaryVo.java =================================================================== diff -u -r12331 -r15547 --- ssts-print/src/main/java/com/forgon/disinfectsystem/print/vo/PrintSummaryVo.java (.../PrintSummaryVo.java) (revision 12331) +++ ssts-print/src/main/java/com/forgon/disinfectsystem/print/vo/PrintSummaryVo.java (.../PrintSummaryVo.java) (revision 15547) @@ -42,6 +42,11 @@ private String departBarcode; + /** + * 部门编号 + */ + private String orgUnitCoding; + private int pageAmount; private int totalGoodsAmount; // 总共的应发货数量 @@ -223,5 +228,12 @@ public void setPages(List pages) { this.pages = pages; } - + + public String getOrgUnitCoding() { + return orgUnitCoding; + } + + public void setOrgUnitCoding(String orgUnitCoding) { + this.orgUnitCoding = orgUnitCoding; + } } Index: ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsTemplateApplicationView.js =================================================================== diff -u -r15526 -r15547 --- ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsTemplateApplicationView.js (.../goodsTemplateApplicationView.js) (revision 15526) +++ ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsTemplateApplicationView.js (.../goodsTemplateApplicationView.js) (revision 15547) @@ -3178,17 +3178,19 @@ mask.hide(); if (obj.success){ - - var newP = top.Ext.MessageBox.show({ - title:'请等待', - msg:'打印中……', - width:350, - progress:true, - closable:false - }); - - formTypeOfPrinted = "invoicePlan"; - printByJsonPrintObject(obj, newP,false,0); + if (obj.noPrintList){ + showResult("属于【" + obj.noPrintList + "】的科室没有未打印的回收单。"); + } + var newP = top.Ext.MessageBox.show({ + title:'请等待', + msg:'打印中……', + width:350, + progress:true, + closable:false + }); + + formTypeOfPrinted = "invoicePlan"; + printByJsonPrintObject(obj, newP,false,0); } else{ showResult(obj.error); Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java =================================================================== diff -u -r14949 -r15547 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java (.../OrgUnitManager.java) (revision 14949) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java (.../OrgUnitManager.java) (revision 15547) @@ -4,6 +4,8 @@ import java.util.List; import java.util.Set; +import com.forgon.tools.util.SqlUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import com.forgon.directory.action.OrgUnitAction; @@ -136,5 +138,13 @@ * @return List */ public List findOrgUnitCodingAndNameByUserName(String userName); + + /** + * 根据部门的编号找出对应的部门名字 + * @param codes 部门的编号 + * @return + */ + List findDeptNameByOrgUnitCodes(Collection codes); + } Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java =================================================================== diff -u -r15333 -r15547 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java (.../OrgUnitManagerImpl.java) (revision 15333) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java (.../OrgUnitManagerImpl.java) (revision 15547) @@ -41,6 +41,7 @@ import com.forgon.treenode.service.THTreeNodeManager; import edu.emory.mathcs.backport.java.util.Arrays; +import org.hibernate.Session; /** * @author Angus @@ -961,4 +962,15 @@ return null; } + + @Override + public List findDeptNameByOrgUnitCodes(Collection codes) { + if(CollectionUtils.isNotEmpty(codes)){ + String sql = String.format("select po.name from OrgUnit po where %s", SqlUtils.getStringFieldInCollectionsPredicate("po.orgUnitCoding", codes)); + Session session = objectDao.getHibernateSession(); + return session.createQuery(sql).list(); + } + return null; + + } } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java =================================================================== diff -u -r15529 -r15547 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 15529) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 15547) @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map; +import com.forgon.directory.model.OrgUnit; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -179,4 +180,13 @@ * @return */ public RecyclingApplication getRecyclingApplication(Long useRecordId); + + /** + * 对比两个列表,找出没有打印的部门编号 + * @param allNeedToPrintDept 所有需要打印的部门 + * @param needToPrintList 实际需要打印的部门 + * @return + */ + List findNoPrintListCodes(String[] allNeedToPrintDept,List needToPrintList); + }