Index: forgon-tools/src/main/java/com/forgon/Constants.java =================================================================== diff -u -r34359 -r34372 --- forgon-tools/src/main/java/com/forgon/Constants.java (.../Constants.java) (revision 34359) +++ forgon-tools/src/main/java/com/forgon/Constants.java (.../Constants.java) (revision 34372) @@ -27,7 +27,7 @@ "4.9.25","4.9.26","4.9.27","4.9.28","4.9.29","4.9.30","4.9.31","4.9.32","4.9.33","4.9.34","4.9.35","4.9.36","4.9.37","4.9.38","4.9.39","4.9.40","4.9.41","4.9.42","4.9.43","4.9.44", "4.9.45","4.9.46","4.9.47","4.9.48","4.9.49","4.9.50","4.9.51","4.9.52","4.9.53","4.9.54","4.9.55","4.9.56","4.9.57","4.9.58","4.9.59","4.9.60","4.9.61","4.9.62", "4.9.63","4.9.64","4.9.65","4.9.66","4.9.67","4.9.68","4.9.69","4.9.70","4.9.71","4.9.72","4.9.73","4.9.74","4.9.75","4.9.76","4.9.77","4.9.78","4.9.79","4.9.80","4.9.81","4.9.82","4.9.83","4.9.84","4.9.85", - "4.9.86","4.9.87","4.9.88","4.9.89","4.9.90","4.9.91","4.9.92","4.9.93","4.9.94","4.9.95","4.9.96","4.9.97","4.9.98"}; + "4.9.86","4.9.87","4.9.88","4.9.89","4.9.90","4.9.91","4.9.92","4.9.93","4.9.94","4.9.95","4.9.96","4.9.97","4.9.98","4.9.99"}; // 版本列表(4.0版本升级4.1版需要分两步:先从4.0升到4.1.0、然后从4.1.0升级4.1最新版本) /*public final static String[] SOFTWARE_VERSION_ARRAY = new String[] { Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java =================================================================== diff -u -r34336 -r34372 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 34336) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 34372) @@ -376,6 +376,9 @@ // 更新装配任务的清洗时间等信息 updatePackingTaskWashInfo(washRecord); + // 更新不装配的器械包的清洗时间等信息ZSSXLRMYY-217 + updateUnPackTousseInstanceWashInfo(washRecord); + rollbackRemoveBasketStatus(toDeleteBasketMap); // 删除旧数据,未关联的材料记录 deleteWashAndDisinfeceRecordMaterialWithoutConnection(); @@ -403,6 +406,86 @@ } /** + * 更新不装配的器械包的清洗时间等信息ZSSXLRMYY-217 + * @param washRecord + */ + private void updateUnPackTousseInstanceWashInfo(WashAndDisinfectRecord washRecord) { + if(!DatabaseUtil.isPoIdValid(washRecord.getId())){ + return; + } + + List classifyBasketIdList = new ArrayList(); + List classifyBaskets = washRecord.getClassifyBaskets(); + if(CollectionUtils.isEmpty(classifyBaskets)){ + return; + } + for (ClassifyBasket classifyBasket : classifyBaskets) { + classifyBasketIdList.add(classifyBasket.getId()); + } + + //根据篮筐实例ID查询不装配的器械包实例 + List list = getUnPackTousseInstanceByClassifyBasketIds(classifyBasketIdList); + + if(CollectionUtils.isEmpty(list)){ + return; + } + + for (TousseInstance tousseInstance : list) { + tousseInstance.setDisinfectIdentification(washRecord.getDisinfectIdentification()); + tousseInstance.setDisinfectProgram(washRecord.getDisinfectProgram()); + tousseInstance.setWashOperator(washRecord.getOperator()); + tousseInstance.setWashOperatorCode(washRecord.getOperatorCode()); + tousseInstance.setWashStartTime(washRecord.getStartDateStr()); + tousseInstance.setWashEndTime(washRecord.getEndDateStr()); + if(StringUtils.isBlank(tousseInstance.getRecyclingOperator()) + || StringUtils.isBlank(tousseInstance.getRecyclingUser())){ + RecyclingRecord recyclingRecord = tousseInstance.getRecyclingRecord(objectDao); + if(recyclingRecord != null){ + tousseInstance.setRecyclingOperator(recyclingRecord.getOperator()); + tousseInstance.setRecyclingUser(recyclingRecord.getRecyclingUser()); + } + } + objectDao.saveOrUpdate(tousseInstance); + } + + } + + /** + * 根据回收篮筐ID查询回收就产生的器械包实例(装配记录为空的器械包实例) + * @param classifyBasketIdList + * @return + */ + @SuppressWarnings("unchecked") + private List getUnPackTousseInstanceByClassifyBasketIds( + List classifyBasketIdList) { + + List list = new ArrayList(); + if(CollectionUtils.isEmpty(classifyBasketIdList)){ + return list; + } + String sql = String.format("select ti.id tiId from ClassifyBasket_RecyclingRecord cbrr " + + "join %s ti on ti.recyclingRecordId = cbrr.RecyclingRecord_ID " + + "where %s and ti.packingRecord_id is null and ti.comboTousseDefinitionId is null ", + TousseInstance.class.getSimpleName(), + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("cbrr.ClassifyBasket_ID", classifyBasketIdList)); + ResultSet rs = null; + List tousseInstanceIdList = new ArrayList(); + try { + rs = objectDao.executeSql(sql); + while(rs.next()){ + tousseInstanceIdList.add(rs.getLong("tiId")); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + list = objectDao.findByIds(TousseInstance.class.getSimpleName(), tousseInstanceIdList); + + return list; + } + + /** * 判断篮筐是否存在责任人为空的情况 * @param classifyBasketInfoMap * @return @@ -1424,6 +1507,7 @@ } if(washRecord.getClassifyBaskets() != null){ + List classifyBasketIdList = new ArrayList(); //修改篮筐状态 for (ClassifyBasket classifyBasket : washRecord.getClassifyBaskets()) { Container container = containerManager.getContainerByBarcode(classifyBasket.getContainerBarcode()); @@ -1451,8 +1535,22 @@ String sql = " update PackingTask set washRecord_id = null ,washTime = null where classifyBasket_id = " + classifyBasket.getId(); objectDao.excuteSQL(sql); } + classifyBasketIdList.add(classifyBasket.getId()); } } + // 更新不装配的器械包的清洗时间等信息ZSSXLRMYY-217 + List list = getUnPackTousseInstanceByClassifyBasketIds(classifyBasketIdList); + if(CollectionUtils.isNotEmpty(list)){ + for (TousseInstance tousseInstance : list) { + tousseInstance.setDisinfectIdentification(null); + tousseInstance.setDisinfectProgram(null); + tousseInstance.setWashOperator(null); + tousseInstance.setWashOperatorCode(null); + tousseInstance.setWashStartTime(null); + tousseInstance.setWashEndTime(null); + objectDao.saveOrUpdate(tousseInstance); + } + } } String basketSQL = String.format("delete ClassifyBasket_WashRecord where WashAndDisinfectRecord_ID = %s", washRecord.getId()); @@ -2436,6 +2534,8 @@ } //修改清洗中断记录的“中断完成操纵类型”和“中断完成时间”两个属性BJDXZLYY-27 updateInterruptRecordFinishType(record.getId(), interruptOptType); + //更新不装配的器械包的清洗时间等信息ZSSXLRMYY-217 + updateUnPackTousseInstanceWashInfo(record); } } Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/basic/service/MaintainManagerImpl.java =================================================================== diff -u -r34241 -r34372 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/basic/service/MaintainManagerImpl.java (.../MaintainManagerImpl.java) (revision 34241) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/basic/service/MaintainManagerImpl.java (.../MaintainManagerImpl.java) (revision 34372) @@ -25,6 +25,7 @@ import net.sf.json.JSONObject; import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.collections.MapUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.DateUtils; @@ -1569,6 +1570,9 @@ case "4.9.94_4.9.95": UpdateData_4_9_94_4_9_95(updateDataContext); break; + case "4.9.98_4.9.99": + UpdateData_4_9_98_4_9_99(updateDataContext); + break; } return false; } @@ -2933,6 +2937,79 @@ } dataUpdater.logInfo(msg); } + + /** + * 更新不装配的器械包实例的清洗信息 + * @param updateDataContext + */ + @SuppressWarnings("unchecked") + private void UpdateData_4_9_98_4_9_99(UpdateDataContext updateDataContext) { + DataUpdater dataUpdater = updateDataContext.getDataUpdater(); + String msg = null; + msg = String + .format("已执行方法(%s.%s)!", MaintainManagerImpl.class.getName(), + "UpdateData_4_9_98_4_9_99()"); + List list = new ArrayList(); + String sql = String.format("select ti.id tiId, wdr.id wdrId, wdr.disinfectIdentification, wdr.disinfectProgram, wdr.operator, wdr.operatorCode" + + ", " + dateQueryAdapter.dateToVarchar4("wdr.startDate") + " startDateStr" + + ", " + dateQueryAdapter.dateToVarchar4("wdr.endDate") + " endDateStr " + + "from ClassifyBasket_RecyclingRecord cbrr " + + "join %s ti on ti.recyclingRecordId = cbrr.RecyclingRecord_ID " + + "join ClassifyBasket_WashRecord cbwr on cbwr.ClassifyBasket_ID = cbrr.ClassifyBasket_ID " + + "join %s wdr on wdr.id = cbwr.WashAndDisinfectRecord_ID " + + "where ti.packingRecord_id is null and ti.comboTousseDefinitionId is null " + + "order by ti.id, wdr.id desc ", + TousseInstance.class.getSimpleName(), + WashAndDisinfectRecord.class.getSimpleName()); + ResultSet rs = null; + List tousseInstanceIdList = new ArrayList(); + Map> tousseInstanceWashInfoMap = new HashMap>(); + try { + rs = objectDao.executeSql(sql); + while(rs.next()){ + tousseInstanceIdList.add(rs.getLong("tiId")); + Long tiId = rs.getLong("tiId"); + //Long wdrId = rs.getLong("wdrId"); + String disinfectIdentification = rs.getString("disinfectIdentification"); + String disinfectProgram = rs.getString("disinfectProgram"); + String operator = rs.getString("operator"); + String operatorCode = rs.getString("operatorCode"); + String startDateStr = rs.getString("startDateStr"); + String endDateStr = rs.getString("endDateStr"); + Map washInfoMap = new HashMap(); + washInfoMap.put("disinfectIdentification", disinfectIdentification); + washInfoMap.put("disinfectProgram", disinfectProgram); + washInfoMap.put("operator", operator); + washInfoMap.put("operatorCode", operatorCode); + washInfoMap.put("startDateStr", startDateStr); + washInfoMap.put("endDateStr", endDateStr); + tousseInstanceWashInfoMap.put(tiId, washInfoMap); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + list = objectDao.findByIds(TousseInstance.class.getSimpleName(), tousseInstanceIdList); + if(CollectionUtils.isNotEmpty(list)){ + for (TousseInstance ti : list) { + Map washInfoMap = tousseInstanceWashInfoMap.get(ti.getId()); + if(MapUtils.isNotEmpty(washInfoMap)){ + if(StringUtils.isBlank(ti.getDisinfectIdentification())){ + ti.setDisinfectIdentification(washInfoMap.get("disinfectIdentification")); + ti.setDisinfectProgram(washInfoMap.get("disinfectProgram")); + ti.setWashOperator(washInfoMap.get("operator")); + ti.setWashOperatorCode(washInfoMap.get("operatorCode")); + ti.setWashStartTime(washInfoMap.get("startDateStr")); + ti.setWashEndTime(washInfoMap.get("endDateStr")); + objectDao.saveOrUpdate(ti); + } + } + } + } + + dataUpdater.logInfo(msg); + } @Override public void updateForeignTousseInfo() {