Commit 53ebd39c73783018faf09723b1e4ea68caa432ef
1 parent
0b0830f4
✨ CRM:待办事项(接入合同)
Showing
4 changed files
with
41 additions
and
32 deletions
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/CrmContractController.java
| ... | ... | @@ -215,18 +215,18 @@ public class CrmContractController { |
| 215 | 215 | }); |
| 216 | 216 | } |
| 217 | 217 | |
| 218 | - @GetMapping("/check-contract-count") | |
| 218 | + @GetMapping("/audit-count") | |
| 219 | 219 | @Operation(summary = "获得待审核合同数量") |
| 220 | 220 | @PreAuthorize("@ss.hasPermission('crm:contract:query')") |
| 221 | - public CommonResult<Long> getCheckContractCount() { | |
| 222 | - return success(contractService.getCheckContractCount(getLoginUserId())); | |
| 221 | + public CommonResult<Long> getAuditContractCount() { | |
| 222 | + return success(contractService.getAuditContractCount(getLoginUserId())); | |
| 223 | 223 | } |
| 224 | 224 | |
| 225 | - @GetMapping("/end-contract-count") | |
| 226 | - @Operation(summary = "获得即将到期的合同数量") | |
| 225 | + @GetMapping("/remind-count") | |
| 226 | + @Operation(summary = "获得即将到期(提醒)的合同数量") | |
| 227 | 227 | @PreAuthorize("@ss.hasPermission('crm:contract:query')") |
| 228 | - public CommonResult<Long> getEndContractCount() { | |
| 229 | - return success(contractService.getEndContractCount(getLoginUserId())); | |
| 228 | + public CommonResult<Long> getRemindContractCount() { | |
| 229 | + return success(contractService.getRemindContractCount(getLoginUserId())); | |
| 230 | 230 | } |
| 231 | 231 | |
| 232 | 232 | } | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contract/CrmContractMapper.java
| ... | ... | @@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 6 | 6 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 7 | 7 | import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; |
| 8 | 8 | import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractPageReqVO; |
| 9 | +import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractConfigDO; | |
| 9 | 10 | import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO; |
| 10 | 11 | import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum; |
| 11 | 12 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; |
| ... | ... | @@ -49,7 +50,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { |
| 49 | 50 | .orderByDesc(CrmContractDO::getId)); |
| 50 | 51 | } |
| 51 | 52 | |
| 52 | - default PageResult<CrmContractDO> selectPage(CrmContractPageReqVO pageReqVO, Long userId) { | |
| 53 | + default PageResult<CrmContractDO> selectPage(CrmContractPageReqVO pageReqVO, Long userId, CrmContractConfigDO config) { | |
| 53 | 54 | MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); |
| 54 | 55 | // 拼接数据权限的查询条件 |
| 55 | 56 | CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), |
| ... | ... | @@ -67,10 +68,8 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { |
| 67 | 68 | LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now()); |
| 68 | 69 | LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now()); |
| 69 | 70 | if (CrmContractPageReqVO.EXPIRY_TYPE_ABOUT_TO_EXPIRE.equals(pageReqVO.getExpiryType())) { // 即将到期 |
| 70 | - // TODO: @芋艿 需要配置 提前提醒天数 | |
| 71 | - int REMIND_DAYS = 20; | |
| 72 | 71 | query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.APPROVE.getStatus()) |
| 73 | - .between(CrmContractDO::getEndTime, beginOfToday, endOfToday.plusDays(REMIND_DAYS)); | |
| 72 | + .between(CrmContractDO::getEndTime, beginOfToday, endOfToday.plusDays(config.getNotifyDays())); | |
| 74 | 73 | } else if (CrmContractPageReqVO.EXPIRY_TYPE_EXPIRED.equals(pageReqVO.getExpiryType())) { // 已到期 |
| 75 | 74 | query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.APPROVE.getStatus()) |
| 76 | 75 | .lt(CrmContractDO::getEndTime, endOfToday); |
| ... | ... | @@ -95,17 +94,17 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { |
| 95 | 94 | return selectCount(CrmContractDO::getBusinessId, businessId); |
| 96 | 95 | } |
| 97 | 96 | |
| 98 | - default Long selectCheckContractCount(Long userId) { | |
| 97 | + default Long selectCountByAudit(Long userId) { | |
| 99 | 98 | MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); |
| 100 | 99 | // 我负责的 + 非公海 |
| 101 | 100 | CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), |
| 102 | 101 | CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); |
| 103 | - // 未提交 or 审核不通过 | |
| 104 | - query.in(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.DRAFT.getStatus(), CrmAuditStatusEnum.REJECT.getStatus()); | |
| 102 | + // 未审核 | |
| 103 | + query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.PROCESS.getStatus()); | |
| 105 | 104 | return selectCount(query); |
| 106 | 105 | } |
| 107 | 106 | |
| 108 | - default Long selectEndContractCount(Long userId) { | |
| 107 | + default Long selectCountByRemind(Long userId, CrmContractConfigDO config) { | |
| 109 | 108 | MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); |
| 110 | 109 | // 我负责的 + 非公海 |
| 111 | 110 | CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), |
| ... | ... | @@ -113,10 +112,8 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { |
| 113 | 112 | // 即将到期 |
| 114 | 113 | LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now()); |
| 115 | 114 | LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now()); |
| 116 | - // TODO: @dhb52 需要配置 提前提醒天数 | |
| 117 | - int REMIND_DAYS = 20; | |
| 118 | - query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.APPROVE.getStatus()) | |
| 119 | - .between(CrmContractDO::getEndTime, beginOfToday, endOfToday.plusDays(REMIND_DAYS)); | |
| 115 | + query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.APPROVE.getStatus()) // 必须审批通过! | |
| 116 | + .between(CrmContractDO::getEndTime, beginOfToday, endOfToday.plusDays(config.getNotifyDays())); | |
| 120 | 117 | return selectCount(query); |
| 121 | 118 | } |
| 122 | 119 | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractService.java
| ... | ... | @@ -162,14 +162,14 @@ public interface CrmContractService { |
| 162 | 162 | * @param userId 用户编号 |
| 163 | 163 | * @return 提醒数量 |
| 164 | 164 | */ |
| 165 | - Long getCheckContractCount(Long userId); | |
| 165 | + Long getAuditContractCount(Long userId); | |
| 166 | 166 | |
| 167 | 167 | /** |
| 168 | - * 获得即将到期的合同数量 | |
| 168 | + * 获得即将到期(提醒)的合同数量 | |
| 169 | 169 | * |
| 170 | 170 | * @param userId 用户编号 |
| 171 | 171 | * @return 提醒数量 |
| 172 | 172 | */ |
| 173 | - Long getEndContractCount(Long userId); | |
| 173 | + Long getRemindContractCount(Long userId); | |
| 174 | 174 | |
| 175 | 175 | } | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
| ... | ... | @@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; |
| 13 | 13 | import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractPageReqVO; |
| 14 | 14 | import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractSaveReqVO; |
| 15 | 15 | import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractTransferReqVO; |
| 16 | +import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractConfigDO; | |
| 16 | 17 | import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO; |
| 17 | 18 | import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractProductDO; |
| 18 | 19 | import cn.iocoder.yudao.module.crm.dal.mysql.contract.CrmContractMapper; |
| ... | ... | @@ -83,6 +84,8 @@ public class CrmContractServiceImpl implements CrmContractService { |
| 83 | 84 | private CrmBusinessService businessService; |
| 84 | 85 | @Resource |
| 85 | 86 | private CrmContactService contactService; |
| 87 | + @Resource | |
| 88 | + private CrmContractConfigService contractConfigService; | |
| 86 | 89 | |
| 87 | 90 | @Resource |
| 88 | 91 | private AdminUserApi adminUserApi; |
| ... | ... | @@ -172,8 +175,6 @@ public class CrmContractServiceImpl implements CrmContractService { |
| 172 | 175 | } |
| 173 | 176 | } |
| 174 | 177 | |
| 175 | - // TODO @合同待定:缺一个取消合同的接口;只有草稿、审批中可以取消;CrmAuditStatusEnum | |
| 176 | - | |
| 177 | 178 | /** |
| 178 | 179 | * 校验关联数据是否存在 |
| 179 | 180 | * |
| ... | ... | @@ -314,7 +315,7 @@ public class CrmContractServiceImpl implements CrmContractService { |
| 314 | 315 | contractMapper.updateById(new CrmContractDO().setId(id).setAuditStatus(auditStatus)); |
| 315 | 316 | } |
| 316 | 317 | |
| 317 | - //======================= 查询相关 ======================= | |
| 318 | + // ======================= 查询相关 ======================= | |
| 318 | 319 | |
| 319 | 320 | @Override |
| 320 | 321 | @CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTRACT, bizId = "#id", level = CrmPermissionLevelEnum.READ) |
| ... | ... | @@ -332,7 +333,16 @@ public class CrmContractServiceImpl implements CrmContractService { |
| 332 | 333 | |
| 333 | 334 | @Override |
| 334 | 335 | public PageResult<CrmContractDO> getContractPage(CrmContractPageReqVO pageReqVO, Long userId) { |
| 335 | - return contractMapper.selectPage(pageReqVO, userId); | |
| 336 | + // 1. 即将到期,需要查询合同配置 | |
| 337 | + CrmContractConfigDO config = null; | |
| 338 | + if (CrmContractPageReqVO.EXPIRY_TYPE_ABOUT_TO_EXPIRE.equals(pageReqVO.getExpiryType())) { | |
| 339 | + config = contractConfigService.getContractConfig(); | |
| 340 | + if (config != null && Boolean.FALSE.equals(config.getNotifyEnabled())) { | |
| 341 | + config = null; | |
| 342 | + } | |
| 343 | + } | |
| 344 | + // 2. 查询分页 | |
| 345 | + return contractMapper.selectPage(pageReqVO, userId, config); | |
| 336 | 346 | } |
| 337 | 347 | |
| 338 | 348 | @Override |
| ... | ... | @@ -367,16 +377,18 @@ public class CrmContractServiceImpl implements CrmContractService { |
| 367 | 377 | return contractProductMapper.selectListByContractId(contactId); |
| 368 | 378 | } |
| 369 | 379 | |
| 370 | - // TODO @合同待定:需要新增一个 ContractConfigDO 表,合同配置,重点是到期提醒; | |
| 371 | - | |
| 372 | 380 | @Override |
| 373 | - public Long getCheckContractCount(Long userId) { | |
| 374 | - return contractMapper.selectCheckContractCount(userId); | |
| 381 | + public Long getAuditContractCount(Long userId) { | |
| 382 | + return contractMapper.selectCountByAudit(userId); | |
| 375 | 383 | } |
| 376 | 384 | |
| 377 | 385 | @Override |
| 378 | - public Long getEndContractCount(Long userId) { | |
| 379 | - return contractMapper.selectEndContractCount(userId); | |
| 386 | + public Long getRemindContractCount(Long userId) { | |
| 387 | + CrmContractConfigDO config = contractConfigService.getContractConfig(); | |
| 388 | + if (config == null || Boolean.FALSE.equals(config.getNotifyEnabled())) { | |
| 389 | + return 0L; | |
| 390 | + } | |
| 391 | + return contractMapper.selectCountByRemind(userId, config); | |
| 380 | 392 | } |
| 381 | 393 | |
| 382 | 394 | } | ... | ... |