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());