diff --git a/erp_web/js/pages/financial/financial_base.js b/erp_web/js/pages/financial/financial_base.js index a9e37e5d..54645980 100644 --- a/erp_web/js/pages/financial/financial_base.js +++ b/erp_web/js/pages/financial/financial_base.js @@ -495,7 +495,19 @@ if(res && res.code == 200) { $("#searchBtn").click(); } else { - $.messager.alert('删除提示', '删除财务信息失败,请稍后再试!', 'error'); + if(res && res.code == 601){ + var jsondata={}; + jsondata.ids=accountHeadID; + jsondata.deleteType='2'; + var type='single'; + batDeleteAccountHeadForceConfirm(res,"/accountHead/batchDeleteAccountHeadByIds",jsondata,type); + }else if(res && res.code == 600){ + $.messager.alert('删除提示', res.msg, 'error'); + return; + }else{ + $.messager.alert('删除提示', '删除信息失败,请稍后再试!', 'error'); + return; + } } }, //此处添加错误处理 @@ -553,29 +565,7 @@ } ids += row[i].id + ","; } - //批量更新会员的预收款信息 - for(var i = 0;i < row.length; i ++) { - if(listType === "收预付款"){ - $.ajax({ - type:"post", - url: "/supplier/updateAdvanceIn", - dataType: "json", - data:{ - supplierId: row[i].organid, //会员id - advanceIn: 0 - row[i].totalprice //删除时同时删除用户的预付款信息 - }, - success: function(res){ - if(res && res.code === 200) { - //保存会员预收款成功 - } - }, - error: function(){ - $.messager.alert('提示','保存信息异常,请稍后再试!','error'); - return; - } - }); - } - } + //批量删除 $.ajax({ type:"post", @@ -590,15 +580,19 @@ $("#searchBtn").click(); $(":checkbox").attr("checked", false); } else { - $.messager.alert('删除提示', '删除财务信息失败,请稍后再试!', 'error'); - } - }, - success: function (res) { - if(res && res.code === 200) { - $("#searchBtn").click(); - $(":checkbox").attr("checked", false); - } else { - $.messager.alert('删除提示', '删除财务信息失败,请稍后再试!', 'error'); + if(res && res.code == 601){ + var jsondata={}; + jsondata.ids=ids; + jsondata.deleteType='2'; + var type='batch'; + batDeleteAccountHeadForceConfirm(res,"/accountHead/batchDeleteAccountHeadByIds",jsondata,type); + }else if(res && res.code == 600){ + $.messager.alert('删除提示', res.msg, 'error'); + return; + }else{ + $.messager.alert('删除提示', '删除信息失败,请稍后再试!', 'error'); + return; + } } }, //此处添加错误处理 @@ -606,13 +600,71 @@ $.messager.alert('删除提示','删除财务信息异常,请稍后再试!','error'); return; } - }); + }); + //批量更新会员的预收款信息 + for(var i = 0;i < row.length; i ++) { + if(listType === "收预付款"){ + $.ajax({ + type:"post", + url: "/supplier/updateAdvanceIn", + dataType: "json", + data:{ + supplierId: row[i].organid, //会员id + advanceIn: 0 - row[i].totalprice //删除时同时删除用户的预付款信息 + }, + success: function(res){ + if(res && res.code === 200) { + //保存会员预收款成功 + } + }, + error: function(){ + $.messager.alert('提示','保存信息异常,请稍后再试!','error'); + return; + } + }); + } + } } }); } } + /** + * 确认强制删除 + * */ + function batDeleteAccountHeadForceConfirm(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(); + if(type=='batch'){ + $(":checkbox").attr("checked", false); + } + }else if(res && res.code == 600){ + $.messager.alert('删除提示', res.msg, 'error'); + return; + }else { + $.messager.alert('删除提示','删除财务信息异常,请稍后再试!','error'); + return; + } + }, + //此处添加错误处理 + error: function () { + $.messager.alert('删除提示','删除财务信息异常,请稍后再试!','error'); + return; + } + }); + } + }); + } - //增加 + + //增加 function addAccountHead(){ $('#accountHeadFM').form('clear'); var thisDateTime = getNowFormatDateTime(); //当前时间 diff --git a/src/main/java/com/jsh/erp/controller/AccountHeadController.java b/src/main/java/com/jsh/erp/controller/AccountHeadController.java index f334c52e..1abbce8f 100644 --- a/src/main/java/com/jsh/erp/controller/AccountHeadController.java +++ b/src/main/java/com/jsh/erp/controller/AccountHeadController.java @@ -1,6 +1,7 @@ package com.jsh.erp.controller; import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.constants.BusinessConstants; import com.jsh.erp.constants.ExceptionConstants; import com.jsh.erp.datasource.entities.AccountHead; import com.jsh.erp.datasource.entities.AccountHeadVo4ListEx; @@ -158,10 +159,21 @@ public class AccountHeadController { * @return java.lang.Object */ @RequestMapping(value = "/batchDeleteAccountHeadByIds") - public Object batchDeleteAccountHeadByIds(@RequestParam("ids") String ids) throws Exception { + public Object batchDeleteAccountHeadByIds(@RequestParam("ids") String ids,@RequestParam(value="deleteType", + required =false,defaultValue= BusinessConstants.DELETE_TYPE_NORMAL)String deleteType) throws Exception { JSONObject result = ExceptionConstants.standardSuccess(); - int i= accountHeadService.batchDeleteAccountHeadByIds(ids); + int i=0; + if(BusinessConstants.DELETE_TYPE_NORMAL.equals(deleteType)){ + i= accountHeadService.batchDeleteAccountHeadByIdsNormal(ids); + }else if(BusinessConstants.DELETE_TYPE_FORCE.equals(deleteType)){ + i= accountHeadService.batchDeleteAccountHeadByIds(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_HEAD_DELETE_FAILED_CODE,ExceptionConstants.ACCOUNT_HEAD_DELETE_FAILED_MSG,ids); 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 393dd42c..4628c280 100644 --- a/src/main/java/com/jsh/erp/datasource/mappers/AccountItemMapperEx.java +++ b/src/main/java/com/jsh/erp/datasource/mappers/AccountItemMapperEx.java @@ -28,4 +28,6 @@ public interface AccountItemMapperEx { int batchDeleteAccountItemByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String[] ids); List getAccountItemListByAccountIds(@Param("accountIds") String[] accountIds); + + List getAccountItemListByHeaderIds(@Param("headerIds") String[] headerIds); } \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/service/accountHead/AccountHeadService.java b/src/main/java/com/jsh/erp/service/accountHead/AccountHeadService.java index 01c54ea8..bfc72f33 100644 --- a/src/main/java/com/jsh/erp/service/accountHead/AccountHeadService.java +++ b/src/main/java/com/jsh/erp/service/accountHead/AccountHeadService.java @@ -1,17 +1,17 @@ package com.jsh.erp.service.accountHead; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.jsh.erp.constants.BusinessConstants; -import com.jsh.erp.datasource.entities.AccountHead; -import com.jsh.erp.datasource.entities.AccountHeadExample; -import com.jsh.erp.datasource.entities.AccountHeadVo4ListEx; -import com.jsh.erp.datasource.entities.User; +import com.jsh.erp.constants.ExceptionConstants; +import com.jsh.erp.datasource.entities.*; import com.jsh.erp.datasource.mappers.AccountHeadMapper; import com.jsh.erp.datasource.mappers.AccountHeadMapperEx; +import com.jsh.erp.datasource.mappers.AccountItemMapperEx; +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; -import com.jsh.erp.utils.Tools; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @@ -39,6 +39,8 @@ public class AccountHeadService { private UserService userService; @Resource private LogService logService; + @Resource + private AccountItemMapperEx accountItemMapperEx; public AccountHead getAccountHead(long id) { return accountHeadMapper.selectByPrimaryKey(id); @@ -142,4 +144,41 @@ public class AccountHeadService { String [] idArray=ids.split(","); return accountHeadMapperEx.batchDeleteAccountHeadByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); } + /** + * create by: qiankunpingtai + * website:https://qiankunpingtai.cn + * description: + * 正常删除,要考虑数据完整性,进行完整性校验 + * create time: 2019/4/10 15:49 + * @Param: ids + * @return int + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteAccountHeadByIdsNormal(String ids) throws Exception { + /** + * 校验 + * 1、财务子表 jsh_accountitem + * 是否有相关数据 + * */ + int deleteTotal=0; + if(StringUtils.isEmpty(ids)){ + return deleteTotal; + } + String [] idArray=ids.split(","); + /** + * 校验财务子表 jsh_accountitem + * */ + List accountItemList=accountItemMapperEx.getAccountItemListByHeaderIds(idArray); + if(accountItemList!=null&&accountItemList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,HeaderIds[{}]", + 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= batchDeleteAccountHeadByIds(ids); + return deleteTotal; + } } diff --git a/src/main/java/com/jsh/erp/service/person/PersonService.java b/src/main/java/com/jsh/erp/service/person/PersonService.java index c1b995ab..cf613b29 100644 --- a/src/main/java/com/jsh/erp/service/person/PersonService.java +++ b/src/main/java/com/jsh/erp/service/person/PersonService.java @@ -134,7 +134,7 @@ public class PersonService { * @return int */ @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public int batchDeletePersonByIdsNormal(String ids) { + public int batchDeletePersonByIdsNormal(String ids) throws Exception { /** * 校验 * 1、财务主表 jsh_accounthead diff --git a/src/main/resources/mapper_xml/AccountItemMapperEx.xml b/src/main/resources/mapper_xml/AccountItemMapperEx.xml index 53125ba4..517240cb 100644 --- a/src/main/resources/mapper_xml/AccountItemMapperEx.xml +++ b/src/main/resources/mapper_xml/AccountItemMapperEx.xml @@ -72,4 +72,16 @@ ) and ifnull(delete_Flag,'0') !='1' + \ No newline at end of file