Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java =================================================================== diff -u -r29148 -r29555 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 29148) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 29555) @@ -515,4 +515,13 @@ * @return */ public JSONArray printDisposableGoodsInvoicePlanSummary(String inventorySerialNumbers, String startTime, String endTime); + + /** + * 一个科室只能填写一张未打印并且未发货的一次性物品申请单(GDSZYY-36) + * limitDisposableGoodsApply 值为true:用户点击【申请一次性物品】按钮时,系统进行检查, + * 如果用户当前登录的科室不是一、二级供应室,则检查是否存在该科室的申请单,处于未打印并且待发货的状态,如果存在,则提示【本科室已经申请过一次性物品物品,请确认申请的物品!】,并且打开该张已经存在的申请单,给用户核对修改;如果不存在,则创建一张新的一次性物品申请单并打开。 + * 如果用户当前登录的科室是一、二级供应室,则不进行限制,允许其为某科室填写多张申请单。 + * @return + */ + public JSONObject limitDisposableGoodsApply(); } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r29464 -r29555 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 29464) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 29555) @@ -8264,4 +8264,38 @@ return jsonArray; } + @Override + public JSONObject limitDisposableGoodsApply(){ + // 已停用的科室不能进行科室申领 + String orgUnitCode = AcegiHelper.getCurrentOrgUnitCode(); + OrgUnit ou = orgUnitManager.getByCode(orgUnitCode); + if (ou != null && OrgUnit.STATUS_DISABLED.equals(ou.getStatus())) { + JSONObject result = new JSONObject(); + result = JSONUtil.buildJsonObject(false, "当前申请科室已停用,不能进行申领!"); + return result; + } + // 一个科室只能填写一张未打印并且未发货的一次性物品申请单(DGZYY-174) + boolean limitDisposableGoodsApply = ConfigUtils.getSystemSetConfigByNameBool("limitDisposableGoodsApply", false); + if(limitDisposableGoodsApply){ + if(!supplyRoomConfigManager.isFirstOrSecondSupplyRoomOrgUnit(orgUnitCode)){ + String hql = String.format("from %s po where po.deliverStatus in ('%s', '%s') and po.printed in (%s, %s) " + + " and po.departCoding = '%s' " + + " and po.type = '%s' order by po.submitTime ", + RecyclingApplication.class.getSimpleName(), + RecyclingApplication.DELIVERSTATUS_AWAITDELIVER, RecyclingApplication.DELIVERSTATUS_PARTDELIVERED, + RecyclingApplication.PRINT_STATUS_UNPRINT, RecyclingApplication.PRINT_STATUS_PART_PRINT, + orgUnitCode, RecyclingApplication.TYPE_DIPOSABLE_GOODS_APPLICATION_FORM); + @SuppressWarnings("unchecked") + List disposabelGoodsAppList = objectDao.findByHql(hql); + if(CollectionUtils.isNotEmpty(disposabelGoodsAppList)){ + JSONObject result = new JSONObject(); + result = JSONUtil.buildJsonObject(false, "本科室已经申请过一次性物品,请确认申请的物品!"); + result.put("recyclingApplicationId", disposabelGoodsAppList.get(0).getId()); + return result; + } + } + } + return JSONUtil.buildJsonObject(true); + } + } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/RecyclingApplicationAction.java =================================================================== diff -u -r29338 -r29555 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/RecyclingApplicationAction.java (.../RecyclingApplicationAction.java) (revision 29338) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/RecyclingApplicationAction.java (.../RecyclingApplicationAction.java) (revision 29555) @@ -11,6 +11,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -561,8 +562,16 @@ if(CollectionUtils.isNotEmpty(tousseTemplateItems)){ //departmentAppTemplateManager.tousseDefinitionTemplateItems2JsonArray(toussesJsonArray, tousseTemplateItems, tousseDefinitionFloatPercent); //对器械包模板项进行按模板定义来分组 - Map> departmentAppTemplateToTousseTemplateItemListMap = - tousseTemplateItems.stream().collect(Collectors.groupingBy(TousseDefinitionTemplateItem::getDepartmentAppTemplate)); + Map> departmentAppTemplateToTousseTemplateItemListMap = new LinkedHashMap>(); + for (TousseDefinitionTemplateItem item : tousseTemplateItems) { + DepartmentAppTemplate template = item.getDepartmentAppTemplate(); + List items = departmentAppTemplateToTousseTemplateItemListMap.get(template); + if(items == null){ + items = new ArrayList(); + } + items.add(item); + departmentAppTemplateToTousseTemplateItemListMap.put(template, items); + } for(Entry> departmentAppTemplateToTousseTemplateItemListEntry : departmentAppTemplateToTousseTemplateItemListMap.entrySet()){ DepartmentAppTemplate key = departmentAppTemplateToTousseTemplateItemListEntry.getKey(); List value = departmentAppTemplateToTousseTemplateItemListEntry.getValue(); @@ -1620,4 +1629,13 @@ } } + /** + * 一个科室只能填写一张未打印并且未发货的一次性物品申请单(GDSZYY-36) + * limitDisposableGoodsApply值为true:用户点击【申请一次性物品】按钮时,系统进行检查 + */ + public void limitDisposableGoodsApply(){ + JSONObject result = recyclingApplicationManager.limitDisposableGoodsApply(); + StrutsResponseUtils.output(result); + } + }