Index: ssts-web/src/test/java/test/forgon/disinfectsystem/packing/service/PackingManagerTests.java =================================================================== diff -u -r14716 -r16642 --- ssts-web/src/test/java/test/forgon/disinfectsystem/packing/service/PackingManagerTests.java (.../PackingManagerTests.java) (revision 14716) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/packing/service/PackingManagerTests.java (.../PackingManagerTests.java) (revision 16642) @@ -102,11 +102,12 @@ } /** - * 测试一次完成2条装配任务(消毒物品) + * 测试一次完成2条装配任务(消毒物品),消毒物品回收自同样的科室。 + * 装配完后,应该产生2条装配记录。 * */ @Test - public void testPakcingWithMultipleDisinfectionPaskingTasks() { + public void testPakcingWithTwoDisinfectionPaskingTasksFromSameDepts() { initCSSDData(); //创建回收记录1 @@ -120,7 +121,7 @@ JSONArray jsonArray = new JSONArray(); TousseDefinition td_呼吸机 = tousseDefinitionManager.getTousseDefinitionByName("呼吸机"); - addRecyclingItem(jsonArray, "019000001", "0", "呼吸机",td_呼吸机.getId(), 5, "器械包", "呼吸机", + addRecyclingItem(jsonArray, "019000001", "0", "呼吸机",td_呼吸机.getId(), 5, "消毒物品", "呼吸机", 5, "019000001"); JSONObject params = new JSONObject(); params.put("tousseJson", jsonArray); @@ -192,7 +193,7 @@ record2.setRecyclingUser("张雄"); JSONArray jsonArray2 = new JSONArray(); - addRecyclingItem(jsonArray2, "019000001", "0", "呼吸机",td_呼吸机.getId(), 3, "器械包", "呼吸机", + addRecyclingItem(jsonArray2, "019000001", "0", "呼吸机",td_呼吸机.getId(), 3, "消毒物品", "呼吸机", 5, "019000001"); JSONObject params2 = new JSONObject(); params2.put("tousseJson", jsonArray2); @@ -317,26 +318,475 @@ // 验证有2条装配记录 List packingRecords = objectDao.findBySql(PackingRecord.class.getSimpleName() , " where 1=1 " , "id"); - //由于两个装配任务所装的器械包是同一个器械包,所以对应的历史装配记录数为1,数量为两条装配任务数量之和(5+3=8) - assertEquals(packingRecords.size(), 1); + assertEquals(packingRecords.size(), 2); + PackingRecord packingRecord1 = packingRecords.get(0); - assertEquals(packingRecord1.getAmount().intValue(), 8); + assertEquals(packingRecord1.getAmount().intValue(), 5); -// assertEquals(packingRecord1.getTousseName(), "呼吸机"); + assertEquals(packingRecord1.getTousseName(), "呼吸机"); + PackingRecord packingRecord2 = packingRecords.get(1); + assertEquals(packingRecord2.getAmount().intValue(), 3); + + assertEquals(packingRecord2.getTousseName(), "呼吸机"); + } + + /** + * 测试一次完成2条装配任务(消毒物品),消毒物品回收自不同的科室。 + * 装配完后,应该产生2条装配记录。 + * + */ + @Test + public void testPakcingWithTwoDisinfectionPaskingTasksFromDifferentDepts() { + initCSSDData(); + + //创建回收记录1 + RecyclingRecord record1 = new RecyclingRecord(); + record1.setRecyclingTime(new Date()); + record1.setDepart("测试外科"); + record1.setDepartCode("testWaike"); + record1.setOperator("王伟"); + record1.setOrgUnitCoding(Constants.ORG_UNIT_CODE_CSSD); + record1.setRecyclingUser("张雄"); + + JSONArray jsonArray = new JSONArray(); + TousseDefinition td_呼吸机 = tousseDefinitionManager.getTousseDefinitionByName("呼吸机"); + addRecyclingItem(jsonArray, "019000001", "0", "呼吸机",td_呼吸机.getId(), 5, "消毒物品", "呼吸机", + 5, "019000001"); + JSONObject params = new JSONObject(); + params.put("tousseJson", jsonArray); + params.put("errors",""); + params.put("damages",""); + try { + recyclingRecordManager.saveOrUpdate(record1,params); + } catch (RecyclingRecordException e) { + e.printStackTrace(); + } + objectDao.flush(); + + RecyclingRecord recyclingRecord = recyclingRecordManager + .getRecyclingRecord("" + record1.getId()); + + InvoicePlan application = recyclingRecord.getRecyclingApplication(); + assertNotNull(application); + assertNotNull(application.getApplicationItems()); + assertEquals(InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION, application.getType()); + List tousseItems = application.getApplicationItems(); + assertEquals(1,tousseItems.size()); + + Map tousseItemMap = new HashMap(); + for (TousseItem tousseItem : tousseItems) { + tousseItemMap.put(tousseItem.getTousseName(), tousseItem); + } + + String sql = String.format(" where po.tousseName='呼吸机' and po.invoicePlanID=%s", application.getId()); + List tousseInstanceList = + objectDao.findBySql("TousseInstance", sql); + assertEquals(0, tousseInstanceList.size()); + + PackingTask packingTask = + (PackingTask)objectDao.getBySql("PackingTask", "where taskType='" + + PackingTask.TASK_RECYCLINGRECORD + "' and sourceId="+recyclingRecord.getId()); + assertNotNull(packingTask); + + List classifyBasketList = recyclingRecord.getClassifyBaskets(); + assertEquals(classifyBasketList.size(), 1); + //调用清洗代码 + WashAndDisinfectRecord washAndDisinfectRecord = new WashAndDisinfectRecord(); + washAndDisinfectRecord.setDisinfectIdentification(""); + washAndDisinfectRecord.setDisinfectProgram(""); + washAndDisinfectRecord.setOperator(""); + washAndDisinfectRecord.setOrgUnitCoding(""); + washAndDisinfectRecord.setStartDate(new Date()); + washAndDisinfectRecord.setEndDate(new Date()); + + Map classifyBasketInfoMap = new HashMap(); + //put对应回收单及其清洗篮筐 + ClassifyBasket classifyBasket = classifyBasketList.get(0); + assertEquals(classifyBasket.getContainerBarcode(), "019000001"); + classifyBasketInfoMap.put(classifyBasket.getId(), classifyBasket); + washAndDisinfectRecordManager + .saveOrUpdateWashAndDisinfectRecordAndMaterials( + washAndDisinfectRecord, classifyBasketInfoMap, new ArrayList()); + + //断言清洗记录与清洗数据 + assertEquals(washAndDisinfectRecord.getClassifyBaskets().size(), 1); + + + //创建回收记录2 + RecyclingRecord record2 = new RecyclingRecord(); + record2.setRecyclingTime(new Date()); + record2.setDepart("测试内科"); + record2.setDepartCode("testNeike"); + record2.setOperator("王伟"); + record2.setOrgUnitCoding(Constants.ORG_UNIT_CODE_CSSD); + record2.setRecyclingUser("张雄"); + + JSONArray jsonArray2 = new JSONArray(); + addRecyclingItem(jsonArray2, "019000001", "0", "呼吸机",td_呼吸机.getId(), 3, "消毒物品", "呼吸机", + 5, "019000001"); + JSONObject params2 = new JSONObject(); + params2.put("tousseJson", jsonArray2); + params2.put("errors",""); + params2.put("damages",""); + try { + recyclingRecordManager.saveOrUpdate(record2,params2); + } catch (RecyclingRecordException e) { + e.printStackTrace(); + } + objectDao.flush(); + + RecyclingRecord recyclingRecord2 = recyclingRecordManager + .getRecyclingRecord("" + record2.getId()); + + InvoicePlan application2 = recyclingRecord2.getRecyclingApplication(); + assertNotNull(application2); + assertNotNull(application2.getApplicationItems()); + assertEquals(InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION, application2.getType()); + List tousseItems2 = application2.getApplicationItems(); + assertEquals(1,tousseItems2.size()); + + sql = String.format(" where po.tousseName='呼吸机' and po.invoicePlanID=%s", application2.getId()); + tousseInstanceList = + objectDao.findBySql("TousseInstance", sql); + assertEquals(0, tousseInstanceList.size()); + + PackingTask packingTask2 = + (PackingTask)objectDao.getBySql("PackingTask", "where taskType='" + + PackingTask.TASK_RECYCLINGRECORD + "' and sourceId="+recyclingRecord2.getId()); + assertNotNull(packingTask2); + + classifyBasketList = recyclingRecord2.getClassifyBaskets(); + assertEquals(classifyBasketList.size(), 1); + //调用清洗代码 + WashAndDisinfectRecord washAndDisinfectRecord2 = new WashAndDisinfectRecord(); + washAndDisinfectRecord2.setDisinfectIdentification(""); + washAndDisinfectRecord2.setDisinfectProgram(""); + washAndDisinfectRecord2.setOperator(""); + washAndDisinfectRecord2.setOrgUnitCoding(""); + washAndDisinfectRecord2.setStartDate(new Date()); + washAndDisinfectRecord2.setEndDate(new Date()); + + Map classifyBasketInfoMap2 = new HashMap(); + //put对应回收单及其清洗篮筐 + ClassifyBasket classifyBasket2 = classifyBasketList.get(0); + assertEquals(classifyBasket2.getContainerBarcode(), "019000001"); + classifyBasketInfoMap2.put(classifyBasket2.getId(), classifyBasket2); + washAndDisinfectRecordManager + .saveOrUpdateWashAndDisinfectRecordAndMaterials( + washAndDisinfectRecord2, classifyBasketInfoMap2, new ArrayList()); + + //断言清洗记录与清洗数据 + assertEquals(washAndDisinfectRecord2.getClassifyBaskets().size(), 1); + + + //调用装配代码 + String ids = packingTask.getId().toString() + ";" + packingTask2.getId().toString(); + String inspector = "cssduser1"; + String inspectorCode = "002107"; + String operator = "cssduser1"; + String operatorCode = "002107"; + String reviewer = "cssduser2"; + String reviewerCode = "fw130"; + String wrapper = "cssduser2"; + String wrapperCode = "fw130"; + String packageType = "棉布"; + String sterilingType = "P1器械"; + String stock = ""; + String packAmountStr = "8"; + String taskGroup = "术科组"; + String splitPackage = null; + String basketBarcode = "010000110"; + String idCardBarcode = ""; + String sterilizer = "1号灭菌炉"; + String frequency = "3"; + HttpSession session = null; + params = new JSONObject(); + params.put("taskIds", ids); + params.put("inspector", inspector); + params.put("inspectorCode", inspectorCode); + params.put("operator", operator); + params.put("operatorCode", operatorCode); + params.put("reviewer", reviewer); + params.put("reviewerCode", reviewerCode); + params.put("wrapper", wrapper); + params.put("wrapperCode", wrapperCode); + params.put("packageType", packageType); + params.put("sterilingType", sterilingType); + params.put("sterileDate", String.valueOf(System.currentTimeMillis())); + params.put("stock", stock); + params.put("packAmount", packAmountStr); + params.put("taskGroup", taskGroup); + params.put("splitPackage", splitPackage); + params.put("basketBarcode", basketBarcode); + params.put("idCardInstanceID", idCardBarcode); + params.put("sterilizer", sterilizer); + params.put("frequency", frequency); + params.put("confirmContinue", "true"); + params.put("urgentAmount", null); + params.put("tousseWeight", ""); + String str = packingTableManagerTX.packingTousse2(params.toString(), session); + + JSONObject json = JSONObject.fromObject(str); + assertTrue(json.optBoolean("success")); + + sql = String.format(" where po.tousseName='呼吸机' and po.invoicePlanID=%s", application.getId()); + tousseInstanceList = + objectDao.findBySql("TousseInstance", sql); + assertEquals(tousseInstanceList.size(), 5); + for(TousseInstance tousseInstance : tousseInstanceList){ + assertEquals(tousseInstance.getStatus(), TousseInstance.STATUS_PACKED); + } + sql = String.format(" where po.tousseName='呼吸机' and po.invoicePlanID=%s", application2.getId()); + tousseInstanceList = + objectDao.findBySql("TousseInstance", sql); + assertEquals(tousseInstanceList.size(), 3); + for(TousseInstance tousseInstance : tousseInstanceList){ + assertEquals(tousseInstance.getStatus(), TousseInstance.STATUS_PACKED); + } + + + // 验证有2条装配记录 + List packingRecords = objectDao.findBySql(PackingRecord.class.getSimpleName() , " where 1=1 " , "id"); + + assertEquals(packingRecords.size(), 2); + + PackingRecord packingRecord1 = packingRecords.get(0); + assertEquals(packingRecord1.getAmount().intValue(), 5); + + assertEquals(packingRecord1.getTousseName(), "呼吸机"); + + PackingRecord packingRecord2 = packingRecords.get(1); + assertEquals(packingRecord2.getAmount().intValue(), 3); + + assertEquals(packingRecord2.getTousseName(), "呼吸机"); + } + + /** + * 测试一次完成2个装配任务(普通器械包) + * 同一个器械包,回收自不同的科室或者相同的科室,目前都合并为了一条装配记录。点开装配记录,发现对于每个包实例,所属科室属于不同的科室。 + * + */ + @Test + public void testPakcingWithTwoNormalToussePaskingTasksFromSameDeparts() { + initCSSDData(); + + //创建回收记录1 + RecyclingRecord record1 = new RecyclingRecord(); + record1.setRecyclingTime(new Date()); + record1.setDepart("测试内科"); + record1.setDepartCode("testNeike"); + record1.setOperator("王伟"); + record1.setOrgUnitCoding(Constants.ORG_UNIT_CODE_CSSD); + record1.setRecyclingUser("张雄"); + + JSONArray jsonArray = new JSONArray(); + TousseDefinition td_Test开胸包 = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包"); + addRecyclingItem(jsonArray, "019000001", "0", "Test开胸包",td_Test开胸包.getId(), 5, "器械包", "Test开胸包", + 5, "019000001"); + JSONObject params = new JSONObject(); + params.put("tousseJson", jsonArray); + params.put("errors",""); + params.put("damages",""); + try { + recyclingRecordManager.saveOrUpdate(record1,params); + } catch (RecyclingRecordException e) { + e.printStackTrace(); + } + objectDao.flush(); + + RecyclingRecord recyclingRecord = recyclingRecordManager + .getRecyclingRecord("" + record1.getId()); + + InvoicePlan application = recyclingRecord.getRecyclingApplication(); + assertNotNull(application); + assertNotNull(application.getApplicationItems()); + assertEquals(InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION, application.getType()); + List tousseItems = application.getApplicationItems(); + assertEquals(1,tousseItems.size()); + + Map tousseItemMap = new HashMap(); + for (TousseItem tousseItem : tousseItems) { + tousseItemMap.put(tousseItem.getTousseName(), tousseItem); + } + + + ListtousseInstanceList = + objectDao.findByProperty("TousseInstance", "tousseName", "Test开胸包"); + assertEquals(0, tousseInstanceList.size()); + + PackingTask packingTask = + (PackingTask)objectDao.getBySql("PackingTask", "where taskType='" + + PackingTask.TASK_RECYCLINGRECORD + "' and sourceId="+recyclingRecord.getId()); + assertNotNull(packingTask); + + List classifyBasketList = recyclingRecord.getClassifyBaskets(); + assertEquals(classifyBasketList.size(), 1); + //调用清洗代码 + WashAndDisinfectRecord washAndDisinfectRecord = new WashAndDisinfectRecord(); + washAndDisinfectRecord.setDisinfectIdentification(""); + washAndDisinfectRecord.setDisinfectProgram(""); + washAndDisinfectRecord.setOperator(""); + washAndDisinfectRecord.setOrgUnitCoding(""); + washAndDisinfectRecord.setStartDate(new Date()); + washAndDisinfectRecord.setEndDate(new Date()); + + Map classifyBasketInfoMap = new HashMap(); + //put对应回收单及其清洗篮筐 + ClassifyBasket classifyBasket = classifyBasketList.get(0); + assertEquals(classifyBasket.getContainerBarcode(), "019000001"); + classifyBasketInfoMap.put(classifyBasket.getId(), classifyBasket); + washAndDisinfectRecordManager + .saveOrUpdateWashAndDisinfectRecordAndMaterials( + washAndDisinfectRecord, classifyBasketInfoMap, new ArrayList()); + + //断言清洗记录与清洗数据 + assertEquals(washAndDisinfectRecord.getClassifyBaskets().size(), 1); + + + //创建回收记录2 + RecyclingRecord record2 = new RecyclingRecord(); + record2.setRecyclingTime(new Date()); + record2.setDepart("测试内科"); + record2.setDepartCode("testNeike"); + record2.setOperator("王伟"); + record2.setOrgUnitCoding(Constants.ORG_UNIT_CODE_CSSD); + record2.setRecyclingUser("张雄"); + + JSONArray jsonArray2 = new JSONArray(); + addRecyclingItem(jsonArray2, "019000001", "0", "Test开胸包",td_Test开胸包.getId(), 3, "器械包", "Test开胸包", + 5, "019000001"); + JSONObject params2 = new JSONObject(); + params2.put("tousseJson", jsonArray2); + params2.put("errors",""); + params2.put("damages",""); + try { + recyclingRecordManager.saveOrUpdate(record2,params2); + } catch (RecyclingRecordException e) { + e.printStackTrace(); + } + objectDao.flush(); + + RecyclingRecord recyclingRecord2 = recyclingRecordManager + .getRecyclingRecord("" + record2.getId()); + + InvoicePlan application2 = recyclingRecord2.getRecyclingApplication(); + assertNotNull(application2); + assertNotNull(application2.getApplicationItems()); + assertEquals(InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION, application2.getType()); + List tousseItems2 = application2.getApplicationItems(); + assertEquals(1,tousseItems2.size()); + + tousseInstanceList = + objectDao.findByProperty("TousseInstance", "tousseName", "Test开胸包"); + assertEquals(0, tousseInstanceList.size()); + + PackingTask packingTask2 = + (PackingTask)objectDao.getBySql("PackingTask", "where taskType='" + + PackingTask.TASK_RECYCLINGRECORD + "' and sourceId="+recyclingRecord2.getId()); + assertNotNull(packingTask2); + + classifyBasketList = recyclingRecord2.getClassifyBaskets(); + assertEquals(classifyBasketList.size(), 1); + //调用清洗代码 + WashAndDisinfectRecord washAndDisinfectRecord2 = new WashAndDisinfectRecord(); + washAndDisinfectRecord2.setDisinfectIdentification(""); + washAndDisinfectRecord2.setDisinfectProgram(""); + washAndDisinfectRecord2.setOperator(""); + washAndDisinfectRecord2.setOrgUnitCoding(""); + washAndDisinfectRecord2.setStartDate(new Date()); + washAndDisinfectRecord2.setEndDate(new Date()); + + Map classifyBasketInfoMap2 = new HashMap(); + //put对应回收单及其清洗篮筐 + ClassifyBasket classifyBasket2 = classifyBasketList.get(0); + assertEquals(classifyBasket2.getContainerBarcode(), "019000001"); + classifyBasketInfoMap2.put(classifyBasket2.getId(), classifyBasket2); + washAndDisinfectRecordManager + .saveOrUpdateWashAndDisinfectRecordAndMaterials( + washAndDisinfectRecord2, classifyBasketInfoMap2, new ArrayList()); + + //断言清洗记录与清洗数据 + assertEquals(washAndDisinfectRecord2.getClassifyBaskets().size(), 1); + + + //调用装配代码 + String ids = packingTask.getId().toString() + ";" + packingTask2.getId().toString(); + String inspector = "cssduser1"; + String inspectorCode = "002107"; + String operator = "cssduser1"; + String operatorCode = "002107"; + String reviewer = "cssduser2"; + String reviewerCode = "fw130"; + String wrapper = "cssduser2"; + String wrapperCode = "fw130"; + String packageType = "棉布"; + String sterilingType = "P1器械"; + String stock = ""; + String packAmountStr = "8"; + String taskGroup = "术科组"; + String splitPackage = null; + String basketBarcode = "010000110"; + String idCardBarcode = ""; + String sterilizer = "1号灭菌炉"; + String frequency = "3"; + HttpSession session = null; + params = new JSONObject(); + params.put("taskIds", ids); + params.put("inspector", inspector); + params.put("inspectorCode", inspectorCode); + params.put("operator", operator); + params.put("operatorCode", operatorCode); + params.put("reviewer", reviewer); + params.put("reviewerCode", reviewerCode); + params.put("wrapper", wrapper); + params.put("wrapperCode", wrapperCode); + params.put("packageType", packageType); + params.put("sterilingType", sterilingType); + params.put("sterileDate", String.valueOf(System.currentTimeMillis())); + params.put("stock", stock); + params.put("packAmount", packAmountStr); + params.put("taskGroup", taskGroup); + params.put("splitPackage", splitPackage); + params.put("basketBarcode", basketBarcode); + params.put("idCardInstanceID", idCardBarcode); + params.put("sterilizer", sterilizer); + params.put("frequency", frequency); + params.put("confirmContinue", "true"); + params.put("urgentAmount", null); + params.put("tousseWeight", ""); + String str = packingTableManagerTX.packingTousse2(params.toString(), session); + + JSONObject json = JSONObject.fromObject(str); + assertTrue(json.optBoolean("success")); + + tousseInstanceList = + objectDao.findByProperty("TousseInstance", "tousseName", "Test开胸包"); + assertEquals(tousseInstanceList.size(), 8); + for(TousseInstance tousseInstance : tousseInstanceList){ + assertEquals(tousseInstance.getStatus(), TousseInstance.STATUS_PACKED); + } + + // 验证有1条装配记录 + List packingRecords = objectDao.findAllObjects(PackingRecord.class.getSimpleName()); + assertEquals(packingRecords.size(), 1); + + PackingRecord packingRecord1 = packingRecords.get(0); + assertEquals(packingRecord1.getAmount().intValue(), 8); + // PackingRecord packingRecord2 = packingRecords.get(1); // assertEquals(packingRecord2.getAmount().intValue(), 3); -// assertEquals(packingRecord2.getTousseName(), "呼吸机"); } /** * 测试一次完成2个装配任务(普通器械包) + * 同一个器械包,回收自不同的科室,应产生2条装配记录。 * */ @Test - public void testPakcingWithMultipleNormalToussePaskingTasks() { + public void testPakcingWithTwoNormalToussePaskingTasksFromDifferentDeparts() { initCSSDData(); //创建回收记录1 @@ -535,13 +985,608 @@ assertEquals(tousseInstance.getStatus(), TousseInstance.STATUS_PACKED); } - // 验证有1条装配记录 + // 验证有2条装配记录 List packingRecords = objectDao.findAllObjects(PackingRecord.class.getSimpleName()); assertEquals(packingRecords.size(), 1); PackingRecord packingRecord1 = packingRecords.get(0); assertEquals(packingRecord1.getAmount().intValue(), 8); + +// PackingRecord packingRecord2 = packingRecords.get(1); +// assertEquals(packingRecord2.getAmount().intValue(), 3); } + /** + * 测试一次完成4条装配任务(消毒物品、器械包各2条),消毒物品回收自不同的科室。 + * 装配完后,应该产生3条装配记录。 + * + */ + @Test + public void testPakcingWithTwoDisinfectionPaskingTwoNormalTousse() { + initCSSDData(); + + //创建回收记录1 + RecyclingRecord record1 = new RecyclingRecord(); + record1.setRecyclingTime(new Date()); + record1.setDepart("测试外科"); + record1.setDepartCode("testWaike"); + record1.setOperator("王伟"); + record1.setOrgUnitCoding(Constants.ORG_UNIT_CODE_CSSD); + record1.setRecyclingUser("张雄"); + + JSONArray jsonArray = new JSONArray(); + TousseDefinition td_呼吸机 = tousseDefinitionManager.getTousseDefinitionByName("呼吸机"); + addRecyclingItem(jsonArray, "019000001", "0", "呼吸机",td_呼吸机.getId(), 5, "消毒物品", "呼吸机", + 5, "019000001"); + JSONObject params = new JSONObject(); + params.put("tousseJson", jsonArray); + params.put("errors",""); + params.put("damages",""); + try { + recyclingRecordManager.saveOrUpdate(record1,params); + } catch (RecyclingRecordException e) { + e.printStackTrace(); + } + objectDao.flush(); + + RecyclingRecord recyclingRecord = recyclingRecordManager + .getRecyclingRecord("" + record1.getId()); + + InvoicePlan application = recyclingRecord.getRecyclingApplication(); + assertNotNull(application); + assertNotNull(application.getApplicationItems()); + assertEquals(InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION, application.getType()); + List tousseItems = application.getApplicationItems(); + assertEquals(1,tousseItems.size()); + + Map tousseItemMap = new HashMap(); + for (TousseItem tousseItem : tousseItems) { + tousseItemMap.put(tousseItem.getTousseName(), tousseItem); + } + + String sql = String.format(" where po.tousseName='呼吸机' and po.invoicePlanID=%s", application.getId()); + List tousseInstanceList = + objectDao.findBySql("TousseInstance", sql); + assertEquals(0, tousseInstanceList.size()); + + PackingTask packingTask = + (PackingTask)objectDao.getBySql("PackingTask", "where taskType='" + + PackingTask.TASK_RECYCLINGRECORD + "' and sourceId="+recyclingRecord.getId()); + assertNotNull(packingTask); + + List classifyBasketList = recyclingRecord.getClassifyBaskets(); + assertEquals(classifyBasketList.size(), 1); + //调用清洗代码 + WashAndDisinfectRecord washAndDisinfectRecord = new WashAndDisinfectRecord(); + washAndDisinfectRecord.setDisinfectIdentification(""); + washAndDisinfectRecord.setDisinfectProgram(""); + washAndDisinfectRecord.setOperator(""); + washAndDisinfectRecord.setOrgUnitCoding(""); + washAndDisinfectRecord.setStartDate(new Date()); + washAndDisinfectRecord.setEndDate(new Date()); + + Map classifyBasketInfoMap = new HashMap(); + //put对应回收单及其清洗篮筐 + ClassifyBasket classifyBasket = classifyBasketList.get(0); + assertEquals(classifyBasket.getContainerBarcode(), "019000001"); + classifyBasketInfoMap.put(classifyBasket.getId(), classifyBasket); + washAndDisinfectRecordManager + .saveOrUpdateWashAndDisinfectRecordAndMaterials( + washAndDisinfectRecord, classifyBasketInfoMap, new ArrayList()); + + //断言清洗记录与清洗数据 + assertEquals(washAndDisinfectRecord.getClassifyBaskets().size(), 1); + + + //创建回收记录2 + RecyclingRecord record2 = new RecyclingRecord(); + record2.setRecyclingTime(new Date()); + record2.setDepart("测试内科"); + record2.setDepartCode("testNeike"); + record2.setOperator("王伟"); + record2.setOrgUnitCoding(Constants.ORG_UNIT_CODE_CSSD); + record2.setRecyclingUser("张雄"); + + JSONArray jsonArray2 = new JSONArray(); + addRecyclingItem(jsonArray2, "019000001", "0", "呼吸机",td_呼吸机.getId(), 3, "消毒物品", "呼吸机", + 5, "019000001"); + JSONObject params2 = new JSONObject(); + params2.put("tousseJson", jsonArray2); + params2.put("errors",""); + params2.put("damages",""); + try { + recyclingRecordManager.saveOrUpdate(record2,params2); + } catch (RecyclingRecordException e) { + e.printStackTrace(); + } + objectDao.flush(); + + RecyclingRecord recyclingRecord2 = recyclingRecordManager + .getRecyclingRecord("" + record2.getId()); + + InvoicePlan application2 = recyclingRecord2.getRecyclingApplication(); + assertNotNull(application2); + assertNotNull(application2.getApplicationItems()); + assertEquals(InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION, application2.getType()); + List tousseItems2 = application2.getApplicationItems(); + assertEquals(1,tousseItems2.size()); + + sql = String.format(" where po.tousseName='呼吸机' and po.invoicePlanID=%s", application2.getId()); + tousseInstanceList = + objectDao.findBySql("TousseInstance", sql); + assertEquals(0, tousseInstanceList.size()); + + PackingTask packingTask2 = + (PackingTask)objectDao.getBySql("PackingTask", "where taskType='" + + PackingTask.TASK_RECYCLINGRECORD + "' and sourceId="+recyclingRecord2.getId()); + assertNotNull(packingTask2); + + classifyBasketList = recyclingRecord2.getClassifyBaskets(); + assertEquals(classifyBasketList.size(), 1); + //调用清洗代码 + WashAndDisinfectRecord washAndDisinfectRecord2 = new WashAndDisinfectRecord(); + washAndDisinfectRecord2.setDisinfectIdentification(""); + washAndDisinfectRecord2.setDisinfectProgram(""); + washAndDisinfectRecord2.setOperator(""); + washAndDisinfectRecord2.setOrgUnitCoding(""); + washAndDisinfectRecord2.setStartDate(new Date()); + washAndDisinfectRecord2.setEndDate(new Date()); + + Map classifyBasketInfoMap2 = new HashMap(); + //put对应回收单及其清洗篮筐 + ClassifyBasket classifyBasket2 = classifyBasketList.get(0); + assertEquals(classifyBasket2.getContainerBarcode(), "019000001"); + classifyBasketInfoMap2.put(classifyBasket2.getId(), classifyBasket2); + washAndDisinfectRecordManager + .saveOrUpdateWashAndDisinfectRecordAndMaterials( + washAndDisinfectRecord2, classifyBasketInfoMap2, new ArrayList()); + + //断言清洗记录与清洗数据 + assertEquals(washAndDisinfectRecord2.getClassifyBaskets().size(), 1); + + + + //创建回收记录3 + RecyclingRecord record3 = new RecyclingRecord(); + record3.setRecyclingTime(new Date()); + record3.setDepart("测试内科"); + record3.setDepartCode("testNeike"); + record3.setOperator("王伟"); + record3.setOrgUnitCoding(Constants.ORG_UNIT_CODE_CSSD); + record3.setRecyclingUser("张雄"); + + JSONArray jsonArray3 = new JSONArray(); + TousseDefinition td_Test开胸包 = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包"); + addRecyclingItem(jsonArray3, "019000001", "0", "Test开胸包",td_Test开胸包.getId(), 5, "器械包", "Test开胸包", + 5, "019000001"); + JSONObject params3 = new JSONObject(); + params3.put("tousseJson", jsonArray3); + params3.put("errors",""); + params3.put("damages",""); + try { + recyclingRecordManager.saveOrUpdate(record3,params3); + } catch (RecyclingRecordException e) { + e.printStackTrace(); + } + objectDao.flush(); + + RecyclingRecord recyclingRecord3 = recyclingRecordManager + .getRecyclingRecord("" + record3.getId()); + + InvoicePlan application3 = recyclingRecord3.getRecyclingApplication(); + assertNotNull(application3); + assertNotNull(application3.getApplicationItems()); + assertEquals(InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION, application3.getType()); + List tousseItems3 = application3.getApplicationItems(); + assertEquals(1,tousseItems3.size()); + + Map tousseItemMap3 = new HashMap(); + for (TousseItem tousseItem : tousseItems3) { + tousseItemMap3.put(tousseItem.getTousseName(), tousseItem); + } + + + ListtousseInstanceList3 = + objectDao.findByProperty("TousseInstance", "tousseName", "Test开胸包"); + assertEquals(0, tousseInstanceList3.size()); + + PackingTask packingTask3 = + (PackingTask)objectDao.getBySql("PackingTask", "where taskType='" + + PackingTask.TASK_RECYCLINGRECORD + "' and sourceId="+recyclingRecord3.getId()); + assertNotNull(packingTask3); + + List classifyBasketList3 = recyclingRecord3.getClassifyBaskets(); + assertEquals(classifyBasketList3.size(), 1); + //调用清洗代码 + WashAndDisinfectRecord washAndDisinfectRecord3 = new WashAndDisinfectRecord(); + washAndDisinfectRecord3.setDisinfectIdentification(""); + washAndDisinfectRecord3.setDisinfectProgram(""); + washAndDisinfectRecord3.setOperator(""); + washAndDisinfectRecord3.setOrgUnitCoding(""); + washAndDisinfectRecord3.setStartDate(new Date()); + washAndDisinfectRecord3.setEndDate(new Date()); + + Map classifyBasketInfoMap3 = new HashMap(); + //put对应回收单及其清洗篮筐 + ClassifyBasket classifyBasket3 = classifyBasketList3.get(0); + assertEquals(classifyBasket3.getContainerBarcode(), "019000001"); + classifyBasketInfoMap3.put(classifyBasket3.getId(), classifyBasket3); + washAndDisinfectRecordManager + .saveOrUpdateWashAndDisinfectRecordAndMaterials( + washAndDisinfectRecord3, classifyBasketInfoMap3, new ArrayList()); + + //断言清洗记录与清洗数据 + assertEquals(washAndDisinfectRecord3.getClassifyBaskets().size(), 1); + + + //创建回收记录4 + RecyclingRecord record4 = new RecyclingRecord(); + record4.setRecyclingTime(new Date()); + record4.setDepart("测试内科"); + record4.setDepartCode("testNeike"); + record4.setOperator("王伟"); + record4.setOrgUnitCoding(Constants.ORG_UNIT_CODE_CSSD); + record4.setRecyclingUser("张雄"); + + JSONArray jsonArray4 = new JSONArray(); + addRecyclingItem(jsonArray4, "019000001", "0", "Test开胸包",td_Test开胸包.getId(), 3, "器械包", "Test开胸包", + 5, "019000001"); + JSONObject params4 = new JSONObject(); + params4.put("tousseJson", jsonArray4); + params4.put("errors",""); + params4.put("damages",""); + try { + recyclingRecordManager.saveOrUpdate(record4,params4); + } catch (RecyclingRecordException e) { + e.printStackTrace(); + } + objectDao.flush(); + + RecyclingRecord recyclingRecord4 = recyclingRecordManager + .getRecyclingRecord("" + record4.getId()); + + InvoicePlan application4 = recyclingRecord4.getRecyclingApplication(); + assertNotNull(application4); + assertNotNull(application4.getApplicationItems()); + assertEquals(InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION, application4.getType()); + List tousseItems4 = application4.getApplicationItems(); + assertEquals(1,tousseItems4.size()); + + tousseInstanceList3 = + objectDao.findByProperty("TousseInstance", "tousseName", "Test开胸包"); + assertEquals(0, tousseInstanceList3.size()); + + PackingTask packingTask4 = + (PackingTask)objectDao.getBySql("PackingTask", "where taskType='" + + PackingTask.TASK_RECYCLINGRECORD + "' and sourceId="+recyclingRecord4.getId()); + assertNotNull(packingTask4); + + classifyBasketList3 = recyclingRecord4.getClassifyBaskets(); + assertEquals(classifyBasketList3.size(), 1); + //调用清洗代码 + WashAndDisinfectRecord washAndDisinfectRecord4 = new WashAndDisinfectRecord(); + washAndDisinfectRecord4.setDisinfectIdentification(""); + washAndDisinfectRecord4.setDisinfectProgram(""); + washAndDisinfectRecord4.setOperator(""); + washAndDisinfectRecord4.setOrgUnitCoding(""); + washAndDisinfectRecord4.setStartDate(new Date()); + washAndDisinfectRecord4.setEndDate(new Date()); + + Map classifyBasketInfoMap4 = new HashMap(); + //put对应回收单及其清洗篮筐 + ClassifyBasket classifyBasket4 = classifyBasketList3.get(0); + assertEquals(classifyBasket4.getContainerBarcode(), "019000001"); + classifyBasketInfoMap4.put(classifyBasket4.getId(), classifyBasket4); + washAndDisinfectRecordManager + .saveOrUpdateWashAndDisinfectRecordAndMaterials( + washAndDisinfectRecord4, classifyBasketInfoMap4, new ArrayList()); + + //断言清洗记录与清洗数据 + assertEquals(washAndDisinfectRecord4.getClassifyBaskets().size(), 1); + + + + //调用装配代码 + String ids = packingTask.getId().toString() + ";" + + packingTask2.getId().toString() + ";" + + packingTask3.getId().toString() + ";" + + packingTask4.getId().toString(); + String inspector = "cssduser1"; + String inspectorCode = "002107"; + String operator = "cssduser1"; + String operatorCode = "002107"; + String reviewer = "cssduser2"; + String reviewerCode = "fw130"; + String wrapper = "cssduser2"; + String wrapperCode = "fw130"; + String packageType = "棉布"; + String sterilingType = "P1器械"; + String stock = ""; + String packAmountStr = "8"; + String taskGroup = "术科组"; + String splitPackage = null; + String basketBarcode = "010000110"; + String idCardBarcode = ""; + String sterilizer = "1号灭菌炉"; + String frequency = "3"; + HttpSession session = null; + params = new JSONObject(); + params.put("taskIds", ids); + params.put("inspector", inspector); + params.put("inspectorCode", inspectorCode); + params.put("operator", operator); + params.put("operatorCode", operatorCode); + params.put("reviewer", reviewer); + params.put("reviewerCode", reviewerCode); + params.put("wrapper", wrapper); + params.put("wrapperCode", wrapperCode); + params.put("packageType", packageType); + params.put("sterilingType", sterilingType); + params.put("sterileDate", String.valueOf(System.currentTimeMillis())); + params.put("stock", stock); + params.put("packAmount", packAmountStr); + params.put("taskGroup", taskGroup); + params.put("splitPackage", splitPackage); + params.put("basketBarcode", basketBarcode); + params.put("idCardInstanceID", idCardBarcode); + params.put("sterilizer", sterilizer); + params.put("frequency", frequency); + params.put("confirmContinue", "true"); + params.put("urgentAmount", null); + params.put("tousseWeight", ""); + String str = packingTableManagerTX.packingTousse2(params.toString(), session); + + JSONObject json = JSONObject.fromObject(str); + assertTrue(json.optBoolean("success")); + + sql = String.format(" where po.tousseName='呼吸机' and po.invoicePlanID=%s", application.getId()); + tousseInstanceList = + objectDao.findBySql("TousseInstance", sql); + assertEquals(tousseInstanceList.size(), 5); + for(TousseInstance tousseInstance : tousseInstanceList){ + assertEquals(tousseInstance.getStatus(), TousseInstance.STATUS_PACKED); + } + sql = String.format(" where po.tousseName='呼吸机' and po.invoicePlanID=%s", application2.getId()); + tousseInstanceList = + objectDao.findBySql("TousseInstance", sql); + assertEquals(tousseInstanceList.size(), 3); + for(TousseInstance tousseInstance : tousseInstanceList){ + assertEquals(tousseInstance.getStatus(), TousseInstance.STATUS_PACKED); + } + + + // 验证有3条装配记录 + List packingRecords = objectDao.findBySql(PackingRecord.class.getSimpleName() , " where 1=1 " , "id"); + + assertEquals(packingRecords.size(), 3); + + PackingRecord packingRecord1 = packingRecords.get(0); + assertEquals(packingRecord1.getAmount().intValue(), 5); + + assertEquals(packingRecord1.getTousseName(), "呼吸机"); + + PackingRecord packingRecord2 = packingRecords.get(1); + assertEquals(packingRecord2.getAmount().intValue(), 3); + + assertEquals(packingRecord2.getTousseName(), "呼吸机"); + + PackingRecord packingRecord3 = packingRecords.get(2); + assertEquals(packingRecord3.getAmount().intValue(), 8); + + assertEquals(packingRecord3.getTousseName(), "Test开胸包"); + + } + public void t(){ + + initCSSDData(); + + //创建回收记录3 + RecyclingRecord record3 = new RecyclingRecord(); + record3.setRecyclingTime(new Date()); + record3.setDepart("测试内科"); + record3.setDepartCode("testNeike"); + record3.setOperator("王伟"); + record3.setOrgUnitCoding(Constants.ORG_UNIT_CODE_CSSD); + record3.setRecyclingUser("张雄"); + + JSONArray jsonArray3 = new JSONArray(); + TousseDefinition td_Test开胸包 = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包"); + addRecyclingItem(jsonArray3, "019000001", "0", "Test开胸包",td_Test开胸包.getId(), 5, "器械包", "Test开胸包", + 5, "019000001"); + JSONObject params3 = new JSONObject(); + params3.put("tousseJson", jsonArray3); + params3.put("errors",""); + params3.put("damages",""); + try { + recyclingRecordManager.saveOrUpdate(record3,params3); + } catch (RecyclingRecordException e) { + e.printStackTrace(); + } + objectDao.flush(); + + RecyclingRecord recyclingRecord3 = recyclingRecordManager + .getRecyclingRecord("" + record3.getId()); + + InvoicePlan application3 = recyclingRecord3.getRecyclingApplication(); + assertNotNull(application3); + assertNotNull(application3.getApplicationItems()); + assertEquals(InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION, application3.getType()); + List tousseItems3 = application3.getApplicationItems(); + assertEquals(1,tousseItems3.size()); + + Map tousseItemMap3 = new HashMap(); + for (TousseItem tousseItem : tousseItems3) { + tousseItemMap3.put(tousseItem.getTousseName(), tousseItem); + } + + + ListtousseInstanceList3 = + objectDao.findByProperty("TousseInstance", "tousseName", "Test开胸包"); + assertEquals(0, tousseInstanceList3.size()); + + PackingTask packingTask3 = + (PackingTask)objectDao.getBySql("PackingTask", "where taskType='" + + PackingTask.TASK_RECYCLINGRECORD + "' and sourceId="+recyclingRecord3.getId()); + assertNotNull(packingTask3); + + List classifyBasketList3 = recyclingRecord3.getClassifyBaskets(); + assertEquals(classifyBasketList3.size(), 1); + //调用清洗代码 + WashAndDisinfectRecord washAndDisinfectRecord3 = new WashAndDisinfectRecord(); + washAndDisinfectRecord3.setDisinfectIdentification(""); + washAndDisinfectRecord3.setDisinfectProgram(""); + washAndDisinfectRecord3.setOperator(""); + washAndDisinfectRecord3.setOrgUnitCoding(""); + washAndDisinfectRecord3.setStartDate(new Date()); + washAndDisinfectRecord3.setEndDate(new Date()); + + Map classifyBasketInfoMap3 = new HashMap(); + //put对应回收单及其清洗篮筐 + ClassifyBasket classifyBasket3 = classifyBasketList3.get(0); + assertEquals(classifyBasket3.getContainerBarcode(), "019000001"); + classifyBasketInfoMap3.put(classifyBasket3.getId(), classifyBasket3); + washAndDisinfectRecordManager + .saveOrUpdateWashAndDisinfectRecordAndMaterials( + washAndDisinfectRecord3, classifyBasketInfoMap3, new ArrayList()); + + //断言清洗记录与清洗数据 + assertEquals(washAndDisinfectRecord3.getClassifyBaskets().size(), 1); + + + //创建回收记录2 + RecyclingRecord record4 = new RecyclingRecord(); + record4.setRecyclingTime(new Date()); + record4.setDepart("测试内科"); + record4.setDepartCode("testNeike"); + record4.setOperator("王伟"); + record4.setOrgUnitCoding(Constants.ORG_UNIT_CODE_CSSD); + record4.setRecyclingUser("张雄"); + + JSONArray jsonArray4 = new JSONArray(); + addRecyclingItem(jsonArray4, "019000001", "0", "Test开胸包",td_Test开胸包.getId(), 3, "器械包", "Test开胸包", + 5, "019000001"); + JSONObject params4 = new JSONObject(); + params4.put("tousseJson", jsonArray4); + params4.put("errors",""); + params4.put("damages",""); + try { + recyclingRecordManager.saveOrUpdate(record4,params4); + } catch (RecyclingRecordException e) { + e.printStackTrace(); + } + objectDao.flush(); + + RecyclingRecord recyclingRecord4 = recyclingRecordManager + .getRecyclingRecord("" + record4.getId()); + + InvoicePlan application4 = recyclingRecord4.getRecyclingApplication(); + assertNotNull(application4); + assertNotNull(application4.getApplicationItems()); + assertEquals(InvoicePlan.TYPE_RECYCLINGCREATE_APPLICATION, application4.getType()); + List tousseItems4 = application4.getApplicationItems(); + assertEquals(1,tousseItems4.size()); + + tousseInstanceList3 = + objectDao.findByProperty("TousseInstance", "tousseName", "Test开胸包"); + assertEquals(0, tousseInstanceList3.size()); + + PackingTask packingTask4 = + (PackingTask)objectDao.getBySql("PackingTask", "where taskType='" + + PackingTask.TASK_RECYCLINGRECORD + "' and sourceId="+recyclingRecord4.getId()); + assertNotNull(packingTask4); + + classifyBasketList3 = recyclingRecord4.getClassifyBaskets(); + assertEquals(classifyBasketList3.size(), 1); + //调用清洗代码 + WashAndDisinfectRecord washAndDisinfectRecord4 = new WashAndDisinfectRecord(); + washAndDisinfectRecord4.setDisinfectIdentification(""); + washAndDisinfectRecord4.setDisinfectProgram(""); + washAndDisinfectRecord4.setOperator(""); + washAndDisinfectRecord4.setOrgUnitCoding(""); + washAndDisinfectRecord4.setStartDate(new Date()); + washAndDisinfectRecord4.setEndDate(new Date()); + + Map classifyBasketInfoMap4 = new HashMap(); + //put对应回收单及其清洗篮筐 + ClassifyBasket classifyBasket4 = classifyBasketList3.get(0); + assertEquals(classifyBasket4.getContainerBarcode(), "019000001"); + classifyBasketInfoMap4.put(classifyBasket4.getId(), classifyBasket4); + washAndDisinfectRecordManager + .saveOrUpdateWashAndDisinfectRecordAndMaterials( + washAndDisinfectRecord4, classifyBasketInfoMap4, new ArrayList()); + + //断言清洗记录与清洗数据 + assertEquals(washAndDisinfectRecord4.getClassifyBaskets().size(), 1); + + + //调用装配代码 + String ids = packingTask3.getId().toString() + ";" + packingTask4.getId().toString(); + String inspector = "cssduser1"; + String inspectorCode = "002107"; + String operator = "cssduser1"; + String operatorCode = "002107"; + String reviewer = "cssduser2"; + String reviewerCode = "fw130"; + String wrapper = "cssduser2"; + String wrapperCode = "fw130"; + String packageType = "棉布"; + String sterilingType = "P1器械"; + String stock = ""; + String packAmountStr = "8"; + String taskGroup = "术科组"; + String splitPackage = null; + String basketBarcode = "010000110"; + String idCardBarcode = ""; + String sterilizer = "1号灭菌炉"; + String frequency = "3"; + HttpSession session = null; + params3 = new JSONObject(); + params3.put("taskIds", ids); + params3.put("inspector", inspector); + params3.put("inspectorCode", inspectorCode); + params3.put("operator", operator); + params3.put("operatorCode", operatorCode); + params3.put("reviewer", reviewer); + params3.put("reviewerCode", reviewerCode); + params3.put("wrapper", wrapper); + params3.put("wrapperCode", wrapperCode); + params3.put("packageType", packageType); + params3.put("sterilingType", sterilingType); + params3.put("sterileDate", String.valueOf(System.currentTimeMillis())); + params3.put("stock", stock); + params3.put("packAmount", packAmountStr); + params3.put("taskGroup", taskGroup); + params3.put("splitPackage", splitPackage); + params3.put("basketBarcode", basketBarcode); + params3.put("idCardInstanceID", idCardBarcode); + params3.put("sterilizer", sterilizer); + params3.put("frequency", frequency); + params3.put("confirmContinue", "true"); + params3.put("urgentAmount", null); + params3.put("tousseWeight", ""); + String str = packingTableManagerTX.packingTousse2(params3.toString(), session); + + JSONObject json = JSONObject.fromObject(str); + assertTrue(json.optBoolean("success")); + + tousseInstanceList3 = + objectDao.findByProperty("TousseInstance", "tousseName", "Test开胸包"); + assertEquals(tousseInstanceList3.size(), 8); + for(TousseInstance tousseInstance : tousseInstanceList3){ + assertEquals(tousseInstance.getStatus(), TousseInstance.STATUS_PACKED); + } + + // 验证有2条装配记录 + List packingRecords = objectDao.findAllObjects(PackingRecord.class.getSimpleName()); + assertEquals(packingRecords.size(), 1); + + PackingRecord packingRecord1 = packingRecords.get(0); + assertEquals(packingRecord1.getAmount().intValue(), 8); + +// PackingRecord packingRecord2 = packingRecords.get(1); +// assertEquals(packingRecord2.getAmount().intValue(), 3); + + + } }