Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/expensivegoodsapplication/service/ExpensiveGoodsApplicationManagerImpl.java =================================================================== diff -u -r21780 -r21800 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/expensivegoodsapplication/service/ExpensiveGoodsApplicationManagerImpl.java (.../ExpensiveGoodsApplicationManagerImpl.java) (revision 21780) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/expensivegoodsapplication/service/ExpensiveGoodsApplicationManagerImpl.java (.../ExpensiveGoodsApplicationManagerImpl.java) (revision 21800) @@ -58,38 +58,8 @@ if (items != null && items.size() > 0) { //1、设置申请项 - List oldApplicationItems = expensivegoodsapplication.getApplicationItems(); //旧的申请项集合 - List newApplicationItems = new ArrayList(); //新的申请项集合 - for (Object object : items) { - JSONObject jsonObj = (JSONObject) object; - TousseItem tousseItem = tousseItemManager.get(jsonObj.optLong("id", 0)); - if (tousseItem == null || tousseItem.getAmount() <= 0) { - tousseItem = new TousseItem(); - tousseItem.setExpensiveGoodsId(jsonObj.optLong("expensiveGoodsId")); - tousseItem.setTousseName(jsonObj.optString("showName")); - tousseItem.setSupplierName(jsonObj.optString("supplierName")); //高值耗材的生产厂家 - tousseItem.setPrice(jsonObj.optDouble("referencePrice")); //高值耗材的参考价 - tousseItem.setTousseType(ExpensiveGoods.TYPE_NAME); - tousseItem.setDiposable(com.forgon.Constants.STR_NO); - tousseItem.setInvoicePlan(expensivegoodsapplication); - tousseItem.setInvoicePlanID(expensivegoodsapplication.getId()); - objectDao.save(tousseItem); - } - tousseItem.setAmount(jsonObj.optInt("amount")); - newApplicationItems.add(tousseItem); - } + setTousseItem(expensivegoodsapplication, items); - //删除掉前台已经删除的申请项 - if (CollectionUtils.isNotEmpty(oldApplicationItems)) { - List oldApplicationItemIds = oldApplicationItems.stream().map(i->i.getId()).collect(Collectors.toList()); - List newApplicationItemIds = newApplicationItems.stream().map(i->i.getId()).collect(Collectors.toList()); - oldApplicationItemIds.removeAll(newApplicationItemIds); - if (CollectionUtils.isNotEmpty(oldApplicationItemIds)) { - objectDao.delete(TousseItem.class.getSimpleName(), oldApplicationItemIds); - } - } - expensivegoodsapplication.setApplicationItems(newApplicationItems); - //2、设置时间(申请时间的赋值,两种操作需要赋值: 1、“第一次提交” 2、“暂存后的提交” 最好修改时间:无论提交或者暂存都要赋值) Date currentDateTime = new Date(); if(expensivegoodsapplication.getApplicationTime() == null || (commit && !expensivegoodsapplication.getCommittedStatus())){ @@ -118,4 +88,71 @@ } } + /** + * 设置高值耗材的申请项. + * @param expensivegoodsapplication 高值耗材申请单对象 + * @param items 此次提交的申请项 + */ + private void setTousseItem(Expensivegoodsapplication expensivegoodsapplication, JSONArray items) { + if (expensivegoodsapplication == null || CollectionUtils.isEmpty(items)) { + throw new RuntimeException("参数异常!"); + } + + List oldApplicationItems = expensivegoodsapplication.getApplicationItems(); //旧的申请项集合 + List newApplicationItems = new ArrayList(); //新的申请项集合 + for (Object object : items) { + JSONObject jsonObj = (JSONObject) object; + TousseItem tousseItem = tousseItemManager.get(jsonObj.optLong("id", 0)); + if (tousseItem == null || tousseItem.getAmount() <= 0) { + tousseItem = new TousseItem(); + tousseItem.setExpensiveGoodsId(jsonObj.optLong("expensiveGoodsId")); + tousseItem.setTousseName(jsonObj.optString("showName")); + tousseItem.setSupplierName(jsonObj.optString("supplierName")); //高值耗材的生产厂家 + tousseItem.setPrice(jsonObj.optDouble("referencePrice")); //高值耗材的参考价 + tousseItem.setTousseType(ExpensiveGoods.TYPE_NAME); + tousseItem.setDiposable(com.forgon.Constants.STR_NO); + tousseItem.setInvoicePlan(expensivegoodsapplication); + tousseItem.setInvoicePlanID(expensivegoodsapplication.getId()); + objectDao.save(tousseItem); + } + tousseItem.setAmount(jsonObj.optInt("amount")); + newApplicationItems.add(tousseItem); + } + + //删除掉前台已经删除的申请项 + if (CollectionUtils.isNotEmpty(oldApplicationItems)) { + List oldApplicationItemIds = oldApplicationItems.stream().map(i->i.getId()).collect(Collectors.toList()); + List newApplicationItemIds = newApplicationItems.stream().map(i->i.getId()).collect(Collectors.toList()); + oldApplicationItemIds.removeAll(newApplicationItemIds); + if (CollectionUtils.isNotEmpty(oldApplicationItemIds)) { + objectDao.delete(TousseItem.class.getSimpleName(), oldApplicationItemIds); + } + } + expensivegoodsapplication.setApplicationItems(newApplicationItems); + } + + @Override + public void updateExpensiveGoodsApplicationForApproval( + Expensivegoodsapplication expensivegoodsapplication, JSONArray items) { + setTousseItem(expensivegoodsapplication, items); + } + + @Override + public void updateNodeInfo(Expensivegoodsapplication expensivegoodsapplication, boolean approval) { + if (expensivegoodsapplication == null) { + throw new RuntimeException("参数异常!"); + } + + if (approval) { + + } else { + boolean committedStatus = Boolean.valueOf(expensivegoodsapplication.getCommittedStatus()); + if (committedStatus) { + expensivegoodsapplication.setProcessStatus(Expensivegoodsapplication.PROCESSSTATUS_NOT_STARTED); + expensivegoodsapplication.setCurrentNodeDefinitionId(null); + expensivegoodsapplication.setCurrentNodeDefinitionName(null); + } + } + } + } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/expensivegoodsapplication/action/ExpensiveGoodsApplicationAction.java =================================================================== diff -u -r21780 -r21800 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/expensivegoodsapplication/action/ExpensiveGoodsApplicationAction.java (.../ExpensiveGoodsApplicationAction.java) (revision 21780) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/expensivegoodsapplication/action/ExpensiveGoodsApplicationAction.java (.../ExpensiveGoodsApplicationAction.java) (revision 21800) @@ -59,9 +59,9 @@ /** - * 保存高值耗材申请单. + * 保存或者修改高值耗材申请单. */ - public void saveExpensiveGoodsApplication() { + public void saveOrUpdateExpensiveGoodsApplication() { String tousseItems = StrutsParamUtils.getPraramValue("tousseItems", ""); boolean commit = Boolean.valueOf(StrutsParamUtils.getPraramValue("commit", "")); //是否提交操作 if (StringTools.isNotBlank(tousseItems)) { @@ -82,6 +82,26 @@ } /** + * 修改高值耗材申请单(审批的时候对申请单的一些修改). + */ + public void updateExpensiveGoodsApplicationForApproval() { + String tousseItems = StrutsParamUtils.getPraramValue("tousseItems", ""); + if (StringTools.isNotBlank(tousseItems)) { + JSONObject result = JSONUtil.buildJsonObject(true, "保存成功"); + try { + JSONArray items = JSONArray.fromObject(tousseItems); + expensiveGoodsApplicationManager.updateExpensiveGoodsApplicationForApproval(expensivegoodsapplication, items); + } catch (Exception e) { + e.printStackTrace(); + result = JSONUtil.buildJsonObject(false, e.getMessage()); + } + StrutsResponseUtils.output(result); + } else { + StrutsResponseUtils.output(JSONUtil.buildJsonObject(false, "申请项不能为空!")); + } + } + + /** * 加载高值耗材申请单的申请单明细. */ public void loadExpensiveGoodsApplication() { @@ -126,6 +146,7 @@ obj.put("operationTime", ForgonDateUtils.safelyFormatDate(expensivegoodsapplication.getOperationTime(), ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDDHHMM, "")); obj.put("doctor", expensivegoodsapplication.getDoctor()); obj.put("operationRoom", expensivegoodsapplication.getOperationRoom()); + obj.put("committedStatus", expensivegoodsapplication.getCommittedStatus()); //设置申请项 JSONArray items = new JSONArray(); Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/expensivegoodsapplication/service/ExpensiveGoodsApplicationManager.java =================================================================== diff -u -r21780 -r21800 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/expensivegoodsapplication/service/ExpensiveGoodsApplicationManager.java (.../ExpensiveGoodsApplicationManager.java) (revision 21780) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/expensivegoodsapplication/service/ExpensiveGoodsApplicationManager.java (.../ExpensiveGoodsApplicationManager.java) (revision 21800) @@ -18,5 +18,20 @@ * @param items 此次提交的申请项信息 */ public void saveOrUpdate(Expensivegoodsapplication expensivegoodsapplication, boolean commit, JSONArray items); + + /** + * 修改高值耗材申请单(审批的时候对申请单的一些修改). + * @param expensivegoodsapplication 高值耗材申请单对象 + * @param items 此次提交的申请项 + */ + public void updateExpensiveGoodsApplicationForApproval( + Expensivegoodsapplication expensivegoodsapplication, JSONArray items); + /** + * 设置申请单的审批流程的相关信息. + * @param expensivegoodsapplication 高值耗材申请单对象 + * @param approval 审批操作 + */ + public void updateNodeInfo(Expensivegoodsapplication expensivegoodsapplication, boolean approval); + } Index: ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/expensiveGoodsApplication/expensiveGoodsApplicationForm.js =================================================================== diff -u -r21780 -r21800 --- ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/expensiveGoodsApplication/expensiveGoodsApplicationForm.js (.../expensiveGoodsApplicationForm.js) (revision 21780) +++ ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/expensiveGoodsApplication/expensiveGoodsApplicationForm.js (.../expensiveGoodsApplicationForm.js) (revision 21800) @@ -267,6 +267,7 @@ {xtype: 'hidden', name: 'settleAccountsDepartCoding', id : 'settleAccountsDepartCoding'}, {xtype: 'hidden', name: 'handleDepart', id : 'handleDepart'}, {xtype: 'hidden', name: 'handleDepartCoding', id : 'handleDepartCoding'}, + {xtype: 'hidden', name: 'applicantCode', id : 'applicantCode'}, {xtype: 'hidden', name: 'tousseItems', id : 'tousseItems'}, { @@ -721,11 +722,11 @@ waitTitle : '提交表单', success : function(form, action) { var data = action.result.data; + var committedStatus = data.committedStatus; var depart = formObj.getForm().findField('depart').getValue(); var settleAccountsDepart = top.Ext4.getCmp('settleAccountsDepart').getValue(); var handleDepart = top.Ext4.getCmp('handleDepart').getValue(); - //1、设置“申请科室”、“结算科室”、“处理科室”、“手术时间”combo的显示值 top.Ext4.getCmp('department').setRawValue(depart); top.Ext4.getCmp('settleAccountsDepartment').setRawValue(settleAccountsDepart); @@ -741,9 +742,14 @@ //3、状态等于待发货才允许修改 if (data.deliverStatus != '待发货') { - top.Ext4.getCmp('saveBtn').disable(); + top.Ext4.getCmp('saveBtn').hide(); } + //4、已经提交则把隐藏暂存按钮 + if (committedStatus) { + top.Ext4.getCmp('temporarySave').hide(); + } + }, failure : function(form, action) { }, @@ -752,8 +758,9 @@ } }); } else { //新加 - //1、设置默认的“申请人”、“申请时间” + //1、设置默认的“申请人”、“申请人编码”、“申请时间” top.Ext4.getCmp('applicant').setValue(curUserName); + top.Ext4.getCmp('applicantCode').setValue(userCode); getServerTime('yyyy-MM-dd HH:mm',top.Ext4,'applicationTimeStr'); @@ -843,7 +850,7 @@ top.Ext4.getCmp('temporarySave').disable(); top.Ext4.getCmp('saveBtn').disable(); formObj.form.submit({ - url : WWWROOT + '/disinfectSystem/expensivegoodsapplication/expensiveGoodsApplicationAction!saveExpensiveGoodsApplication.do', + url : WWWROOT + '/disinfectSystem/expensivegoodsapplication/expensiveGoodsApplicationAction!saveOrUpdateExpensiveGoodsApplication.do', method : 'POST', waitMsg : '正在保存数据,请稍候', waitTitle : '提交表单', Index: ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.jsp =================================================================== diff -u -r20846 -r21800 --- ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.jsp (.../goodsApplicationView.jsp) (revision 20846) +++ ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.jsp (.../goodsApplicationView.jsp) (revision 21800) @@ -40,7 +40,8 @@ request.setAttribute("departCoding",currentOrgUnitCode); } request.setAttribute("toussePriceFluctuation",toussePriceFluctuation); - request.setAttribute("userName",userData.getUserFullName()); + request.setAttribute("userName",userData.getUserFullName()); //用户的全名 + request.setAttribute("userCode",userData.getUserName()); //用户的登录名 request.setAttribute("isFirstSupplyRoomUser",supplyRoomConfigManager.isFirstSupplyRoomOrgUnit(currentOrgUnitCode)); request.setAttribute("isSupplyRoomUser",supplyRoomConfigManager.isSupplyRoomUser2(userData)); boolean isBeApplication = userData.isBeApplication(); @@ -169,7 +170,8 @@