Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/TousseInstanceTableManager.java =================================================================== diff -u -r33927 -r34349 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/TousseInstanceTableManager.java (.../TousseInstanceTableManager.java) (revision 33927) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/TousseInstanceTableManager.java (.../TousseInstanceTableManager.java) (revision 34349) @@ -53,8 +53,10 @@ import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceItem; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; +import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingRecord; import com.forgon.disinfectsystem.entity.systemwarning.SystemWarningItemVO; import com.forgon.disinfectsystem.entity.useRecord.UseRecord; +import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; import com.forgon.disinfectsystem.idpredicate.IDOperators; import com.forgon.disinfectsystem.packing.service.PackingManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; @@ -634,6 +636,8 @@ Set packingRecordIds = new HashSet();//装配记录id Set idCardInstanceIDs = new HashSet();//标识牌id Set useRecordIDs = new HashSet();//使用记录id + Set unPackTousseDefinitionIds = new HashSet();//不装配的包定义id + Set unPackTousseRecyclingRecordIds = new HashSet();//不装配的包实例的回收记录id //ZJYY-86 器械包信息模块的信息列表表格新增扩展列【加急级别】和【影像记录】 boolean includeVideoAndPictureRecording = expandColoumnsConfigIncludeFieldName("expandColoumnsConfigOfTousseInfoList", "videoAndPictureRecording"); for (TousseInstance ti : list) { @@ -655,6 +659,12 @@ if(DatabaseUtil.isPoIdValid(ti.getUseRecord_id())){ useRecordIDs.add(ti.getUseRecord_id()); } + if(DatabaseUtil.isPoIdValid(ti.getRecyclingRecordId()) + && ti.getTousseDefinition() != null + && !ti.getTousseDefinition().needPacking()){ + unPackTousseRecyclingRecordIds.add(ti.getRecyclingRecordId()); + unPackTousseDefinitionIds.add(ti.getTousseDefinition().getId()); + } if(includeVideoAndPictureRecording){ //ZJYY-100 器械包信息模块的查询项新增扩展项【加急级别】和【影像记录】 if(ti.calculateVideoAndPictureAmount(objectDao) > 0){ @@ -676,7 +686,7 @@ } // 统一修改返回的数据 - return updateReturnInfo(gridManager.converJsonString(totalResults, list, sql,TousseInstance.filterProperties),wareHouseId2s,packingRecordIds,invoiceIds,invoicePlanIds,idCardInstanceIDs,useRecordIDs); + return updateReturnInfo(gridManager.converJsonString(totalResults, list, sql,TousseInstance.filterProperties),wareHouseId2s,packingRecordIds,invoiceIds,invoicePlanIds,idCardInstanceIDs,useRecordIDs,unPackTousseDefinitionIds, unPackTousseRecyclingRecordIds); } /** @@ -711,7 +721,7 @@ * 修改返回的数据 * @param json */ - private String updateReturnInfo(String json, Set wareHouseId2s, Set packingRecordIds, List invoiceIds, List invoicePlanIds,Set idCardInstanceIDs,Set useRecordIDs) { + private String updateReturnInfo(String json, Set wareHouseId2s, Set packingRecordIds, List invoiceIds, List invoicePlanIds,Set idCardInstanceIDs,Set useRecordIDs,Set unPackTousseDefinitionIds, Set unPackTousseRecyclingRecordIds) { JSONObject jsonObject = JSONObject.fromObject(json); if(jsonObject == null){ return json; @@ -757,6 +767,15 @@ useRecordIDList.addAll(useRecordIDs); useRecords = objectDao.findByIds(UseRecord.class.getSimpleName(), useRecordIDList); } + Map unPackTousseWashAndDisinfectRecordMap = new HashMap(); + if(CollectionUtils.isNotEmpty(unPackTousseRecyclingRecordIds) + && CollectionUtils.isNotEmpty(unPackTousseDefinitionIds)){ + unPackTousseWashAndDisinfectRecordMap = getUnPackTousseInstanceWashAndDisinfectRecordMap(unPackTousseDefinitionIds, unPackTousseRecyclingRecordIds); + } + Map unPackTousseRecyclingRecordMap = new HashMap(); + if(CollectionUtils.isNotEmpty(unPackTousseRecyclingRecordIds)){ + unPackTousseRecyclingRecordMap = getUnPackTousseRecyclingRecordMap(unPackTousseRecyclingRecordIds); + } Map idCardInstanceIdAndNum = null; if(CollectionUtils.isNotEmpty(idCardInstanceIDs)){ idCardInstanceIdAndNum = new HashMap(); @@ -826,10 +845,114 @@ if(useRecordsFlag){// 添加使用记录信息(操作人,录入日期) addUseRecordsPlanInfo(obj, useRecords, sdf); } + //关联查询不装配的器械包的清洗记录 + if(MapUtils.isNotEmpty(unPackTousseWashAndDisinfectRecordMap)){ + JSONObject tdJSONObject = obj.optJSONObject("tousseDefinition"); + if(tdJSONObject != null){ + String key = tdJSONObject.optLong("id") + "_" + obj.optLong("recyclingRecordId"); + WashAndDisinfectRecord washAndDisinfectRecord = unPackTousseWashAndDisinfectRecordMap.get(key); + if(washAndDisinfectRecord != null){ + obj.put("disinfectIdentification", washAndDisinfectRecord.getDisinfectIdentification()); + obj.put("disinfectProgram", washAndDisinfectRecord.getDisinfectProgram()); + obj.put("washOperator", washAndDisinfectRecord.getOperator()); + obj.put("washOperatorCode", washAndDisinfectRecord.getOperatorCode()); + obj.put("washStartTime", washAndDisinfectRecord.getStartDateStr()); + obj.put("washEndTime", washAndDisinfectRecord.getEndDateStr()); + } + } + } + //关联查询不装配的器械包的回收记录 + if(MapUtils.isNotEmpty(unPackTousseRecyclingRecordMap)){ + Long recyclingRecordId = obj.optLong("recyclingRecordId"); + RecyclingRecord recyclingRecord = unPackTousseRecyclingRecordMap.get(recyclingRecordId); + if(recyclingRecord != null){ + obj.put("recyclingOperator", recyclingRecord.getOperator()); + obj.put("recyclingUser", recyclingRecord.getRecyclingUser()); + } + } } return jsonObject.toString(); } + /** + * 不装配的器械包 + * @param unPackTousseRecyclingRecordIds + * @return + */ + @SuppressWarnings("unchecked") + private Map getUnPackTousseRecyclingRecordMap(Set unPackTousseRecyclingRecordIds) { + Map result = new HashMap(); + if(CollectionUtils.isNotEmpty(unPackTousseRecyclingRecordIds)){ + List recyclingRecordIdList = new ArrayList(); + recyclingRecordIdList.addAll(unPackTousseRecyclingRecordIds); + List recyclingRecordList = objectDao.findByIds(RecyclingRecord.class.getSimpleName(), recyclingRecordIdList); + if(CollectionUtils.isNotEmpty(recyclingRecordList)){ + for (RecyclingRecord recyclingRecord : recyclingRecordList) { + result.put(recyclingRecord.getId(), recyclingRecord); + } + } + } + return result; + } + + /** + * 不装配的器械包通过回收记录关联查询清洗记录 + * @param unPackTousseInstanceIds + * @param unPackTousseRecyclingRecordIds + * @return + */ + @SuppressWarnings("unchecked") + private Map getUnPackTousseInstanceWashAndDisinfectRecordMap(Set unPackTousseDefinitionIds, Set unPackTousseRecyclingRecordIds) { + Map result = new HashMap(); + if(CollectionUtils.isEmpty(unPackTousseDefinitionIds) || CollectionUtils.isEmpty(unPackTousseRecyclingRecordIds)){ + return result; + } + //key = 包定义ID+"_"+回收记录ID + Map washAndDisinfectRecordIdMap = new HashMap(); + String sql = String.format("select cbrr.RecyclingRecord_ID, ci.toussedefinition_id, cbw.WashAndDisinfectRecord_ID " + + "from ClassifyBasket_RecyclingRecord cbrr " + + "join ClassifiedItem ci on ci.classifybasket_id = cbrr.ClassifyBasket_ID " + + "join ClassifyBasket_WashRecord cbw on cbw.ClassifyBasket_ID = ci.classifybasket_id " + + "where %s and %s ", + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("cbrr.RecyclingRecord_ID", unPackTousseRecyclingRecordIds), + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("ci.toussedefinition_id", unPackTousseDefinitionIds)); + ResultSet rs = null; + try { + rs = objectDao.executeSql(sql); + while(rs.next()){ + Long toussedefinitionId = rs.getLong("toussedefinition_id"); + Long recyclingRecordID = rs.getLong("RecyclingRecord_ID"); + Long washAndDisinfectRecordID = rs.getLong("WashAndDisinfectRecord_ID"); + String key = toussedefinitionId + "_" + recyclingRecordID; + washAndDisinfectRecordIdMap.put(key, washAndDisinfectRecordID); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + + if(MapUtils.isNotEmpty(washAndDisinfectRecordIdMap)){ + List washAndDisinfectRecordIdList = new ArrayList(); + washAndDisinfectRecordIdList.addAll(washAndDisinfectRecordIdMap.values()); + List list = objectDao.findByIds(WashAndDisinfectRecord.class.getSimpleName(), washAndDisinfectRecordIdList); + if(CollectionUtils.isNotEmpty(list)){ + Map washAndDisinfectRecordMap = new HashMap(); + for (WashAndDisinfectRecord washAndDisinfectRecord : list) { + washAndDisinfectRecordMap.put(washAndDisinfectRecord.getId(), washAndDisinfectRecord); + } + for (String key : washAndDisinfectRecordIdMap.keySet()) { + Long washAndDisinfectRecordID = washAndDisinfectRecordIdMap.get(key); + WashAndDisinfectRecord record = washAndDisinfectRecordMap.get(washAndDisinfectRecordID); + result.put(key, record); + } + } + } + + return result; + } + + /** * 添加使用记录信息(操作人,录入日期) * @param obj * @param useRecords Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java =================================================================== diff -u -r33902 -r34349 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java (.../InvoiceAction.java) (revision 33902) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java (.../InvoiceAction.java) (revision 34349) @@ -67,6 +67,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.position.TousseOperation; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; +import com.forgon.disinfectsystem.entity.becleanitem.ClassifiedItem; import com.forgon.disinfectsystem.entity.becleanitem.ClassifyBasket; import com.forgon.disinfectsystem.entity.foreigntousseapplication.ForeignTousseApplication; import com.forgon.disinfectsystem.entity.invoicemanager.DiposableGoodsItem; @@ -1104,9 +1105,9 @@ //清洗记录 JSONArray washAndDisinfectRecordInfoJSONs = new JSONArray(); //此器械包实例关联的所有清洗篮筐的所有清洗记录(因为每个清洗篮筐可以被清洗多次) - if(StringUtils.isNotBlank(ti.getClassifyBasketIds())){ - String [] classifyBasketIdArray = ti.getClassifyBasketIds().split(";"); - for (String classifyBasketId : classifyBasketIdArray) { + List classifyBasketIdList = getTousseInstanceClassifyBasketId(ti); + if(CollectionUtils.isNotEmpty(classifyBasketIdList)){ + for (Long classifyBasketId : classifyBasketIdList) { ClassifyBasket classifyBasket = classifyBasketManager.get(classifyBasketId); if(classifyBasket != null){ List washAndDisinfectRecordList = classifyBasket.getWashAndDisinfectRecords(); @@ -1355,6 +1356,46 @@ } } + /** + * 查询器械包实例的回收篮筐 + * @param ti + * @return + */ + private List getTousseInstanceClassifyBasketId(TousseInstance ti) { + List result = new ArrayList(); + if(StringUtils.isNotBlank(ti.getClassifyBasketIds())){ + String [] classifyBasketIdArray = ti.getClassifyBasketIds().split(";"); + for (String classifyBasketId : classifyBasketIdArray) { + result.add(Long.valueOf(classifyBasketId)); + } + }else{ + if(DatabaseUtil.isPoIdValid(ti.getRecyclingRecordId())){ + String sql = String.format("select cbr.classifybasket_id from %s ci " + + "join ClassifyBasket_RecyclingRecord cbr on ci.classifybasket_id = cbr.ClassifyBasket_ID " + + "where ci.tousseDefinitionID = %s " + + "and cbr.RecyclingRecord_ID = %s", + ClassifiedItem.class.getSimpleName(), + ti.getTousseDefinition().getId(), + ti.getRecyclingRecordId()); + ResultSet rs = null; + try { + rs = objectDao.executeSql(sql); + while(rs.next()){ + Long classifybasket_id = rs.getLong("classifybasket_id"); + if(!result.contains(classifybasket_id)){ + result.add(classifybasket_id); + } + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + } + } + return result; + } + @SuppressWarnings("unchecked") public String viewDiposableGoodsItemList() { HttpServletRequest request = StrutsParamUtils.getRequest();