Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r37109 -r37191 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 37109) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 37191) @@ -817,21 +817,92 @@ public String loadTousseByPackingRecord(String packingRecordId) { JSONArray array = new JSONArray(); - if (StringUtils.isNotBlank(packingRecordId)) { - String sql = " where po.id = " + packingRecordId; - PackingRecord packingRecord = (PackingRecord) objectDao.getBySql( - PackingRecord.class.getSimpleName(), sql); - - for (TousseInstance tousseInstance : packingRecord - .getTousseInstanceList(objectDao)) { - JSONObject obj = new JSONObject(); - setToussePrintProperties(packingRecord.getDepart(), tousseInstance, obj); - if(StringUtils.isBlank(tousseInstance.getInspector())){ - obj.put("inspector", packingRecord.getInspector()); + if(!packingRecordId.contains(",")){ + String sql = " where po.id = " + packingRecordId; + PackingRecord packingRecord = (PackingRecord) objectDao.getBySql( + PackingRecord.class.getSimpleName(), sql); + for (TousseInstance tousseInstance : packingRecord + .getTousseInstanceList(objectDao)) { + JSONObject obj = new JSONObject(); + setToussePrintProperties(packingRecord.getDepart(), tousseInstance, obj); + if(StringUtils.isBlank(tousseInstance.getInspector())){ + obj.put("inspector", packingRecord.getInspector()); + } + array.add(obj); } - array.add(obj); + }else{ + List packingRecords = new ArrayList(); + String packingRecordSql = "select pr.id,pr.inspector,pr.depart from " + + PackingRecord.class.getSimpleName() + +" pr left join "+ SupplyRoomConfig.class.getSimpleName() + //此处用depart不用departCoding 是因为测试时发现有装配任务departCoding is null.而且下文也用到depart 所以这里用depart + +" src on pr.depart=src.orgUnitName and src.supplyRoomType=" + + SupplyRoomConfig.SUPPLYROOM_TYPE_APPLY + +" where 1=1 " + + SqlUtils.getInLongListSql("pr.id", SqlUtils.splitLongToSet(packingRecordId, ",", false)) + +" order by src.sequence "; + ResultSet rs = null; + Set read = new HashSet(); + try { + rs = objectDao.executeSql(packingRecordSql); + while(rs.next()){ + PackingRecord pr = new PackingRecord(); + Long id = rs.getLong("id"); + if(read.contains(id)){ + continue; + } + read.add(id); + pr.setId(id); + pr.setInspector(rs.getString("inspector")); + pr.setDepart(rs.getString("depart")); + packingRecords.add(pr); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + if(!CollectionUtils.isEmpty(packingRecords)){ + StringBuffer orderDepart = new StringBuffer(); + for (int i = 0; i < packingRecords.size(); i++) { + PackingRecord pr = packingRecords.get(i); + if(i == 0){ + orderDepart.append(" case "); + } + orderDepart.append(" when po.packingRecord_id="); + orderDepart.append(pr.getId()); + orderDepart.append(" then "); + orderDepart.append(i); + if(MathTools.equals(i, packingRecords.size() - 1)){ + orderDepart.append(" end "); + } + } + @SuppressWarnings("unchecked") + List tis = objectDao.findByHql("select po from " + + TousseInstance.class.getSimpleName() + + " po where 1=1 " + + SqlUtils.getInLongListSql("packingRecord_id", SqlUtils.splitLongToSet(packingRecordId, ",", false)) + + " order by "+ orderDepart.toString() +",po.tousseName, po.barcode asc"); + if(!CollectionUtils.isEmpty(tis)){ + for (TousseInstance tousseInstance : tis) { + JSONObject obj = new JSONObject(); + PackingRecord packingRecord = null; + for (PackingRecord packingRecordItem : packingRecords) { + if(MathTools.equals(tousseInstance.getPackingRecord_id(), packingRecordItem.getId())){ + packingRecord = packingRecordItem; + } + } + setToussePrintProperties(packingRecord.getDepart(), tousseInstance, obj); + if(StringUtils.isBlank(tousseInstance.getInspector())){ + obj.put("inspector", packingRecord.getInspector()); + } + array.add(obj); + } + } + } } + } return array.toString(); }