Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/action/WashAndDisinfectRecordAction.java =================================================================== diff -u -r33537 -r33859 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/action/WashAndDisinfectRecordAction.java (.../WashAndDisinfectRecordAction.java) (revision 33537) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/action/WashAndDisinfectRecordAction.java (.../WashAndDisinfectRecordAction.java) (revision 33859) @@ -48,6 +48,7 @@ import com.forgon.disinfectsystem.tousse.imagefilemanager.service.ImageFileManager; import com.forgon.disinfectsystem.tousse.materialdefinition.service.MaterialDefinitionManager; import com.forgon.disinfectsystem.washanddisinfectmanager.washanddisinfectrecord.service.WashAndDisinfectRecordManager; +import com.forgon.exception.SystemException; import com.forgon.exception.service.ExceptionHandler; import com.forgon.log.service.LogManager; import com.forgon.tools.ImageUtils; @@ -803,6 +804,21 @@ } return img; } - ////////////////////////////// + /** + * 清洗程序的符合性检查:清洗程序和清洗物品的清洗程序是否符合(DGSETYY-32) + */ + public void validateDisinfectProgram(){ + String disinfectProgram = StrutsParamUtils.getPraramValue("disinfectProgram", null); + String classifyBasketInfo = StrutsParamUtils.getPraramValue("classifyBasketInfo", null); + JSONObject result = JSONUtil.buildJsonObject(true); + try { + washAndDisinfectRecordManager.validateDisinfectProgram(disinfectProgram, classifyBasketInfo); + } catch (SystemException e) { + result = JSONUtil.buildJsonObject(false, e.getMessage()); + } catch (Exception e) { + result = JSONUtil.buildJsonObject(false, "清洗程序的符合性检查失败:" + e.getMessage()); + } + StrutsResponseUtils.output(result); + } } Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java =================================================================== diff -u -r33564 -r33859 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 33564) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 33859) @@ -4361,4 +4361,70 @@ objectDao.saveOrUpdate(wdr); } } + + + @Override + public void validateDisinfectProgram(String disinfectProgram, String classifyBasketInfo) { + + boolean enableValidationOfDisinfectProgram = + ConfigUtils.getSystemSetConfigByNameBool("enableValidationOfDisinfectProgram", false); + if(!enableValidationOfDisinfectProgram){ + return; + } + + if(StringUtils.isBlank(disinfectProgram)){ + throw new RuntimeException("清洗程序不能为空!"); + } + if(StringUtils.isBlank(classifyBasketInfo)){ + return; + } + Map classifyBasketInfoMap = getClassifyBasketInfoMap(classifyBasketInfo); + if(MapUtils.isEmpty(classifyBasketInfoMap)){ + return; + } + + Set errorDisinfectProgramToussNames = new HashSet(); + String sql = String.format("select td.cleanMethod, td.name tousseName " + + "from %s cb " + + "join %s ci on ci.classifybasket_id = cb.id " + + "join %s td on td.id = ci.toussedefinition_id " + + "where ci.itemType <> '材料' " + + "and td.cleanMethod is not null and td.cleanMethod <> ''" + + "and td.cleanMethod <> '%s' " + + "and %s ", + ClassifyBasket.class.getSimpleName(), + ClassifiedItem.class.getSimpleName(), + TousseDefinition.class.getSimpleName(), + disinfectProgram, + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("cb.id", classifyBasketInfoMap.keySet())); + ResultSet rs = null; + try { + rs = objectDao.executeSql(sql); + while(rs.next()){ + String tousseName = rs.getString("tousseName"); + if(StringUtils.isNotBlank(tousseName)){ + errorDisinfectProgramToussNames.add(tousseName); + } + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + + if(CollectionUtils.isNotEmpty(errorDisinfectProgramToussNames)){ + //【所选择的清洗程序与清洗物品的清洗程序不一致,是否继续清洗? 物品如下:物品1、物品2、物品3......】 + String message = "【所选择的清洗程序与清洗物品的清洗程序不一致,是否继续清洗? 物品如下:"; + if(errorDisinfectProgramToussNames.size() > 3){ + List tousseNameList = new ArrayList(errorDisinfectProgramToussNames); + message += String.format("%s......】", + StringTools.join(tousseNameList.subList(0, 3), "、")); + }else{ + message += String.format("%s】", + StringTools.join(errorDisinfectProgramToussNames, "、")); + } + throw new SystemException(message); + } + + } } Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManager.java =================================================================== diff -u -r33537 -r33859 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManager.java (.../WashAndDisinfectRecordManager.java) (revision 33537) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManager.java (.../WashAndDisinfectRecordManager.java) (revision 33859) @@ -346,5 +346,12 @@ * @param ids 清洗记录ID */ public void washInterrupt(Collection ids); + + /** + * 清洗程序的符合性检查:清洗程序和清洗物品的清洗程序是否符合(DGSETYY-32) + * @param disinfectProgram 清洗程序 + * @param classifyBasketInfo 篮筐物品:[{"classifyBasketID":220273,"personInCharge":"","personInChargeCode":"","position":""}] + */ + public void validateDisinfectProgram(String disinfectProgram, String classifyBasketInfo); }