Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r40656 -r40684 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 40656) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 40684) @@ -59,6 +59,7 @@ import com.forgon.disinfectsystem.datasynchronization.dao.SyncForeignTousseApplicationDao; import com.forgon.disinfectsystem.entity.adverseeventrecord.AdverseEventRecord; import com.forgon.disinfectsystem.entity.assestmanagement.DiposableGoodsInstance; +import com.forgon.disinfectsystem.entity.basedatamanager.cleanmethod.CleanMethod; import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; import com.forgon.disinfectsystem.entity.basedatamanager.imagefilemanager.ImageFile; import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; @@ -67,6 +68,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.signRecord.SignRecord; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.tousseGroup.TousseGroup; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefOptionCleanMethod; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.basedatamanager.videomanager.VideoFile; @@ -7678,6 +7680,10 @@ return JSONUtil.buildJsonObject(false,"对应的申请单已经不存在,请打开新的申请单进行回收!"); } } + JSONObject checkResult = checkCleanType(td, tousseIntoBasketInfo); + if(checkResult != null && !checkResult.optBoolean(JSONUtil.JSON_KEY_SUCCESS)){ + return checkResult; + } if(ip != null){ if(ip.ended()){ return JSONUtil.buildJsonObject(false, "申请单已被终止!"); @@ -8006,7 +8012,101 @@ obj.put("data", data); return obj; } - + @Override + public JSONObject checkCleanType(TousseDefinition td, String tousseIntoBasketInfo){ + boolean enableTypesOfWashingFunction = CssdUtils.getSystemSetConfigByNameBool("enableTypesOfWashingFunction",false); + if(!enableTypesOfWashingFunction){ + return null; + } + if(StringUtils.isBlank(tousseIntoBasketInfo)){ + return JSONUtil.buildJsonObject(true, "篮筐内无其它物品,允许入筐"); + } + JSONArray tousseIntoBasketInfoArr = JSONArray.fromObject(tousseIntoBasketInfo); + if(CollectionUtils.isEmpty(tousseIntoBasketInfoArr)){ + return JSONUtil.buildJsonObject(true, "篮筐内无其它物品,允许入筐"); + } + Set tousseDefinitionIds = new HashSet<>(); + for (int i = 0; i < tousseIntoBasketInfoArr.size(); i++) { + long tousseDefinitionId = tousseIntoBasketInfoArr.optJSONObject(i).optLong("tousseDefinitionId"); + if(!DatabaseUtil.isPoIdValid(tousseDefinitionId)){ + continue; + } + tousseDefinitionIds.add(tousseDefinitionId); + } + if(CollectionUtils.isEmpty(tousseDefinitionIds)){ + return JSONUtil.buildJsonObject(true, "篮筐内无其它物品,允许入筐"); + } + Set oldCleanTypes = getCleanTypes(tousseDefinitionIds); + if(CollectionUtils.isEmpty(oldCleanTypes)){ + return JSONUtil.buildJsonObject(true, "篮筐内物品无清洗类型,允许入筐"); + } + Set tdId = new HashSet<>(); + tdId.add(td.getId()); + Set newCleanTypes = getCleanTypes(tdId); + if(CollectionUtils.isEmpty(newCleanTypes)){ + return JSONUtil.buildJsonObject(true, td.getName() + "无清洗类型,允许入筐"); + } + Set intersection = new HashSet<>(oldCleanTypes); // 复制 oldCleanTypes + intersection.retainAll(newCleanTypes); // 保留交集部分 + if(CollectionUtils.isNotEmpty(intersection)){ + return JSONUtil.buildJsonObject(true, td.getName() + "与篮筐内物品存在相同的清洗类型,允许入筐"); + } + return JSONUtil.buildJsonObject(false, td.getName() + "的清洗类型不同于篮筐内的其他物品,不能添加到篮筐!"); + } + + /** + * 获取包定义的默认清洗类型 和 可选清洗类型 + * @param tousseDefinitionIds + * @return + */ + private Set getCleanTypes(Set tousseDefinitionIds){ + Set cleanTypes = new HashSet<>(); + if(CollectionUtils.isEmpty(tousseDefinitionIds)){ + return cleanTypes; + } + String sql = "select cm.cleanType cleanType1 ,cmm.cleanType cleanType2 from " + + TousseDefinition.class.getSimpleName() + + " td left join "+ CleanMethod.class.getSimpleName() + +" cm on cm.cleanMethod=td.cleanMethod " + + //可选的清洗程序 + " left join "+ TousseDefOptionCleanMethod.class.getSimpleName() + //ancestorID + +" tc on tc.tousseDefinitionId=td.ancestorID left join " + + CleanMethod.class.getSimpleName() + +" cmm on cmm.id=tc.cleanMethodId " + + " where 1=1 " + + SqlUtils.getInLongListSql("td.id",tousseDefinitionIds); + +/* String sql = "select tc.id cleanType1 ,tc.cleanMethodId cleanType2 from " + + TousseDefinition.class.getSimpleName() + + " td" + + " left join "+ TousseDefOptionCleanMethod.class.getSimpleName() + +" tc on tc.tousseDefinitionId=td.id" + //+ " left join " + //+ CleanMethod.class.getSimpleName() + //+" cmm on cmm.id=tc.cleanMethodId " + + " where 1=1 " + + SqlUtils.getInLongListSql("td.id",tousseDefinitionIds);*/ + ResultSet rs = null; + try { + rs = objectDao.executeSql(sql); + while(rs.next()){ + String cleanType1 = rs.getString(1); + String cleanType2 = rs.getString(2); + if(StringUtils.isNotBlank(cleanType1)){ + cleanTypes.add(cleanType1); + } + if(StringUtils.isNotBlank(cleanType2)){ + cleanTypes.add(cleanType2); + } + } + } catch (SQLException e) { + logger.error(e); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return cleanTypes; + } // 一次校验多个单的 public String recycleTousseIntoBasket(String params){ JSONObject json = JSONUtil.buildJsonObject(false); Index: ssts-web/src/test/java/test/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerForCheckCleanTypeTest.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerForCheckCleanTypeTest.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerForCheckCleanTypeTest.java (revision 40684) @@ -0,0 +1,289 @@ +package test.forgon.disinfectsystem.recyclingrecord.service; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.junit.Test; + +import test.forgon.disinfectsystem.AbstractCSSDTest; + +import com.forgon.disinfectsystem.entity.basedatamanager.cleanmethod.CleanMethod; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefOptionCleanMethod; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; +import com.forgon.serialnumber.model.SerialNum; +import com.forgon.tools.json.JSONUtil; +/** + * 入筐时校验清洗类型是否一致 + * DGSETYY-79 + * 规则 空清洗类型随便入筐 + * 除空清洗类型外,是有相同的清洗类型的包才能入筐 + * 用与比较的类型来源 祖先包定义的清洗程序的清洗类型 和 祖先包定义的的可选清洗程序的清洗类型 + * @author zc.li + * + */ +public class RecyclingRecordManagerForCheckCleanTypeTest extends AbstractCSSDTest { + + private CleanMethod saveCleanMethod(String cleanMethod, String CleanType){ + CleanMethod cm = new CleanMethod(); + cm.setCleanMethod(cleanMethod); + cm.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + cm.setCleanType(CleanType); + objectDao.save(cm); + return cm; + } + private TousseDefinition saveTousseDefinition(String cleanMethod){ + TousseDefinition td = new TousseDefinition(); + td.setCleanMethod(cleanMethod); + td.setName("包1"); + objectDao.save(td); + td.setAncestorID(td.getId()); + objectDao.update(td); + //此处如果删除 后续一些sql查询可能获取不到AncestorID 用AncestorID关联也查不到数据 + td = (TousseDefinition)objectDao.getById(TousseDefinition.class.getSimpleName(), td.getId()); + return td; + } + private TousseDefOptionCleanMethod saveTousseDefOptionCleanMethod(CleanMethod cleanMethod, TousseDefinition td){ + TousseDefOptionCleanMethod tousseDefOptionCleanMethod = new TousseDefOptionCleanMethod(); + tousseDefOptionCleanMethod.setCleanMethodId(cleanMethod.getId()); + tousseDefOptionCleanMethod.setTousseDefinitionId(td.getAncestorID()); + objectDao.save(tousseDefOptionCleanMethod); + return tousseDefOptionCleanMethod; + } + /** + * 第一次入筐是不检验的 + */ + @Test + public void checkCleanType1(){ + CleanMethod cleanMethod1 = saveCleanMethod("P1","清洗类型c1"); + + TousseDefinition td = saveTousseDefinition(cleanMethod1.getCleanMethod()); + + JSONArray tousseIntoBasketInfoJsonArr = new JSONArray(); + //第一次入筐 是能入的 + JSONObject result = recyclingRecordManager.checkCleanType(td , tousseIntoBasketInfoJsonArr.toString()); + assertNotNull(result); + assertEquals(true, result.optBoolean(JSONUtil.JSON_KEY_SUCCESS)); + assertEquals("篮筐内无其它物品,允许入筐", result.optString(JSONUtil.JSON_KEY_MESSAGE)); + } + + /** + * 不同清洗程序 不同的清洗类型 不能一起入筐 + * 第一次入筐了清洗类型c1的物品 再入筐c2的物品时 需要拦截 + */ + @Test + public void checkCleanType2(){ + CleanMethod cleanMethod1 = saveCleanMethod("P1","清洗类型c1"); + CleanMethod cleanMethod2 = saveCleanMethod("P2","清洗类型c2"); + TousseDefinition td1 = saveTousseDefinition(cleanMethod1.getCleanMethod()); + TousseDefinition td2 = saveTousseDefinition(cleanMethod2.getCleanMethod()); + JSONArray tousseIntoBasketInfoJsonArr = new JSONArray(); + JSONObject tousseIntoBasketInfoJson = new JSONObject(); + tousseIntoBasketInfoJson.put("tousseDefinitionId", td1.getId()); + tousseIntoBasketInfoJsonArr.add(tousseIntoBasketInfoJson); + JSONObject result = recyclingRecordManager.checkCleanType(td2 , tousseIntoBasketInfoJsonArr.toString()); + assertNotNull(result); + assertEquals(td2.getName() + "的清洗类型不同于篮筐内的其他物品,不能添加到篮筐!", result.optString(JSONUtil.JSON_KEY_MESSAGE)); + } + /** + * 不同清洗程序 相同的清洗类型 能一起入筐 + * 第一次入筐了清洗类型c1的物品 再入筐c1的物品时 不需要拦截 + */ + @Test + public void checkCleanType3(){ + CleanMethod cleanMethod1 = saveCleanMethod("P1","清洗类型c1"); + CleanMethod cleanMethod2 = saveCleanMethod("P2","清洗类型c1"); + TousseDefinition td1 = saveTousseDefinition(cleanMethod1.getCleanMethod()); + TousseDefinition td2 = saveTousseDefinition(cleanMethod2.getCleanMethod()); + JSONArray tousseIntoBasketInfoJsonArr = new JSONArray(); + JSONObject tousseIntoBasketInfoJson = new JSONObject(); + tousseIntoBasketInfoJson.put("tousseDefinitionId", td1.getId()); + tousseIntoBasketInfoJsonArr.add(tousseIntoBasketInfoJson); + JSONObject result = recyclingRecordManager.checkCleanType(td2 , tousseIntoBasketInfoJsonArr.toString()); + assertNotNull(result); + assertEquals(true, result.optBoolean(JSONUtil.JSON_KEY_SUCCESS)); + assertEquals(td2.getName() + "与篮筐内物品存在相同的清洗类型,允许入筐", result.optString(JSONUtil.JSON_KEY_MESSAGE)); + } + + /** + * 校验可选清洗程序 + * 先入了包1 包1可选程序为P1 P2 对应清洗类型c1 c2 + * 此时入筐 包2 包2清洗类型为null + * 此时允许入筐 + */ + @Test + public void checkCleanType4(){ + CleanMethod cleanMethod1 = saveCleanMethod("P1","清洗类型c1"); + CleanMethod cleanMethod2 = saveCleanMethod("P2","清洗类型c2"); + TousseDefinition td1 = saveTousseDefinition(cleanMethod1.getCleanMethod()); + TousseDefinition td2 = saveTousseDefinition(null); + saveTousseDefOptionCleanMethod(cleanMethod1 , td1); + saveTousseDefOptionCleanMethod(cleanMethod2 , td1); + + JSONArray tousseIntoBasketInfoJsonArr = new JSONArray(); + JSONObject tousseIntoBasketInfoJson = new JSONObject(); + tousseIntoBasketInfoJson.put("tousseDefinitionId", td1.getId()); + tousseIntoBasketInfoJsonArr.add(tousseIntoBasketInfoJson); + + JSONObject result = recyclingRecordManager.checkCleanType(td2 , tousseIntoBasketInfoJsonArr.toString()); + assertNotNull(result); + assertEquals(true, result.optBoolean(JSONUtil.JSON_KEY_SUCCESS)); + assertEquals(td2.getName() + "无清洗类型,允许入筐", result.optString(JSONUtil.JSON_KEY_MESSAGE)); + } + /** + * 校验可选清洗程序 + * 先入了包1 包1可选程序为P1 P2 对应清洗类型c1 c2 + * 此时入筐 包2 包2清洗类型为P3 对应清洗类型c3 + * 此时不允许入筐 + */ + @Test + public void checkCleanType5(){ + CleanMethod cleanMethod1 = saveCleanMethod("P1","清洗类型c1"); + CleanMethod cleanMethod2 = saveCleanMethod("P2","清洗类型c2"); + CleanMethod cleanMethod3 = saveCleanMethod("P3","清洗类型c3"); + TousseDefinition td1 = saveTousseDefinition(cleanMethod1.getCleanMethod()); + TousseDefinition td2 = saveTousseDefinition(cleanMethod3.getCleanMethod()); + saveTousseDefOptionCleanMethod(cleanMethod1 , td1); + saveTousseDefOptionCleanMethod(cleanMethod2 , td1); + + JSONArray tousseIntoBasketInfoJsonArr = new JSONArray(); + JSONObject tousseIntoBasketInfoJson = new JSONObject(); + tousseIntoBasketInfoJson.put("tousseDefinitionId", td1.getId()); + tousseIntoBasketInfoJsonArr.add(tousseIntoBasketInfoJson); + + JSONObject result = recyclingRecordManager.checkCleanType(td2 , tousseIntoBasketInfoJsonArr.toString()); + assertNotNull(result); + assertEquals(false, result.optBoolean(JSONUtil.JSON_KEY_SUCCESS)); + assertEquals(td2.getName() + "的清洗类型不同于篮筐内的其他物品,不能添加到篮筐!", result.optString(JSONUtil.JSON_KEY_MESSAGE)); + } + /** + * 校验可选清洗程序 + * 先入了包1 包1可选程序为P1 P2 对应清洗类型c1 c2 + * 此时入筐 包2 包2清洗类型为P3 对应清洗类型c1 + * 此时允许入筐 + */ + @Test + public void checkCleanType6(){ + CleanMethod cleanMethod1 = saveCleanMethod("P1","清洗类型c1"); + CleanMethod cleanMethod2 = saveCleanMethod("P2","清洗类型c2"); + CleanMethod cleanMethod3 = saveCleanMethod("P3","清洗类型c1"); + TousseDefinition td1 = saveTousseDefinition(null); + TousseDefinition td2 = saveTousseDefinition(cleanMethod3.getCleanMethod()); + saveTousseDefOptionCleanMethod(cleanMethod1 , td1); + saveTousseDefOptionCleanMethod(cleanMethod2 , td1); + + JSONArray tousseIntoBasketInfoJsonArr = new JSONArray(); + JSONObject tousseIntoBasketInfoJson = new JSONObject(); + tousseIntoBasketInfoJson.put("tousseDefinitionId", td1.getId()); + tousseIntoBasketInfoJsonArr.add(tousseIntoBasketInfoJson); + JSONObject result = recyclingRecordManager.checkCleanType(td2 , tousseIntoBasketInfoJsonArr.toString()); + assertNotNull(result); + assertEquals(true, result.optBoolean(JSONUtil.JSON_KEY_SUCCESS)); + assertEquals(td2.getName() + "与篮筐内物品存在相同的清洗类型,允许入筐", result.optString(JSONUtil.JSON_KEY_MESSAGE)); + } + /** + * 校验可选清洗程序 + * 先入了包1 包1可选程序为P1 P2 对应清洗类型c1 c2 + * 此时入筐 包2 包2清洗类型为P3 P4 对应清洗类型c3 c4 + * 此时不允许入筐 + */ + @Test + public void checkCleanType7(){ + CleanMethod cleanMethod1 = saveCleanMethod("P1","清洗类型c1"); + CleanMethod cleanMethod2 = saveCleanMethod("P2","清洗类型c2"); + CleanMethod cleanMethod3 = saveCleanMethod("P3","清洗类型c3"); + CleanMethod cleanMethod4 = saveCleanMethod("P4","清洗类型c4"); + TousseDefinition td1 = saveTousseDefinition(null); + TousseDefinition td2 = saveTousseDefinition(null); + + + saveTousseDefOptionCleanMethod(cleanMethod1 , td1); + saveTousseDefOptionCleanMethod(cleanMethod2 , td1); + saveTousseDefOptionCleanMethod(cleanMethod3 , td2); + saveTousseDefOptionCleanMethod(cleanMethod4 , td2); + + JSONArray tousseIntoBasketInfoJsonArr = new JSONArray(); + JSONObject tousseIntoBasketInfoJson = new JSONObject(); + tousseIntoBasketInfoJson.put("tousseDefinitionId", td1.getId()); + tousseIntoBasketInfoJsonArr.add(tousseIntoBasketInfoJson); + + JSONObject result = recyclingRecordManager.checkCleanType(td2 , tousseIntoBasketInfoJsonArr.toString()); + assertNotNull(result); + assertEquals(false, result.optBoolean(JSONUtil.JSON_KEY_SUCCESS)); + assertEquals(td2.getName() + "的清洗类型不同于篮筐内的其他物品,不能添加到篮筐!", result.optString(JSONUtil.JSON_KEY_MESSAGE)); + } + /** + * 校验可选清洗程序 + * 先入了包1 包1可选程序为P1 P2 对应清洗类型c1 c2 + * 此时入筐 包2 包2清洗类型为P3 P4 对应清洗类型c1 c4 + * 此时允许入筐 + */ + @Test + public void checkCleanType8(){ + CleanMethod cleanMethod1 = saveCleanMethod("P1","清洗类型c1"); + CleanMethod cleanMethod2 = saveCleanMethod("P2","清洗类型c2"); + CleanMethod cleanMethod3 = saveCleanMethod("P3","清洗类型c1"); + CleanMethod cleanMethod4 = saveCleanMethod("P4","清洗类型c4"); + TousseDefinition td1 = saveTousseDefinition(null); + TousseDefinition td2 = saveTousseDefinition(null); + saveTousseDefOptionCleanMethod(cleanMethod1 , td1); + saveTousseDefOptionCleanMethod(cleanMethod2 , td1); + saveTousseDefOptionCleanMethod(cleanMethod3 , td2); + saveTousseDefOptionCleanMethod(cleanMethod4 , td2); + JSONArray tousseIntoBasketInfoJsonArr = new JSONArray(); + JSONObject tousseIntoBasketInfoJson = new JSONObject(); + tousseIntoBasketInfoJson.put("tousseDefinitionId", td1.getId()); + tousseIntoBasketInfoJsonArr.add(tousseIntoBasketInfoJson); + JSONObject result = recyclingRecordManager.checkCleanType(td2 , tousseIntoBasketInfoJsonArr.toString()); + assertNotNull(result); + assertEquals(true, result.optBoolean(JSONUtil.JSON_KEY_SUCCESS)); + assertEquals(td2.getName() + "与篮筐内物品存在相同的清洗类型,允许入筐", result.optString(JSONUtil.JSON_KEY_MESSAGE)); + } + /** + * 校验可选清洗程序 + * 先入了包1 包1可选程序为P1 P2 对应清洗类型c1 c2 + * 此时入筐 包2 包2清洗类型为P3 P4 对应清洗类型c3 c4 默认是P1 + * 此时允许入筐 + */ + @Test + public void checkCleanType9(){ + CleanMethod cleanMethod1 = saveCleanMethod("P1","清洗类型c1"); + CleanMethod cleanMethod2 = saveCleanMethod("P2","清洗类型c2"); + CleanMethod cleanMethod3 = saveCleanMethod("P3","清洗类型c3"); + CleanMethod cleanMethod4 = saveCleanMethod("P4","清洗类型c4"); + TousseDefinition td1 = saveTousseDefinition(null); + TousseDefinition td2 = saveTousseDefinition(cleanMethod1.getCleanMethod()); + saveTousseDefOptionCleanMethod(cleanMethod1 , td1); + saveTousseDefOptionCleanMethod(cleanMethod2 , td1); + saveTousseDefOptionCleanMethod(cleanMethod3 , td2); + saveTousseDefOptionCleanMethod(cleanMethod4 , td2); + JSONArray tousseIntoBasketInfoJsonArr = new JSONArray(); + JSONObject tousseIntoBasketInfoJson = new JSONObject(); + tousseIntoBasketInfoJson.put("tousseDefinitionId", td1.getId()); + tousseIntoBasketInfoJsonArr.add(tousseIntoBasketInfoJson); + + JSONObject result = recyclingRecordManager.checkCleanType(td2 , tousseIntoBasketInfoJsonArr.toString()); + assertNotNull(result); + assertEquals(true, result.optBoolean(JSONUtil.JSON_KEY_SUCCESS)); + assertEquals(td2.getName() + "与篮筐内物品存在相同的清洗类型,允许入筐", result.optString(JSONUtil.JSON_KEY_MESSAGE)); + } + /** + * + * 第一次入筐了没用清洗类型的物品 再入筐c2的物品时 不需要拦截 + */ + @Test + public void checkCleanType10(){ + CleanMethod cleanMethod1 = saveCleanMethod("P1",""); + CleanMethod cleanMethod2 = saveCleanMethod("P2","清洗类型c2"); + TousseDefinition td1 = saveTousseDefinition(cleanMethod1.getCleanMethod()); + TousseDefinition td2 = saveTousseDefinition(cleanMethod2.getCleanMethod()); + JSONArray tousseIntoBasketInfoJsonArr = new JSONArray(); + JSONObject tousseIntoBasketInfoJson = new JSONObject(); + tousseIntoBasketInfoJson.put("tousseDefinitionId", td1.getId()); + tousseIntoBasketInfoJsonArr.add(tousseIntoBasketInfoJson); + JSONObject result = recyclingRecordManager.checkCleanType(td2 , tousseIntoBasketInfoJsonArr.toString()); + assertEquals(true, result.optBoolean(JSONUtil.JSON_KEY_SUCCESS)); + assertEquals("篮筐内物品无清洗类型,允许入筐", result.optString(JSONUtil.JSON_KEY_MESSAGE)); + } +} Index: forgon-core/src/main/java/com/forgon/systemsetting/model/HttpOption.java =================================================================== diff -u -r39255 -r40684 --- forgon-core/src/main/java/com/forgon/systemsetting/model/HttpOption.java (.../HttpOption.java) (revision 39255) +++ forgon-core/src/main/java/com/forgon/systemsetting/model/HttpOption.java (.../HttpOption.java) (revision 40684) @@ -138,6 +138,10 @@ */ public final static String SYSTEMSETTING_DISINFECTION_TYPE = "disinfectionType"; /** + * 清洗类型 + */ + public final static String SYSTEMSETTING_CLEAN_TYPE = "cleanType"; + /** * 清洗程序 */ public final static String SYSTENSETTING_WASH_TYPE = "washType"; Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManager.java =================================================================== diff -u -r40302 -r40684 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManager.java (.../RecyclingRecordManager.java) (revision 40302) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManager.java (.../RecyclingRecordManager.java) (revision 40684) @@ -337,5 +337,17 @@ * @return {success:true,message:"",total:100,rows:[{""}]} */ public JSONObject getAwaitRecyclingTimeoutData(String timeoutNoticeHours, Integer pageIndex); + + /** + * 入筐时校验清洗类型是否一致 + * DGSETYY-79 + * 规则 空清洗类型随便入筐 + * 除空清洗类型外,是有相同的清洗类型的包才能入筐 + * 用与比较的类型来源 祖先包定义的清洗程序的清洗类型 和 祖先包定义的的可选清洗程序的清洗类型 + * @param td 本次入筐的包定义 + * @param tousseIntoBasketInfo 已入筐的信息 + * @return + */ + public JSONObject checkCleanType(TousseDefinition td, String tousseIntoBasketInfo); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/cleanmethod/CleanMethod.java =================================================================== diff -u -r39250 -r40684 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/cleanmethod/CleanMethod.java (.../CleanMethod.java) (revision 39250) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/cleanmethod/CleanMethod.java (.../CleanMethod.java) (revision 40684) @@ -62,8 +62,11 @@ * 唯一标识 */ private String guid; - /** + * 清洗类型 + */ + private String cleanType; + /** * 清洗机 */ @JsonIgnore @@ -181,4 +184,12 @@ this.guid = guid; } + public String getCleanType() { + return cleanType; + } + + public void setCleanType(String cleanType) { + this.cleanType = cleanType; + } + } Index: ssts-web/src/main/webapp/disinfectsystem/config/demo/config.js =================================================================== diff -u -r40566 -r40684 --- ssts-web/src/main/webapp/disinfectsystem/config/demo/config.js (.../config.js) (revision 40566) +++ ssts-web/src/main/webapp/disinfectsystem/config/demo/config.js (.../config.js) (revision 40684) @@ -14,6 +14,8 @@ // 申请表单的类型:1 : 通用申请单(组合申请单),2:分开的申请单 applicationFormType: 2, hidePackageSpec : false, + //DGSETYY-79 限制不同类型的物品不可入同一个篮筐 + enableTypesOfWashingFunction:true, //装配扫描篮筐支持输入4位尾数 enableFuzzySearchCleaningBasketFunction:true, // 申请界面是否显示器械包或消毒物品的的单位 Index: ssts-web/src/test/java/test/forgon/disinfectsystem/recyclingrecord/AllTests.java =================================================================== diff -u -r40302 -r40684 --- ssts-web/src/test/java/test/forgon/disinfectsystem/recyclingrecord/AllTests.java (.../AllTests.java) (revision 40302) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/recyclingrecord/AllTests.java (.../AllTests.java) (revision 40684) @@ -23,6 +23,7 @@ // ForeignTousseRecyclingTests.class, RecyclingAutoReturnBorrowTests.class, RecyclingBasketTests.class, RecyclingMaterialsTest.class, RecyclingRecordManagerTests.class, + RecyclingRecordManagerForCheckCleanTypeTest.class, TousseIntoBasketRestrictionsTests.class, UnPackingDisinfectGoodsInstanceTests.class, FindWashDataListTest.class,