Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r38472 -r38491 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 38472) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 38491) @@ -11619,4 +11619,42 @@ , StringTools.EMPTY)); terminationNumberOfTousseItemArr.add(obj); } + @Override + public void updateUrgentLevelOfPackingTask(Long packingTaskId, int urgentAmount, + Long urgentLevelId) { + if(!DatabaseUtil.isPoIdValid(packingTaskId)){ + throw new SystemException("参数有误"); + } + PackingTask packingTask = getForUpdate(packingTaskId); + if(packingTask == null){ + throw new SystemException("装配任务已不存在"); + } + if(urgentLevelId != null && urgentLevelId == 0L){//不加急了 + packingTask.setUrgentAmount(0); + packingTask.setUrgentLevel(null); + packingTask.setUrgentLevelObj(null); + objectDao.update(packingTask); + return; + } + if(!DatabaseUtil.isPoIdValid(urgentLevelId)){ + throw new SystemException("设置的加急信息有误"); + } + if(urgentAmount < 1){ + throw new SystemException("加急数量最小值为1"); + } + if(packingTask.getUnPackAmount() == null || packingTask.getUnPackAmount() == 0){ + throw new SystemException("装配任务已不存在未装配数量"); + } + if(packingTask.getUnPackAmount() < urgentAmount){ + throw new SystemException("最大加急数量不能超过待装配的数量"); + } + UrgentLevel ul = urgentLevelManager.get(urgentLevelId); + if(ul == null){ + throw new SystemException("找不到加急信息"); + } + packingTask.setUrgentAmount(urgentAmount); + packingTask.setUrgentLevel(ul.getName()); + packingTask.setUrgentLevelObj(ul); + objectDao.update(packingTask); + } } Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java =================================================================== diff -u -r38471 -r38491 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java (.../PackingManager.java) (revision 38471) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java (.../PackingManager.java) (revision 38491) @@ -419,4 +419,11 @@ * @param deleteCause 转配原因 */ public JSONObject deletePackingTasks(JSONArray deleteInfo, String deleteCause); + /** + * 装配任务加急 + * @param packingTaskId 任务id + * @param urgentAmount 加急数量 + * @param urgentLevelId 加急等级id 为0时 清空加急信息 + */ + public void updateUrgentLevelOfPackingTask(Long packingTaskId, int urgentAmount, Long urgentLevelId); } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/packing/service/PackingManagerTests.java =================================================================== diff -u -r38400 -r38491 --- ssts-web/src/test/java/test/forgon/disinfectsystem/packing/service/PackingManagerTests.java (.../PackingManagerTests.java) (revision 38400) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/packing/service/PackingManagerTests.java (.../PackingManagerTests.java) (revision 38491) @@ -7,6 +7,7 @@ import javax.servlet.http.HttpSession; import com.forgon.tools.MathTools; +import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.date.DateTools; import com.forgon.tools.json.JSONUtil; @@ -34,6 +35,7 @@ import com.forgon.disinfectsystem.entity.packing.PackingTask; import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingRecord; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.disinfectsystem.entity.urgent.UrgentLevel; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecordMaterial; import com.forgon.disinfectsystem.exception.RecyclingRecordException; @@ -1651,12 +1653,14 @@ ti.setAmount(10); ti.setTousseDefinitionId(td.getId()); ti.setInvoicePlan(ip); + ti.setSendOutAmount(0); ti.setInvoicePlanID(ip.getId()); ti.setTousseName(td.getName()); objectDao.save(ti); TousseItem ti2 = new TousseItem(); ti2.setAmount(8); + ti2.setSendOutAmount(0); ti2.setTousseDefinitionId(td2.getId()); ti2.setInvoicePlan(ip); ti2.setInvoicePlanID(ip.getId()); @@ -1727,7 +1731,7 @@ //8个装配任务 终止2个 还剩下6个 assertEquals(6,pt2.getUnPackAmount().intValue()); - //8个装配任务 终止一个 总装配数量不会变 + //8个装配任务 总装配数量不会变 assertEquals(8,pt2.getAmount().intValue()); objectDao.refresh(ti2); //8个装配任务 终止2个 申请单对应物品的终止装配任务数量累加到2 @@ -1750,12 +1754,11 @@ delItem.put("amount", 1); deleteInfo.add(delItem); packingManager.deletePackingTasks(deleteInfo, deleteCause); + objectDao.refresh(ti); //再一个 还剩下8个 assertEquals(8,pt.getUnPackAmount().intValue()); - //10个装配任务 终止一个 总装配数量不会变 + //10个装配任务 总装配数量不会变 assertEquals(10,pt.getAmount().intValue()); - objectDao.refresh(ti); - //累加到2 assertEquals(2,ti.getTerminatePackingTaskAmount().intValue()); //终止丢失报损行的装配任务(丢失报损需要整行删除) @@ -1768,15 +1771,34 @@ packingManager.deletePackingTasks(deleteInfo, deleteCause); - //再终止3个 还剩下8个 + //再终止3个 还剩下5个 assertEquals(5,pt.getUnPackAmount().intValue()); - //10个装配任务 终止一个 总装配数量不会变 + //10个装配任务 总装配数量不会变 assertEquals(10,pt.getAmount().intValue()); objectDao.refresh(ti); //累加到5 assertEquals(5,ti.getTerminatePackingTaskAmount().intValue()); //从装配移除了 assertEquals(error.getStatus(),MaterialErrorDamageDetail.STATUS_ONE); + //把剩下的都终止完 申请单会被终止 + deleteInfo = new JSONArray(); + delItem = new JSONObject(); + delItem.put("notLossReport", true); + delItem.put("packingTaskId", pt.getId()); + delItem.put("amount", 5); + deleteInfo.add(delItem); + JSONObject result = packingManager.deletePackingTasks(deleteInfo, deleteCause); + //再终止5个 还剩下0个 + pt = (PackingTask)objectDao.getById(PackingTask.class.getSimpleName(), pt.getId()); + assertNull(pt); + objectDao.refresh(ti); + //累加到10 + assertEquals(10,ti.getTerminatePackingTaskAmount().intValue()); + assertNotNull(result); + String terminateInvoicePlanIds = result.optString("terminateInvoicePlanIds"); + assertNotNull(terminateInvoicePlanIds); + JSONArray terminateInvoicePlanIdsArr = JSONArray.fromObject(terminateInvoicePlanIds); + assertEquals(1,terminateInvoicePlanIdsArr.size()); } @Test public void testDeletePackingTask2() { @@ -1947,4 +1969,29 @@ System.out.println(containerInfos.toString()); assertEquals(2,containerInfos.size()); } + @Test + public void testUpdateUrgentLevelOfPackingTask(){ + JSONObject retObj = new JSONObject(); + PackingTask pt = new PackingTask(); + pt.setAmount(10); + pt.setUnPackAmount(10); + objectDao.save(pt); + + UrgentLevel ul = new UrgentLevel(); + ul.setGrade(1); + objectDao.save(ul); + Long packingTaskId = pt.getId(); + Long urgentLevelId = ul.getId(); + int urgentAmount = 2; + try { + packingManager.updateUrgentLevelOfPackingTask(packingTaskId, urgentAmount, urgentLevelId); + retObj.put("success", true); + } catch (Exception e) { + e.printStackTrace(); + retObj.put("success", false); + retObj.put("message", e.getMessage()); + } + assertEquals(2,pt.getUrgentAmount().intValue()); + assertNotNull(pt.getUrgentLevelObj()); + } } Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java =================================================================== diff -u -r38320 -r38491 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java (.../PackingAction.java) (revision 38320) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java (.../PackingAction.java) (revision 38491) @@ -1450,4 +1450,22 @@ StrutsResponseUtils.output(obj); } } + /** + * 装配任务加急 + */ + public void updateUrgentLevelOfPackingTask(){ + JSONObject retObj = new JSONObject(); + try { + Long packingTaskId = StrutsParamUtils.getPraramLongValue("packingTaskId", 0L); + Long urgentLevelId = StrutsParamUtils.getPraramLongValue("urgentLevelId", 0L); + int urgentAmount = StrutsParamUtils.getPraramValue("urgentAmount", 0); + packingManager.updateUrgentLevelOfPackingTask(packingTaskId, urgentAmount, urgentLevelId); + retObj.put("success", true); + } catch (Exception e) { + e.printStackTrace(); + retObj.put("success", false); + retObj.put("message", e.getMessage()); + } + StrutsResponseUtils.output(retObj); + } }