Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoicePlan.java =================================================================== diff -u -r28928 -r29739 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoicePlan.java (.../InvoicePlan.java) (revision 28928) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoicePlan.java (.../InvoicePlan.java) (revision 29739) @@ -473,6 +473,11 @@ */ private Integer version = 0; /** + * 申请单重新提交前的版本号,用于版本检查(不保存到数据库) + */ + private Integer oldVersion = 0; + + /** * 版本的描述 */ private String description; @@ -1638,6 +1643,15 @@ this.sterilizationMode = sterilizationMode; } + @Transient + public Integer getOldVersion() { + return oldVersion; + } + + public void setOldVersion(Integer oldVersion) { + this.oldVersion = oldVersion; + } + @Override public String toString() { return "{id:'" + id + "', serialNumber:'" + serialNumber Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r29686 -r29739 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 29686) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 29739) @@ -115,6 +115,7 @@ import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; import com.forgon.disinfectsystem.tousseitem.service.TousseItemManager; import com.forgon.disinfectsystem.tousseitem.service.TousseItemUtils; +import com.forgon.disinfectsystem.version.VersionOperators; import com.forgon.disinfectsystem.vo.ApplicationItemVO; import com.forgon.disinfectsystem.vo.RecyclingApplicationVo; import com.forgon.disinfectsystem.vo.TousseItemVo; @@ -3984,6 +3985,17 @@ if (ou != null && OrgUnit.STATUS_DISABLED.equals(ou.getStatus())) { throw new SystemException("当前申请科室已停用,不能进行申领!"); } + // 修改已经提交的申请单时,比较客户端传入的version值和数据库中该记录的值是否相同,相同则允许保存,保存前将version值递增加1; + // 如果不相同,则不允许保存,并且提示用户:申请单已经被其他用户修改,请重新打开该申请单进行处理!(BJ307YY-47) + if(DatabaseUtil.isPoIdValid(recyclingApplication.getId())){ + Integer oldVersion = recyclingApplication.getOldVersion(); + Integer newVersion = recyclingApplication.getVersion(); + if(VersionOperators.versionEquals(oldVersion, newVersion)){ + recyclingApplication.setVersion(oldVersion + 1); + }else{ + throw new SystemException("申请单已经被其他用户修改,请重新打开该申请单进行处理!"); + } + } JSONObject jsonObject = null; if (recyclingApplication != null) { //是否干预申请数量 Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java =================================================================== diff -u -r29709 -r29739 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 29709) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 29739) @@ -56,6 +56,7 @@ import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; import com.forgon.disinfectsystem.tousseitem.service.TousseItemManager; +import com.forgon.disinfectsystem.version.VersionOperators; import com.forgon.exception.SystemException; import com.forgon.log.model.Log; import com.forgon.log.service.LogManager; @@ -289,6 +290,17 @@ if (ou != null && OrgUnit.STATUS_DISABLED.equals(ou.getStatus())) { throw new RuntimeException("当前申请科室已停用,不能进行申领!"); } + // 修改已经提交的申请单时,比较客户端传入的version值和数据库中该记录的值是否相同,相同则允许保存,保存前将version值递增加1; + // 如果不相同,则不允许保存,并且提示用户:申请单已经被其他用户修改,请重新打开该申请单进行处理! + if(DatabaseUtil.isPoIdValid(application.getId())){ + Integer oldVersion = application.getOldVersion(); + Integer version = application.getVersion(); + if(!VersionOperators.versionEquals(oldVersion, version)){ + throw new RuntimeException("申请单已经被其他用户修改,请重新打开该申请单进行处理!"); + }else{ + application.setVersion(version + 1); + } + } SupplyRoomConfig systemParams = supplyRoomConfigManager .getSystemParamsObj(); //外来器械包处理科室名称与编码