Index: ssts-web/src/test/java/test/forgon/disinfectsystem/packing/service/PackingManagerTests.java =================================================================== diff -u -r36611 -r38293 --- ssts-web/src/test/java/test/forgon/disinfectsystem/packing/service/PackingManagerTests.java (.../PackingManagerTests.java) (revision 36611) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/packing/service/PackingManagerTests.java (.../PackingManagerTests.java) (revision 38293) @@ -1,12 +1,13 @@ package test.forgon.disinfectsystem.packing.service; import static org.junit.Assert.*; - import java.util.*; import javax.servlet.http.HttpSession; +import com.forgon.tools.MathTools; import com.forgon.tools.json.JSONUtil; + import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -20,6 +21,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.becleanitem.ClassifyBasket; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; +import com.forgon.disinfectsystem.entity.materialerrordamage.MaterialErrorDamageDetail; import com.forgon.disinfectsystem.entity.packing.PackingRecord; import com.forgon.disinfectsystem.entity.packing.PackingTask; import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingRecord; @@ -1613,4 +1615,186 @@ JSONArray data = retObj.optJSONArray("data"); assertEquals(2, data.size()); } + @Test + public void testDeletePackingTask() { + //构建主要数据数据 + TousseDefinition td = new TousseDefinition(); + td.setTousseType("器械包"); + td.setName("测试新版终止装配任务的器械包1"); + objectDao.save(td); + td.setAncestorID(td.getId()); + td.setForDisplay(true); + objectDao.update(td); + + TousseDefinition td2 = new TousseDefinition(); + td2.setTousseType("器械包"); + td2.setName("测试新版终止装配任务的器械包2"); + objectDao.save(td2); + td2.setAncestorID(td2.getId()); + td2.setForDisplay(true); + objectDao.update(td2); + + InvoicePlan ip = new InvoicePlan(); + String oldRemark = "原有备注。"; + ip.setRemark(oldRemark); + objectDao.save(ip); + + TousseItem ti = new TousseItem(); + ti.setAmount(10); + ti.setTousseDefinitionId(td.getId()); + ti.setInvoicePlan(ip); + ti.setInvoicePlanID(ip.getId()); + ti.setTousseName(td.getName()); + objectDao.save(ti); + + TousseItem ti2 = new TousseItem(); + ti2.setAmount(8); + ti2.setTousseDefinitionId(td2.getId()); + ti2.setInvoicePlan(ip); + ti2.setInvoicePlanID(ip.getId()); + ti2.setTousseName(td2.getName()); + objectDao.save(ti2); + + List applicationItems = new ArrayList(); + applicationItems.add(ti); + applicationItems.add(ti2); + ip.setApplicationItems(applicationItems); + + objectDao.update(ip); + + RecyclingRecord rr = new RecyclingRecord(); + rr.setRecyclingApplication(ip); + objectDao.save(rr); + + PackingTask pt = new PackingTask(); + pt.setAmount(10); + pt.setUnPackAmount(10); + pt.setTousseDefinition(td); + pt.setTaskType(PackingTask.TASK_RECYCLINGRECORD); + pt.setSourceId(rr.getId()); + objectDao.save(pt); + + //装配任务中有丢失报损3个数量 + MaterialErrorDamageDetail error = new MaterialErrorDamageDetail(); + error.setPackingTaskId(pt.getId()); + error.setTousseDefinitionId(td.getId()); + error.setTousseName(td.getName()); + error.setAmount(3); + objectDao.save(error); + + PackingTask pt2 = new PackingTask(); + pt2.setAmount(8); + pt2.setUnPackAmount(8); + pt2.setTousseDefinition(td2); + pt2.setTaskType(PackingTask.TASK_RECYCLINGRECORD); + pt2.setSourceId(rr.getId()); + objectDao.save(pt2); + + String deleteCause = "测试删除"; + + JSONArray deleteInfo = new JSONArray(); + //测试一个装配任务10个数量 终止1个数量 结论剩余9个未装数量 + Integer amount = 1; + JSONObject delItem = new JSONObject(); + delItem.put("notLossReport", true); + delItem.put("packingTaskId", pt.getId()); + delItem.put("amount", amount); + deleteInfo.add(delItem); + //测试一个装配任务8个数量 终止2个数量 结论剩余6个未装数量 + Integer amount2 = 2; + JSONObject delItem2 = new JSONObject(); + delItem2.put("notLossReport", true); + delItem2.put("packingTaskId", pt2.getId()); + delItem2.put("amount", amount2); + deleteInfo.add(delItem2); + + packingManager.deletePackingTasks(deleteInfo, deleteCause); + //10个装配任务 终止一个 还剩下9个 + assertEquals(9,pt.getUnPackAmount().intValue()); + //10个装配任务 终止一个 总装配数量不会变 + assertEquals(10,pt.getAmount().intValue()); + objectDao.refresh(ti); + //10个装配任务 终止一个 申请单终止装配任务数量累加到1 + assertEquals(1,ti.getTerminatePackingTaskAmount().intValue()); + + //8个装配任务 终止2个 还剩下6个 + assertEquals(6,pt2.getUnPackAmount().intValue()); + //8个装配任务 终止一个 总装配数量不会变 + assertEquals(8,pt2.getAmount().intValue()); + objectDao.refresh(ti2); + //8个装配任务 终止2个 申请单对应物品的终止装配任务数量累加到2 + assertEquals(2,ti2.getTerminatePackingTaskAmount().intValue()); + objectDao.refresh(ip); + //10个装配任务 终止一个 申请单增加新备注 且旧备注还要在 + assertEquals("原有备注。物品“" + + td.getName() +"”待装配数量被终止" + + amount +"个,原因为"+ deleteCause +"。" + + "物品“" + + td2.getName() +"”待装配数量被终止" + + amount2 +"个,原因为"+ deleteCause +"。" + ,ip.getRemark()); + + //包1继续终止1个 + deleteInfo = new JSONArray(); + delItem = new JSONObject(); + delItem.put("notLossReport", true); + delItem.put("packingTaskId", pt.getId()); + delItem.put("amount", 1); + deleteInfo.add(delItem); + packingManager.deletePackingTasks(deleteInfo, deleteCause); + //再一个 还剩下8个 + assertEquals(8,pt.getUnPackAmount().intValue()); + //10个装配任务 终止一个 总装配数量不会变 + assertEquals(10,pt.getAmount().intValue()); + objectDao.refresh(ti); + //累加到2 + assertEquals(2,ti.getTerminatePackingTaskAmount().intValue()); + + //终止丢失报损行的装配任务(丢失报损需要整行删除) + deleteInfo = new JSONArray(); + delItem = new JSONObject(); + delItem.put("notLossReport", false); + delItem.put("packingTaskId", pt.getId()); + delItem.put("amount", 3); + deleteInfo.add(delItem); + packingManager.deletePackingTasks(deleteInfo, deleteCause); + + + //再终止3个 还剩下8个 + assertEquals(5,pt.getUnPackAmount().intValue()); + //10个装配任务 终止一个 总装配数量不会变 + assertEquals(10,pt.getAmount().intValue()); + objectDao.refresh(ti); + //累加到5 + assertEquals(5,ti.getTerminatePackingTaskAmount().intValue()); + //从装配移除了 + assertEquals(error.getStatus(),MaterialErrorDamageDetail.STATUS_ONE); + } + @Test + public void testDeletePackingTask2() { + //构建数据 + TousseDefinition td = new TousseDefinition(); + td.setTousseType("器械包"); + objectDao.save(td); + td.setAncestorID(td.getId()); + td.setForDisplay(true); + objectDao.update(td); + + PackingTask pt = new PackingTask(); + pt.setAmount(10); + pt.setUnPackAmount(10); + pt.setTousseDefinition(td); + objectDao.save(pt); + + boolean notLossReport = false; + String deleteCause = "测试删除"; + Long tousseID = td.getId(); + String idStr = pt.getId().toString(); + + //测试一个装配任务10个数量 终止1个数量 结论剩余9个未装数量 + Integer amount = 1; + packingManager.deletePackingTask(deleteCause, idStr, tousseID, notLossReport, amount); + assertEquals(MathTools.equals(9, pt.getUnPackAmount()),true); + assertEquals(MathTools.equals(10, pt.getAmount()),true); + } } Index: ssts-web/src/test/java/test/forgon/system/systemsetting/HttpOptionManagerTests.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/system/systemsetting/HttpOptionManagerTests.java (revision 0) +++ ssts-web/src/test/java/test/forgon/system/systemsetting/HttpOptionManagerTests.java (revision 38293) @@ -0,0 +1,81 @@ +package test.forgon.system.systemsetting; + +import static org.junit.Assert.assertEquals; + +import java.util.List; + +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import com.forgon.systemsetting.model.HttpOption; +import com.forgon.systemsetting.service.HttpOptionManager; + +import test.forgon.disinfectsystem.AbstractCSSDTest; + +public class HttpOptionManagerTests extends AbstractCSSDTest{ + @Autowired + private HttpOptionManager httpOptionManager; + /** + * 新增 排重 修改 序号是否组自动添加正确 + */ + @Test + public void saveOrUpdateHttpOption(){ + boolean flag = false; + String msg = null; + String optionListId = HttpOption.SYSTEMSETTING_CAUSEOFDELETEPACKINGTASK; + String optionValue = null; + //新增一条装配删除原因 + Long id = null; + String optionText = "多装"; + try { + httpOptionManager.saveOrUpdateHttpOption(id, optionText, optionListId, optionValue); + flag = true; + } catch (Exception e) { + msg = e.getMessage(); + e.printStackTrace(); + flag = false; + } + assertEquals(true,flag); + List httpOptions = httpOptionManager.getByProperty("optionListId", HttpOption.SYSTEMSETTING_CAUSEOFDELETEPACKINGTASK); + assertEquals(1,httpOptions.size()); + HttpOption httpOption = httpOptions.get(0); + assertEquals(optionText,httpOption.getOptionText()); + assertEquals(1,httpOption.getSequence()); + //验重 + try { + httpOptionManager.saveOrUpdateHttpOption(id, optionText, optionListId, optionValue); + flag = true; + } catch (Exception e) { + msg = e.getMessage(); + e.printStackTrace(); + flag = false; + } + assertEquals(false,flag); + assertEquals(optionText+"已存在,不可重复添加",msg); + //再保存一个 序号自动增加 + String optionText2 = "包废弃了"; + try { + httpOptionManager.saveOrUpdateHttpOption(id, optionText2, optionListId, optionValue); + flag = true; + } catch (Exception e) { + msg = e.getMessage(); + e.printStackTrace(); + flag = false; + } + assertEquals(true,flag); + httpOptions = httpOptionManager.getByProperty("optionListId", HttpOption.SYSTEMSETTING_CAUSEOFDELETEPACKINGTASK); + assertEquals(2,httpOptions.size()); + boolean find1 = false; + boolean find2 = false; + for (HttpOption item : httpOptions) { + if(optionText2.endsWith(item.getOptionText()) && 2 == item.getSequence()){ + find2 = true; + } + if(optionText.endsWith(item.getOptionText()) && 1 == item.getSequence()){ + find1 = true; + } + } + //两个都保存成功 且序号正确 + assertEquals(true,find1); + assertEquals(true,find2); + } +}