Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java =================================================================== diff -u -r29647 -r29896 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 29647) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 29896) @@ -452,4 +452,16 @@ */ public JSONObject savePrepareRecyleTousse(JSONObject params); + /** + * 检查申请单是否合法(版本号、回收状态、发货状态) + *(1)version值检查:比较客户端传入的值和数据库中该记录的值是否相同,相同则允许保存,保存前将version值递增加1;如果不相同,则不允许保存,并且提示用户:申请单已经被其他用户修改,请重新打开该申请单进行处理! + *(2)回收状态检查:如果状态为“部分回收”或者“已回收”,则提示:申请单已经回收,不能进行修改! + *(3)发货状态检查:如果状态为“部分发货”或者“已发货”,则提示:申请单已经发货,不能进行修改! + *(4)终止状态检查:如果状态为“部分终止”或者“已终止”,则提示:申请单已经进行了终止,不能进行修改! + * 以上检查,只要发现有一项条件满足不能修改的条件,即可提示用户,不需要进行下一项检查。 + * @param recyclingApplication + * @param oldVersion 版本号(页面传参) + * @return + */ + public String valideApplication(InvoicePlan recyclingApplication, Integer oldVersion); } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java =================================================================== diff -u -r29882 -r29896 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 29882) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 29896) @@ -291,16 +291,10 @@ 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{ - VersionOperators.increaseVersion(application); - } + // 检查申请单是否合法 + String valide = invoicePlanManager.valideApplication(application, application.getOldVersion()); + if(StringUtils.isNotBlank(valide)){ + throw new SystemException(valide); } SupplyRoomConfig systemParams = supplyRoomConfigManager .getSystemParamsObj(); Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r29882 -r29896 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 29882) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 29896) @@ -3986,16 +3986,10 @@ 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)){ - VersionOperators.increaseVersion(recyclingApplication); - }else{ - throw new SystemException("申请单已经被其他用户修改,请重新打开该申请单进行处理!"); - } + // 检查申请单是否合法 + String valide = invoicePlanManager.valideApplication(recyclingApplication, recyclingApplication.getOldVersion()); + if(StringUtils.isNotBlank(valide)){ + throw new SystemException(valide); } JSONObject jsonObject = null; if (recyclingApplication != null) { Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r29763 -r29896 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 29763) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 29896) @@ -105,6 +105,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; @@ -4246,4 +4247,40 @@ return null; } + /** + * 检查申请单是否合法(版本号、回收状态、发货状态) + * @param recyclingApplication + * @return + */ + @Override + public String valideApplication(InvoicePlan recyclingApplication, Integer oldVersion){ + String result = ""; + // (1)修改已经提交的申请单时,比较客户端传入的version值和数据库中该记录的值是否相同,相同则允许保存,保存前将version值递增加1; + // 如果不相同,则不允许保存,并且提示用户:申请单已经被其他用户修改,请重新打开该申请单进行处理!(BJ307YY-47) + if(DatabaseUtil.isPoIdValid(recyclingApplication.getId())){ + Integer newVersion = recyclingApplication.getVersion(); + if(VersionOperators.versionEquals(oldVersion, newVersion)){ + VersionOperators.increaseVersion(recyclingApplication); + }else{ + return "申请单已经被其他用户修改,请重新打开该申请单进行处理!"; + } + } + //(2)回收状态检查:如果状态为“部分回收”或者“已回收”,则提示:申请单已经回收,不能进行修改! + if(StringUtils.equals(recyclingApplication.getRecyclingStatus(), RecyclingApplication.RECYCLINGSTATUS_PARTRECYCLE) + || StringUtils.equals(recyclingApplication.getRecyclingStatus(), RecyclingApplication.RECYCLINGSTATUS_RECYCLED)){ + return "申请单已经回收,不能进行修改!"; + } + //(3)发货状态检查:如果状态为“部分发货”或者“已发货”,则提示:申请单已经发货,不能进行修改! + if(StringUtils.equals(recyclingApplication.getDeliverStatus(), RecyclingApplication.DELIVERSTATUS_PARTDELIVERED) + || StringUtils.equals(recyclingApplication.getRecyclingStatus(), RecyclingApplication.DELIVERSTATUS_DELIVERED)){ + return "申请单已经发货,不能进行修改!"; + } + //(4)终止状态检查:如果状态为“部分终止”或者“已终止”,则提示:申请单已经进行了终止,不能进行修改! + if(StringUtils.equals(recyclingApplication.getEndStatus(), RecyclingApplication.STATUS_PART_END) + || StringUtils.equals(recyclingApplication.getRecyclingStatus(), RecyclingApplication.STATUS_END)){ + return "申请单已经进行了终止,不能进行修改!"; + } + return result; + } + }