Index: ssts-web/src/main/webapp/disinfectsystem/config/fsfy/config.js =================================================================== diff -u -r21579 -r21620 --- ssts-web/src/main/webapp/disinfectsystem/config/fsfy/config.js (.../config.js) (revision 21579) +++ ssts-web/src/main/webapp/disinfectsystem/config/fsfy/config.js (.../config.js) (revision 21620) @@ -20,6 +20,10 @@ autoReturnTousse : false, // 是否隐藏进入审核列表按钮 hideEnterReviewListButton : true, + //科室申领打开申请单,是否显示回收数量列 + isShowRecyclingAmount : true, + //对申请单的物品申请数量是否启用干预功能(true为启用,false或者不配置都不启用) + enableInterfereApplyAmount: true, // 是否自动补全用户名 autoFillUserName:false, // 自动补全用户名的长度 Index: ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.js =================================================================== diff -u -r21557 -r21620 --- ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.js (.../goodsApplicationView.js) (revision 21557) +++ ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.js (.../goodsApplicationView.js) (revision 21620) @@ -2619,8 +2619,8 @@ || type == tousseApplicationForm || type == diposableGoodsApplicationForm || type == disinfectGoodsApplicationForm) - && recyclingStatus != awaitRecycling - && deliverStatus == awaitDeliver){ + && deliverStatus != statusArr[2] + && (recyclingStatus == recycled || (!recyclingStatus && deliverStatus == statusArr[1]))){ //发货状态!=已发货 &&(发货状态=已回收 || 发货状态=部分发货) return ""; } }}, Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/RecyclingApplicationAction.java =================================================================== diff -u -r21258 -r21620 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/RecyclingApplicationAction.java (.../RecyclingApplicationAction.java) (revision 21258) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/RecyclingApplicationAction.java (.../RecyclingApplicationAction.java) (revision 21620) @@ -21,6 +21,7 @@ import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.util.CycleDetectionStrategy; +import net.sf.json.util.JSONUtils; import net.sf.json.util.PropertyFilter; import org.apache.commons.collections4.CollectionUtils; @@ -404,14 +405,18 @@ * 保存申请单 */ public void saveRecyclingApplication() { - JSONObject jsonObject = null; - boolean isInterveneAmount = "true".equals(StrutsParamUtils.getPraramValue("isInterveneAmount", "").trim()); - if (isInterveneAmount) { - jsonObject = recyclingApplicationManager.interveneApplyAmount(recyclingApplication, oldRecyclingApplication, getTousseItemVos()); + if (recyclingApplication != null) { + JSONObject jsonObject = null; + boolean isInterveneAmount = "true".equals(StrutsParamUtils.getPraramValue("isInterveneAmount", "").trim()); + if (isInterveneAmount) { + jsonObject = recyclingApplicationManager.interveneApplyAmount(recyclingApplication, oldRecyclingApplication, getTousseItemVos()); + } else { + jsonObject = createReturnApplicationOrRecyclingApplication(); + } + StrutsResponseUtils.output(jsonObject); } else { - jsonObject = createReturnApplicationOrRecyclingApplication(); + StrutsResponseUtils.output(JSONUtil.buildJsonObject(false, "此申请单数据异常,请联系系统管理员!")); } - StrutsResponseUtils.output(jsonObject); } /** Index: ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationForm.js =================================================================== diff -u -r21526 -r21620 --- ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationForm.js (.../goodsApplicationForm.js) (revision 21526) +++ ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationForm.js (.../goodsApplicationForm.js) (revision 21620) @@ -254,8 +254,6 @@ if (!isUndefinedOrNullOrEmpty(grid)){ grid.dwrReload(); } - }else{ - showResult(action.result.message); } }, failure : function(form, action) { @@ -724,9 +722,10 @@ showResult('数量必须大于0!'); return; } - if (count > record.get('countBackup')) { + var unitCount = record.get('unitCount'); + if ((!isUndefinedOrNullOrEmpty(unitCount) ? unitCount : count) < record.get('sendOutAmount')) { record.set('count', originalValue); - showResult('数量不能大于之前申请的数量'); + showResult('修改后的数量不能小于已经发货的数量!'); return; } } else if (isDiposableGoods == '是') { Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r21613 -r21620 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 21613) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 21620) @@ -5379,11 +5379,11 @@ @Override public JSONObject interveneApplyAmount(RecyclingApplication recyclingApplication, RecyclingApplicationVo oldRecyclingApplication, Collection newTousseItemVoList) { - if (!InvoicePlan.DELIVERSTATUS_AWAITDELIVER.equals(recyclingApplication.getDeliverStatus())) { - return JSONUtil.buildJsonObject(false, "发货状态为待发货才可以干预!"); + if (InvoicePlan.DELIVERSTATUS_DELIVERED.equals(recyclingApplication.getDeliverStatus())) { + return JSONUtil.buildJsonObject(false, "发货状态为已发货,不可以干预!"); } - String remark = ""; + boolean recalculateDeliverStatus = false; //是否需要重新计算发货状态 List list = new ArrayList(); for (TousseItemVo tousseItemVo : newTousseItemVoList) { Long tousseItemId = tousseItemVo.getId(); @@ -5440,11 +5440,30 @@ } else { Integer amount = tousseItemVo.getAmount(); Integer originalAmount = tousseItem.getAmount(); - if (amount != null && originalAmount != null && originalAmount > amount) { //只管“原来申请数量”大于“此次修改的数量的项 - tousseItem.setAmount(amount); - if (com.forgon.Constants.STR_YES.equals(tousseItem.getIsRecycling())) { //需要回收的项,发货以回收数量为准 - tousseItem.setRecyclingAmount(amount); + Integer sendOutAmount = tousseItem.getSendOutAmount(); //已发货数量 + Integer unitCount = tousseItemVo.getUnitCount(); //最小单位数量 + + + + if (amount != null && amount > 0) { //干预的数量一定要大于0 + if (unitCount != null && unitCount > 0) { //是一次性物品的中包装的申请模式 + originalAmount = tousseItem.getMiddlePackageAmount(); + if (sendOutAmount != null && unitCount < sendOutAmount) { + return JSONUtil.buildJsonObject(false, "修改后的数量不能小于已经发货的数量!"); + } + tousseItem.setAmount(unitCount); + tousseItem.setMiddlePackageAmount(amount); + } else { + if (sendOutAmount != null && amount < sendOutAmount) { + return JSONUtil.buildJsonObject(false, "修改后的数量不能小于已经发货的数量!"); + } + + tousseItem.setAmount(amount); + if (com.forgon.Constants.STR_YES.equals(tousseItem.getIsRecycling())) { //需要回收的项,发货以回收数量为准 + tousseItem.setRecyclingAmount(amount); + } } + recalculateDeliverStatus = true; remark += String.format("物品(%s)申请数量从%s改成%s;", tousseItem.getTousseName(), originalAmount, amount); } } @@ -5453,6 +5472,11 @@ } } + //重新计算发货状态 + if (recalculateDeliverStatus) { + invoicePlanManagerTarget.computeAndSetInvoiceStatus(recyclingApplication); + } + //写备注 if (StringTools.isNotBlank(remark)) { remark = remark.substring(0, remark.length() - 1); @@ -5492,7 +5516,7 @@ OrgUnit orgUnit = (OrgUnit)orgUnitManager.getOrgUnitByCode(departCoding); try { if (orgUnit != null) { - InvoicePlan invoicePlan = null; + RecyclingApplication ra = null; List applicationItems = new ArrayList(); Collection items = hrpInvoicePlan.getItems(); @@ -5523,9 +5547,9 @@ } if (disposableGoods != null) { - if (invoicePlan == null) { + if (ra == null) { hrpInvoicePlan.setDepart(StringTools.defaultString(orgUnit.getName())); - invoicePlan = createInvoicePlanByHrpInvoicePlan(hrpInvoicePlan); + ra = createInvoicePlanByHrpInvoicePlan(hrpInvoicePlan); } disposableGoods.setUnit(unit); @@ -5546,8 +5570,8 @@ Double rowPrice = MathTools.mul(price,tousseItem.getAmount()).doubleValue(); tousseItem.setPrice(price); tousseItem.setRowPrice(rowPrice); - tousseItem.setInvoicePlan(invoicePlan); - tousseItem.setInvoicePlanID(invoicePlan.getId()); + tousseItem.setInvoicePlan(ra); + tousseItem.setInvoicePlanID(ra.getId()); tousseItem.setDisposableGoodsType(disposableGoods.getType()); //一次性物品类型 tousseItem.setTtsName(disposableGoods.getTtsName()); //语音提示名称 tousseItem.setExpressInvoice(disposableGoods.getExpressInvoice()); //是否快速发货 @@ -5558,9 +5582,9 @@ } } - if (invoicePlan != null) { - invoicePlan.setApplicationItems(applicationItems); - objectDao.saveOrUpdate(invoicePlan); + if (ra != null) { + ra.setApplicationItems(applicationItems); + objectDao.saveOrUpdate(ra); } else { failureCause = "此申请单申请的全部物品都不存在"; } @@ -5601,9 +5625,9 @@ * @param hrpInvoicePlan {@link HrpInvoicePlan} * @return */ - private InvoicePlan createInvoicePlanByHrpInvoicePlan(HrpInvoicePlan hrpInvoicePlan) { - InvoicePlan invoicePlan; - invoicePlan = new InvoicePlan(); + private RecyclingApplication createInvoicePlanByHrpInvoicePlan(HrpInvoicePlan hrpInvoicePlan) { + RecyclingApplication invoicePlan; + invoicePlan = new RecyclingApplication(); invoicePlan.setSerialNumber(hrpInvoicePlan.getSerialNumber()); invoicePlan.setDepart(hrpInvoicePlan.getDepart()); invoicePlan.setDepartCoding(hrpInvoicePlan.getDepartCoding());