mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 18:28:43 +08:00 
			
		
		
		
	✨ CRM:待办事项(接入合同)
This commit is contained in:
		| @@ -215,18 +215,18 @@ public class CrmContractController { | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     @GetMapping("/check-contract-count") | ||||
|     @GetMapping("/audit-count") | ||||
|     @Operation(summary = "获得待审核合同数量") | ||||
|     @PreAuthorize("@ss.hasPermission('crm:contract:query')") | ||||
|     public CommonResult<Long> getCheckContractCount() { | ||||
|         return success(contractService.getCheckContractCount(getLoginUserId())); | ||||
|     public CommonResult<Long> getAuditContractCount() { | ||||
|         return success(contractService.getAuditContractCount(getLoginUserId())); | ||||
|     } | ||||
|  | ||||
|     @GetMapping("/end-contract-count") | ||||
|     @Operation(summary = "获得即将到期的合同数量") | ||||
|     @GetMapping("/remind-count") | ||||
|     @Operation(summary = "获得即将到期(提醒)的合同数量") | ||||
|     @PreAuthorize("@ss.hasPermission('crm:contract:query')") | ||||
|     public CommonResult<Long> getEndContractCount() { | ||||
|         return success(contractService.getEndContractCount(getLoginUserId())); | ||||
|     public CommonResult<Long> getRemindContractCount() { | ||||
|         return success(contractService.getRemindContractCount(getLoginUserId())); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||||
| import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||||
| import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractPageReqVO; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractConfigDO; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO; | ||||
| import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum; | ||||
| import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; | ||||
| @@ -49,7 +50,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { | ||||
|                 .orderByDesc(CrmContractDO::getId)); | ||||
|     } | ||||
|  | ||||
|     default PageResult<CrmContractDO> selectPage(CrmContractPageReqVO pageReqVO, Long userId) { | ||||
|     default PageResult<CrmContractDO> selectPage(CrmContractPageReqVO pageReqVO, Long userId, CrmContractConfigDO config) { | ||||
|         MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); | ||||
|         // 拼接数据权限的查询条件 | ||||
|         CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), | ||||
| @@ -67,10 +68,8 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { | ||||
|         LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now()); | ||||
|         LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now()); | ||||
|         if (CrmContractPageReqVO.EXPIRY_TYPE_ABOUT_TO_EXPIRE.equals(pageReqVO.getExpiryType())) { // 即将到期 | ||||
|             // TODO: @芋艿 需要配置 提前提醒天数 | ||||
|             int REMIND_DAYS = 20; | ||||
|             query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.APPROVE.getStatus()) | ||||
|                     .between(CrmContractDO::getEndTime, beginOfToday, endOfToday.plusDays(REMIND_DAYS)); | ||||
|                     .between(CrmContractDO::getEndTime, beginOfToday, endOfToday.plusDays(config.getNotifyDays())); | ||||
|         } else if (CrmContractPageReqVO.EXPIRY_TYPE_EXPIRED.equals(pageReqVO.getExpiryType())) { // 已到期 | ||||
|             query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.APPROVE.getStatus()) | ||||
|                     .lt(CrmContractDO::getEndTime, endOfToday); | ||||
| @@ -95,17 +94,17 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { | ||||
|         return selectCount(CrmContractDO::getBusinessId, businessId); | ||||
|     } | ||||
|  | ||||
|     default Long selectCheckContractCount(Long userId) { | ||||
|     default Long selectCountByAudit(Long userId) { | ||||
|         MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); | ||||
|         // 我负责的 + 非公海 | ||||
|         CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), | ||||
|                 CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); | ||||
|         // 未提交 or 审核不通过 | ||||
|         query.in(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.DRAFT.getStatus(), CrmAuditStatusEnum.REJECT.getStatus()); | ||||
|         // 未审核 | ||||
|         query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.PROCESS.getStatus()); | ||||
|         return selectCount(query); | ||||
|     } | ||||
|  | ||||
|     default Long selectEndContractCount(Long userId) { | ||||
|     default Long selectCountByRemind(Long userId, CrmContractConfigDO config) { | ||||
|         MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); | ||||
|         // 我负责的 + 非公海 | ||||
|         CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), | ||||
| @@ -113,10 +112,8 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { | ||||
|         // 即将到期 | ||||
|         LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now()); | ||||
|         LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now()); | ||||
|         // TODO: @dhb52 需要配置 提前提醒天数 | ||||
|         int REMIND_DAYS = 20; | ||||
|         query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.APPROVE.getStatus()) | ||||
|                 .between(CrmContractDO::getEndTime, beginOfToday, endOfToday.plusDays(REMIND_DAYS)); | ||||
|         query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.APPROVE.getStatus()) // 必须审批通过! | ||||
|                 .between(CrmContractDO::getEndTime, beginOfToday, endOfToday.plusDays(config.getNotifyDays())); | ||||
|         return selectCount(query); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -162,14 +162,14 @@ public interface CrmContractService { | ||||
|      * @param userId 用户编号 | ||||
|      * @return 提醒数量 | ||||
|      */ | ||||
|     Long getCheckContractCount(Long userId); | ||||
|     Long getAuditContractCount(Long userId); | ||||
|  | ||||
|     /** | ||||
|      * 获得即将到期的合同数量 | ||||
|      * 获得即将到期(提醒)的合同数量 | ||||
|      * | ||||
|      * @param userId 用户编号 | ||||
|      * @return 提醒数量 | ||||
|      */ | ||||
|     Long getEndContractCount(Long userId); | ||||
|     Long getRemindContractCount(Long userId); | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractPageReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractSaveReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.contract.CrmContractTransferReqVO; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractConfigDO; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractProductDO; | ||||
| import cn.iocoder.yudao.module.crm.dal.mysql.contract.CrmContractMapper; | ||||
| @@ -83,6 +84,8 @@ public class CrmContractServiceImpl implements CrmContractService { | ||||
|     private CrmBusinessService businessService; | ||||
|     @Resource | ||||
|     private CrmContactService contactService; | ||||
|     @Resource | ||||
|     private CrmContractConfigService contractConfigService; | ||||
|  | ||||
|     @Resource | ||||
|     private AdminUserApi adminUserApi; | ||||
| @@ -172,8 +175,6 @@ public class CrmContractServiceImpl implements CrmContractService { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     // TODO @合同待定:缺一个取消合同的接口;只有草稿、审批中可以取消;CrmAuditStatusEnum | ||||
|  | ||||
|     /** | ||||
|      * 校验关联数据是否存在 | ||||
|      * | ||||
| @@ -314,7 +315,7 @@ public class CrmContractServiceImpl implements CrmContractService { | ||||
|         contractMapper.updateById(new CrmContractDO().setId(id).setAuditStatus(auditStatus)); | ||||
|     } | ||||
|  | ||||
|     //======================= 查询相关 ======================= | ||||
|     // ======================= 查询相关 ======================= | ||||
|  | ||||
|     @Override | ||||
|     @CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTRACT, bizId = "#id", level = CrmPermissionLevelEnum.READ) | ||||
| @@ -332,7 +333,16 @@ public class CrmContractServiceImpl implements CrmContractService { | ||||
|  | ||||
|     @Override | ||||
|     public PageResult<CrmContractDO> getContractPage(CrmContractPageReqVO pageReqVO, Long userId) { | ||||
|         return contractMapper.selectPage(pageReqVO, userId); | ||||
|         // 1. 即将到期,需要查询合同配置 | ||||
|         CrmContractConfigDO config = null; | ||||
|         if (CrmContractPageReqVO.EXPIRY_TYPE_ABOUT_TO_EXPIRE.equals(pageReqVO.getExpiryType())) { | ||||
|             config = contractConfigService.getContractConfig(); | ||||
|             if (config != null && Boolean.FALSE.equals(config.getNotifyEnabled())) { | ||||
|                 config = null; | ||||
|             } | ||||
|         } | ||||
|         // 2. 查询分页 | ||||
|         return contractMapper.selectPage(pageReqVO, userId, config); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
| @@ -367,16 +377,18 @@ public class CrmContractServiceImpl implements CrmContractService { | ||||
|         return contractProductMapper.selectListByContractId(contactId); | ||||
|     } | ||||
|  | ||||
|     // TODO @合同待定:需要新增一个 ContractConfigDO 表,合同配置,重点是到期提醒; | ||||
|  | ||||
|     @Override | ||||
|     public Long getCheckContractCount(Long userId) { | ||||
|         return contractMapper.selectCheckContractCount(userId); | ||||
|     public Long getAuditContractCount(Long userId) { | ||||
|         return contractMapper.selectCountByAudit(userId); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Long getEndContractCount(Long userId) { | ||||
|         return contractMapper.selectEndContractCount(userId); | ||||
|     public Long getRemindContractCount(Long userId) { | ||||
|         CrmContractConfigDO config = contractConfigService.getContractConfig(); | ||||
|         if (config == null || Boolean.FALSE.equals(config.getNotifyEnabled())) { | ||||
|             return 0L; | ||||
|         } | ||||
|         return contractMapper.selectCountByRemind(userId, config); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV