Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r27413 -r27424 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 27413) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 27424) @@ -2877,6 +2877,8 @@ String hospitalNumbers = ""; String treatmentNums = ""; String patientNames = ""; + SupplyRoomConfig config = supplyRoomConfigManager.getSystemParamsObj(); + boolean departCanMerge = supplyRoomConfigManager.verifDepartCanMergeApplication(departCoding, config); //通常只有一条使用记录(也支持多条) List useRecordList = (List) useRecordsMap .get("useRecordList"); @@ -3155,7 +3157,7 @@ willMergeConvertApplication = true; } } - if(!willMergeConvertApplication){ + if(!willMergeConvertApplication || !departCanMerge){ //创建器械包申请单 List recyclingApplicationList = recyclingApplicationManager.createRecyclingApplicationByTousse( applyTousseMap,new HashMap(), applicant, depart, departCoding, hospitalNumbers, remark, @@ -3481,7 +3483,7 @@ willMergeConvertApplication = true; } } - if(!willMergeConvertApplication){ + if(!willMergeConvertApplication || !departCanMerge){ //创建器械包申请单 List recyclingApplicationList = recyclingApplicationManager.createRecyclingApplicationByTousse( applyTousseMap,new HashMap(), applicant, depart, departCoding, hospitalNumbers, remark, @@ -3804,7 +3806,7 @@ willMergeConvertApplication = true; } } - if(!willMergeConvertApplication){ + if(!willMergeConvertApplication || !departCanMerge){ //创建器械包申请单 List recyclingApplicationList = recyclingApplicationManager.createRecyclingApplicationByTousse( applyTousseMap,new HashMap(), applicant, depart, departCoding, hospitalNumbers, remark, @@ -3946,14 +3948,13 @@ Map applyForeignTousseMap = (Map)useRecordsMap.get("applyForeignTousseMap"); Map applyUrgentForeignTousseMap = (Map)useRecordsMap.get("applyUrgentForeignTousseMap"); if(applyForeignTousseMap != null && applyForeignTousseMap.size() > 0){ - SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSystemParamsObj(); //根据单类型及处理科室是否找到已经转换生成的申请单 boolean foundInvoicePlanByHandleDepartCodingAndType = false; //根据单类型及处理科室查询之前生成的与器械包有关的申请单(通常就只会有一个或没有) for(RecyclingApplication ra : recyclingApplicationListAfterConvert){ //外来器械包默认处理科室及任务组 - JSONObject foreignTousseHandleDepartAndTaskGroupJsonobject = supplyRoomConfig.getOneForeignTousseHandleDepartAndTaskGroupByDepartCode(ra.getHandleDepartCoding()); + JSONObject foreignTousseHandleDepartAndTaskGroupJsonobject = config.getOneForeignTousseHandleDepartAndTaskGroupByDepartCode(ra.getHandleDepartCoding()); if(foreignTousseHandleDepartAndTaskGroupJsonobject != null && StringUtils.equals(foreignTousseHandleDepartAndTaskGroupJsonobject.optString("departCode"), ra.getHandleDepartCoding()) && StringUtils.equals(invoicePlanTypeAfterTousseConvert, ra.getType())){ @@ -4046,7 +4047,7 @@ newTousseItem.setDiposable(Constants.STR_NO); newTousseItem.setDisinfectGoodsMaterials(tousseDefinitionManager .getMaterialsOfDisinfectionGoods(foreignTousseDefinition).toString()); - newTousseItem.setIsCleanedEntirely(supplyRoomConfig.getForeignTousseCleanedEntirely()); + newTousseItem.setIsCleanedEntirely(config.getForeignTousseCleanedEntirely()); newTousseItem.setPrice(foreignTousseDefinition.getPrice()); newTousseItem.setRowPrice(foreignTousseDefinition.getPrice()); newTousseItem.setSupplierName(foreignTousseDefinition.getSupplierName()); @@ -4092,7 +4093,7 @@ recyclingApplication.setDepart(depart); recyclingApplication.setDepartCoding(departCoding); //外来器械包默认处理科室及任务组 - JSONObject foreignTousseHandleDepartAndTaskGroupJsonobject = supplyRoomConfig.getOneForeignTousseHandleDepartAndTaskGroupByDepartCode(null); + JSONObject foreignTousseHandleDepartAndTaskGroupJsonobject = config.getOneForeignTousseHandleDepartAndTaskGroupByDepartCode(null); if(foreignTousseHandleDepartAndTaskGroupJsonobject != null){ recyclingApplication.setHandleDepartCoding(foreignTousseHandleDepartAndTaskGroupJsonobject.optString("departCode")); recyclingApplication.setHandleDepart(foreignTousseHandleDepartAndTaskGroupJsonobject.optString("departName")); @@ -4205,7 +4206,7 @@ newTousseItem.setDiposable(Constants.STR_NO); newTousseItem.setDisinfectGoodsMaterials(tousseDefinitionManager .getMaterialsOfDisinfectionGoods(foreignTousseDefinition).toString()); - newTousseItem.setIsCleanedEntirely(supplyRoomConfig.getForeignTousseCleanedEntirely()); + newTousseItem.setIsCleanedEntirely(config.getForeignTousseCleanedEntirely()); newTousseItem.setPrice(foreignTousseDefinition.getPrice()); newTousseItem.setRowPrice(foreignTousseDefinition.getPrice()); newTousseItem.setSupplierName(foreignTousseDefinition.getSupplierName()); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManager.java =================================================================== diff -u -r26853 -r27424 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManager.java (.../SupplyRoomConfigManager.java) (revision 26853) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManager.java (.../SupplyRoomConfigManager.java) (revision 27424) @@ -258,4 +258,11 @@ * @return */ public List getSupplyRoomWithoutDisableOrgUnit(int supplyRoomType); + /** + * 验证部门是否可以合并申请单 + * @param departCoding 部门编码 + * @param config SupplyRoomConfig为null的话会查一次啊 + * @return + */ + public boolean verifDepartCanMergeApplication(String departCoding, SupplyRoomConfig config); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/supplyroomconfig/SupplyRoomConfig.java =================================================================== diff -u -r26752 -r27424 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/supplyroomconfig/SupplyRoomConfig.java (.../SupplyRoomConfig.java) (revision 26752) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/supplyroomconfig/SupplyRoomConfig.java (.../SupplyRoomConfig.java) (revision 27424) @@ -11,6 +11,7 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Index; +import javax.persistence.Lob; import javax.persistence.Table; import javax.persistence.Transient; @@ -399,7 +400,11 @@ * (BJCYLYY-17 器械包设置自动扣除材料包括一次性物品,发货后不用单独收取科室一次性物品的费用,也不要体现在报表和发货单上) */ private String insideTousseMaterialOutCost = Constants.STR_YES; - + /** + * 自动合并申请单的科室 + */ + private String mergeApplicationDepartArr; + @Id @GeneratedValue(strategy = GenerationType.AUTO) public Long getId() { @@ -1106,5 +1111,13 @@ } return resultJsonObject; } - + @Lob + @Column(length = 30000) + public String getMergeApplicationDepartArr() { + return mergeApplicationDepartArr; + } + + public void setMergeApplicationDepartArr(String mergeApplicationDepartArr) { + this.mergeApplicationDepartArr = mergeApplicationDepartArr; + } } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r27331 -r27424 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 27331) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 27424) @@ -4375,7 +4375,7 @@ SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSystemParamsObj(); boolean autoMerge = supplyRoomConfig.getAutoMergeApplication(); boolean isNeedToBeMerged = false; - if(autoMerge && !DatabaseUtil.isPoIdValid(recyclingApplication.getId())){ + if(autoMerge && !DatabaseUtil.isPoIdValid(recyclingApplication.getId()) && supplyRoomConfigManager.verifDepartCanMergeApplication(recyclingApplication.getDepartCoding(), supplyRoomConfig)){ //只有待回收状态的器械包申请单、待发货状态的一次性物品申请单才会被合并;通用申请单目前不会被合并 //1.先从单类型、状态等本身信息字段来判断该申请单是否满足合并的条件,决定是否需要合并(因为这个判断效率高所以放在第一步):消毒物品申请单也都不再合并 Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManagerImpl.java =================================================================== diff -u -r26853 -r27424 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManagerImpl.java (.../SupplyRoomConfigManagerImpl.java) (revision 26853) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManagerImpl.java (.../SupplyRoomConfigManagerImpl.java) (revision 27424) @@ -32,6 +32,7 @@ import com.forgon.tools.cache.ForgonThreadLocalResourceManager; import com.forgon.tools.db.InitDbConnection; import com.forgon.tools.hibernate.BasePoManagerImpl; +import com.forgon.tools.json.JSONUtil; import com.forgon.tools.string.StringTools; import com.forgon.tools.util.SqlUtils; import com.forgon.treenode.model.THTreeNode; @@ -954,4 +955,26 @@ return objectDao.findBySql(SupplyRoomConfig.class.getSimpleName(), "where po.supplyRoomType = " + type + " and po.orgUnitCoding not in (select orgUnitCoding from OrgUnit where status = " + OrgUnit.STATUS_DISABLED + ") order by po.sequence"); } + @Override + public boolean verifDepartCanMergeApplication(String departCoding, SupplyRoomConfig config) { + if(StringUtils.isBlank(departCoding)){ + return true; + } + if(config == null){ + config = getSystemParamsObj(); + } + String mergeApplicationDepartArr = config.getMergeApplicationDepartArr(); + if(StringUtils.isBlank(mergeApplicationDepartArr)){ + return true; + } + JSONArray arr = JSONUtil.toJSONArray(mergeApplicationDepartArr); + for (int i = 0; i < arr.size(); i++) { + JSONObject obj = (JSONObject)arr.get(i); + String departCode = obj.optString("mergeApplicationDepartsCode"); + if(departCoding.equals(departCode)){ + return true; + } + } + return false; + } } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/action/SupplyRoomConfigAction.java =================================================================== diff -u -r26853 -r27424 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/action/SupplyRoomConfigAction.java (.../SupplyRoomConfigAction.java) (revision 26853) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/action/SupplyRoomConfigAction.java (.../SupplyRoomConfigAction.java) (revision 27424) @@ -884,6 +884,11 @@ String damagedTousseAtCost = rq.getParameter("damagedTousseAtCost"); //包内材料扣减科室成本 String insideTousseMaterialOutCost = rq.getParameter("insideTousseMaterialOutCost"); + String mergeApplicationDepartArr = rq.getParameter("mergeApplicationDepartArr"); + if(StringUtils.isBlank(mergeApplicationDepartArr)){ + mergeApplicationDepartArr = null; + } + supplyRoomConfig.setMergeApplicationDepartArr(mergeApplicationDepartArr); supplyRoomConfig.setNoMergeApplicationTypes(noMergeApplicationTypes); supplyRoomConfig.setIsPackingAfterWashTimeEnd(isPackingAfterWashTimeEnd); supplyRoomConfig.setIsDgConvertApplication(isDgConvertApplication);