Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/action/ForeignTousseApplicationAction.java =================================================================== diff -u -r36751 -r36995 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/action/ForeignTousseApplicationAction.java (.../ForeignTousseApplicationAction.java) (revision 36751) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/action/ForeignTousseApplicationAction.java (.../ForeignTousseApplicationAction.java) (revision 36995) @@ -706,4 +706,24 @@ StrutsResponseUtils.output(obj); } + /** + * 【外来器械包申请单】新增“审核”功能KSDQDYRMYY-24 + */ + public void reviewForeignTousseApplication(){ + //申请单id + Long id = StrutsParamUtils.getPraramLongValue("foreignTousseApplicationId", null); + String reviewer = StrutsParamUtils.getPraramValue("reviewer", null); + //审核状态 + String reviewStatus = StrutsParamUtils.getPraramValue("reviewStatus", null); + //审核原因 + String reviewCause = StrutsParamUtils.getPraramValue("reviewCause", null); + JSONObject result = JSONUtil.buildJsonObject(true); + try { + foreignTousseApplicationManager.reviewForeignTousseApplication(id, reviewer, reviewStatus, reviewCause); + } catch (Exception e) { + result = JSONUtil.buildJsonObject(false, "审核失败:" + e.getMessage()); + } + StrutsResponseUtils.output(result); + } + } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/dwr/table/ForeignTousseApplicationTableManager.java =================================================================== diff -u -r36929 -r36995 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/dwr/table/ForeignTousseApplicationTableManager.java (.../ForeignTousseApplicationTableManager.java) (revision 36929) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/dwr/table/ForeignTousseApplicationTableManager.java (.../ForeignTousseApplicationTableManager.java) (revision 36995) @@ -33,6 +33,7 @@ import com.forgon.disinfectsystem.foreigntousseapplication.service.ForeignTousseApplicationManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; import com.forgon.disinfectsystem.tousse.toussedefinition.vo.SplitForeignTousseVo; +import com.forgon.security.service.OperationManager; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.string.StringTools; @@ -61,6 +62,12 @@ private ObjectDao objectDao; + private OperationManager operationManager; + + public void setOperationManager(OperationManager operationManager) { + this.operationManager = operationManager; + } + public void setObjectDao(ObjectDao objectDao) { this.objectDao = objectDao; } @@ -127,8 +134,17 @@ if(CollectionUtils.isNotEmpty(supplierNameList)){ foreignTousseAppFilterSql = " or (po.departCoding = '" + currentOrgUnitCode +"' and po.type='"+ InvoicePlan.TYPE_FOREIGNTOUSSEAPPLIACTION +"' and po.id in (select id from "+ ForeignTousseApplication.class.getSimpleName() +" where "+ SqlUtils.getStringFieldInLargeCollectionsPredicate("supplierName", supplierNameList) +"))"; } + + //【外来器械包申请单】新增申请审核功能KSDQDYRMYY-24 + String reviewSql = ""; + boolean enableReviewOfForeignTousseApplicationFunction = CssdUtils + .getSystemSetConfigByNameBool("enableReviewOfForeignTousseApplicationFunction", false); + if(enableReviewOfForeignTousseApplicationFunction && operationManager.isCurrentUserHaveAnyOperation("SSTS_ForeignTousseApplication_Review")){ + //审核状态为待审核,或者审核人为当前登录用户的外来器械包申请单 + reviewSql = String.format(" or po.reviewStatus = '%s' or po.reviewer = '%s' ", ForeignTousseApplication.REVIEW_STATUS_WAITE_REVIEW, AcegiHelper.getLoginUser().getUserFullName()); + } - String loginUserSql = String.format(" and ((po.handleDepartCoding = '%s' and po.committedStatus = 1) or po.departCoding = '%s' or po.applicant='%s' "+ foreignTousseAppFilterSql +") ", currentOrgUnitCode, currentOrgUnitCode, AcegiHelper.getLoginUser().getUserFullName()); + String loginUserSql = String.format(" and ((po.handleDepartCoding = '%s' and po.committedStatus = 1) or po.departCoding = '%s' or po.applicant='%s' %s %s ) ", currentOrgUnitCode, currentOrgUnitCode, AcegiHelper.getLoginUser().getUserFullName(), foreignTousseAppFilterSql, reviewSql); sqlBuilder.append(loginUserSql); String sql = sqlBuilder.toString(); Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java =================================================================== diff -u -r36965 -r36995 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 36965) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 36995) @@ -441,16 +441,25 @@ if(application.getCommittedStatus() == null){ application.setCommittedStatus(true); } + //开启enableReviewOfForeignTousseApplicationFunction配置项时, + //刚提交的外来器械包申请单为暂存状态, + //审核状态为"待审核" + boolean enableReviewOfForeignTousseApplicationFunction = + ConfigUtils.getSystemSetConfigByNameBool("enableReviewOfForeignTousseApplicationFunction"); + if(enableReviewOfForeignTousseApplicationFunction){ + application.setReviewStatus(ForeignTousseApplication.REVIEW_STATUS_WAITE_REVIEW); + application.setCommittedStatus(false); + }else{ + application.setCommittedStatus(true); + } + application.setIncludeRecyclingItems(InvoicePlan.SIGNED_TRUE); } if(StringUtils.isBlank(foreignTousseTreeData)){ throw new RuntimeException("外来器械申请单无物品申请!"); } application.setSubmitTime(new Date()); - if(DatabaseUtil.isPoIdValid(application.getId())){ - application.setCommittedStatus(true); - } saveOrUpdate(application); JSONArray jsonArray = JSONArray.fromObject(foreignTousseTreeData); @@ -3549,4 +3558,41 @@ return sterilizationIdMap; } + @Override + public void reviewForeignTousseApplication(Long id, String reviewer, String reviewStatus, String reviewCause) { + if(!DatabaseUtil.isPoIdValid(id)){ + throw new RuntimeException("申请单id无效!"); + } + if(!StringUtils.equals(reviewStatus, ForeignTousseApplication.REVIEW_STATUS_APPROVED) + && !StringUtils.equals(reviewStatus, ForeignTousseApplication.REVIEW_STATUS_VETO)){ + throw new RuntimeException("审核状态无效!"); + } + if(StringUtils.equals(reviewStatus, ForeignTousseApplication.REVIEW_STATUS_VETO) + && StringUtils.isBlank(reviewCause)){ + throw new RuntimeException("审核原因为必填项!"); + } + ForeignTousseApplication foreignTousseApplication = this.get(id); + if(foreignTousseApplication == null){ + throw new RuntimeException("申请单id无效!"); + } + if(StringUtils.equals(foreignTousseApplication.getReviewStatus(), ForeignTousseApplication.REVIEW_STATUS_APPROVED) + || StringUtils.equals(foreignTousseApplication.getReviewStatus(), ForeignTousseApplication.REVIEW_STATUS_VETO)){ + //throw new RuntimeException("申请单审核状态为" + foreignTousseApplication.getReviewStatus() + "!"); + throw new RuntimeException("操作失败,审核状态为“已通过”或“已否决”的申请单不能重复审核!"); + } + if(foreignTousseApplication.getCommittedStatus()){ + throw new RuntimeException("申请单已经提交不需要审核!"); + } + foreignTousseApplication.setCommittedStatus(true); + foreignTousseApplication.setReviewer(reviewer); + foreignTousseApplication.setReviewStatus(reviewStatus); + foreignTousseApplication.setReviewCause(reviewCause); + foreignTousseApplication.setReviewTime(new Date()); + if(StringUtils.equals(foreignTousseApplication.getReviewStatus(), ForeignTousseApplication.REVIEW_STATUS_VETO)){ + //审核结果为“否决”时,则自动将当前申请单进行终止; + invoicePlanManager.terminateInvoicePlan(foreignTousseApplication, reviewer, reviewCause); + } + objectDao.saveOrUpdate(foreignTousseApplication); + } + } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManager.java =================================================================== diff -u -r36751 -r36995 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManager.java (.../ForeignTousseApplicationManager.java) (revision 36751) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManager.java (.../ForeignTousseApplicationManager.java) (revision 36995) @@ -170,4 +170,12 @@ */ public JSONArray buildTousseItemsJson(List tousseItems,boolean confirmRecycle,JSONArray jsonArray); + /** + * 【外来器械包申请单】新增“审核”功能KSDQDYRMYY-24 + * @param id + * @param reviewStatus + * @param reviewCause + */ + public void reviewForeignTousseApplication(Long id, String reviewer, String reviewStatus, String reviewCause); + } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/foreigntousseapplication/ForeignTousseApplication.java =================================================================== diff -u -r35318 -r36995 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/foreigntousseapplication/ForeignTousseApplication.java (.../ForeignTousseApplication.java) (revision 35318) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/foreigntousseapplication/ForeignTousseApplication.java (.../ForeignTousseApplication.java) (revision 36995) @@ -14,6 +14,7 @@ import org.apache.commons.lang.StringUtils; import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; + import javax.persistence.Transient; import org.hibernate.annotations.Cache; @@ -27,6 +28,7 @@ import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.entity.useRecord.UseRecord; import com.forgon.security.acls.AclFieldsObject; +import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; /** @@ -223,6 +225,42 @@ * 已打印统计表GDSZYY-200 */ private String printedStatisticalTable = Constants.STR_NO; + + /** + * 审核人KSDQDYRMYY-24 + */ + private String reviewer; + + /** + * 审核状态KSDQDYRMYY-24 + * 开启enableReviewOfForeignTousseApplicationFunction配置项时, + * 刚提交的外来器械包申请单为暂存状态, + * 审核状态为"待审核" + */ + private String reviewStatus; + + /** + * 审核状态:"待审核" + */ + public final static String REVIEW_STATUS_WAITE_REVIEW = "待审核"; + /** + * 审核状态:"通过" + */ + public final static String REVIEW_STATUS_APPROVED = "已通过"; + /** + * 审核状态:"否决" + */ + public final static String REVIEW_STATUS_VETO = "已否决"; + + /** + * 审核原因KSDQDYRMYY-24 + */ + private String reviewCause; + + /** + * 审核时间KSDQDYRMYY-24 + */ + private Date reviewTime; public String getProcessType() { return processType; @@ -691,8 +729,40 @@ public void setDoctorAccountDepartCode(String doctorAccountDepartCode) { this.doctorAccountDepartCode = doctorAccountDepartCode; } + + public String getReviewer() { + return reviewer; + } + + public void setReviewer(String reviewer) { + this.reviewer = reviewer; + } + + public String getReviewStatus() { + return reviewStatus; + } + + public void setReviewStatus(String reviewStatus) { + this.reviewStatus = reviewStatus; + } + @Column(length = DatabaseUtil.varcharTypeMaxLength) + public String getReviewCause() { + return reviewCause; + } + public void setReviewCause(String reviewCause) { + this.reviewCause = reviewCause; + } + + public Date getReviewTime() { + return reviewTime; + } + + public void setReviewTime(Date reviewTime) { + this.reviewTime = reviewTime; + } + /** * 从使用记录转换为待归还的外来器械包申请单时, * 如果使用记录上的手术间、病人姓名、手术名称等值不为空,而原来的外来器械包申请单上的值为空,