Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r36186 -r36188 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 36186) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 36188) @@ -760,13 +760,18 @@ tousseItemMap.put(tousseItem.getTousseName(), tousseItem); } } - Set tousseIdSet = tousseIdAndAmount.keySet(); - for (Long tousseId : tousseIdSet) { + //批量查询需要的数据 + Set tdids = tousseIdAndAmount.keySet(); + Map tdsMap = tousseDefinitionManager.getIdToTousseDefinitionMap(tdids); + Map packingTaskMap = packingManager.getPackingTaskMap(application.getId(), PackingTask.TASK_APPLICATION, tdids); + for (Entry entry : tousseIdAndAmount.entrySet()) { // 如果为正数,则需要往装配管理添加数量,如果为负数,则需要减少数量,否则不需要调整数量 - Integer needAddAmount = tousseIdAndAmount.get(tousseId).getAmount(); - Integer urgentAmount = tousseIdAndAmount.get(tousseId).getUrgentAmount(); + Long tousseId = entry.getKey(); + TousseItem ti = entry.getValue(); + Integer needAddAmount = ti.getAmount(); + Integer urgentAmount = ti.getUrgentAmount(); if (needAddAmount != null && needAddAmount.intValue() != 0) { - TousseDefinition td = tousseDefinitionManager.get(tousseId); + TousseDefinition td = tdsMap.get(tousseId); if (td != null) { // 敷料包的装配任务来源于申请单 String tousseType = td.getTousseType(); @@ -785,17 +790,14 @@ .equals(isPacking) && TousseDefinition.STR_NO .equals(isRecycling)))) { - PackingTask task = packingManager - .getUnfinishedTask(application.getId(), - null, td.getId(), - PackingTask.TASK_APPLICATION); + PackingTask task = packingTaskMap.get(td.getId()); if (task == null) { task = new PackingTask(); if (needAddAmount > 0) { task.setUrgentAmount(urgentAmount); if(urgentAmount != null && urgentAmount > 0){ - task.setUrgentLevel(tousseIdAndAmount.get(tousseId).getUrgentLevel()); - task.setUrgentLevelObj(tousseIdAndAmount.get(tousseId).getUrgentLevelObj()); + task.setUrgentLevel(ti.getUrgentLevel()); + task.setUrgentLevelObj(ti.getUrgentLevelObj()); } task.setAmount(needAddAmount); task.setUnPackAmount(needAddAmount); @@ -813,7 +815,7 @@ task.setDepartment(application.getDepart()); task.setDepartCoding(application.getDepartCoding()); task.setSettleAccountsDepartCoding(application.getSettleAccountsDepartCoding()); - task.setRemarkOfApplyGoods(tousseIdAndAmount.get(tousseId).getRemarkOfApplyGoods()); + task.setRemarkOfApplyGoods(ti.getRemarkOfApplyGoods()); packingManager.save(task); } else { throw new RecyclingRecordException( @@ -825,7 +827,7 @@ + needAddAmount); task.setUnPackAmount(task.getUnPackAmount() + needAddAmount); - task.setRemarkOfApplyGoods(tousseIdAndAmount.get(tousseId).getRemarkOfApplyGoods()); + task.setRemarkOfApplyGoods(ti.getRemarkOfApplyGoods()); } else if (task.getUnPackAmount() + needAddAmount == 0) { packingManager.delete(task,"保存或更新回收申请单"); @@ -839,14 +841,11 @@ } }else if(ConfigUtils.getSystemSetConfigByNameBool("enableApplyGoodsRemarkFunction", false)){ //ZJYY-95 申请单增加独立填写物品申领备注功能 - TousseDefinition td = tousseDefinitionManager.get(tousseId); + TousseDefinition td = tdsMap.get(tousseId); if (td != null) { - PackingTask task = packingManager - .getUnfinishedTask(application.getId(), - null, td.getId(), - PackingTask.TASK_APPLICATION); + PackingTask task = packingTaskMap.get(td.getId()); if(task != null){ - task.setRemarkOfApplyGoods(tousseIdAndAmount.get(tousseId).getRemarkOfApplyGoods()); + task.setRemarkOfApplyGoods(ti.getRemarkOfApplyGoods()); } } } Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r36180 -r36188 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 36180) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 36188) @@ -10501,4 +10501,30 @@ } return arr; } + @Override + public Map getPackingTaskMap(Long sourceId, Integer taskType, Set tdids) { + Map packingTaskMap = new HashMap();//key为包定义id + StringBuffer sbf = new StringBuffer(); + sbf.append("select po,po.tousseDefinition.id from "); + sbf.append(PackingTask.class.getSimpleName()); + sbf.append(" po where taskType="); + sbf.append(taskType); + if(CollectionUtils.isNotEmpty(tdids)){ + sbf.append(" and "); + sbf.append(SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.tousseDefinition.id", tdids)); + } + if(DatabaseUtil.isPoIdValid(sourceId)){ + sbf.append(" and sourceId="); + sbf.append(sourceId); + } + @SuppressWarnings("unchecked") + List list = objectDao.findByHql(sbf.toString()); + if(CollectionUtils.isNotEmpty(list)){ + for (int i = 0; i < list.size(); i++) { + Object[] arr = list.get(i); + packingTaskMap.put((Long)arr[1], (PackingTask)arr[0]); + } + } + return packingTaskMap; + } } Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java =================================================================== diff -u -r36090 -r36188 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java (.../PackingManager.java) (revision 36090) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java (.../PackingManager.java) (revision 36188) @@ -387,4 +387,12 @@ * @return */ public JSONArray verifyTousseCanBeAggregated(Set tdIds); + /** + * 通过sourceId和taskType和包定义id获取装配任务的map + * @param sourceId + * @param taskType + * @param tdids + * @return key为包定义id + */ + public Map getPackingTaskMap(Long sourceId, Integer taskType, Set tdids); }