From 17e6c80a4c7460ef1648f14b6cf5995e77685822 Mon Sep 17 00:00:00 2001 From: qiankunpingtai Date: Tue, 9 Apr 2019 11:52:21 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E6=BC=94=E7=A4=BA=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 43b6afcf..ab3e633f 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@ * 虽然目前只有进销存+财务的功能,但后面将会推出ERP的全部功能,大家一起努力吧 * 系统初始账号:jsh,密码:123456,部署如有问题请联系QQ:752718920,欢迎加入华夏ERP交流群,群号码:120725710 * 部署如遇到困难请参考Wiki文档 **https://gitee.com/jishenghua/JSH_ERP/wikis/pages** -* **本系统演示地址:[http://120.78.214.220:8080](http://120.78.214.220:8080),账号:jsh,密码:123456,欢迎登录(如需试用,欢迎注册)** - +* **本系统演示地址一:[http://120.78.214.220:8080](http://120.78.214.220:8080),账号:jsh,密码:123456,欢迎登录(如需试用,欢迎注册)** +* **本系统演示地址二:[http://39.105.146.63:8080](http://39.105.146.63:8080),账号:jsh,密码:123456** # 开发初衷 * 华夏ERP立志为中小企业提供开源好用的ERP软件,降低企业的信息化成本 * 个人开发者也可以使用华夏ERP进行二次开发,承接外包ERP项目 From 7026c9288485e0c5362e29cb30c7f63ee63e66b3 Mon Sep 17 00:00:00 2001 From: qiankunpingtai Date: Tue, 9 Apr 2019 16:09:51 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9mybatis.type-aliases-pa?= =?UTF-8?q?ckage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 1aa60414..de1592e5 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -7,7 +7,7 @@ spring.datasource.password=123456 project=src/main/java resource=src/main/resources web.front.baseDir=erp_web -mybatis.type-aliases-package=com.chinamobile.model.* +mybatis.type-aliases-package=com.jsh.erp.datasource.entities.* mybatis.mapper-locations=classpath:./mapper_xml/*.xml #开启sql打印 logging.level.com.jsh.erp.datasource.mappers=DEBUG From 05a4dd538d380057e7c74082898a9312c2c46df3 Mon Sep 17 00:00:00 2001 From: qiankunpingtai Date: Wed, 10 Apr 2019 09:20:41 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=BC=94=E7=A4=BA?= =?UTF-8?q?=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index ab3e633f..2624b0e7 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,7 @@ * 虽然目前只有进销存+财务的功能,但后面将会推出ERP的全部功能,大家一起努力吧 * 系统初始账号:jsh,密码:123456,部署如有问题请联系QQ:752718920,欢迎加入华夏ERP交流群,群号码:120725710 * 部署如遇到困难请参考Wiki文档 **https://gitee.com/jishenghua/JSH_ERP/wikis/pages** -* **本系统演示地址一:[http://120.78.214.220:8080](http://120.78.214.220:8080),账号:jsh,密码:123456,欢迎登录(如需试用,欢迎注册)** -* **本系统演示地址二:[http://39.105.146.63:8080](http://39.105.146.63:8080),账号:jsh,密码:123456** +* **本系统演示地址:[http://120.78.214.220:8080](http://120.78.214.220:8080),账号:jsh,密码:123456,欢迎登录(如需试用,欢迎注册)** # 开发初衷 * 华夏ERP立志为中小企业提供开源好用的ERP软件,降低企业的信息化成本 * 个人开发者也可以使用华夏ERP进行二次开发,承接外包ERP项目 From e5fa18286374da1072b8946a3d2ce8d3830dcfc3 Mon Sep 17 00:00:00 2001 From: qiankunpingtai Date: Wed, 10 Apr 2019 09:21:44 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E6=97=B6=E4=BA=8B=E5=8A=A1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jsh/erp/service/user/UserService.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/jsh/erp/service/user/UserService.java b/src/main/java/com/jsh/erp/service/user/UserService.java index 3d009ff6..0d1016f3 100644 --- a/src/main/java/com/jsh/erp/service/user/UserService.java +++ b/src/main/java/com/jsh/erp/service/user/UserService.java @@ -1,6 +1,7 @@ package com.jsh.erp.service.user; 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; @@ -15,6 +16,7 @@ import com.jsh.erp.datasource.vo.TreeNodeEx; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.service.log.LogService; import com.jsh.erp.service.orgaUserRel.OrgaUserRelService; +import com.jsh.erp.service.userBusiness.UserBusinessService; import com.jsh.erp.utils.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,6 +44,12 @@ public class UserService { private OrgaUserRelService orgaUserRelService; @Resource private LogService logService; + @Resource + private UserService userService; + + @Resource + private UserBusinessService userBusinessService; + public User getUser(long id) { return userMapper.selectByPrimaryKey(id); @@ -272,7 +280,14 @@ public class UserService { } @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public UserEx registerUser(UserEx ue) throws Exception{ + public UserEx registerUser(UserEx ue, Integer manageRoleId) throws Exception{ + /** + * create by: qiankunpingtai + * create time: 2019/4/9 18:00 + * website:https://qiankunpingtai.cn + * description: + * 多次创建事务,事物之间无法协同,应该在入口处创建一个事务以做协调 + */ ue.setPassword(Tools.md5Encryp(ue.getPassword())); ue.setIsystem(BusinessConstants.USER_NOT_SYSTEM); if(ue.getIsmanager()==null){ @@ -280,6 +295,19 @@ public class UserService { } ue.setStatus(BusinessConstants.USER_STATUS_NORMAL); int i=userMapperEx.addUser(ue); + //更新租户id + User user = new User(); + user.setId(ue.getId()); + user.setTenantId(ue.getId()); + userService.updateUserTenant(user); + //新增用户与角色的关系 + JSONObject ubObj = new JSONObject(); + ubObj.put("type", "UserRole"); + ubObj.put("keyid", ue.getId()); + JSONArray ubArr = new JSONArray(); + ubArr.add(manageRoleId); + ubObj.put("value", ubArr.toString()); + userBusinessService.insertUserBusiness(ubObj.toString(), ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); if(i>0){ return ue; } From 85bc297e3b72837b24a56906b88f55c6744ca478 Mon Sep 17 00:00:00 2001 From: qiankunpingtai Date: Wed, 10 Apr 2019 09:23:09 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=B0=83=E7=94=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsh/erp/controller/UserController.java | 63 +++++++++---------- 1 file changed, 29 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/jsh/erp/controller/UserController.java b/src/main/java/com/jsh/erp/controller/UserController.java index c46660e4..4deab293 100644 --- a/src/main/java/com/jsh/erp/controller/UserController.java +++ b/src/main/java/com/jsh/erp/controller/UserController.java @@ -7,15 +7,11 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.jsh.erp.constants.BusinessConstants; import com.jsh.erp.constants.ExceptionConstants; -import com.jsh.erp.datasource.entities.DepotEx; -import com.jsh.erp.datasource.entities.SerialNumberEx; import com.jsh.erp.datasource.entities.User; import com.jsh.erp.datasource.entities.UserEx; -import com.jsh.erp.datasource.vo.TreeNode; import com.jsh.erp.datasource.vo.TreeNodeEx; import com.jsh.erp.exception.BusinessParamCheckingException; import com.jsh.erp.service.user.UserService; -import com.jsh.erp.service.userBusiness.UserBusinessService; import com.jsh.erp.utils.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,11 +21,11 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.IOException; import java.net.URLEncoder; import java.security.NoSuchAlgorithmException; import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import static com.jsh.erp.utils.ResponseJsonUtil.returnJson; @@ -39,7 +35,7 @@ import static com.jsh.erp.utils.ResponseJsonUtil.returnJson; @RestController @RequestMapping(value = "/user") public class UserController { - private Logger logger = LoggerFactory.getLogger(ResourceController.class); + private Logger logger = LoggerFactory.getLogger(UserController.class); @Value("${mybatis-plus.status}") private String mybatisPlusStatus; @@ -56,9 +52,6 @@ public class UserController { @Resource private UserService userService; - @Resource - private UserBusinessService userBusinessService; - private static String message = "成功"; private static final String HTTP = "http://"; private static final String CODE_OK = "200"; @@ -357,31 +350,33 @@ public class UserController { ue.setUsername(loginame); ue.setLoginame(loginame); ue.setPassword(password); - ue = userService.registerUser(ue); + ue = userService.registerUser(ue,manageRoleId); + /** + * create by: qiankunpingtai + * create time: 2019/4/9 17:17 + * website:https://qiankunpingtai.cn + * description: + * 这里涉及到多个项目,需要用分布式事务去处理 + * 为了不使问题复杂化,暂时另外开启一个线程去处理其它项目的数据操作 + */ + final UserEx ueFinal=ue; + final ExecutorService executorService = Executors.newFixedThreadPool(1); + executorService.execute(() -> { + try{ + //调第三方接口创建租户管理信息 + String url = HTTP + manageIp + ":" + managePort + "/tenant/add"; + JSONObject tenantObj = new JSONObject(); + tenantObj.put("tenantId", ueFinal.getId()); + tenantObj.put("loginName",ueFinal.getLoginame()); + String param = URLEncoder.encode(tenantObj.toString()); + HttpClient.httpPost(url + "?info=" + param, param); + logger.info("===============创建租户信息完成==============="); + }catch(Exception e){ + //记录一下第三方接口创建租户管理信息创建失败 + logger.debug("调用第三方接口创建租户管理信息失败:tenantId:[{}],loginName:[{}]",ueFinal.getId(),ueFinal.getLoginame()); + } + }); - //调第三方接口创建租户管理信息 - String url = HTTP + manageIp + ":" + managePort + "/tenant/add"; - JSONObject tenantObj = new JSONObject(); - tenantObj.put("tenantId", ue.getId()); - tenantObj.put("loginName",ue.getLoginame()); - String param = URLEncoder.encode(tenantObj.toString()); - HttpClient.httpPost(url + "?info=" + param, param); - logger.info("===============创建租户信息完成==============="); - - //更新租户id - User user = new User(); - user.setId(ue.getId()); - user.setTenantId(ue.getId()); - userService.updateUserTenant(user); - - //新增用户与角色的关系 - JSONObject ubObj = new JSONObject(); - ubObj.put("type", "UserRole"); - ubObj.put("keyid", ue.getId()); - JSONArray ubArr = new JSONArray(); - ubArr.add(manageRoleId); - ubObj.put("value", ubArr.toString()); - userBusinessService.insertUserBusiness(ubObj.toString(), request); return result; } /** From 76034a12985cd4b62835f762f5fe0b9a89a8d28d Mon Sep 17 00:00:00 2001 From: qiankunpingtai Date: Wed, 10 Apr 2019 14:37:36 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E5=A4=96=E9=94=AE?= =?UTF-8?q?=E4=B9=8B=E8=B4=A6=E6=88=B7=E4=BF=A1=E6=81=AF=E8=A1=A8jsh=5Facc?= =?UTF-8?q?ount=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 From d91db76e1e7c8a2e5f871defdc3a29eb1070924c Mon Sep 17 00:00:00 2001 From: qiankunpingtai Date: Wed, 10 Apr 2019 15:45:15 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E5=A4=96=E9=94=AE?= =?UTF-8?q?=E4=B9=8B=E4=BE=9B=E5=BA=94=E5=95=86=E5=AE=A2=E6=88=B7=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E8=A1=A8jsh=5Fsupplier=E3=80=81=E7=BB=8F=E6=89=8B?= =?UTF-8?q?=E4=BA=BA=E8=A1=A8jsh=5Fperson=E7=9B=B8=E5=85=B3=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- erp_web/js/pages/manage/supplier.js | 56 ++++++++++++++++- erp_web/pages/manage/account.html | 19 ++++-- erp_web/pages/materials/person.html | 56 ++++++++++++++++- .../jsh/erp/controller/PersonController.java | 16 ++++- .../erp/controller/SupplierController.java | 16 ++++- .../mappers/AccountHeadMapperEx.java | 4 ++ .../datasource/mappers/DepotHeadMapperEx.java | 4 ++ .../jsh/erp/service/person/PersonService.java | 61 +++++++++++++++++- .../erp/service/supplier/SupplierService.java | 62 ++++++++++++++++++- .../mapper_xml/AccountHeadMapperEx.xml | 20 ++++-- .../mapper_xml/DepotHeadMapperEx.xml | 24 +++++++ 11 files changed, 316 insertions(+), 22 deletions(-) diff --git a/erp_web/js/pages/manage/supplier.js b/erp_web/js/pages/manage/supplier.js index 8c71d20a..9ba584e5 100644 --- a/erp_web/js/pages/manage/supplier.js +++ b/erp_web/js/pages/manage/supplier.js @@ -179,7 +179,17 @@ if(res && res.code == 200) { $("#searchBtn").click(); } else { - $.messager.alert('删除提示', '删除信息失败,请稍后再试!', 'error'); + if(res && res.code == 601){ + var jsondata={}; + jsondata.ids=supplierTotalInfo[0]; + jsondata.deleteType='2'; + var type='single'; + batDeleteSupplierForceConfirm(res,"/supplier/batchDeleteSupplierByIds",jsondata,type); + }else if(res && res.code == 600){ + $.messager.alert('删除提示', res.msg, 'error'); + }else{ + $.messager.alert('删除提示', '删除信息失败,请稍后再试!', 'error'); + } } }, //此处添加错误处理 @@ -224,7 +234,17 @@ $("#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'; + batDeleteSupplierForceConfirm(res,"/supplier/batchDeleteSupplierByIds",jsondata,type); + }else if(res && res.code == 600){ + $.messager.alert('删除提示', res.msg, 'error'); + }else{ + $.messager.alert('删除提示', '删除信息失败,请稍后再试!', 'error'); + } } }, //此处添加错误处理 @@ -237,6 +257,38 @@ }); } } + /** + * 确认强制删除 + * */ + function batDeleteSupplierForceConfirm(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'); + }else { + $.messager.alert('删除提示', '删除信息失败,请稍后再试!', 'error'); + } + }, + //此处添加错误处理 + error: function () { + $.messager.alert('删除提示', '删除信息失败,请稍后再试!', 'error'); + return; + } + }); + } + }); + } //批量启用 function setEnableFun() { diff --git a/erp_web/pages/manage/account.html b/erp_web/pages/manage/account.html index 11508d11..92ce970e 100644 --- a/erp_web/pages/manage/account.html +++ b/erp_web/pages/manage/account.html @@ -238,7 +238,10 @@ var jsondata={}; jsondata.ids=accountTotalInfo[0]; jsondata.deleteType='2'; - batDeleteAccountForceConfirm(res,"/account/batchDeleteAccountByIds",jsondata); + var type='single'; + batDeleteAccountForceConfirm(res,"/account/batchDeleteAccountByIds",jsondata,type); + }else if(res && res.code == 600){ + $.messager.alert('删除提示', res.msg, 'error'); }else{ $.messager.alert('删除提示', '删除结算账户失败,请稍后再试!', 'error'); } @@ -289,7 +292,10 @@ var jsondata={}; jsondata.ids=ids; jsondata.deleteType='2'; - batDeleteAccountForceConfirm(res,"/account/batchDeleteAccountByIds",jsondata); + var type='batch'; + batDeleteAccountForceConfirm(res,"/account/batchDeleteAccountByIds",jsondata,type); + }else if(res && res.code == 600){ + $.messager.alert('删除提示', res.msg, 'error'); }else{ $.messager.alert('删除提示', '删除结算账户失败,请稍后再试!', 'error'); } @@ -308,7 +314,7 @@ /** * 确认强制删除 * */ - function batDeleteAccountForceConfirm(res,url,jsondata) { + function batDeleteAccountForceConfirm(res,url,jsondata,type) { $.messager.confirm('删除确认', res.msg, function (r) { if (r) { $.ajax({ @@ -319,7 +325,12 @@ success: function (res) { if(res && res.code == 200) { $("#searchBtn").click(); - } else { + if(type=='batch'){ + $(":checkbox").attr("checked", false); + } + }else if(res && res.code == 600){ + $.messager.alert('删除提示', res.msg, 'error'); + }else { $.messager.alert('删除提示', '删除结算账户失败,请稍后再试!', 'error'); } }, diff --git a/erp_web/pages/materials/person.html b/erp_web/pages/materials/person.html index 6803f865..252b7523 100644 --- a/erp_web/pages/materials/person.html +++ b/erp_web/pages/materials/person.html @@ -258,7 +258,17 @@ if(res && res.code == 200) { $("#searchBtn").click(); } else { - $.messager.alert('删除提示', '删除经手人信息失败,请稍后再试!', 'error'); + if(res && res.code == 601){ + var jsondata={}; + jsondata.ids=personID; + jsondata.deleteType='2'; + var type='single'; + batDeletePersonForceConfirm(res,"/person/batchDeletePersonByIds",jsondata,type); + }else if(res && res.code == 600){ + $.messager.alert('删除提示', res.msg, 'error'); + }else{ + $.messager.alert('删除提示', '删除经手人信息失败,请稍后再试!', 'error'); + } } }, //此处添加错误处理 @@ -303,7 +313,17 @@ $("#searchBtn").click(); $(":checkbox").attr("checked", false); } else { - $.messager.alert('删除提示', '删除经手人信息失败,请稍后再试!', 'error'); + if(res && res.code == 601){ + var jsondata={}; + jsondata.ids=personID; + jsondata.deleteType='2'; + var type='batch'; + batDeletePersonForceConfirm(res,"/person/batchDeletePersonByIds",jsondata,type); + }else if(res && res.code == 600){ + $.messager.alert('删除提示', res.msg, 'error'); + }else{ + $.messager.alert('删除提示', '删除经手人信息失败,请稍后再试!', 'error'); + } } }, //此处添加错误处理 @@ -316,6 +336,38 @@ }); } } + /** + * 确认强制删除 + * */ + function batDeletePersonForceConfirm(res,url,jsondata,type) { + $.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'); + }else { + $.messager.alert('删除提示', '删除经手人信息异常,请稍后再试!', 'error'); + } + }, + //此处添加错误处理 + error: function () { + $.messager.alert('删除提示', '删除经手人信息异常,请稍后再试!', 'error'); + return; + } + }); + } + }); + } //增加 var url; diff --git a/src/main/java/com/jsh/erp/controller/PersonController.java b/src/main/java/com/jsh/erp/controller/PersonController.java index 51835b86..6460f737 100644 --- a/src/main/java/com/jsh/erp/controller/PersonController.java +++ b/src/main/java/com/jsh/erp/controller/PersonController.java @@ -2,6 +2,7 @@ package com.jsh.erp.controller; 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.Person; import com.jsh.erp.exception.BusinessRunTimeException; @@ -133,9 +134,20 @@ public class PersonController { * @return java.lang.Object */ @RequestMapping(value = "/batchDeletePersonByIds") - public Object batchDeletePersonByIds(@RequestParam("ids") String ids) throws Exception { + public Object batchDeletePersonByIds(@RequestParam("ids") String ids,@RequestParam(value="deleteType", + required =false,defaultValue= BusinessConstants.DELETE_TYPE_NORMAL)String deleteType) throws Exception { JSONObject result = ExceptionConstants.standardSuccess(); - int i= personService.batchDeletePersonByIds(ids); + int i=0; + if(BusinessConstants.DELETE_TYPE_NORMAL.equals(deleteType)){ + i= personService.batchDeletePersonByIdsNormal(ids); + }else if(BusinessConstants.DELETE_TYPE_FORCE.equals(deleteType)){ + i= personService.batchDeletePersonByIds(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.PERSON_DELETE_FAILED_CODE,ExceptionConstants.PERSON_DELETE_FAILED_MSG,ids); diff --git a/src/main/java/com/jsh/erp/controller/SupplierController.java b/src/main/java/com/jsh/erp/controller/SupplierController.java index f43d024e..692e3aa6 100644 --- a/src/main/java/com/jsh/erp/controller/SupplierController.java +++ b/src/main/java/com/jsh/erp/controller/SupplierController.java @@ -2,6 +2,7 @@ package com.jsh.erp.controller; 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.Supplier; import com.jsh.erp.exception.BusinessRunTimeException; @@ -452,9 +453,20 @@ public class SupplierController { * @return java.lang.Object */ @RequestMapping(value = "/batchDeleteSupplierByIds") - public Object batchDeleteSupplierByIds(@RequestParam("ids") String ids) throws Exception { + public Object batchDeleteSupplierByIds(@RequestParam("ids") String ids,@RequestParam(value="deleteType", + required =false,defaultValue= BusinessConstants.DELETE_TYPE_NORMAL)String deleteType) throws Exception { JSONObject result = ExceptionConstants.standardSuccess(); - int i= supplierService.batchDeleteSupplierByIds(ids); + int i=0; + if(BusinessConstants.DELETE_TYPE_NORMAL.equals(deleteType)){ + i= supplierService.batchDeleteSupplierByIdsNormal(ids); + }else if(BusinessConstants.DELETE_TYPE_FORCE.equals(deleteType)){ + i= supplierService.batchDeleteSupplierByIds(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.SUPPLIER_DELETE_FAILED_CODE,ExceptionConstants.SUPPLIER_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 53374f76..34494868 100644 --- a/src/main/java/com/jsh/erp/datasource/mappers/AccountHeadMapperEx.java +++ b/src/main/java/com/jsh/erp/datasource/mappers/AccountHeadMapperEx.java @@ -39,4 +39,8 @@ public interface AccountHeadMapperEx { int batchDeleteAccountHeadByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String[] ids); List getAccountHeadListByAccountIds(@Param("accountIds") String[] accountIds); + + List getAccountHeadListByOrganIds(@Param("organIds") String[] organIds); + + List getAccountHeadListByHandsPersonIds(@Param("handsPersonIds") String[] handsPersonIds); } \ 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 aab6ea3c..ef489843 100644 --- a/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperEx.java +++ b/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperEx.java @@ -117,4 +117,8 @@ public interface DepotHeadMapperEx { int batchDeleteDepotHeadByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); List getDepotHeadListByAccountIds(@Param("accountIds") String[] accountIds); + + List getDepotHeadListByOrganIds(@Param("organIds") String[] organIds); + + List getDepotHeadListByHandsPersonIds(@Param("handsPersonIds") String[] handsPersonIds); } 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 2876516e..c1b995ab 100644 --- a/src/main/java/com/jsh/erp/service/person/PersonService.java +++ b/src/main/java/com/jsh/erp/service/person/PersonService.java @@ -1,12 +1,15 @@ package com.jsh.erp.service.person; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.jsh.erp.constants.BusinessConstants; -import com.jsh.erp.datasource.entities.Person; -import com.jsh.erp.datasource.entities.PersonExample; -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.AccountHeadMapperEx; +import com.jsh.erp.datasource.mappers.DepotHeadMapperEx; import com.jsh.erp.datasource.mappers.PersonMapper; import com.jsh.erp.datasource.mappers.PersonMapperEx; +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; @@ -35,6 +38,10 @@ public class PersonService { private UserService userService; @Resource private LogService logService; + @Resource + private AccountHeadMapperEx accountHeadMapperEx; + @Resource + private DepotHeadMapperEx depotHeadMapperEx; public Person getPerson(long id) { return personMapper.selectByPrimaryKey(id); @@ -117,4 +124,52 @@ public class PersonService { String [] idArray=ids.split(","); return personMapperEx.batchDeletePersonByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); } + /** + * create by: qiankunpingtai + * website:https://qiankunpingtai.cn + * description: + * 正常删除,要考虑数据完整性,进行完整性校验 + * create time: 2019/4/10 15:14 + * @Param: ids + * @return int + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeletePersonByIdsNormal(String ids) { + /** + * 校验 + * 1、财务主表 jsh_accounthead + * 2、单据主表 jsh_depothead + * 是否有相关数据 + * */ + int deleteTotal=0; + if(StringUtils.isEmpty(ids)){ + return deleteTotal; + } + String [] idArray=ids.split(","); + /** + * 校验财务主表 jsh_accounthead + * */ + List accountHeadList=accountHeadMapperEx.getAccountHeadListByHandsPersonIds(idArray); + if(accountHeadList!=null&&accountHeadList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,HandsPersonIds[{}]", + 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.getDepotHeadListByHandsPersonIds(idArray); + if(depotHeadList!=null&&depotHeadList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,HandsPersonIds[{}]", + 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= batchDeletePersonByIds(ids); + return deleteTotal; + } } diff --git a/src/main/java/com/jsh/erp/service/supplier/SupplierService.java b/src/main/java/com/jsh/erp/service/supplier/SupplierService.java index 3706c432..24f06105 100644 --- a/src/main/java/com/jsh/erp/service/supplier/SupplierService.java +++ b/src/main/java/com/jsh/erp/service/supplier/SupplierService.java @@ -1,12 +1,15 @@ package com.jsh.erp.service.supplier; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.jsh.erp.constants.BusinessConstants; -import com.jsh.erp.datasource.entities.Supplier; -import com.jsh.erp.datasource.entities.SupplierExample; -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.AccountHeadMapperEx; +import com.jsh.erp.datasource.mappers.DepotHeadMapperEx; import com.jsh.erp.datasource.mappers.SupplierMapper; import com.jsh.erp.datasource.mappers.SupplierMapperEx; +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.BaseResponseInfo; @@ -39,6 +42,10 @@ public class SupplierService { private LogService logService; @Resource private UserService userService; + @Resource + private AccountHeadMapperEx accountHeadMapperEx; + @Resource + private DepotHeadMapperEx depotHeadMapperEx; public Supplier getSupplier(long id) { return supplierMapper.selectByPrimaryKey(id); @@ -187,4 +194,53 @@ public class SupplierService { String [] idArray=ids.split(","); return supplierMapperEx.batchDeleteSupplierByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); } + /** + * create by: qiankunpingtai + * website:https://qiankunpingtai.cn + * description: + *正常删除,要考虑数据完整性,进行完整性校验 + * create time: 2019/4/10 14:48 + * @Param: ids + * @return int + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteSupplierByIdsNormal(String ids) throws Exception { + /** + * 校验 + * 1、财务主表 jsh_accounthead + * 2、单据主表 jsh_depothead + * 是否有相关数据 + * */ + int deleteTotal=0; + if(StringUtils.isEmpty(ids)){ + return deleteTotal; + } + String [] idArray=ids.split(","); + /** + * 校验财务主表 jsh_accounthead + * */ + List accountHeadList=accountHeadMapperEx.getAccountHeadListByOrganIds(idArray); + if(accountHeadList!=null&&accountHeadList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,OrganIds[{}]", + 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.getDepotHeadListByOrganIds(idArray); + if(depotHeadList!=null&&depotHeadList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,OrganIds[{}]", + 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= batchDeleteSupplierByIds(ids); + return deleteTotal; + + } } diff --git a/src/main/resources/mapper_xml/AccountHeadMapperEx.xml b/src/main/resources/mapper_xml/AccountHeadMapperEx.xml index a493d204..2583ed86 100644 --- a/src/main/resources/mapper_xml/AccountHeadMapperEx.xml +++ b/src/main/resources/mapper_xml/AccountHeadMapperEx.xml @@ -88,14 +88,26 @@ ) - select from jsh_accounthead where 1=1 - and accountId in ( - - #{accountId} + and organId in ( + + #{organId} + + ) + and ifnull(delete_Flag,'0') !='1' + + + + \ No newline at end of file From 89b42d342ccfbdefa9298e9ffa8953807df05489 Mon Sep 17 00:00:00 2001 From: qiankunpingtai Date: Wed, 10 Apr 2019 16:22:15 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E5=A4=96=E9=94=AE?= =?UTF-8?q?=E4=B9=8B=E8=B4=A2=E5=8A=A1=E4=B8=BB=E8=A1=A8jsh=5Faccounthead?= =?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/js/pages/financial/financial_base.js | 122 +++++++++++++----- .../erp/controller/AccountHeadController.java | 16 ++- .../mappers/AccountItemMapperEx.java | 2 + .../accountHead/AccountHeadService.java | 49 ++++++- .../jsh/erp/service/person/PersonService.java | 2 +- .../mapper_xml/AccountItemMapperEx.xml | 12 ++ 6 files changed, 160 insertions(+), 43 deletions(-) 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 From bb1f9b7e97381299c0073397066d7efb5832f39d Mon Sep 17 00:00:00 2001 From: qiankunpingtai Date: Wed, 10 Apr 2019 16:48:45 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E5=A4=96=E9=94=AE?= =?UTF-8?q?=E4=B9=8B=E6=94=B6=E6=94=AF=E9=A1=B9=E7=9B=AE=E8=A1=A8jsh=5Fino?= =?UTF-8?q?utitem=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/inOutItem.html | 56 ++++++++++++++++++- .../erp/controller/InOutItemController.java | 16 +++++- .../mappers/AccountItemMapperEx.java | 2 + .../service/inOutItem/InOutItemService.java | 45 +++++++++++++++ .../mapper_xml/AccountItemMapperEx.xml | 12 ++++ 5 files changed, 127 insertions(+), 4 deletions(-) diff --git a/erp_web/pages/manage/inOutItem.html b/erp_web/pages/manage/inOutItem.html index f61b8880..ce2b1bbe 100644 --- a/erp_web/pages/manage/inOutItem.html +++ b/erp_web/pages/manage/inOutItem.html @@ -234,7 +234,17 @@ if(res && res.code == 200) { $("#searchBtn").click(); } else { - $.messager.alert('删除提示', '删除收支项目失败,请稍后再试!', 'error'); + if(res && res.code == 601){ + var jsondata={}; + jsondata.ids=inOutItemTotalInfo[0]; + jsondata.deleteType='2'; + var type='single'; + batDeleteInOutItemForceConfirm(res,"/inOutItem/batchDeleteInOutItemByIds",jsondata,type); + }else if(res && res.code == 600){ + $.messager.alert('删除提示', res.msg, 'error'); + }else{ + $.messager.alert('删除提示', '删除结算账户失败,请稍后再试!', 'error'); + } } }, //此处添加错误处理 @@ -278,7 +288,17 @@ $("#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'; + batDeleteInOutItemForceConfirm(res,"/inOutItem/batchDeleteInOutItemByIds",jsondata,type); + }else if(res && res.code == 600){ + $.messager.alert('删除提示', res.msg, 'error'); + }else{ + $.messager.alert('删除提示', '删除结算账户失败,请稍后再试!', 'error'); + } } }, //此处添加错误处理 @@ -291,6 +311,38 @@ }); } } + /** + * 确认强制删除 + * */ + function batDeleteInOutItemForceConfirm(res,url,jsondata,type) { + $.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'); + }else { + $.messager.alert('删除提示', '删除收支项目失败,请稍后再试!', 'error'); + } + }, + //此处添加错误处理 + error: function () { + $.messager.alert('删除提示', '删除收支项目失败,请稍后再试!', 'error'); + return; + } + }); + } + }); + } //增加收支项目 var url; diff --git a/src/main/java/com/jsh/erp/controller/InOutItemController.java b/src/main/java/com/jsh/erp/controller/InOutItemController.java index cbdb7d95..fc920907 100644 --- a/src/main/java/com/jsh/erp/controller/InOutItemController.java +++ b/src/main/java/com/jsh/erp/controller/InOutItemController.java @@ -2,6 +2,7 @@ package com.jsh.erp.controller; 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.InOutItem; import com.jsh.erp.exception.BusinessRunTimeException; @@ -66,9 +67,20 @@ public class InOutItemController { * @return java.lang.Object */ @RequestMapping(value = "/batchDeleteInOutItemByIds") - public Object batchDeleteInOutItemByIds(@RequestParam("ids") String ids) throws Exception { + public Object batchDeleteInOutItemByIds(@RequestParam("ids") String ids,@RequestParam(value="deleteType", + required =false,defaultValue= BusinessConstants.DELETE_TYPE_NORMAL)String deleteType) throws Exception { JSONObject result = ExceptionConstants.standardSuccess(); - int i= inOutItemService.batchDeleteInOutItemByIds(ids); + int i=0; + if(BusinessConstants.DELETE_TYPE_NORMAL.equals(deleteType)){ + i= inOutItemService.batchDeleteInOutItemByIdsNormal(ids); + }else if(BusinessConstants.DELETE_TYPE_FORCE.equals(deleteType)){ + i= inOutItemService.batchDeleteInOutItemByIds(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.IN_OUT_ITEM_DELETE_FAILED_CODE,ExceptionConstants.IN_OUT_ITEM_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 4628c280..33c0cbfd 100644 --- a/src/main/java/com/jsh/erp/datasource/mappers/AccountItemMapperEx.java +++ b/src/main/java/com/jsh/erp/datasource/mappers/AccountItemMapperEx.java @@ -30,4 +30,6 @@ public interface AccountItemMapperEx { List getAccountItemListByAccountIds(@Param("accountIds") String[] accountIds); List getAccountItemListByHeaderIds(@Param("headerIds") String[] headerIds); + + List getAccountItemListByInOutItemIds(@Param("inOutItemIds") String[] inOutItemIds); } \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/service/inOutItem/InOutItemService.java b/src/main/java/com/jsh/erp/service/inOutItem/InOutItemService.java index 79468ab2..4fbd7007 100644 --- a/src/main/java/com/jsh/erp/service/inOutItem/InOutItemService.java +++ b/src/main/java/com/jsh/erp/service/inOutItem/InOutItemService.java @@ -1,12 +1,17 @@ package com.jsh.erp.service.inOutItem; 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.AccountItem; import com.jsh.erp.datasource.entities.InOutItem; import com.jsh.erp.datasource.entities.InOutItemExample; import com.jsh.erp.datasource.entities.User; +import com.jsh.erp.datasource.mappers.AccountItemMapperEx; import com.jsh.erp.datasource.mappers.InOutItemMapper; import com.jsh.erp.datasource.mappers.InOutItemMapperEx; +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; @@ -35,6 +40,8 @@ public class InOutItemService { private UserService userService; @Resource private LogService logService; + @Resource + private AccountItemMapperEx accountItemMapperEx; public InOutItem getInOutItem(long id) { return inOutItemMapper.selectByPrimaryKey(id); @@ -105,4 +112,42 @@ public class InOutItemService { String [] idArray=ids.split(","); return inOutItemMapperEx.batchDeleteInOutItemByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); } + /** + * create by: qiankunpingtai + * website:https://qiankunpingtai.cn + * description: + * 正常删除,要考虑数据完整性,进行完整性校验 + * create time: 2019/4/10 16:23 + * @Param: ids + * @return int + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteInOutItemByIdsNormal(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.getAccountItemListByInOutItemIds(idArray); + if(accountItemList!=null&&accountItemList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,InOutItemIds[{}]", + 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= batchDeleteInOutItemByIds(ids); + return deleteTotal; + + } } diff --git a/src/main/resources/mapper_xml/AccountItemMapperEx.xml b/src/main/resources/mapper_xml/AccountItemMapperEx.xml index 517240cb..d4acb20f 100644 --- a/src/main/resources/mapper_xml/AccountItemMapperEx.xml +++ b/src/main/resources/mapper_xml/AccountItemMapperEx.xml @@ -84,4 +84,16 @@ ) and ifnull(delete_Flag,'0') !='1' + \ No newline at end of file From 9fa082f25cfa2261ddb62205b2ba4f3564246b5e Mon Sep 17 00:00:00 2001 From: qiankunpingtai Date: Wed, 10 Apr 2019 17:54:35 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E5=A4=96=E9=94=AE?= =?UTF-8?q?=E4=B9=8B=E4=BB=93=E5=BA=93=E8=A1=A8jsh=5Fdepot=E7=9B=B8?= =?UTF-8?q?=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/depot.html | 56 +++++++++++++++- .../jsh/erp/controller/DepotController.java | 15 ++++- .../datasource/mappers/DepotHeadMapperEx.java | 2 + .../datasource/mappers/DepotItemMapperEx.java | 2 + .../jsh/erp/service/depot/DepotService.java | 65 +++++++++++++++++-- .../mapper_xml/DepotHeadMapperEx.xml | 20 ++++++ .../mapper_xml/DepotItemMapperEx.xml | 12 ++++ 7 files changed, 162 insertions(+), 10 deletions(-) diff --git a/erp_web/pages/manage/depot.html b/erp_web/pages/manage/depot.html index 43a77881..7dcf02d3 100644 --- a/erp_web/pages/manage/depot.html +++ b/erp_web/pages/manage/depot.html @@ -264,7 +264,17 @@ if(res && res.code == 200) { $("#searchBtn").click(); } else { - $.messager.alert('删除提示', '删除仓库信息失败,请稍后再试!', 'error'); + if(res && res.code == 601){ + var jsondata={}; + jsondata.ids=depotID; + jsondata.deleteType='2'; + var type='single'; + batDeleteDepotForceConfirm(res,"/depot/batchDeleteDepotByIds",jsondata,type); + }else if(res && res.code == 600){ + $.messager.alert('删除提示', res.msg, 'error'); + }else{ + $.messager.alert('删除提示', '删除仓库信息异常,请稍后再试!', 'error'); + } } }, //此处添加错误处理 @@ -308,7 +318,17 @@ $("#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'; + batDeleteDepotForceConfirm(res,"/depot/batchDeleteDepotByIds",jsondata,type); + }else if(res && res.code == 600){ + $.messager.alert('删除提示', res.msg, 'error'); + }else{ + $.messager.alert('删除提示', '删除仓库信息异常,请稍后再试!', 'error'); + } } }, //此处添加错误处理 @@ -321,6 +341,38 @@ }); } } + /** + * 确认强制删除 + * */ + function batDeleteDepotForceConfirm(res,url,jsondata,type) { + $.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'); + }else { + $.messager.alert('删除提示', '删除仓库信息异常,请稍后再试!', 'error'); + } + }, + //此处添加错误处理 + error: function () { + $.messager.alert('删除提示', '删除仓库信息异常,请稍后再试!', 'error'); + return; + } + }); + } + }); + } //增加 var url; diff --git a/src/main/java/com/jsh/erp/controller/DepotController.java b/src/main/java/com/jsh/erp/controller/DepotController.java index f2be6969..6338420d 100644 --- a/src/main/java/com/jsh/erp/controller/DepotController.java +++ b/src/main/java/com/jsh/erp/controller/DepotController.java @@ -185,9 +185,20 @@ public class DepotController { * @return java.lang.Object */ @RequestMapping(value = "/batchDeleteDepotByIds") - public Object batchDeleteDepotByIds(@RequestParam("ids") String ids) throws Exception { + public Object batchDeleteDepotByIds(@RequestParam("ids") String ids,@RequestParam(value="deleteType", + required =false,defaultValue=BusinessConstants.DELETE_TYPE_NORMAL)String deleteType) throws Exception { JSONObject result = ExceptionConstants.standardSuccess(); - int i= depotService.batchDeleteDepotByIds(ids); + int i=0; + if(BusinessConstants.DELETE_TYPE_NORMAL.equals(deleteType)){ + i= depotService.batchDeleteDepotByIdsNormal(ids); + }else if(BusinessConstants.DELETE_TYPE_FORCE.equals(deleteType)){ + i= depotService.batchDeleteDepotByIds(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.DEPOT_DELETE_FAILED_CODE,ExceptionConstants.DEPOT_DELETE_FAILED_MSG,ids); 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 ef489843..1ce76911 100644 --- a/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperEx.java +++ b/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperEx.java @@ -121,4 +121,6 @@ public interface DepotHeadMapperEx { List getDepotHeadListByOrganIds(@Param("organIds") String[] organIds); List getDepotHeadListByHandsPersonIds(@Param("handsPersonIds") String[] handsPersonIds); + + List getDepotHeadListByDepotIds(@Param("depotIds") String[] depotIds); } diff --git a/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java b/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java index 94125578..1d8bca29 100644 --- a/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java +++ b/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java @@ -168,4 +168,6 @@ public interface DepotItemMapperEx { int batchDeleteDepotItemByDepotHeadIds(@Param("depotheadIds")Long []depotHeadIds); int batchDeleteDepotItemByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); + + List getDepotItemListListByDepotIds(@Param("depotIds") String[] depotIds); } diff --git a/src/main/java/com/jsh/erp/service/depot/DepotService.java b/src/main/java/com/jsh/erp/service/depot/DepotService.java index 6e6a2c20..08257030 100644 --- a/src/main/java/com/jsh/erp/service/depot/DepotService.java +++ b/src/main/java/com/jsh/erp/service/depot/DepotService.java @@ -1,13 +1,12 @@ package com.jsh.erp.service.depot; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.jsh.erp.constants.BusinessConstants; -import com.jsh.erp.datasource.entities.Depot; -import com.jsh.erp.datasource.entities.DepotEx; -import com.jsh.erp.datasource.entities.DepotExample; -import com.jsh.erp.datasource.entities.User; -import com.jsh.erp.datasource.mappers.DepotMapper; -import com.jsh.erp.datasource.mappers.DepotMapperEx; +import com.jsh.erp.constants.ExceptionConstants; +import com.jsh.erp.datasource.entities.*; +import com.jsh.erp.datasource.mappers.*; +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; @@ -37,6 +36,10 @@ public class DepotService { private UserService userService; @Resource private LogService logService; + @Resource + private DepotHeadMapperEx depotHeadMapperEx; + @Resource + private DepotItemMapperEx depotItemMapperEx; public Depot getDepot(long id) { return depotMapper.selectByPrimaryKey(id); @@ -122,4 +125,54 @@ public class DepotService { String [] idArray=ids.split(","); return depotMapperEx.batchDeleteDepotByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); } + /** + * create by: qiankunpingtai + * website:https://qiankunpingtai.cn + * description: + * 正常删除,要考虑数据完整性,进行完整性校验 + * create time: 2019/4/10 16:52 + * @Param: ids + * @return int + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteDepotByIdsNormal(String ids) throws Exception { + /** + * 校验 + * 1、单据主表 jsh_depothead + * 2、单据子表 jsh_depotitem + * 是否有相关数据 + * */ + int deleteTotal=0; + if(StringUtils.isEmpty(ids)){ + return deleteTotal; + } + String [] idArray=ids.split(","); + + /** + * 校验单据主表 jsh_depothead + * */ + List depotHeadList=depotHeadMapperEx.getDepotHeadListByDepotIds(idArray); + if(depotHeadList!=null&&depotHeadList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,DepotIds[{}]", + 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_depotitem + * */ + List depotItemList=depotItemMapperEx.getDepotItemListListByDepotIds(idArray); + if(depotItemList!=null&&depotItemList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,DepotIds[{}]", + 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= batchDeleteDepotByIds(ids); + return deleteTotal; + + } } diff --git a/src/main/resources/mapper_xml/DepotHeadMapperEx.xml b/src/main/resources/mapper_xml/DepotHeadMapperEx.xml index bfb03301..a66dbb9e 100644 --- a/src/main/resources/mapper_xml/DepotHeadMapperEx.xml +++ b/src/main/resources/mapper_xml/DepotHeadMapperEx.xml @@ -474,5 +474,25 @@ ) and ifnull(delete_Flag,'0') !='1' + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/DepotItemMapperEx.xml b/src/main/resources/mapper_xml/DepotItemMapperEx.xml index 9633254c..8701ea98 100644 --- a/src/main/resources/mapper_xml/DepotItemMapperEx.xml +++ b/src/main/resources/mapper_xml/DepotItemMapperEx.xml @@ -411,6 +411,18 @@ ) + From bce05cf062c39ceca28fc9d30687acba9e1ecb86 Mon Sep 17 00:00:00 2001 From: qiankunpingtai Date: Wed, 10 Apr 2019 18:14:51 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E5=A4=96=E9=94=AE?= =?UTF-8?q?=E4=B9=8B=E4=BA=A7=E5=93=81=E8=A1=A8jsh=5Fmaterial=E7=9B=B8?= =?UTF-8?q?=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/materials/material.html | 56 ++++++++++++++++++- erp_web/pages/materials/person.html | 2 +- .../erp/controller/MaterialController.java | 15 ++++- .../datasource/mappers/DepotItemMapperEx.java | 2 + .../erp/service/material/MaterialService.java | 45 +++++++++++++++ .../mapper_xml/DepotItemMapperEx.xml | 12 ++++ 6 files changed, 127 insertions(+), 5 deletions(-) diff --git a/erp_web/pages/materials/material.html b/erp_web/pages/materials/material.html index bb52820a..80216199 100644 --- a/erp_web/pages/materials/material.html +++ b/erp_web/pages/materials/material.html @@ -780,7 +780,17 @@ if(res && res.code == 200) { $("#searchBtn").click(); } else { - $.messager.alert('删除提示', '删除商品信息失败,请稍后再试!', 'error'); + if(res && res.code == 601){ + var jsondata={}; + jsondata.ids=materialID; + jsondata.deleteType='2'; + var type='single'; + batDeleteMaterialForceConfirm(res,"/material/batchDeleteMaterialByIds",jsondata,type); + }else if(res && res.code == 600){ + $.messager.alert('删除提示', res.msg, 'error'); + }else{ + $.messager.alert('删除提示', '删除商品信息异常,请稍后再试!', 'error'); + } } }, //此处添加错误处理 @@ -825,7 +835,17 @@ $("#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'; + batDeleteMaterialForceConfirm(res,"/material/batchDeleteMaterialByIds",jsondata,type); + }else if(res && res.code == 600){ + $.messager.alert('删除提示', res.msg, 'error'); + }else{ + $.messager.alert('删除提示', '删除商品信息异常,请稍后再试!', 'error'); + } } }, //此处添加错误处理 @@ -838,6 +858,38 @@ }); } } + /** + * 确认强制删除 + * */ + function batDeleteMaterialForceConfirm(res,url,jsondata,type) { + $.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'); + }else { + $.messager.alert('删除提示', '删除商品信息异常,请稍后再试!', 'error'); + } + }, + //此处添加错误处理 + error: function () { + $.messager.alert('删除提示', '删除商品信息异常,请稍后再试!', 'error'); + return; + } + }); + } + }); + } //批量启用 function setEnableFun() { diff --git a/erp_web/pages/materials/person.html b/erp_web/pages/materials/person.html index 252b7523..22ef2b56 100644 --- a/erp_web/pages/materials/person.html +++ b/erp_web/pages/materials/person.html @@ -315,7 +315,7 @@ } else { if(res && res.code == 601){ var jsondata={}; - jsondata.ids=personID; + jsondata.ids=ids; jsondata.deleteType='2'; var type='batch'; batDeletePersonForceConfirm(res,"/person/batchDeletePersonByIds",jsondata,type); diff --git a/src/main/java/com/jsh/erp/controller/MaterialController.java b/src/main/java/com/jsh/erp/controller/MaterialController.java index b09c3812..d536ae82 100644 --- a/src/main/java/com/jsh/erp/controller/MaterialController.java +++ b/src/main/java/com/jsh/erp/controller/MaterialController.java @@ -353,9 +353,20 @@ public class MaterialController { * @return java.lang.Object */ @RequestMapping(value = "/batchDeleteMaterialByIds") - public Object batchDeleteMaterialByIds(@RequestParam("ids") String ids) throws Exception { + public Object batchDeleteMaterialByIds(@RequestParam("ids") String ids,@RequestParam(value="deleteType", + required =false,defaultValue= BusinessConstants.DELETE_TYPE_NORMAL)String deleteType) throws Exception { JSONObject result = ExceptionConstants.standardSuccess(); - int i= materialService.batchDeleteMaterialByIds(ids); + int i=0; + if(BusinessConstants.DELETE_TYPE_NORMAL.equals(deleteType)){ + i= materialService.batchDeleteMaterialByIdsNormal(ids); + }else if(BusinessConstants.DELETE_TYPE_FORCE.equals(deleteType)){ + i= materialService.batchDeleteMaterialByIds(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.MATERIAL_DELETE_FAILED_CODE,ExceptionConstants.MATERIAL_DELETE_FAILED_MSG,ids); diff --git a/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java b/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java index 1d8bca29..70e71dbe 100644 --- a/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java +++ b/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java @@ -170,4 +170,6 @@ public interface DepotItemMapperEx { int batchDeleteDepotItemByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]); List getDepotItemListListByDepotIds(@Param("depotIds") String[] depotIds); + + List getDepotItemListListByMaterialIds(@Param("materialIds") String[] materialIds); } diff --git a/src/main/java/com/jsh/erp/service/material/MaterialService.java b/src/main/java/com/jsh/erp/service/material/MaterialService.java index 6884551a..7644f1d7 100644 --- a/src/main/java/com/jsh/erp/service/material/MaterialService.java +++ b/src/main/java/com/jsh/erp/service/material/MaterialService.java @@ -1,10 +1,14 @@ package com.jsh.erp.service.material; 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.DepotItemMapperEx; import com.jsh.erp.datasource.mappers.MaterialMapper; import com.jsh.erp.datasource.mappers.MaterialMapperEx; +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.BaseResponseInfo; @@ -32,6 +36,8 @@ public class MaterialService { private LogService logService; @Resource private UserService userService; + @Resource + private DepotItemMapperEx depotItemMapperEx; public Material getMaterial(long id) { return materialMapper.selectByPrimaryKey(id); @@ -217,4 +223,43 @@ public class MaterialService { String [] idArray=ids.split(","); return materialMapperEx.batchDeleteMaterialByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); } + /** + * create by: qiankunpingtai + * website:https://qiankunpingtai.cn + * description: + * 正常删除,要考虑数据完整性,进行完整性校验 + * create time: 2019/4/10 18:00 + * @Param: ids + * @return int + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteMaterialByIdsNormal(String ids) throws Exception{ + /** + * 校验 + * 1、单据子表 jsh_depotitem + * 是否有相关数据 + * */ + int deleteTotal=0; + if(StringUtils.isEmpty(ids)){ + return deleteTotal; + } + String [] idArray=ids.split(","); + + /** + * 校验单据子表 jsh_depotitem + * */ + List depotItemList=depotItemMapperEx.getDepotItemListListByMaterialIds(idArray); + if(depotItemList!=null&&depotItemList.size()>0){ + logger.error("异常码[{}],异常提示[{}],参数,MaterialIds[{}]", + 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= batchDeleteMaterialByIds(ids); + return deleteTotal; + + } } diff --git a/src/main/resources/mapper_xml/DepotItemMapperEx.xml b/src/main/resources/mapper_xml/DepotItemMapperEx.xml index 8701ea98..1679a69d 100644 --- a/src/main/resources/mapper_xml/DepotItemMapperEx.xml +++ b/src/main/resources/mapper_xml/DepotItemMapperEx.xml @@ -423,6 +423,18 @@ ) and ifnull(delete_Flag,'0') !='1' +