From 39738fcb9dcf6e64466d27c37bff85d03f6c5b82 Mon Sep 17 00:00:00 2001 From: hupeng Date: Fri, 20 Dec 2024 13:21:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=90=8C=E5=9B=9E=E6=AC=BE=E5=8F=91?= =?UTF-8?q?=E7=A5=A8=E6=B5=81=E7=A8=8B=E5=AE=A1=E6=A0=B8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yshop-crm/pom.xml | 2 +- yshop-crm/yshop-dependencies/pom.xml | 2 +- .../admin/crmflow/CrmFlowController.java | 10 ++++- .../crmcontract/CrmContractServiceImpl.java | 13 +++++- .../CrmContractReceivablesServiceImpl.java | 14 ++++++- .../crm/service/crmflow/CrmFlowService.java | 5 ++- .../service/crmflow/CrmFlowServiceImpl.java | 40 ++++++++++++------- .../crminvoice/CrmInvoiceServiceImpl.java | 13 +++++- 8 files changed, 78 insertions(+), 21 deletions(-) diff --git a/yshop-crm/pom.xml b/yshop-crm/pom.xml index 7b03868..d4d0fde 100644 --- a/yshop-crm/pom.xml +++ b/yshop-crm/pom.xml @@ -27,7 +27,7 @@ https://gitee.com/guchengwuyue/yshop-crm - 1.0.0 + 1.1.3 17 ${java.version} diff --git a/yshop-crm/yshop-dependencies/pom.xml b/yshop-crm/yshop-dependencies/pom.xml index c50d2c9..20f42d3 100644 --- a/yshop-crm/yshop-dependencies/pom.xml +++ b/yshop-crm/yshop-dependencies/pom.xml @@ -14,7 +14,7 @@ https://gitee.com/guchengwuyue/yshop-crm - 1.0.0 + 1.1.3 1.5.0 3.2.2 diff --git a/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/controller/admin/crmflow/CrmFlowController.java b/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/controller/admin/crmflow/CrmFlowController.java index 1b30c0f..10c5d0d 100644 --- a/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/controller/admin/crmflow/CrmFlowController.java +++ b/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/controller/admin/crmflow/CrmFlowController.java @@ -95,7 +95,15 @@ public class CrmFlowController { @Operation(summary = "获得审批人列表") @Parameter(name = "flowType", description = "contract") public CommonResult> getFlowUserIds(@RequestParam("flowType") String flowType) { - return success(flowService.getFlowUserIds(flowType)); + return success(flowService.getFlowUserIds(flowType,0L)); + } + + @DeleteMapping("/delete-step") + @Operation(summary = "删除审批步骤") + @Parameter(name = "id", description = "编号", required = true) + public CommonResult deleteFlowStep(@RequestParam("id") Long id) { + flowService.deleteFlowStep(id); + return success(true); } diff --git a/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crmcontract/CrmContractServiceImpl.java b/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crmcontract/CrmContractServiceImpl.java index 9637b72..1fb385a 100644 --- a/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crmcontract/CrmContractServiceImpl.java +++ b/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crmcontract/CrmContractServiceImpl.java @@ -34,6 +34,7 @@ import co.yixiang.yshop.module.crm.enums.ContractStatusEnum; import co.yixiang.yshop.module.crm.enums.FlowStepEnum; import co.yixiang.yshop.module.crm.enums.RelationEnum; import co.yixiang.yshop.module.crm.enums.TypesEnum; +import co.yixiang.yshop.module.crm.service.crmflow.CrmFlowService; import co.yixiang.yshop.module.crm.service.crmoperatelog.CrmOperatelogService; import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrvalue.StoreProductAttrValueDO; import co.yixiang.yshop.module.product.dal.mysql.storeproduct.StoreProductMapper; @@ -102,6 +103,8 @@ public class CrmContractServiceImpl implements CrmContractService { private CrmOperatelogService crmOperatelogService; @Resource private AdminUserApi adminUserApi; + @Resource + private CrmFlowService flowService; private static final String LOCK_KEY = "contract:check:lock"; @@ -294,6 +297,15 @@ public class CrmContractServiceImpl implements CrmContractService { .nickname(SecurityFrameworkUtils.getLoginUserNickname()) .build(); + CrmFlowStepDO crmFlowStepDO = flowStepMapper.selectById(crmContractDO.getStepId()); + if(crmFlowStepDO == null){ + throw exception(new ErrorCode(202412042,"当前审核人不存在无法审核!")); + } + List userIds = flowService.getFlowUserIds("",crmFlowStepDO.getId()); + if(!userIds.contains(loginAdminId)){ + throw exception(new ErrorCode(202412041,"当前审核人已经变更无法审核!")); + } + RLock lock = redissonClient.getLock(LOCK_KEY); if (lock.tryLock()) { //加锁防止并发审核 @@ -306,7 +318,6 @@ public class CrmContractServiceImpl implements CrmContractService { crmContractDO.setCheckAdminId(checkAdminId); if(ShopCommonEnum.AGREE_1.getValue().equals(checkInfoVO.getAgreeType())){ //查询当前合同处于那一步骤 - CrmFlowStepDO crmFlowStepDO = flowStepMapper.selectById(crmContractDO.getStepId()); if(crmFlowStepDO.getRelation() < count){ crmContractDO.setCheckStatus(ContractStatusEnum.STATUS_1.getValue()); //判断当前步骤是不是最后一个人,如果是 开始审核后开始存储下一步信息 diff --git a/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crmcontractreceivables/CrmContractReceivablesServiceImpl.java b/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crmcontractreceivables/CrmContractReceivablesServiceImpl.java index ce783ea..3e4bca6 100644 --- a/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crmcontractreceivables/CrmContractReceivablesServiceImpl.java +++ b/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crmcontractreceivables/CrmContractReceivablesServiceImpl.java @@ -24,6 +24,7 @@ import co.yixiang.yshop.module.crm.enums.ContractStatusEnum; import co.yixiang.yshop.module.crm.enums.FlowStepEnum; import co.yixiang.yshop.module.crm.enums.RelationEnum; import co.yixiang.yshop.module.crm.enums.TypesEnum; +import co.yixiang.yshop.module.crm.service.crmflow.CrmFlowService; import co.yixiang.yshop.module.crm.service.crmoperatelog.CrmOperatelogService; import co.yixiang.yshop.module.system.api.user.AdminUserApi; import co.yixiang.yshop.module.system.dal.dataobject.user.AdminUserDO; @@ -85,6 +86,8 @@ public class CrmContractReceivablesServiceImpl implements CrmContractReceivables private CrmFlowLogMapper crmFlowLogMapper; @Resource private AdminUserApi adminUserApi; + @Resource + private CrmFlowService flowService; private static final String LOCK_KEY = "receivables:check:lock"; @@ -238,6 +241,16 @@ public class CrmContractReceivablesServiceImpl implements CrmContractReceivables .nickname(SecurityFrameworkUtils.getLoginUserNickname()) .build(); + CrmFlowStepDO crmFlowStepDO = flowStepMapper.selectById(receivablesDO.getStepId()); + if(crmFlowStepDO == null){ + throw exception(new ErrorCode(202412044,"当前审核人不存在无法审核!")); + } + List userIds = flowService.getFlowUserIds("",crmFlowStepDO.getId()); + if(!userIds.contains(loginAdminId)){ + throw exception(new ErrorCode(202412043,"当前审核人已经变更无法审核!")); + } + + RLock lock = redissonClient.getLock(LOCK_KEY); if (lock.tryLock()) { //加锁防止并发审核 @@ -250,7 +263,6 @@ public class CrmContractReceivablesServiceImpl implements CrmContractReceivables receivablesDO.setCheckAdminId(checkAdminId); if(ShopCommonEnum.AGREE_1.getValue().equals(checkInfoVO.getAgreeType())){ //查询当前合同处于那一步骤 - CrmFlowStepDO crmFlowStepDO = flowStepMapper.selectById(receivablesDO.getStepId()); if(crmFlowStepDO.getRelation() < count){ receivablesDO.setCheckStatus(ContractStatusEnum.STATUS_1.getValue()); //判断当前步骤是不是最后一个人,如果是 开始审核后开始存储下一步信息 diff --git a/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crmflow/CrmFlowService.java b/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crmflow/CrmFlowService.java index 3f6072e..8eb1509 100644 --- a/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crmflow/CrmFlowService.java +++ b/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crmflow/CrmFlowService.java @@ -66,8 +66,11 @@ public interface CrmFlowService { /** * 获取第一级审核人 * @param flowType + * @param stepId 不揍ID! * @return */ - List getFlowUserIds(String flowType); + List getFlowUserIds(String flowType,Long stepId); + + void deleteFlowStep(Long id); } \ No newline at end of file diff --git a/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crmflow/CrmFlowServiceImpl.java b/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crmflow/CrmFlowServiceImpl.java index b551770..a613732 100644 --- a/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crmflow/CrmFlowServiceImpl.java +++ b/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crmflow/CrmFlowServiceImpl.java @@ -107,19 +107,25 @@ public class CrmFlowServiceImpl implements CrmFlowService { } @Override - public List getFlowUserIds(String flowType) { + public List getFlowUserIds(String flowType,Long stepId) { List list = new ArrayList<>(); - CrmFlowDO crmFlowDO = flowMapper.selectOne(new LambdaQueryWrapper() - .eq(CrmFlowDO::getTypes,flowType) - .orderByDesc(CrmFlowDO::getId) - .last("limit 1")); - if(crmFlowDO == null){ - return list; + CrmFlowStepDO crmFlowStepDO = null; + if(stepId > 0){ + crmFlowStepDO = flowStepMapper.selectById(stepId); + }else{ + CrmFlowDO crmFlowDO = flowMapper.selectOne(new LambdaQueryWrapper() + .eq(CrmFlowDO::getTypes,flowType) + .orderByDesc(CrmFlowDO::getId) + .last("limit 1")); + if(crmFlowDO == null){ + return list; + } + crmFlowStepDO = flowStepMapper.selectOne(new LambdaQueryWrapper() + .eq(CrmFlowStepDO::getFlowId,crmFlowDO.getId()) + .orderByAsc(CrmFlowStepDO::getId) + .last("limit 1")); } - CrmFlowStepDO crmFlowStepDO = flowStepMapper.selectOne(new LambdaQueryWrapper() - .eq(CrmFlowStepDO::getFlowId,crmFlowDO.getId()) - .orderByAsc(CrmFlowStepDO::getId) - .last("limit 1")); + if(FlowStepEnum.TYPE_2.getValue().equals(crmFlowStepDO.getType())){ list.add(crmFlowStepDO.getAdminIds()); }else if(FlowStepEnum.TYPE_3.getValue().equals(crmFlowStepDO.getType())){ @@ -143,13 +149,19 @@ public class CrmFlowServiceImpl implements CrmFlowService { } private void updateFlowStepList(Long flowId, List list) { - deleteFlowStepByFlowId(flowId); - list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 - createFlowStepList(flowId, list); + flowStepMapper.updateBatch(list); +// deleteFlowStepByFlowId(flowId); +// list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 +// createFlowStepList(flowId, list); } private void deleteFlowStepByFlowId(Long flowId) { flowStepMapper.deleteByFlowId(flowId); } + @Override + public void deleteFlowStep(Long id) { + flowStepMapper.deleteById(id); + } + } \ No newline at end of file diff --git a/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crminvoice/CrmInvoiceServiceImpl.java b/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crminvoice/CrmInvoiceServiceImpl.java index 79d3580..0b04266 100644 --- a/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crminvoice/CrmInvoiceServiceImpl.java +++ b/yshop-crm/yshop-module-crm/yshop-module-crm-biz/src/main/java/co/yixiang/yshop/module/crm/service/crminvoice/CrmInvoiceServiceImpl.java @@ -26,6 +26,7 @@ import co.yixiang.yshop.module.crm.dal.mysql.crmflow.CrmFlowStepMapper; import co.yixiang.yshop.module.crm.dal.mysql.crmflowlog.CrmFlowLogMapper; import co.yixiang.yshop.module.crm.dal.mysql.crminvoice.CrmInvoiceMapper; import co.yixiang.yshop.module.crm.enums.*; +import co.yixiang.yshop.module.crm.service.crmflow.CrmFlowService; import co.yixiang.yshop.module.system.api.user.AdminUserApi; import co.yixiang.yshop.module.system.dal.dataobject.user.AdminUserDO; import co.yixiang.yshop.module.system.dal.mysql.user.AdminUserMapper; @@ -79,6 +80,8 @@ public class CrmInvoiceServiceImpl implements CrmInvoiceService { private AdminUserMapper userMapper; @Resource private CrmFlowLogMapper crmFlowLogMapper; + @Resource + private CrmFlowService flowService; private static final String LOCK_KEY = "invoice:check:lock"; @@ -225,6 +228,15 @@ public class CrmInvoiceServiceImpl implements CrmInvoiceService { .nickname(SecurityFrameworkUtils.getLoginUserNickname()) .build(); + CrmFlowStepDO crmFlowStepDO = flowStepMapper.selectById(invoiceDO.getStepId()); + if(crmFlowStepDO == null){ + throw exception(new ErrorCode(202412045,"当前审核人不存在无法审核!")); + } + List userIds = flowService.getFlowUserIds("",crmFlowStepDO.getId()); + if(!userIds.contains(loginAdminId)){ + throw exception(new ErrorCode(202412046,"当前审核人已经变更无法审核!")); + } + RLock lock = redissonClient.getLock(LOCK_KEY); if (lock.tryLock()) { //加锁防止并发审核 @@ -237,7 +249,6 @@ public class CrmInvoiceServiceImpl implements CrmInvoiceService { invoiceDO.setCheckAdminId(checkAdminId); if(ShopCommonEnum.AGREE_1.getValue().equals(checkInfoVO.getAgreeType())){ //查询当前合同处于那一步骤 - CrmFlowStepDO crmFlowStepDO = flowStepMapper.selectById(invoiceDO.getStepId()); if(crmFlowStepDO.getRelation() < count){ invoiceDO.setCheckStatus(ContractStatusEnum.STATUS_1.getValue()); //判断当前步骤是不是最后一个人,如果是 开始审核后开始存储下一步信息