Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r12386 -r12505 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 12386) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 12505) @@ -1009,11 +1009,14 @@ public String getWaitPackingTaskJson(String taskGroup, String basketBarcode) { List taskVos = new ArrayList(); if (StringUtils.isNotBlank(taskGroup)) { - List taskList = findPackingTask(taskGroup,basketBarcode); + List taskList = findPackingTask(taskGroup,basketBarcode); Map taskMap = new HashMap(); if (taskList != null) { - for (PackingTask task : taskList) { - TousseDefinition td = task.getTousseDefinition(); + for (Object[] result : taskList) { + + PackingTask task = (PackingTask)result[0]; + TousseDefinition td = (TousseDefinition)result[1]; + String tousseName = td.getName(); Long tousseID = td.getId(); boolean haveIDCard = tousseDefinitionManager.isThereIDCard(td); @@ -1075,6 +1078,9 @@ itemVo.setAmount(task.getUnPackAmount()); itemVo.setSupplierName(td.getSupplierName()); itemVo.setTaskType(task.getTaskType()); + + + // 以下的2个循环比较慢,最好去掉 for (RecyclingError error : task.getErrors()) { if (error.getAmount().intValue() == error .getUnconfirmedAmount().intValue()) { @@ -1129,11 +1135,17 @@ return jsonArray.toString(); } - @SuppressWarnings("unchecked") - @Override - public List findPackingTask(String taskGroup,String basketBarcode) { + + /** + * 查询待装配装配任务集合 + * @param taskGroup + * @param basketBarcode + * @return 同时返回PackingTask和TousseDefintion两个实体类,避免多次查询 + */ + private List findPackingTask(String taskGroup,String basketBarcode) { String orgCode = AcegiHelper.getLoginUser().getOrgUnitCodingFromSupplyRoomConfig(); - String sql = "where po.tousseDefinition.taskGroup = '"+taskGroup+"' "+ + String sql = "select po, td from PackingTask as po, TousseDefinition as td " + + "where po.tousseDefinition.id = td.id and td.taskGroup = '"+taskGroup+"' "+ "and po.orgUnitCoding = '" + orgCode + "'"; if(StringUtils.isNotBlank(basketBarcode)){ //验证篮筐是否清洗 @@ -1148,7 +1160,11 @@ } sql += " and po.basketBarcode like '%" + basketBarcode + "%' "; } - return objectDao.findBySql(PackingTask.class.getSimpleName(), sql); + + Query query = objectDao.getHibernateSession().createQuery(sql); + List queryResult = query.list(); + + return queryResult; } // 将已存在的装配任务,绑定清洗篮筐,用于升级旧数据 Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java =================================================================== diff -u -r12331 -r12505 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java (.../PackingManager.java) (revision 12331) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java (.../PackingManager.java) (revision 12505) @@ -86,8 +86,6 @@ public String getWaitPackingTaskJson(String taskGroup,String basketBarcode); - public List findPackingTask(String taskGroup,String basketBarcode); - public void createWashedClassifyBasketPackingTask(); public int loadTodayPackingRecordTotalAmount(String taskGroup);