From 76034a12985cd4b62835f762f5fe0b9a89a8d28d Mon Sep 17 00:00:00 2001 From: qiankunpingtai Date: Wed, 10 Apr 2019 14:37:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E5=A4=96=E9=94=AE=E4=B9=8B?= =?UTF-8?q?=E8=B4=A6=E6=88=B7=E4=BF=A1=E6=81=AF=E8=A1=A8jsh=5Faccount?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- erp_web/pages/manage/account.html | 45 +++++++++++- .../jsh/erp/constants/BusinessConstants.java | 8 +++ .../jsh/erp/constants/ExceptionConstants.java | 11 +++ .../jsh/erp/controller/AccountController.java | 24 ++++++- .../mappers/AccountHeadMapperEx.java | 4 +- .../mappers/AccountItemMapperEx.java | 4 +- .../datasource/mappers/DepotHeadMapperEx.java | 2 + .../erp/service/account/AccountService.java | 69 +++++++++++++++++++ .../mapper_xml/AccountHeadMapperEx.xml | 12 ++++ .../mapper_xml/AccountItemMapperEx.xml | 12 ++++ .../mapper_xml/DepotHeadMapperEx.xml | 12 ++++ 11 files changed, 197 insertions(+), 6 deletions(-) diff --git a/erp_web/pages/manage/account.html b/erp_web/pages/manage/account.html index afbdd180..11508d11 100644 --- a/erp_web/pages/manage/account.html +++ b/erp_web/pages/manage/account.html @@ -234,7 +234,14 @@ if(res && res.code == 200) { $("#searchBtn").click(); } else { - $.messager.alert('删除提示', '删除结算账户失败,请稍后再试!', 'error'); + if(res && res.code == 601){ + var jsondata={}; + jsondata.ids=accountTotalInfo[0]; + jsondata.deleteType='2'; + batDeleteAccountForceConfirm(res,"/account/batchDeleteAccountByIds",jsondata); + }else{ + $.messager.alert('删除提示', '删除结算账户失败,请稍后再试!', 'error'); + } } }, //此处添加错误处理 @@ -278,7 +285,14 @@ $("#searchBtn").click(); $(":checkbox").attr("checked", false); } else { - $.messager.alert('删除提示', '删除结算账户失败,请稍后再试!', 'error'); + if(res && res.code == 601){ + var jsondata={}; + jsondata.ids=ids; + jsondata.deleteType='2'; + batDeleteAccountForceConfirm(res,"/account/batchDeleteAccountByIds",jsondata); + }else{ + $.messager.alert('删除提示', '删除结算账户失败,请稍后再试!', 'error'); + } } }, //此处添加错误处理 @@ -291,6 +305,33 @@ }); } } + /** + * 确认强制删除 + * */ + function batDeleteAccountForceConfirm(res,url,jsondata) { + $.messager.confirm('删除确认', res.msg, function (r) { + if (r) { + $.ajax({ + type: "post", + url: url, + dataType: "json", + data: (jsondata), + success: function (res) { + if(res && res.code == 200) { + $("#searchBtn").click(); + } else { + $.messager.alert('删除提示', '删除结算账户失败,请稍后再试!', 'error'); + } + }, + //此处添加错误处理 + error: function () { + $.messager.alert('删除提示', '删除结算账户异常,请稍后再试!', 'error'); + return; + } + }); + } + }); + } //增加结算账户 var url; diff --git a/src/main/java/com/jsh/erp/constants/BusinessConstants.java b/src/main/java/com/jsh/erp/constants/BusinessConstants.java index c273beb4..1cc8e540 100644 --- a/src/main/java/com/jsh/erp/constants/BusinessConstants.java +++ b/src/main/java/com/jsh/erp/constants/BusinessConstants.java @@ -200,6 +200,14 @@ public class BusinessConstants { public static final String TYPE_NAME_ROLE_APP = "RoleAPP"; public static final String TYPE_NAME_ROLE_FUNCTIONS = "RoleFunctions"; + /** + * 删除类型 + * 1正常删除 + * 2强制删除 + * */ + public static final String DELETE_TYPE_NORMAL = "1"; + public static final String DELETE_TYPE_FORCE = "2"; + diff --git a/src/main/java/com/jsh/erp/constants/ExceptionConstants.java b/src/main/java/com/jsh/erp/constants/ExceptionConstants.java index f5bc79a1..0aa1e458 100644 --- a/src/main/java/com/jsh/erp/constants/ExceptionConstants.java +++ b/src/main/java/com/jsh/erp/constants/ExceptionConstants.java @@ -23,6 +23,17 @@ public class ExceptionConstants { **/ public static final int SERVICE_SYSTEM_ERROR_CODE = 500; public static final String SERVICE_SYSTEM_ERROR_MSG = "未知异常"; + + /** + * 删除操作被拒绝,请联系管理员 + **/ + public static final int DELETE_REFUSED_CODE = 600; + public static final String DELETE_REFUSED_MSG = "删除操作被拒绝,请联系管理员"; + /** + * 检测到存在依赖数据,是否强制删除? + **/ + public static final int DELETE_FORCE_CONFIRM_CODE = 601; + public static final String DELETE_FORCE_CONFIRM_MSG = "检测到存在依赖数据,是否强制删除?"; /** * 用户信息 * type = 5 diff --git a/src/main/java/com/jsh/erp/controller/AccountController.java b/src/main/java/com/jsh/erp/controller/AccountController.java index 0165bdd1..169f8391 100644 --- a/src/main/java/com/jsh/erp/controller/AccountController.java +++ b/src/main/java/com/jsh/erp/controller/AccountController.java @@ -1,7 +1,9 @@ package com.jsh.erp.controller; +import com.alibaba.druid.util.StringUtils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.constants.BusinessConstants; import com.jsh.erp.constants.ExceptionConstants; import com.jsh.erp.datasource.entities.Account; import com.jsh.erp.datasource.vo.AccountVo4InOutList; @@ -150,10 +152,28 @@ public class AccountController { * @return java.lang.Object */ @RequestMapping(value = "/batchDeleteAccountByIds") - public Object batchDeleteAccountByIds(@RequestParam("ids") String ids) throws Exception { + public Object batchDeleteAccountByIds(@RequestParam("ids") String ids,@RequestParam(value="deleteType", + required =false,defaultValue=BusinessConstants.DELETE_TYPE_NORMAL)String deleteType) throws Exception { JSONObject result = ExceptionConstants.standardSuccess(); - int i= accountService.batchDeleteAccountByIds(ids); + /** + * create by: qiankunpingtai + * create time: 2019/4/10 10:19 + * website:https://qiankunpingtai.cn + * description: + * 出于兼容性考虑,没有传递删除类型时,默认为正常删除 + */ + int i=0; + if(BusinessConstants.DELETE_TYPE_NORMAL.equals(deleteType)){ + i= accountService.batchDeleteAccountByIdsNormal(ids); + }else if(BusinessConstants.DELETE_TYPE_FORCE.equals(deleteType)){ + i= accountService.batchDeleteAccountByIds(ids); + }else{ + logger.error("异常码[{}],异常提示[{}],参数,ids[{}],deleteType[{}]", + ExceptionConstants.DELETE_REFUSED_CODE,ExceptionConstants.DELETE_REFUSED_MSG,ids,deleteType); + throw new BusinessRunTimeException(ExceptionConstants.DELETE_REFUSED_CODE, + ExceptionConstants.DELETE_REFUSED_MSG); + } if(i<1){ logger.error("异常码[{}],异常提示[{}],参数,ids[{}]", ExceptionConstants.ACCOUNT_DELETE_FAILED_CODE,ExceptionConstants.ACCOUNT_DELETE_FAILED_MSG,ids); diff --git a/src/main/java/com/jsh/erp/datasource/mappers/AccountHeadMapperEx.java b/src/main/java/com/jsh/erp/datasource/mappers/AccountHeadMapperEx.java index dee82806..53374f76 100644 --- a/src/main/java/com/jsh/erp/datasource/mappers/AccountHeadMapperEx.java +++ b/src/main/java/com/jsh/erp/datasource/mappers/AccountHeadMapperEx.java @@ -36,5 +36,7 @@ public interface AccountHeadMapperEx { List getDetailByNumber( @Param("billNo") String billNo); - int batchDeleteAccountHeadByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + int batchDeleteAccountHeadByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String[] ids); + + List getAccountHeadListByAccountIds(@Param("accountIds") String[] accountIds); } \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/AccountItemMapperEx.java b/src/main/java/com/jsh/erp/datasource/mappers/AccountItemMapperEx.java index 4bf07c5b..393dd42c 100644 --- a/src/main/java/com/jsh/erp/datasource/mappers/AccountItemMapperEx.java +++ b/src/main/java/com/jsh/erp/datasource/mappers/AccountItemMapperEx.java @@ -25,5 +25,7 @@ public interface AccountItemMapperEx { List getDetailList( @Param("headerId") Long headerId); - int batchDeleteAccountItemByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + int batchDeleteAccountItemByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String[] ids); + + List getAccountItemListByAccountIds(@Param("accountIds") String[] accountIds); } \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperEx.java b/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperEx.java index 2d39b552..aab6ea3c 100644 --- a/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperEx.java +++ b/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperEx.java @@ -115,4 +115,6 @@ public interface DepotHeadMapperEx { Long getBuildOnlyNumber(@Param("seq_name") String seq_name); int batchDeleteDepotHeadByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + + List getDepotHeadListByAccountIds(@Param("accountIds") String[] accountIds); } diff --git a/src/main/java/com/jsh/erp/service/account/AccountService.java b/src/main/java/com/jsh/erp/service/account/AccountService.java index cc6b800d..e604b7c1 100644 --- a/src/main/java/com/jsh/erp/service/account/AccountService.java +++ b/src/main/java/com/jsh/erp/service/account/AccountService.java @@ -1,11 +1,14 @@ package com.jsh.erp.service.account; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.jsh.erp.constants.BusinessConstants; +import com.jsh.erp.constants.ExceptionConstants; import com.jsh.erp.datasource.entities.*; import com.jsh.erp.datasource.mappers.*; import com.jsh.erp.datasource.vo.AccountVo4InOutList; import com.jsh.erp.datasource.vo.AccountVo4List; +import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.service.log.LogService; import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.StringUtil; @@ -38,13 +41,19 @@ public class AccountService { @Resource private DepotHeadMapper depotHeadMapper; + @Resource + private DepotHeadMapperEx depotHeadMapperEx; @Resource private AccountHeadMapper accountHeadMapper; + @Resource + private AccountHeadMapperEx accountHeadMapperEx; @Resource private AccountItemMapper accountItemMapper; @Resource + private AccountItemMapperEx accountItemMapperEx; + @Resource private LogService logService; @Resource private UserService userService; @@ -330,4 +339,64 @@ public class AccountService { String [] idArray=ids.split(","); return accountMapperEx.batchDeleteAccountByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); } + /** + * create by: qiankunpingtai + * website:https://qiankunpingtai.cn + * description: + * 正常删除,要考虑数据完整性,进行完整性校验 + * create time: 2019/4/10 10:31 + * @Param: ids + * @return int + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteAccountByIdsNormal(String ids) throws Exception{ + /** + * 校验: + * 1、财务主表 jsh_accounthead + * 2、财务子表 jsh_accountitem + * 3、单据主表 jsh_depothead + * 是否有相关数据 + * */ + int deleteTotal=0; + if(StringUtils.isEmpty(ids)){ + return deleteTotal; + } + String [] idArray=ids.split(","); + /** + * 校验财务主表 jsh_accounthead + * */ + List accountHeadList=accountHeadMapperEx.getAccountHeadListByAccountIds(idArray); + if(accountHeadList!=null&&accountHeadList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,AccountIds[{}]", + ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + ExceptionConstants.DELETE_FORCE_CONFIRM_MSG); + } + /** + * 校验财务子表 jsh_accountitem + * */ + List accountItemList=accountItemMapperEx.getAccountItemListByAccountIds(idArray); + if(accountItemList!=null&&accountItemList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,AccountIds[{}]", + ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + ExceptionConstants.DELETE_FORCE_CONFIRM_MSG); + } + /** + * 校验单据主表 jsh_depothead + * */ + List depotHeadList=depotHeadMapperEx.getDepotHeadListByAccountIds(idArray); + if(depotHeadList!=null&&depotHeadList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,AccountIds[{}]", + ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids); + throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE, + ExceptionConstants.DELETE_FORCE_CONFIRM_MSG); + } + /** + * 校验通过执行删除操作 + * */ + deleteTotal= batchDeleteAccountByIds(ids); + return deleteTotal; + + } } diff --git a/src/main/resources/mapper_xml/AccountHeadMapperEx.xml b/src/main/resources/mapper_xml/AccountHeadMapperEx.xml index e2424d3f..a493d204 100644 --- a/src/main/resources/mapper_xml/AccountHeadMapperEx.xml +++ b/src/main/resources/mapper_xml/AccountHeadMapperEx.xml @@ -88,4 +88,16 @@ ) + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/AccountItemMapperEx.xml b/src/main/resources/mapper_xml/AccountItemMapperEx.xml index 9e1e49c4..53125ba4 100644 --- a/src/main/resources/mapper_xml/AccountItemMapperEx.xml +++ b/src/main/resources/mapper_xml/AccountItemMapperEx.xml @@ -60,4 +60,16 @@ ) + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/DepotHeadMapperEx.xml b/src/main/resources/mapper_xml/DepotHeadMapperEx.xml index 261374a2..8e48b2c2 100644 --- a/src/main/resources/mapper_xml/DepotHeadMapperEx.xml +++ b/src/main/resources/mapper_xml/DepotHeadMapperEx.xml @@ -438,5 +438,17 @@ ) + \ No newline at end of file