Commit cb8d4e0976dc6d69cd177e4fa4e9ac3e902cbcfb

Authored by YunaiV
1 parent a531ba29

✨ CRM:增加回款的待办事项逻辑

yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/CrmReceivableController.java
... ... @@ -164,13 +164,6 @@ public class CrmReceivableController {
164 164 });
165 165 }
166 166  
167   - @GetMapping("/check-receivables-count")
168   - @Operation(summary = "获得待审核回款数量")
169   - @PreAuthorize("@ss.hasPermission('crm:receivable:query')")
170   - public CommonResult<Long> getCheckReceivablesCount() {
171   - return success(receivableService.getCheckReceivablesCount(getLoginUserId()));
172   - }
173   -
174 167 @PutMapping("/submit")
175 168 @Operation(summary = "提交回款审批")
176 169 @PreAuthorize("@ss.hasPermission('crm:receivable:update')")
... ... @@ -179,4 +172,11 @@ public class CrmReceivableController {
179 172 return success(true);
180 173 }
181 174  
  175 + @GetMapping("/audit-count")
  176 + @Operation(summary = "获得待审核回款数量")
  177 + @PreAuthorize("@ss.hasPermission('crm:receivable:query')")
  178 + public CommonResult<Long> getAuditReceivableCount() {
  179 + return success(receivableService.getAuditReceivableCount(getLoginUserId()));
  180 + }
  181 +
182 182 }
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/CrmReceivablePlanController.java
... ... @@ -163,13 +163,6 @@ public class CrmReceivablePlanController {
163 163 });
164 164 }
165 165  
166   - @GetMapping("/remind-receivable-plan-count")
167   - @Operation(summary = "获得待回款提醒数量")
168   - @PreAuthorize("@ss.hasPermission('crm:receivable-plan:query')")
169   - public CommonResult<Long> getRemindReceivablesCount() {
170   - return success(receivablePlanService.getRemindReceivablePlanCount(getLoginUserId()));
171   - }
172   -
173 166 @GetMapping("/simple-list")
174 167 @Operation(summary = "获得回款计划精简列表", description = "获得回款计划精简列表,主要用于前端的下拉选项")
175 168 @Parameters({
... ... @@ -187,4 +180,11 @@ public class CrmReceivablePlanController {
187 180 .setPrice(receivablePlan.getPrice()).setReturnType(receivablePlan.getReturnType())));
188 181 }
189 182  
  183 + @GetMapping("/remind-count")
  184 + @Operation(summary = "获得待回款提醒数量")
  185 + @PreAuthorize("@ss.hasPermission('crm:receivable-plan:query')")
  186 + public CommonResult<Long> getReceivablePlanRemindCount() {
  187 + return success(receivablePlanService.getReceivablePlanRemindCount(getLoginUserId()));
  188 + }
  189 +
190 190 }
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivableMapper.java
... ... @@ -68,13 +68,13 @@ public interface CrmReceivableMapper extends BaseMapperX&lt;CrmReceivableDO&gt; {
68 68 return selectJoinList(CrmReceivableDO.class, query);
69 69 }
70 70  
71   - default Long selectCheckReceivablesCount(Long userId) {
  71 + default Long selectCountByAudit(Long userId) {
72 72 MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>();
73 73 // 我负责的 + 非公海
74 74 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(),
75 75 CrmReceivableDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
76   - // 未提交 or 审核不通过
77   - query.in(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.DRAFT.getStatus(), CrmAuditStatusEnum.REJECT.getStatus());
  76 + // 未审核
  77 + query.eq(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.PROCESS.getStatus());
78 78 return selectCount(query);
79 79 }
80 80  
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivablePlanMapper.java
... ... @@ -60,19 +60,16 @@ public interface CrmReceivablePlanMapper extends BaseMapperX&lt;CrmReceivablePlanDO
60 60 }
61 61  
62 62 // Backlog: 回款提醒类型
63   - // TODO: @dhb52 需要配置 提前提醒天数
64   - int REMIND_DAYS = 20;
65 63 LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
66   - LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now());
67 64 if (CrmReceivablePlanPageReqVO.REMIND_TYPE_NEEDED.equals(pageReqVO.getRemindType())) { // 待回款
68   - query.isNull(CrmReceivablePlanDO::getReceivableId)
69   - .between(CrmReceivablePlanDO::getReturnTime, beginOfToday, endOfToday.plusDays(REMIND_DAYS));
  65 + query.isNull(CrmReceivablePlanDO::getReceivableId) // 未回款
  66 + .lt(CrmReceivablePlanDO::getReturnTime, beginOfToday) // 已逾期
  67 + .lt(CrmReceivablePlanDO::getRemindTime, beginOfToday); // 今天开始提醒
70 68 } else if (CrmReceivablePlanPageReqVO.REMIND_TYPE_EXPIRED.equals(pageReqVO.getRemindType())) { // 已逾期
71   - query.isNull(CrmReceivablePlanDO::getReceivableId)
72   - .lt(CrmReceivablePlanDO::getReturnTime, endOfToday);
  69 + query.isNull(CrmReceivablePlanDO::getReceivableId) // 未回款
  70 + .ge(CrmReceivablePlanDO::getReturnTime, beginOfToday); // 已逾期
73 71 } else if (CrmReceivablePlanPageReqVO.REMIND_TYPE_RECEIVED.equals(pageReqVO.getRemindType())) { // 已回款
74   - query.isNotNull(CrmReceivablePlanDO::getReceivableId)
75   - .between(CrmReceivablePlanDO::getReturnTime, beginOfToday, endOfToday.plusDays(REMIND_DAYS));
  72 + query.isNotNull(CrmReceivablePlanDO::getReceivableId);
76 73 }
77 74 return selectJoinPage(pageReqVO, CrmReceivablePlanDO.class, query);
78 75 }
... ... @@ -86,20 +83,16 @@ public interface CrmReceivablePlanMapper extends BaseMapperX&lt;CrmReceivablePlanDO
86 83 return selectJoinList(CrmReceivablePlanDO.class, query);
87 84 }
88 85  
89   - default Long selectRemindReceivablePlanCount(Long userId) {
  86 + default Long selectReceivablePlanCountByRemind(Long userId) {
90 87 MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>();
91 88 // 我负责的 + 非公海
92 89 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(),
93 90 CrmReceivablePlanDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE);
94   - // TODO: @dhb52 需要配置 提前提醒天数
95   - int REMIND_DAYS = 20;
  91 + // 未回款 + 已逾期 + 今天开始提醒
96 92 LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
97   - LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now());
98   - query.isNull(CrmReceivablePlanDO::getReceivableId)
99   - .between(CrmReceivablePlanDO::getReturnTime, beginOfToday, endOfToday.plusDays(REMIND_DAYS));
100   - // TODO return_time 小于现在;
101   - // TODO 未回款
102   - // TODO remind_time 大于现在;
  93 + query.isNull(CrmReceivablePlanDO::getReceivableId) // 未回款
  94 + .lt(CrmReceivablePlanDO::getReturnTime, beginOfToday) // 已逾期
  95 + .lt(CrmReceivablePlanDO::getRemindTime, beginOfToday); // 今天开始提醒
103 96 return selectCount(query);
104 97 }
105 98  
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/job/package-info.java
1 1 /**
2   - * TODO 芋艿:临时占位,后续可删除
  2 + * 定时任务
3 3 */
4 4 package cn.iocoder.yudao.module.crm.job;
5 5 \ No newline at end of file
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
... ... @@ -222,7 +222,7 @@ public class CrmContractServiceImpl implements CrmContractService {
222 222 success = CRM_CONTRACT_DELETE_SUCCESS)
223 223 @CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTRACT, bizId = "#id", level = CrmPermissionLevelEnum.OWNER)
224 224 public void deleteContract(Long id) {
225   - // TODO @合同待定:如果被 CrmReceivableDO 所使用,则不允许删除
  225 + // TODO @puhui999:如果被 CrmReceivableDO 所使用,则不允许删除
226 226 // 校验存在
227 227 CrmContractDO contract = validateContractExists(id);
228 228 // 删除
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanService.java
... ... @@ -90,6 +90,6 @@ public interface CrmReceivablePlanService {
90 90 * @param userId 用户编号
91 91 * @return 提醒数量
92 92 */
93   - Long getRemindReceivablePlanCount(Long userId);
  93 + Long getReceivablePlanRemindCount(Long userId);
94 94  
95 95 }
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanServiceImpl.java
... ... @@ -184,8 +184,8 @@ public class CrmReceivablePlanServiceImpl implements CrmReceivablePlanService {
184 184 }
185 185  
186 186 @Override
187   - public Long getRemindReceivablePlanCount(Long userId) {
188   - return receivablePlanMapper.selectRemindReceivablePlanCount(userId);
  187 + public Long getReceivablePlanRemindCount(Long userId) {
  188 + return receivablePlanMapper.selectReceivablePlanCountByRemind(userId);
189 189 }
190 190  
191 191 }
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableService.java
... ... @@ -110,9 +110,9 @@ public interface CrmReceivableService {
110 110 * 获得待审核回款数量
111 111 *
112 112 * @param userId 用户编号
113   - * @return 提醒数量
  113 + * @return 待审批数量
114 114 */
115   - Long getCheckReceivablesCount(Long userId);
  115 + Long getAuditReceivableCount(Long userId);
116 116  
117 117 /**
118 118 * 获得合同已回款金额 Map
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableServiceImpl.java
... ... @@ -212,7 +212,7 @@ public class CrmReceivableServiceImpl implements CrmReceivableService {
212 212 if (receivable.getPlanId() != null && receivablePlanService.getReceivablePlan(receivable.getPlanId()) != null) {
213 213 throw exception(RECEIVABLE_DELETE_FAIL);
214 214 }
215   - // TODO @芋艿:审批通过时,不允许删除;
  215 + // TODO @puhui999:审批通过时,不允许删除;
216 216  
217 217 // 2. 删除
218 218 receivableMapper.deleteById(id);
... ... @@ -280,8 +280,8 @@ public class CrmReceivableServiceImpl implements CrmReceivableService {
280 280 }
281 281  
282 282 @Override
283   - public Long getCheckReceivablesCount(Long userId) {
284   - return receivableMapper.selectCheckReceivablesCount(userId);
  283 + public Long getAuditReceivableCount(Long userId) {
  284 + return receivableMapper.selectCountByAudit(userId);
285 285 }
286 286  
287 287 @Override
... ...