Commit 72969e921ecc2e0317592b8cf6e5f3c0cd16f56f
1 parent
f02b9464
crm: 增加基于客户查询回款计划分页
Showing
23 changed files
with
204 additions
and
541 deletions
sql/mysql/crm.sql
sql/mysql/crm_data.sql
| 1 | - | ||
| 2 | -INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (184, '回款审批状态', 'crm_receivable_check_status', 0, '回款审批状态(0 未审核 1 审核通过 2 审核拒绝 3 审核中 4 已撤回)', '1', '2023-10-18 21:44:24', '1', '2023-10-18 21:44:24', b'0', '1970-01-01 00:00:00'); | ||
| 3 | - | ||
| 4 | -INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (185, '回款-回款方式', 'crm_return_type', 0, '回款-回款方式', '1', '2023-10-18 21:54:10', '1', '2023-10-18 21:54:10', b'0', '1970-01-01 00:00:00'); | ||
| 5 | - | ||
| 6 | - | ||
| 7 | -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1389, 0, '未审核', '0', 'crm_receivable_check_status', 0, 'default', '', '0 未审核 ', '1', '2023-10-18 21:46:00', '1', '2023-10-18 21:47:16', b'0'); | ||
| 8 | -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1390, 1, '审核通过', '1', 'crm_receivable_check_status', 0, 'default', '', '1 审核通过', '1', '2023-10-18 21:46:18', '1', '2023-10-18 21:47:08', b'0'); | ||
| 9 | -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1391, 2, '审核拒绝', '2', 'crm_receivable_check_status', 0, 'default', '', ' 2 审核拒绝', '1', '2023-10-18 21:46:58', '1', '2023-10-18 21:47:21', b'0'); | ||
| 10 | -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1392, 3, '审核中', '3', 'crm_receivable_check_status', 0, 'default', '', ' 3 审核中', '1', '2023-10-18 21:47:35', '1', '2023-10-18 21:47:35', b'0'); | ||
| 11 | -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1393, 4, '已撤回', '4', 'crm_receivable_check_status', 0, 'default', '', ' 4 已撤回', '1', '2023-10-18 21:47:46', '1', '2023-10-18 21:47:46', b'0'); | ||
| 12 | - | ||
| 13 | -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1394, 1, '支票', '1', 'crm_return_type', 0, 'default', '', '', '1', '2023-10-18 21:54:29', '1', '2023-10-18 21:54:29', b'0'); | ||
| 14 | -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1395, 2, '现金', '2', 'crm_return_type', 0, 'default', '', '', '1', '2023-10-18 21:54:41', '1', '2023-10-18 21:54:41', b'0'); | ||
| 15 | -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1396, 3, '邮政汇款', '3', 'crm_return_type', 0, 'default', '', '', '1', '2023-10-18 21:54:53', '1', '2023-10-18 21:54:53', b'0'); | ||
| 16 | -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1397, 4, '电汇', '4', 'crm_return_type', 0, 'default', '', '', '1', '2023-10-18 21:55:07', '1', '2023-10-18 21:55:07', b'0'); | ||
| 17 | -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1398, 5, '网上转账', '5', 'crm_return_type', 0, 'default', '', '', '1', '2023-10-18 21:55:24', '1', '2023-10-18 21:55:24', b'0'); | ||
| 18 | -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1399, 6, '支付宝', '6', 'crm_return_type', 0, 'default', '', '', '1', '2023-10-18 21:55:38', '1', '2023-10-18 21:55:38', b'0'); | ||
| 19 | -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1400, 7, '微信支付', '7', 'crm_return_type', 0, 'default', '', '', '1', '2023-10-18 21:55:53', '1', '2023-10-18 21:55:53', b'0'); | ||
| 20 | -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1401, 8, '其他', '8', 'crm_return_type', 0, 'default', '', '', '1', '2023-10-18 21:56:06', '1', '2023-10-18 21:56:06', b'0'); |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/clue/package-info.java deleted
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/package-info.java deleted
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/CrmReceivableController.java
| @@ -99,7 +99,7 @@ public class CrmReceivableController { | @@ -99,7 +99,7 @@ public class CrmReceivableController { | ||
| 99 | 99 | ||
| 100 | @GetMapping("/page-by-customer") | 100 | @GetMapping("/page-by-customer") |
| 101 | @Operation(summary = "获得回款分页,基于指定客户") | 101 | @Operation(summary = "获得回款分页,基于指定客户") |
| 102 | - public CommonResult<PageResult<CrmReceivableRespVO>> getContractPageByCustomer(@Valid CrmReceivablePageReqVO pageReqVO) { | 102 | + public CommonResult<PageResult<CrmReceivableRespVO>> getReceivablePageByCustomer(@Valid CrmReceivablePageReqVO pageReqVO) { |
| 103 | Assert.notNull(pageReqVO.getCustomerId(), "客户编号不能为空"); | 103 | Assert.notNull(pageReqVO.getCustomerId(), "客户编号不能为空"); |
| 104 | PageResult<CrmReceivableDO> pageResult = receivableService.getReceivablePageByCustomer(pageReqVO); | 104 | PageResult<CrmReceivableDO> pageResult = receivableService.getReceivablePageByCustomer(pageReqVO); |
| 105 | return success(convertDetailReceivablePage(pageResult)); | 105 | return success(convertDetailReceivablePage(pageResult)); |
| @@ -125,19 +125,19 @@ public class CrmReceivableController { | @@ -125,19 +125,19 @@ public class CrmReceivableController { | ||
| 125 | * @return 详细的回款分页 | 125 | * @return 详细的回款分页 |
| 126 | */ | 126 | */ |
| 127 | private PageResult<CrmReceivableRespVO> convertDetailReceivablePage(PageResult<CrmReceivableDO> pageResult) { | 127 | private PageResult<CrmReceivableRespVO> convertDetailReceivablePage(PageResult<CrmReceivableDO> pageResult) { |
| 128 | - List<CrmReceivableDO> contactList = pageResult.getList(); | ||
| 129 | - if (CollUtil.isEmpty(contactList)) { | 128 | + List<CrmReceivableDO> receivableList = pageResult.getList(); |
| 129 | + if (CollUtil.isEmpty(receivableList)) { | ||
| 130 | return PageResult.empty(pageResult.getTotal()); | 130 | return PageResult.empty(pageResult.getTotal()); |
| 131 | } | 131 | } |
| 132 | // 1. 获取客户列表 | 132 | // 1. 获取客户列表 |
| 133 | List<CrmCustomerDO> customerList = customerService.getCustomerList( | 133 | List<CrmCustomerDO> customerList = customerService.getCustomerList( |
| 134 | - convertSet(contactList, CrmReceivableDO::getCustomerId)); | 134 | + convertSet(receivableList, CrmReceivableDO::getCustomerId)); |
| 135 | // 2. 获取创建人、负责人列表 | 135 | // 2. 获取创建人、负责人列表 |
| 136 | - Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertListByFlatMap(contactList, | 136 | + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertListByFlatMap(receivableList, |
| 137 | contact -> Stream.of(NumberUtils.parseLong(contact.getCreator()), contact.getOwnerUserId()))); | 137 | contact -> Stream.of(NumberUtils.parseLong(contact.getCreator()), contact.getOwnerUserId()))); |
| 138 | // 3. 获得合同列表 | 138 | // 3. 获得合同列表 |
| 139 | List<CrmContractDO> contractList = contractService.getContractList( | 139 | List<CrmContractDO> contractList = contractService.getContractList( |
| 140 | - convertSet(contactList, CrmReceivableDO::getContractId)); | 140 | + convertSet(receivableList, CrmReceivableDO::getContractId)); |
| 141 | return CrmReceivableConvert.INSTANCE.convertPage(pageResult, userMap, customerList, contractList); | 141 | return CrmReceivableConvert.INSTANCE.convertPage(pageResult, userMap, customerList, contractList); |
| 142 | } | 142 | } |
| 143 | 143 |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/CrmReceivablePlanController.java
| 1 | package cn.iocoder.yudao.module.crm.controller.admin.receivable; | 1 | package cn.iocoder.yudao.module.crm.controller.admin.receivable; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.collection.CollUtil; | ||
| 4 | +import cn.hutool.core.lang.Assert; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | +import cn.iocoder.yudao.framework.common.util.number.NumberUtils; | ||
| 5 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | 8 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| 6 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | 9 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 7 | -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; | 10 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanCreateReqVO; |
| 11 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanPageReqVO; | ||
| 12 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanRespVO; | ||
| 13 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanUpdateReqVO; | ||
| 8 | import cn.iocoder.yudao.module.crm.convert.receivable.CrmReceivablePlanConvert; | 14 | import cn.iocoder.yudao.module.crm.convert.receivable.CrmReceivablePlanConvert; |
| 15 | +import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO; | ||
| 16 | +import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; | ||
| 17 | +import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivableDO; | ||
| 9 | import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; | 18 | import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; |
| 19 | +import cn.iocoder.yudao.module.crm.service.contract.CrmContractService; | ||
| 20 | +import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService; | ||
| 10 | import cn.iocoder.yudao.module.crm.service.receivable.CrmReceivablePlanService; | 21 | import cn.iocoder.yudao.module.crm.service.receivable.CrmReceivablePlanService; |
| 22 | +import cn.iocoder.yudao.module.crm.service.receivable.CrmReceivableService; | ||
| 23 | +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | ||
| 24 | +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | ||
| 11 | import io.swagger.v3.oas.annotations.Operation; | 25 | import io.swagger.v3.oas.annotations.Operation; |
| 12 | import io.swagger.v3.oas.annotations.Parameter; | 26 | import io.swagger.v3.oas.annotations.Parameter; |
| 13 | import io.swagger.v3.oas.annotations.tags.Tag; | 27 | import io.swagger.v3.oas.annotations.tags.Tag; |
| @@ -20,8 +34,12 @@ import javax.servlet.http.HttpServletResponse; | @@ -20,8 +34,12 @@ import javax.servlet.http.HttpServletResponse; | ||
| 20 | import javax.validation.Valid; | 34 | import javax.validation.Valid; |
| 21 | import java.io.IOException; | 35 | import java.io.IOException; |
| 22 | import java.util.List; | 36 | import java.util.List; |
| 37 | +import java.util.Map; | ||
| 38 | +import java.util.stream.Stream; | ||
| 23 | 39 | ||
| 24 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | 40 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 41 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertListByFlatMap; | ||
| 42 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | ||
| 25 | import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; | 43 | import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; |
| 26 | 44 | ||
| 27 | @Tag(name = "管理后台 - CRM 回款计划") | 45 | @Tag(name = "管理后台 - CRM 回款计划") |
| @@ -31,20 +49,29 @@ import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.E | @@ -31,20 +49,29 @@ import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.E | ||
| 31 | public class CrmReceivablePlanController { | 49 | public class CrmReceivablePlanController { |
| 32 | 50 | ||
| 33 | @Resource | 51 | @Resource |
| 34 | - private CrmReceivablePlanService crmReceivablePlanService; | 52 | + private CrmReceivablePlanService receivablePlanService; |
| 53 | + @Resource | ||
| 54 | + private CrmReceivableService receivableService; | ||
| 55 | + @Resource | ||
| 56 | + private CrmContractService contractService; | ||
| 57 | + @Resource | ||
| 58 | + private CrmCustomerService customerService; | ||
| 59 | + | ||
| 60 | + @Resource | ||
| 61 | + private AdminUserApi adminUserApi; | ||
| 35 | 62 | ||
| 36 | @PostMapping("/create") | 63 | @PostMapping("/create") |
| 37 | @Operation(summary = "创建回款计划") | 64 | @Operation(summary = "创建回款计划") |
| 38 | @PreAuthorize("@ss.hasPermission('crm:receivable-plan:create')") | 65 | @PreAuthorize("@ss.hasPermission('crm:receivable-plan:create')") |
| 39 | public CommonResult<Long> createReceivablePlan(@Valid @RequestBody CrmReceivablePlanCreateReqVO createReqVO) { | 66 | public CommonResult<Long> createReceivablePlan(@Valid @RequestBody CrmReceivablePlanCreateReqVO createReqVO) { |
| 40 | - return success(crmReceivablePlanService.createReceivablePlan(createReqVO)); | 67 | + return success(receivablePlanService.createReceivablePlan(createReqVO)); |
| 41 | } | 68 | } |
| 42 | 69 | ||
| 43 | @PutMapping("/update") | 70 | @PutMapping("/update") |
| 44 | @Operation(summary = "更新回款计划") | 71 | @Operation(summary = "更新回款计划") |
| 45 | @PreAuthorize("@ss.hasPermission('crm:receivable-plan:update')") | 72 | @PreAuthorize("@ss.hasPermission('crm:receivable-plan:update')") |
| 46 | public CommonResult<Boolean> updateReceivablePlan(@Valid @RequestBody CrmReceivablePlanUpdateReqVO updateReqVO) { | 73 | public CommonResult<Boolean> updateReceivablePlan(@Valid @RequestBody CrmReceivablePlanUpdateReqVO updateReqVO) { |
| 47 | - crmReceivablePlanService.updateReceivablePlan(updateReqVO); | 74 | + receivablePlanService.updateReceivablePlan(updateReqVO); |
| 48 | return success(true); | 75 | return success(true); |
| 49 | } | 76 | } |
| 50 | 77 | ||
| @@ -53,7 +80,7 @@ public class CrmReceivablePlanController { | @@ -53,7 +80,7 @@ public class CrmReceivablePlanController { | ||
| 53 | @Parameter(name = "id", description = "编号", required = true) | 80 | @Parameter(name = "id", description = "编号", required = true) |
| 54 | @PreAuthorize("@ss.hasPermission('crm:receivable-plan:delete')") | 81 | @PreAuthorize("@ss.hasPermission('crm:receivable-plan:delete')") |
| 55 | public CommonResult<Boolean> deleteReceivablePlan(@RequestParam("id") Long id) { | 82 | public CommonResult<Boolean> deleteReceivablePlan(@RequestParam("id") Long id) { |
| 56 | - crmReceivablePlanService.deleteReceivablePlan(id); | 83 | + receivablePlanService.deleteReceivablePlan(id); |
| 57 | return success(true); | 84 | return success(true); |
| 58 | } | 85 | } |
| 59 | 86 | ||
| @@ -62,28 +89,63 @@ public class CrmReceivablePlanController { | @@ -62,28 +89,63 @@ public class CrmReceivablePlanController { | ||
| 62 | @Parameter(name = "id", description = "编号", required = true, example = "1024") | 89 | @Parameter(name = "id", description = "编号", required = true, example = "1024") |
| 63 | @PreAuthorize("@ss.hasPermission('crm:receivable-plan:query')") | 90 | @PreAuthorize("@ss.hasPermission('crm:receivable-plan:query')") |
| 64 | public CommonResult<CrmReceivablePlanRespVO> getReceivablePlan(@RequestParam("id") Long id) { | 91 | public CommonResult<CrmReceivablePlanRespVO> getReceivablePlan(@RequestParam("id") Long id) { |
| 65 | - CrmReceivablePlanDO receivablePlan = crmReceivablePlanService.getReceivablePlan(id); | 92 | + CrmReceivablePlanDO receivablePlan = receivablePlanService.getReceivablePlan(id); |
| 66 | return success(CrmReceivablePlanConvert.INSTANCE.convert(receivablePlan)); | 93 | return success(CrmReceivablePlanConvert.INSTANCE.convert(receivablePlan)); |
| 67 | } | 94 | } |
| 68 | 95 | ||
| 69 | @GetMapping("/page") | 96 | @GetMapping("/page") |
| 70 | @Operation(summary = "获得回款计划分页") | 97 | @Operation(summary = "获得回款计划分页") |
| 71 | @PreAuthorize("@ss.hasPermission('crm:receivable-plan:query')") | 98 | @PreAuthorize("@ss.hasPermission('crm:receivable-plan:query')") |
| 72 | - public CommonResult<PageResult<CrmReceivablePlanRespVO>> getReceivablePlanPage(@Valid CrmReceivablePlanPageReqVO pageVO) { | ||
| 73 | - PageResult<CrmReceivablePlanDO> pageResult = crmReceivablePlanService.getReceivablePlanPage(pageVO); | ||
| 74 | - return success(CrmReceivablePlanConvert.INSTANCE.convertPage(pageResult)); | 99 | + public CommonResult<PageResult<CrmReceivablePlanRespVO>> getReceivablePlanPage(@Valid CrmReceivablePlanPageReqVO pageReqVO) { |
| 100 | + PageResult<CrmReceivablePlanDO> pageResult = receivablePlanService.getReceivablePlanPage(pageReqVO); | ||
| 101 | + return success(convertDetailReceivablePlanPage(pageResult)); | ||
| 75 | } | 102 | } |
| 76 | 103 | ||
| 104 | + @GetMapping("/page-by-customer") | ||
| 105 | + @Operation(summary = "获得回款计划分页,基于指定客户") | ||
| 106 | + public CommonResult<PageResult<CrmReceivablePlanRespVO>> getReceivablePlanPageByCustomer(@Valid CrmReceivablePlanPageReqVO pageReqVO) { | ||
| 107 | + Assert.notNull(pageReqVO.getCustomerId(), "客户编号不能为空"); | ||
| 108 | + PageResult<CrmReceivablePlanDO> pageResult = receivablePlanService.getReceivablePlanPageByCustomer(pageReqVO); | ||
| 109 | + return success(convertDetailReceivablePlanPage(pageResult)); | ||
| 110 | + } | ||
| 111 | + | ||
| 112 | + // TODO 芋艿:后面在优化导出 | ||
| 77 | @GetMapping("/export-excel") | 113 | @GetMapping("/export-excel") |
| 78 | @Operation(summary = "导出回款计划 Excel") | 114 | @Operation(summary = "导出回款计划 Excel") |
| 79 | @PreAuthorize("@ss.hasPermission('crm:receivable-plan:export')") | 115 | @PreAuthorize("@ss.hasPermission('crm:receivable-plan:export')") |
| 80 | @OperateLog(type = EXPORT) | 116 | @OperateLog(type = EXPORT) |
| 81 | - public void exportReceivablePlanExcel(@Valid CrmReceivablePlanExportReqVO exportReqVO, | 117 | + public void exportReceivablePlanExcel(@Valid CrmReceivablePlanPageReqVO exportReqVO, |
| 82 | HttpServletResponse response) throws IOException { | 118 | HttpServletResponse response) throws IOException { |
| 83 | - List<CrmReceivablePlanDO> list = crmReceivablePlanService.getReceivablePlanList(exportReqVO); | 119 | + PageResult<CrmReceivablePlanDO> pageResult = receivablePlanService.getReceivablePlanPage(exportReqVO); |
| 84 | // 导出 Excel | 120 | // 导出 Excel |
| 85 | - List<CrmReceivablePlanExcelVO> datas = CrmReceivablePlanConvert.INSTANCE.convertList02(list); | ||
| 86 | - ExcelUtils.write(response, "回款计划.xls", "数据", CrmReceivablePlanExcelVO.class, datas); | 121 | + ExcelUtils.write(response, "回款计划.xls", "数据", CrmReceivablePlanRespVO.class, |
| 122 | + convertDetailReceivablePlanPage(pageResult).getList()); | ||
| 123 | + } | ||
| 124 | + | ||
| 125 | + /** | ||
| 126 | + * 转换成详细的回款计划分页,即读取关联信息 | ||
| 127 | + * | ||
| 128 | + * @param pageResult 回款计划分页 | ||
| 129 | + * @return 详细的回款计划分页 | ||
| 130 | + */ | ||
| 131 | + private PageResult<CrmReceivablePlanRespVO> convertDetailReceivablePlanPage(PageResult<CrmReceivablePlanDO> pageResult) { | ||
| 132 | + List<CrmReceivablePlanDO> receivablePlanList = pageResult.getList(); | ||
| 133 | + if (CollUtil.isEmpty(receivablePlanList)) { | ||
| 134 | + return PageResult.empty(pageResult.getTotal()); | ||
| 135 | + } | ||
| 136 | + // 1. 获取客户列表 | ||
| 137 | + List<CrmCustomerDO> customerList = customerService.getCustomerList( | ||
| 138 | + convertSet(receivablePlanList, CrmReceivablePlanDO::getCustomerId)); | ||
| 139 | + // 2. 获取创建人、负责人列表 | ||
| 140 | + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertListByFlatMap(receivablePlanList, | ||
| 141 | + contact -> Stream.of(NumberUtils.parseLong(contact.getCreator()), contact.getOwnerUserId()))); | ||
| 142 | + // 3. 获得合同列表 | ||
| 143 | + List<CrmContractDO> contractList = contractService.getContractList( | ||
| 144 | + convertSet(receivablePlanList, CrmReceivablePlanDO::getContractId)); | ||
| 145 | + // 4. 获得还款列表 | ||
| 146 | + List<CrmReceivableDO> receivableList = receivableService.getReceivableList( | ||
| 147 | + convertSet(receivablePlanList, CrmReceivablePlanDO::getReceivableId)); | ||
| 148 | + return CrmReceivablePlanConvert.INSTANCE.convertPage(pageResult, userMap, customerList, contractList, receivableList); | ||
| 87 | } | 149 | } |
| 88 | 150 | ||
| 89 | } | 151 | } |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanExcelVO.java deleted
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | ||
| 4 | -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | ||
| 5 | -import cn.iocoder.yudao.module.system.enums.DictTypeConstants; | ||
| 6 | -import com.alibaba.excel.annotation.ExcelProperty; | ||
| 7 | -import lombok.Data; | ||
| 8 | - | ||
| 9 | -import java.time.LocalDateTime; | ||
| 10 | - | ||
| 11 | -// TODO liuhongfeng:导出可以等其它功能做完,统一在搞; | ||
| 12 | -/** | ||
| 13 | - * CRM 回款计划 Excel VO | ||
| 14 | - * | ||
| 15 | - * @author 芋道源码 | ||
| 16 | - */ | ||
| 17 | -@Data | ||
| 18 | -public class CrmReceivablePlanExcelVO { | ||
| 19 | - | ||
| 20 | - @ExcelProperty("ID") | ||
| 21 | - private Long id; | ||
| 22 | - | ||
| 23 | - @ExcelProperty("期数") | ||
| 24 | - private Integer period; | ||
| 25 | - | ||
| 26 | - @ExcelProperty("回款ID") | ||
| 27 | - private Long receivableId; | ||
| 28 | - | ||
| 29 | - @ExcelProperty(value = "状态", converter = DictConvert.class) | ||
| 30 | - @DictFormat(DictTypeConstants.COMMON_STATUS) | ||
| 31 | - private Integer status; | ||
| 32 | - | ||
| 33 | - @ExcelProperty(value = "审批状态", converter = DictConvert.class) | ||
| 34 | - @DictFormat(cn.iocoder.yudao.module.crm.enums.DictTypeConstants.CRM_AUDIT_STATUS) | ||
| 35 | - private Integer checkStatus; | ||
| 36 | - | ||
| 37 | - //@ExcelProperty("工作流编号") | ||
| 38 | - //private Long processInstanceId; | ||
| 39 | - | ||
| 40 | - @ExcelProperty("计划回款金额") | ||
| 41 | - private Integer price; | ||
| 42 | - | ||
| 43 | - @ExcelProperty("计划回款日期") | ||
| 44 | - private LocalDateTime returnTime; | ||
| 45 | - | ||
| 46 | - @ExcelProperty("提前几天提醒") | ||
| 47 | - private Integer remindDays; | ||
| 48 | - | ||
| 49 | - @ExcelProperty("提醒日期") | ||
| 50 | - private LocalDateTime remindTime; | ||
| 51 | - | ||
| 52 | - @ExcelProperty("客户ID") | ||
| 53 | - private Long customerId; | ||
| 54 | - | ||
| 55 | - @ExcelProperty("合同名称") | ||
| 56 | - private Long contractId; | ||
| 57 | - | ||
| 58 | - @ExcelProperty("负责人") | ||
| 59 | - private Long ownerUserId; | ||
| 60 | - | ||
| 61 | - //@ExcelProperty("显示顺序") | ||
| 62 | - //private Integer sort; | ||
| 63 | - | ||
| 64 | - @ExcelProperty("备注") | ||
| 65 | - private String remark; | ||
| 66 | - | ||
| 67 | - @ExcelProperty("创建时间") | ||
| 68 | - private LocalDateTime createTime; | ||
| 69 | - | ||
| 70 | -} |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanExportReqVO.java deleted
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; | ||
| 2 | - | ||
| 3 | -import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | -import lombok.Data; | ||
| 5 | -import org.springframework.format.annotation.DateTimeFormat; | ||
| 6 | - | ||
| 7 | -import java.time.LocalDateTime; | ||
| 8 | - | ||
| 9 | -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 10 | - | ||
| 11 | -// TODO liuhongfeng:导出可以等其它功能做完,统一在搞; | ||
| 12 | -@Schema(description = "管理后台 - CRM 回款计划 Excel 导出 Request VO,参数和 CrmReceivablePlanPageReqVO 是一致的") | ||
| 13 | -@Data | ||
| 14 | -public class CrmReceivablePlanExportReqVO { | ||
| 15 | - | ||
| 16 | - @Schema(description = "期数") | ||
| 17 | - private Integer period; | ||
| 18 | - | ||
| 19 | - @Schema(description = "完成状态", example = "2") | ||
| 20 | - private Integer status; | ||
| 21 | - | ||
| 22 | - @Schema(description = "审批状态", example = "1") | ||
| 23 | - private Integer checkStatus; | ||
| 24 | - | ||
| 25 | - @Schema(description = "计划回款日期") | ||
| 26 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 27 | - private LocalDateTime[] returnTime; | ||
| 28 | - | ||
| 29 | - @Schema(description = "提前几天提醒") | ||
| 30 | - private Integer remindDays; | ||
| 31 | - | ||
| 32 | - @Schema(description = "提醒日期") | ||
| 33 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 34 | - private LocalDateTime[] remindTime; | ||
| 35 | - | ||
| 36 | - @Schema(description = "客户名称", example = "18026") | ||
| 37 | - private Long customerId; | ||
| 38 | - | ||
| 39 | - @Schema(description = "合同名称", example = "3473") | ||
| 40 | - private Long contractId; | ||
| 41 | - | ||
| 42 | - @Schema(description = "负责人", example = "17828") | ||
| 43 | - private Long ownerUserId; | ||
| 44 | - | ||
| 45 | - @Schema(description = "备注", example = "随便") | ||
| 46 | - private String remark; | ||
| 47 | - | ||
| 48 | - @Schema(description = "创建时间") | ||
| 49 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 50 | - private LocalDateTime[] createTime; | ||
| 51 | - | ||
| 52 | -} |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanBaseVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/plan/CrmReceivablePlanBaseVO.java
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; | 1 | +package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.common.validation.InEnum; | ||
| 4 | -import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum; | ||
| 5 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 6 | import lombok.Data; | 4 | import lombok.Data; |
| 7 | import org.springframework.format.annotation.DateTimeFormat; | 5 | import org.springframework.format.annotation.DateTimeFormat; |
| @@ -20,17 +18,9 @@ public class CrmReceivablePlanBaseVO { | @@ -20,17 +18,9 @@ public class CrmReceivablePlanBaseVO { | ||
| 20 | @Schema(description = "期数", example = "1") | 18 | @Schema(description = "期数", example = "1") |
| 21 | private Integer period; | 19 | private Integer period; |
| 22 | 20 | ||
| 23 | - // TODO @liuhongfeng:回款计划编号 | ||
| 24 | - @Schema(description = "回款计划", example = "19852") | 21 | + @Schema(description = "回款计划编号", example = "19852") |
| 25 | private Long receivableId; | 22 | private Long receivableId; |
| 26 | 23 | ||
| 27 | - @Schema(description = "完成状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") | ||
| 28 | - private Integer status; | ||
| 29 | - | ||
| 30 | - @Schema(description = "审批状态", example = "1") | ||
| 31 | - @InEnum(CrmAuditStatusEnum.class) | ||
| 32 | - private Integer checkStatus; | ||
| 33 | - | ||
| 34 | @Schema(description = "计划回款金额", example = "29675") | 24 | @Schema(description = "计划回款金额", example = "29675") |
| 35 | private Integer price; | 25 | private Integer price; |
| 36 | 26 | ||
| @@ -45,16 +35,14 @@ public class CrmReceivablePlanBaseVO { | @@ -45,16 +35,14 @@ public class CrmReceivablePlanBaseVO { | ||
| 45 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 35 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 46 | private LocalDateTime remindTime; | 36 | private LocalDateTime remindTime; |
| 47 | 37 | ||
| 48 | - // TODO @liuhongfeng:客户编号 | ||
| 49 | @Schema(description = "客户名称", example = "18026") | 38 | @Schema(description = "客户名称", example = "18026") |
| 50 | private Long customerId; | 39 | private Long customerId; |
| 51 | 40 | ||
| 52 | - // TODO @liuhongfeng:合同编号 | ||
| 53 | - @Schema(description = "合同名称", example = "3473") | 41 | + @Schema(description = "合同编号", example = "3473") |
| 54 | private Long contractId; | 42 | private Long contractId; |
| 55 | 43 | ||
| 56 | // TODO @liuhongfeng:负责人编号 | 44 | // TODO @liuhongfeng:负责人编号 |
| 57 | - @Schema(description = "负责人", example = "17828") | 45 | + @Schema(description = "负责人编号", example = "17828") |
| 58 | private Long ownerUserId; | 46 | private Long ownerUserId; |
| 59 | 47 | ||
| 60 | @Schema(description = "显示顺序") | 48 | @Schema(description = "显示顺序") |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanCreateReqVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/plan/CrmReceivablePlanCreateReqVO.java
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanPageReqVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/plan/CrmReceivablePlanPageReqVO.java
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; | 1 | +package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 4 | import io.swagger.v3.oas.annotations.media.Schema; | 4 | import io.swagger.v3.oas.annotations.media.Schema; |
| 5 | import lombok.Data; | 5 | import lombok.Data; |
| 6 | import lombok.EqualsAndHashCode; | 6 | import lombok.EqualsAndHashCode; |
| 7 | import lombok.ToString; | 7 | import lombok.ToString; |
| 8 | -import org.springframework.format.annotation.DateTimeFormat; | ||
| 9 | - | ||
| 10 | -import java.time.LocalDateTime; | ||
| 11 | - | ||
| 12 | -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 13 | 8 | ||
| 14 | @Schema(description = "管理后台 - CRM 回款计划分页 Request VO") | 9 | @Schema(description = "管理后台 - CRM 回款计划分页 Request VO") |
| 15 | @Data | 10 | @Data |
| @@ -17,33 +12,11 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ | @@ -17,33 +12,11 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ | ||
| 17 | @ToString(callSuper = true) | 12 | @ToString(callSuper = true) |
| 18 | public class CrmReceivablePlanPageReqVO extends PageParam { | 13 | public class CrmReceivablePlanPageReqVO extends PageParam { |
| 19 | 14 | ||
| 20 | - // TODO @liuhongfeng:可以根据需求,去除掉一些不要的过滤条件;另外,customerId、contractId、ownerUserId 注释不正确,应该都是对应的编号 | ||
| 21 | - | ||
| 22 | - @Schema(description = "完成状态", example = "2") | ||
| 23 | - private Integer status; | ||
| 24 | - | ||
| 25 | - @Schema(description = "审批状态", example = "1") | ||
| 26 | - private Integer checkStatus; | ||
| 27 | - | ||
| 28 | - @Schema(description = "计划回款日期") | ||
| 29 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 30 | - private LocalDateTime[] returnTime; | ||
| 31 | - | ||
| 32 | - @Schema(description = "提醒日期") | ||
| 33 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 34 | - private LocalDateTime[] remindTime; | ||
| 35 | - | ||
| 36 | - @Schema(description = "客户名称", example = "18026") | 15 | + @Schema(description = "客户编号", example = "18026") |
| 37 | private Long customerId; | 16 | private Long customerId; |
| 38 | 17 | ||
| 18 | + // TODO @芋艿:这个搜的应该是合同编号 no | ||
| 39 | @Schema(description = "合同名称", example = "3473") | 19 | @Schema(description = "合同名称", example = "3473") |
| 40 | private Long contractId; | 20 | private Long contractId; |
| 41 | 21 | ||
| 42 | - @Schema(description = "负责人", example = "17828") | ||
| 43 | - private Long ownerUserId; | ||
| 44 | - | ||
| 45 | - @Schema(description = "创建时间") | ||
| 46 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 47 | - private LocalDateTime[] createTime; | ||
| 48 | - | ||
| 49 | } | 22 | } |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanRespVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/plan/CrmReceivablePlanRespVO.java
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; | 1 | +package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan; |
| 2 | 2 | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import lombok.*; | 4 | import lombok.*; |
| @@ -16,4 +16,25 @@ public class CrmReceivablePlanRespVO extends CrmReceivablePlanBaseVO { | @@ -16,4 +16,25 @@ public class CrmReceivablePlanRespVO extends CrmReceivablePlanBaseVO { | ||
| 16 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) | 16 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) |
| 17 | private LocalDateTime createTime; | 17 | private LocalDateTime createTime; |
| 18 | 18 | ||
| 19 | + @Schema(description = "客户名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "test") | ||
| 20 | + private String customerName; | ||
| 21 | + | ||
| 22 | + @Schema(description = "合同编号", example = "Q110") | ||
| 23 | + private String contractNo; | ||
| 24 | + | ||
| 25 | + @Schema(description = "负责人", example = "test") | ||
| 26 | + private String ownerUserName; | ||
| 27 | + | ||
| 28 | + @Schema(description = "创建人", example = "25682") | ||
| 29 | + private String creator; | ||
| 30 | + | ||
| 31 | + @Schema(description = "创建人名字", example = "test") | ||
| 32 | + private String creatorName; | ||
| 33 | + | ||
| 34 | + @Schema(description = "完成状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") | ||
| 35 | + private Boolean finishStatus; | ||
| 36 | + | ||
| 37 | + @Schema(description = "回款方式", example = "1") // 来自 Receivable 的 returnType 字段 | ||
| 38 | + private Integer returnType; | ||
| 39 | + | ||
| 19 | } | 40 | } |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanUpdateReqVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/plan/CrmReceivablePlanUpdateReqVO.java
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/receivable/CrmReceivableBaseVO.java
| @@ -42,7 +42,7 @@ public class CrmReceivableBaseVO { | @@ -42,7 +42,7 @@ public class CrmReceivableBaseVO { | ||
| 42 | private LocalDateTime returnTime; | 42 | private LocalDateTime returnTime; |
| 43 | 43 | ||
| 44 | @Schema(description = "回款方式", example = "2") | 44 | @Schema(description = "回款方式", example = "2") |
| 45 | - private String returnType; | 45 | + private Integer returnType; |
| 46 | 46 | ||
| 47 | @Schema(description = "回款金额,单位:分", example = "31859") | 47 | @Schema(description = "回款金额,单位:分", example = "31859") |
| 48 | private Integer price; | 48 | private Integer price; |
| @@ -51,9 +51,6 @@ public class CrmReceivableBaseVO { | @@ -51,9 +51,6 @@ public class CrmReceivableBaseVO { | ||
| 51 | @Schema(description = "负责人", example = "22202") | 51 | @Schema(description = "负责人", example = "22202") |
| 52 | private Long ownerUserId; | 52 | private Long ownerUserId; |
| 53 | 53 | ||
| 54 | - @Schema(description = "批次", example = "2539") | ||
| 55 | - private Long batchId; | ||
| 56 | - | ||
| 57 | @Schema(description = "显示顺序") | 54 | @Schema(description = "显示顺序") |
| 58 | private Integer sort; | 55 | private Integer sort; |
| 59 | 56 |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/receivable/CrmReceivablePlanConvert.java
| 1 | package cn.iocoder.yudao.module.crm.convert.receivable; | 1 | package cn.iocoder.yudao.module.crm.convert.receivable; |
| 2 | 2 | ||
| 3 | -import java.util.*; | ||
| 4 | - | ||
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | - | 4 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanCreateReqVO; |
| 5 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanRespVO; | ||
| 6 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanUpdateReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO; | ||
| 8 | +import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; | ||
| 9 | +import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivableDO; | ||
| 7 | import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; | 10 | import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; |
| 11 | +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | ||
| 8 | import org.mapstruct.Mapper; | 12 | import org.mapstruct.Mapper; |
| 9 | import org.mapstruct.factory.Mappers; | 13 | import org.mapstruct.factory.Mappers; |
| 10 | -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; | 14 | + |
| 15 | +import java.util.List; | ||
| 16 | +import java.util.Map; | ||
| 17 | + | ||
| 18 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; | ||
| 19 | +import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen; | ||
| 11 | 20 | ||
| 12 | /** | 21 | /** |
| 13 | * 回款计划 Convert | 22 | * 回款计划 Convert |
| @@ -27,8 +36,31 @@ public interface CrmReceivablePlanConvert { | @@ -27,8 +36,31 @@ public interface CrmReceivablePlanConvert { | ||
| 27 | 36 | ||
| 28 | List<CrmReceivablePlanRespVO> convertList(List<CrmReceivablePlanDO> list); | 37 | List<CrmReceivablePlanRespVO> convertList(List<CrmReceivablePlanDO> list); |
| 29 | 38 | ||
| 30 | - PageResult<CrmReceivablePlanRespVO> convertPage(PageResult<CrmReceivablePlanDO> page); | 39 | + default PageResult<CrmReceivablePlanRespVO> convertPage(PageResult<CrmReceivablePlanDO> pageResult, Map<Long, AdminUserRespDTO> userMap, |
| 40 | + List<CrmCustomerDO> customerList, List<CrmContractDO> contractList, | ||
| 41 | + List<CrmReceivableDO> receivableList) { | ||
| 42 | + return new PageResult<>(converList(pageResult.getList(), userMap, customerList, contractList, receivableList), pageResult.getTotal()); | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + default List<CrmReceivablePlanRespVO> converList(List<CrmReceivablePlanDO> receivablePlanList, Map<Long, AdminUserRespDTO> userMap, | ||
| 46 | + List<CrmCustomerDO> customerList, List<CrmContractDO> contractList, | ||
| 47 | + List<CrmReceivableDO> receivableList) { | ||
| 48 | + List<CrmReceivablePlanRespVO> result = convertList(receivablePlanList); | ||
| 49 | + Map<Long, CrmCustomerDO> customerMap = convertMap(customerList, CrmCustomerDO::getId); | ||
| 50 | + Map<Long, CrmContractDO> contractMap = convertMap(contractList, CrmContractDO::getId); | ||
| 51 | + Map<Long, CrmReceivableDO> receivableMap = convertMap(receivableList, CrmReceivableDO::getId); | ||
| 52 | + result.forEach(item -> { | ||
| 53 | + setUserInfo(item, userMap); | ||
| 54 | + findAndThen(customerMap, item.getCustomerId(), customer -> item.setCustomerName(customer.getName())); | ||
| 55 | + findAndThen(contractMap, item.getContractId(), contract -> item.setContractNo(contract.getNo())); | ||
| 56 | + findAndThen(receivableMap, item.getReceivableId(), receivable -> item.setReturnType(receivable.getReturnType())); | ||
| 57 | + }); | ||
| 58 | + return result; | ||
| 59 | + } | ||
| 31 | 60 | ||
| 32 | - List<CrmReceivablePlanExcelVO> convertList02(List<CrmReceivablePlanDO> list); | 61 | + static void setUserInfo(CrmReceivablePlanRespVO receivablePlan, Map<Long, AdminUserRespDTO> userMap) { |
| 62 | + findAndThen(userMap, receivablePlan.getOwnerUserId(), user -> receivablePlan.setOwnerUserName(user.getNickname())); | ||
| 63 | + findAndThen(userMap, Long.parseLong(receivablePlan.getCreator()), user -> receivablePlan.setCreatorName(user.getNickname())); | ||
| 64 | + } | ||
| 33 | 65 | ||
| 34 | } | 66 | } |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/receivable/CrmReceivableDO.java
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/receivable/CrmReceivablePlanDO.java
| @@ -38,26 +38,10 @@ public class CrmReceivablePlanDO extends BaseDO { | @@ -38,26 +38,10 @@ public class CrmReceivablePlanDO extends BaseDO { | ||
| 38 | * TODO @liuhongfeng:少关联实体; | 38 | * TODO @liuhongfeng:少关联实体; |
| 39 | */ | 39 | */ |
| 40 | private Long receivableId; | 40 | private Long receivableId; |
| 41 | - // TODO @liuhongfeng:还款计划,没有 status 和 checkStatus,改成 finishStatus Boolean;是否完成 | ||
| 42 | /** | 41 | /** |
| 43 | - * 状态 | ||
| 44 | - * | ||
| 45 | - * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum} | ||
| 46 | - */ | ||
| 47 | - private Integer status; | ||
| 48 | - /** | ||
| 49 | - * 审批状态 | ||
| 50 | - * | ||
| 51 | - * 对应字典 {@link cn.iocoder.yudao.module.crm.enums.DictTypeConstants#CRM_AUDIT_STATUS} | ||
| 52 | - * // TODO @liuhongfeng:关联的枚举 | ||
| 53 | - */ | ||
| 54 | - private Integer checkStatus; | ||
| 55 | - /** | ||
| 56 | - * 工作流编号 | ||
| 57 | - * | ||
| 58 | - * TODO @liuhongfeng:少关联实体; | 42 | + * 完成状态 |
| 59 | */ | 43 | */ |
| 60 | - private Long processInstanceId; | 44 | + private Boolean finishStatus; |
| 61 | /** | 45 | /** |
| 62 | * 计划回款金额,单位:分 | 46 | * 计划回款金额,单位:分 |
| 63 | */ | 47 | */ |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivablePlanMapper.java
| 1 | package cn.iocoder.yudao.module.crm.dal.mysql.receivable; | 1 | package cn.iocoder.yudao.module.crm.dal.mysql.receivable; |
| 2 | 2 | ||
| 3 | -import java.util.*; | ||
| 4 | - | ||
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||
| 7 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||
| 6 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanPageReqVO; | ||
| 8 | import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; | 7 | import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; |
| 9 | import org.apache.ibatis.annotations.Mapper; | 8 | import org.apache.ibatis.annotations.Mapper; |
| 10 | -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; | ||
| 11 | 9 | ||
| 12 | /** | 10 | /** |
| 13 | * 回款计划 Mapper | 11 | * 回款计划 Mapper |
| @@ -19,30 +17,15 @@ public interface CrmReceivablePlanMapper extends BaseMapperX<CrmReceivablePlanDO | @@ -19,30 +17,15 @@ public interface CrmReceivablePlanMapper extends BaseMapperX<CrmReceivablePlanDO | ||
| 19 | 17 | ||
| 20 | default PageResult<CrmReceivablePlanDO> selectPage(CrmReceivablePlanPageReqVO reqVO) { | 18 | default PageResult<CrmReceivablePlanDO> selectPage(CrmReceivablePlanPageReqVO reqVO) { |
| 21 | return selectPage(reqVO, new LambdaQueryWrapperX<CrmReceivablePlanDO>() | 19 | return selectPage(reqVO, new LambdaQueryWrapperX<CrmReceivablePlanDO>() |
| 22 | - .eqIfPresent(CrmReceivablePlanDO::getStatus, reqVO.getStatus()) | ||
| 23 | - .eqIfPresent(CrmReceivablePlanDO::getCheckStatus, reqVO.getCheckStatus()) | ||
| 24 | - .betweenIfPresent(CrmReceivablePlanDO::getReturnTime, reqVO.getReturnTime()) | ||
| 25 | - .betweenIfPresent(CrmReceivablePlanDO::getRemindTime, reqVO.getRemindTime()) | ||
| 26 | .eqIfPresent(CrmReceivablePlanDO::getCustomerId, reqVO.getCustomerId()) | 20 | .eqIfPresent(CrmReceivablePlanDO::getCustomerId, reqVO.getCustomerId()) |
| 27 | .eqIfPresent(CrmReceivablePlanDO::getContractId, reqVO.getContractId()) | 21 | .eqIfPresent(CrmReceivablePlanDO::getContractId, reqVO.getContractId()) |
| 28 | - .eqIfPresent(CrmReceivablePlanDO::getOwnerUserId, reqVO.getOwnerUserId()) | ||
| 29 | - .betweenIfPresent(CrmReceivablePlanDO::getCreateTime, reqVO.getCreateTime()) | ||
| 30 | .orderByDesc(CrmReceivablePlanDO::getId)); | 22 | .orderByDesc(CrmReceivablePlanDO::getId)); |
| 31 | } | 23 | } |
| 32 | 24 | ||
| 33 | - default List<CrmReceivablePlanDO> selectList(CrmReceivablePlanExportReqVO reqVO) { | ||
| 34 | - return selectList(new LambdaQueryWrapperX<CrmReceivablePlanDO>() | ||
| 35 | - .eqIfPresent(CrmReceivablePlanDO::getPeriod, reqVO.getPeriod()) | ||
| 36 | - .eqIfPresent(CrmReceivablePlanDO::getStatus, reqVO.getStatus()) | ||
| 37 | - .eqIfPresent(CrmReceivablePlanDO::getCheckStatus, reqVO.getCheckStatus()) | ||
| 38 | - .betweenIfPresent(CrmReceivablePlanDO::getReturnTime, reqVO.getReturnTime()) | ||
| 39 | - .eqIfPresent(CrmReceivablePlanDO::getRemindDays, reqVO.getRemindDays()) | ||
| 40 | - .betweenIfPresent(CrmReceivablePlanDO::getRemindTime, reqVO.getRemindTime()) | ||
| 41 | - .eqIfPresent(CrmReceivablePlanDO::getCustomerId, reqVO.getCustomerId()) | 25 | + default PageResult<CrmReceivablePlanDO> selectPageByCustomer(CrmReceivablePlanPageReqVO reqVO) { |
| 26 | + return selectPage(reqVO, new LambdaQueryWrapperX<CrmReceivablePlanDO>() | ||
| 27 | + .eq(CrmReceivablePlanDO::getCustomerId, reqVO.getCustomerId()) // 必须传递 | ||
| 42 | .eqIfPresent(CrmReceivablePlanDO::getContractId, reqVO.getContractId()) | 28 | .eqIfPresent(CrmReceivablePlanDO::getContractId, reqVO.getContractId()) |
| 43 | - .eqIfPresent(CrmReceivablePlanDO::getOwnerUserId, reqVO.getOwnerUserId()) | ||
| 44 | - .eqIfPresent(CrmReceivablePlanDO::getRemark, reqVO.getRemark()) | ||
| 45 | - .betweenIfPresent(CrmReceivablePlanDO::getCreateTime, reqVO.getCreateTime()) | ||
| 46 | .orderByDesc(CrmReceivablePlanDO::getId)); | 29 | .orderByDesc(CrmReceivablePlanDO::getId)); |
| 47 | } | 30 | } |
| 48 | 31 |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanService.java
| 1 | package cn.iocoder.yudao.module.crm.service.receivable; | 1 | package cn.iocoder.yudao.module.crm.service.receivable; |
| 2 | 2 | ||
| 3 | -import java.util.*; | ||
| 4 | -import javax.validation.*; | ||
| 5 | -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; | ||
| 6 | -import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; | ||
| 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanCreateReqVO; | ||
| 5 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanPageReqVO; | ||
| 6 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanUpdateReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; | ||
| 8 | +import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; | ||
| 9 | + | ||
| 10 | +import javax.validation.Valid; | ||
| 11 | +import java.util.Collection; | ||
| 12 | +import java.util.List; | ||
| 8 | 13 | ||
| 9 | /** | 14 | /** |
| 10 | - * 回款计划 Service 接口 | 15 | + * CRM 回款计划 Service 接口 |
| 11 | * | 16 | * |
| 12 | * @author 芋道源码 | 17 | * @author 芋道源码 |
| 13 | */ | 18 | */ |
| @@ -54,17 +59,21 @@ public interface CrmReceivablePlanService { | @@ -54,17 +59,21 @@ public interface CrmReceivablePlanService { | ||
| 54 | /** | 59 | /** |
| 55 | * 获得回款计划分页 | 60 | * 获得回款计划分页 |
| 56 | * | 61 | * |
| 62 | + * 数据权限:基于 {@link CrmReceivablePlanDO} 读取 | ||
| 63 | + * | ||
| 57 | * @param pageReqVO 分页查询 | 64 | * @param pageReqVO 分页查询 |
| 58 | * @return 回款计划分页 | 65 | * @return 回款计划分页 |
| 59 | */ | 66 | */ |
| 60 | PageResult<CrmReceivablePlanDO> getReceivablePlanPage(CrmReceivablePlanPageReqVO pageReqVO); | 67 | PageResult<CrmReceivablePlanDO> getReceivablePlanPage(CrmReceivablePlanPageReqVO pageReqVO); |
| 61 | 68 | ||
| 62 | /** | 69 | /** |
| 63 | - * 获得回款计划列表, 用于 Excel 导出 | 70 | + * 获得回款计划分页,基于指定客户 |
| 64 | * | 71 | * |
| 65 | - * @param exportReqVO 查询条件 | ||
| 66 | - * @return 回款计划列表 | 72 | + * 数据权限:基于 {@link CrmCustomerDO} 读取 |
| 73 | + * | ||
| 74 | + * @param pageReqVO 分页查询 | ||
| 75 | + * @return 回款计划分页 | ||
| 67 | */ | 76 | */ |
| 68 | - List<CrmReceivablePlanDO> getReceivablePlanList(CrmReceivablePlanExportReqVO exportReqVO); | 77 | + PageResult<CrmReceivablePlanDO> getReceivablePlanPageByCustomer(CrmReceivablePlanPageReqVO pageReqVO); |
| 69 | 78 | ||
| 70 | } | 79 | } |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanServiceImpl.java
| @@ -3,18 +3,18 @@ package cn.iocoder.yudao.module.crm.service.receivable; | @@ -3,18 +3,18 @@ package cn.iocoder.yudao.module.crm.service.receivable; | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.hutool.core.collection.ListUtil; | 4 | import cn.hutool.core.collection.ListUtil; |
| 5 | import cn.hutool.core.util.ObjectUtil; | 5 | import cn.hutool.core.util.ObjectUtil; |
| 6 | -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 8 | -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.CrmReceivablePlanCreateReqVO; | ||
| 9 | -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.CrmReceivablePlanExportReqVO; | ||
| 10 | -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.CrmReceivablePlanPageReqVO; | ||
| 11 | -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.CrmReceivablePlanUpdateReqVO; | 7 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanCreateReqVO; |
| 8 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanPageReqVO; | ||
| 9 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanUpdateReqVO; | ||
| 12 | import cn.iocoder.yudao.module.crm.convert.receivable.CrmReceivablePlanConvert; | 10 | import cn.iocoder.yudao.module.crm.convert.receivable.CrmReceivablePlanConvert; |
| 13 | import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO; | 11 | import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO; |
| 14 | import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; | 12 | import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; |
| 15 | import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; | 13 | import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; |
| 16 | import cn.iocoder.yudao.module.crm.dal.mysql.receivable.CrmReceivablePlanMapper; | 14 | import cn.iocoder.yudao.module.crm.dal.mysql.receivable.CrmReceivablePlanMapper; |
| 17 | -import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum; | 15 | +import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; |
| 16 | +import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; | ||
| 17 | +import cn.iocoder.yudao.module.crm.framework.core.annotations.CrmPermission; | ||
| 18 | import cn.iocoder.yudao.module.crm.service.contract.CrmContractService; | 18 | import cn.iocoder.yudao.module.crm.service.contract.CrmContractService; |
| 19 | import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService; | 19 | import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService; |
| 20 | import org.springframework.stereotype.Service; | 20 | import org.springframework.stereotype.Service; |
| @@ -28,6 +28,7 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU | @@ -28,6 +28,7 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU | ||
| 28 | import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; | 28 | import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; |
| 29 | 29 | ||
| 30 | // TODO @liuhongfeng:参考 CrmReceivableServiceImpl 写的 todo 哈; | 30 | // TODO @liuhongfeng:参考 CrmReceivableServiceImpl 写的 todo 哈; |
| 31 | +// TODO @puhui999:数据权限 | ||
| 31 | /** | 32 | /** |
| 32 | * 回款计划 Service 实现类 | 33 | * 回款计划 Service 实现类 |
| 33 | * | 34 | * |
| @@ -38,26 +39,22 @@ import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; | @@ -38,26 +39,22 @@ import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; | ||
| 38 | public class CrmReceivablePlanServiceImpl implements CrmReceivablePlanService { | 39 | public class CrmReceivablePlanServiceImpl implements CrmReceivablePlanService { |
| 39 | 40 | ||
| 40 | @Resource | 41 | @Resource |
| 41 | - private CrmReceivablePlanMapper crmReceivablePlanMapper; | 42 | + private CrmReceivablePlanMapper receivablePlanMapper; |
| 43 | + | ||
| 42 | @Resource | 44 | @Resource |
| 43 | private CrmContractService contractService; | 45 | private CrmContractService contractService; |
| 44 | @Resource | 46 | @Resource |
| 45 | - private CrmCustomerService crmCustomerService; | 47 | + private CrmCustomerService customerService; |
| 46 | 48 | ||
| 47 | @Override | 49 | @Override |
| 48 | public Long createReceivablePlan(CrmReceivablePlanCreateReqVO createReqVO) { | 50 | public Long createReceivablePlan(CrmReceivablePlanCreateReqVO createReqVO) { |
| 49 | // 插入 | 51 | // 插入 |
| 50 | CrmReceivablePlanDO receivablePlan = CrmReceivablePlanConvert.INSTANCE.convert(createReqVO); | 52 | CrmReceivablePlanDO receivablePlan = CrmReceivablePlanConvert.INSTANCE.convert(createReqVO); |
| 51 | - if (ObjectUtil.isNull(receivablePlan.getStatus())){ | ||
| 52 | - receivablePlan.setStatus(CommonStatusEnum.ENABLE.getStatus()); | ||
| 53 | - } | ||
| 54 | - if (ObjectUtil.isNull(receivablePlan.getCheckStatus())){ | ||
| 55 | - receivablePlan.setCheckStatus(CrmAuditStatusEnum.DRAFT.getStatus()); | ||
| 56 | - } | 53 | + receivablePlan.setFinishStatus(false); |
| 57 | 54 | ||
| 58 | checkReceivablePlan(receivablePlan); | 55 | checkReceivablePlan(receivablePlan); |
| 59 | 56 | ||
| 60 | - crmReceivablePlanMapper.insert(receivablePlan); | 57 | + receivablePlanMapper.insert(receivablePlan); |
| 61 | // 返回 | 58 | // 返回 |
| 62 | return receivablePlan.getId(); | 59 | return receivablePlan.getId(); |
| 63 | } | 60 | } |
| @@ -73,7 +70,7 @@ public class CrmReceivablePlanServiceImpl implements CrmReceivablePlanService { | @@ -73,7 +70,7 @@ public class CrmReceivablePlanServiceImpl implements CrmReceivablePlanService { | ||
| 73 | throw exception(CONTRACT_NOT_EXISTS); | 70 | throw exception(CONTRACT_NOT_EXISTS); |
| 74 | } | 71 | } |
| 75 | 72 | ||
| 76 | - CrmCustomerDO customer = crmCustomerService.getCustomer(receivablePlan.getCustomerId()); | 73 | + CrmCustomerDO customer = customerService.getCustomer(receivablePlan.getCustomerId()); |
| 77 | if(ObjectUtil.isNull(customer)){ | 74 | if(ObjectUtil.isNull(customer)){ |
| 78 | throw exception(CUSTOMER_NOT_EXISTS); | 75 | throw exception(CUSTOMER_NOT_EXISTS); |
| 79 | } | 76 | } |
| @@ -87,7 +84,7 @@ public class CrmReceivablePlanServiceImpl implements CrmReceivablePlanService { | @@ -87,7 +84,7 @@ public class CrmReceivablePlanServiceImpl implements CrmReceivablePlanService { | ||
| 87 | 84 | ||
| 88 | // 更新 | 85 | // 更新 |
| 89 | CrmReceivablePlanDO updateObj = CrmReceivablePlanConvert.INSTANCE.convert(updateReqVO); | 86 | CrmReceivablePlanDO updateObj = CrmReceivablePlanConvert.INSTANCE.convert(updateReqVO); |
| 90 | - crmReceivablePlanMapper.updateById(updateObj); | 87 | + receivablePlanMapper.updateById(updateObj); |
| 91 | } | 88 | } |
| 92 | 89 | ||
| 93 | @Override | 90 | @Override |
| @@ -95,18 +92,18 @@ public class CrmReceivablePlanServiceImpl implements CrmReceivablePlanService { | @@ -95,18 +92,18 @@ public class CrmReceivablePlanServiceImpl implements CrmReceivablePlanService { | ||
| 95 | // 校验存在 | 92 | // 校验存在 |
| 96 | validateReceivablePlanExists(id); | 93 | validateReceivablePlanExists(id); |
| 97 | // 删除 | 94 | // 删除 |
| 98 | - crmReceivablePlanMapper.deleteById(id); | 95 | + receivablePlanMapper.deleteById(id); |
| 99 | } | 96 | } |
| 100 | 97 | ||
| 101 | private void validateReceivablePlanExists(Long id) { | 98 | private void validateReceivablePlanExists(Long id) { |
| 102 | - if (crmReceivablePlanMapper.selectById(id) == null) { | 99 | + if (receivablePlanMapper.selectById(id) == null) { |
| 103 | throw exception(RECEIVABLE_PLAN_NOT_EXISTS); | 100 | throw exception(RECEIVABLE_PLAN_NOT_EXISTS); |
| 104 | } | 101 | } |
| 105 | } | 102 | } |
| 106 | 103 | ||
| 107 | @Override | 104 | @Override |
| 108 | public CrmReceivablePlanDO getReceivablePlan(Long id) { | 105 | public CrmReceivablePlanDO getReceivablePlan(Long id) { |
| 109 | - return crmReceivablePlanMapper.selectById(id); | 106 | + return receivablePlanMapper.selectById(id); |
| 110 | } | 107 | } |
| 111 | 108 | ||
| 112 | @Override | 109 | @Override |
| @@ -114,17 +111,18 @@ public class CrmReceivablePlanServiceImpl implements CrmReceivablePlanService { | @@ -114,17 +111,18 @@ public class CrmReceivablePlanServiceImpl implements CrmReceivablePlanService { | ||
| 114 | if (CollUtil.isEmpty(ids)) { | 111 | if (CollUtil.isEmpty(ids)) { |
| 115 | return ListUtil.empty(); | 112 | return ListUtil.empty(); |
| 116 | } | 113 | } |
| 117 | - return crmReceivablePlanMapper.selectBatchIds(ids); | 114 | + return receivablePlanMapper.selectBatchIds(ids); |
| 118 | } | 115 | } |
| 119 | 116 | ||
| 120 | @Override | 117 | @Override |
| 121 | public PageResult<CrmReceivablePlanDO> getReceivablePlanPage(CrmReceivablePlanPageReqVO pageReqVO) { | 118 | public PageResult<CrmReceivablePlanDO> getReceivablePlanPage(CrmReceivablePlanPageReqVO pageReqVO) { |
| 122 | - return crmReceivablePlanMapper.selectPage(pageReqVO); | 119 | + return receivablePlanMapper.selectPage(pageReqVO); |
| 123 | } | 120 | } |
| 124 | 121 | ||
| 125 | @Override | 122 | @Override |
| 126 | - public List<CrmReceivablePlanDO> getReceivablePlanList(CrmReceivablePlanExportReqVO exportReqVO) { | ||
| 127 | - return crmReceivablePlanMapper.selectList(exportReqVO); | 123 | + @CrmPermission(bizType = CrmBizTypeEnum.CRM_CUSTOMER, bizId = "#pageReqVO.customerId", level = CrmPermissionLevelEnum.READ) |
| 124 | + public PageResult<CrmReceivablePlanDO> getReceivablePlanPageByCustomer(CrmReceivablePlanPageReqVO pageReqVO) { | ||
| 125 | + return receivablePlanMapper.selectPageByCustomer(pageReqVO); | ||
| 128 | } | 126 | } |
| 129 | 127 | ||
| 130 | } | 128 | } |
yudao-module-crm/yudao-module-crm-biz/src/test/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImplTest.java
| @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.crm.service.business; | @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.crm.service.business; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; | 3 | import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; |
| 4 | import cn.iocoder.yudao.module.crm.controller.admin.business.vo.business.CrmBusinessCreateReqVO; | 4 | import cn.iocoder.yudao.module.crm.controller.admin.business.vo.business.CrmBusinessCreateReqVO; |
| 5 | -import cn.iocoder.yudao.module.crm.controller.admin.business.vo.business.CrmBusinessExportReqVO; | ||
| 6 | import cn.iocoder.yudao.module.crm.controller.admin.business.vo.business.CrmBusinessUpdateReqVO; | 5 | import cn.iocoder.yudao.module.crm.controller.admin.business.vo.business.CrmBusinessUpdateReqVO; |
| 7 | import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessDO; | 6 | import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessDO; |
| 8 | import cn.iocoder.yudao.module.crm.dal.mysql.business.CrmBusinessMapper; | 7 | import cn.iocoder.yudao.module.crm.dal.mysql.business.CrmBusinessMapper; |
| @@ -11,9 +10,7 @@ import org.junit.jupiter.api.Test; | @@ -11,9 +10,7 @@ import org.junit.jupiter.api.Test; | ||
| 11 | import org.springframework.context.annotation.Import; | 10 | import org.springframework.context.annotation.Import; |
| 12 | 11 | ||
| 13 | import javax.annotation.Resource; | 12 | import javax.annotation.Resource; |
| 14 | -import java.util.List; | ||
| 15 | 13 | ||
| 16 | -import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; | ||
| 17 | import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; | 14 | import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; |
| 18 | import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | 15 | import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
| 19 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | 16 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; |
| @@ -21,7 +18,8 @@ import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServic | @@ -21,7 +18,8 @@ import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServic | ||
| 21 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; | 18 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; |
| 22 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | 19 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; |
| 23 | import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.BUSINESS_NOT_EXISTS; | 20 | import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.BUSINESS_NOT_EXISTS; |
| 24 | -import static org.junit.jupiter.api.Assertions.*; | 21 | +import static org.junit.jupiter.api.Assertions.assertNotNull; |
| 22 | +import static org.junit.jupiter.api.Assertions.assertNull; | ||
| 25 | 23 | ||
| 26 | /** | 24 | /** |
| 27 | * {@link CrmBusinessServiceImpl} 的单元测试类 | 25 | * {@link CrmBusinessServiceImpl} 的单元测试类 |
| @@ -181,84 +179,4 @@ public class CrmBusinessServiceImplTest extends BaseDbUnitTest { | @@ -181,84 +179,4 @@ public class CrmBusinessServiceImplTest extends BaseDbUnitTest { | ||
| 181 | //assertPojoEquals(dbBusiness, pageResult.getList().get(0)); | 179 | //assertPojoEquals(dbBusiness, pageResult.getList().get(0)); |
| 182 | } | 180 | } |
| 183 | 181 | ||
| 184 | - @Test | ||
| 185 | - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 | ||
| 186 | - public void testGetBusinessList() { | ||
| 187 | - // mock 数据 | ||
| 188 | - CrmBusinessDO dbBusiness = randomPojo(CrmBusinessDO.class, o -> { // 等会查询到 | ||
| 189 | - o.setName(null); | ||
| 190 | - o.setStatusTypeId(null); | ||
| 191 | - o.setStatusId(null); | ||
| 192 | - o.setContactNextTime(null); | ||
| 193 | - o.setCustomerId(null); | ||
| 194 | - o.setDealTime(null); | ||
| 195 | - o.setPrice(null); | ||
| 196 | - o.setDiscountPercent(null); | ||
| 197 | - o.setProductPrice(null); | ||
| 198 | - o.setRemark(null); | ||
| 199 | - o.setCreateTime(null); | ||
| 200 | - o.setEndStatus(null); | ||
| 201 | - o.setEndRemark(null); | ||
| 202 | - o.setContactLastTime(null); | ||
| 203 | - o.setFollowUpStatus(null); | ||
| 204 | - }); | ||
| 205 | - businessMapper.insert(dbBusiness); | ||
| 206 | - // 测试 name 不匹配 | ||
| 207 | - businessMapper.insert(cloneIgnoreId(dbBusiness, o -> o.setName(null))); | ||
| 208 | - // 测试 statusTypeId 不匹配 | ||
| 209 | - businessMapper.insert(cloneIgnoreId(dbBusiness, o -> o.setStatusTypeId(null))); | ||
| 210 | - // 测试 statusId 不匹配 | ||
| 211 | - businessMapper.insert(cloneIgnoreId(dbBusiness, o -> o.setStatusId(null))); | ||
| 212 | - // 测试 contactNextTime 不匹配 | ||
| 213 | - businessMapper.insert(cloneIgnoreId(dbBusiness, o -> o.setContactNextTime(null))); | ||
| 214 | - // 测试 customerId 不匹配 | ||
| 215 | - businessMapper.insert(cloneIgnoreId(dbBusiness, o -> o.setCustomerId(null))); | ||
| 216 | - // 测试 dealTime 不匹配 | ||
| 217 | - businessMapper.insert(cloneIgnoreId(dbBusiness, o -> o.setDealTime(null))); | ||
| 218 | - // 测试 price 不匹配 | ||
| 219 | - businessMapper.insert(cloneIgnoreId(dbBusiness, o -> o.setPrice(null))); | ||
| 220 | - // 测试 discountPercent 不匹配 | ||
| 221 | - businessMapper.insert(cloneIgnoreId(dbBusiness, o -> o.setDiscountPercent(null))); | ||
| 222 | - // 测试 productPrice 不匹配 | ||
| 223 | - businessMapper.insert(cloneIgnoreId(dbBusiness, o -> o.setProductPrice(null))); | ||
| 224 | - // 测试 remark 不匹配 | ||
| 225 | - businessMapper.insert(cloneIgnoreId(dbBusiness, o -> o.setRemark(null))); | ||
| 226 | - // 测试 createTime 不匹配 | ||
| 227 | - businessMapper.insert(cloneIgnoreId(dbBusiness, o -> o.setCreateTime(null))); | ||
| 228 | - // 测试 endStatus 不匹配 | ||
| 229 | - businessMapper.insert(cloneIgnoreId(dbBusiness, o -> o.setEndStatus(null))); | ||
| 230 | - // 测试 endRemark 不匹配 | ||
| 231 | - businessMapper.insert(cloneIgnoreId(dbBusiness, o -> o.setEndRemark(null))); | ||
| 232 | - // 测试 contactLastTime 不匹配 | ||
| 233 | - businessMapper.insert(cloneIgnoreId(dbBusiness, o -> o.setContactLastTime(null))); | ||
| 234 | - // 测试 followUpStatus 不匹配 | ||
| 235 | - businessMapper.insert(cloneIgnoreId(dbBusiness, o -> o.setFollowUpStatus(null))); | ||
| 236 | - // 准备参数 | ||
| 237 | - CrmBusinessExportReqVO reqVO = new CrmBusinessExportReqVO(); | ||
| 238 | - reqVO.setName(null); | ||
| 239 | - reqVO.setStatusTypeId(null); | ||
| 240 | - reqVO.setStatusId(null); | ||
| 241 | - reqVO.setContactNextTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 242 | - reqVO.setCustomerId(null); | ||
| 243 | - reqVO.setDealTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 244 | - reqVO.setPrice(null); | ||
| 245 | - reqVO.setDiscountPercent(null); | ||
| 246 | - reqVO.setProductPrice(null); | ||
| 247 | - reqVO.setRemark(null); | ||
| 248 | - reqVO.setOwnerUserId(null); | ||
| 249 | - reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 250 | - reqVO.setRoUserIds(null); | ||
| 251 | - reqVO.setRwUserIds(null); | ||
| 252 | - reqVO.setEndStatus(null); | ||
| 253 | - reqVO.setEndRemark(null); | ||
| 254 | - reqVO.setContactLastTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 255 | - reqVO.setFollowUpStatus(null); | ||
| 256 | - | ||
| 257 | - // 调用 | ||
| 258 | - List<CrmBusinessDO> list = businessService.getBusinessList(reqVO); | ||
| 259 | - // 断言 | ||
| 260 | - assertEquals(1, list.size()); | ||
| 261 | - assertPojoEquals(dbBusiness, list.get(0)); | ||
| 262 | - } | ||
| 263 | - | ||
| 264 | } | 182 | } |
yudao-module-crm/yudao-module-crm-biz/src/test/java/cn/iocoder/yudao/module/crm/service/contract/ContractServiceImplTest.java
| @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.crm.service.contract; | @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.crm.service.contract; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; | 4 | import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; |
| 5 | import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.CrmContractCreateReqVO; | 5 | import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.CrmContractCreateReqVO; |
| 6 | -import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.ContractExportReqVO; | ||
| 7 | import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.CrmContractPageReqVO; | 6 | import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.CrmContractPageReqVO; |
| 8 | import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.CrmContractUpdateReqVO; | 7 | import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.CrmContractUpdateReqVO; |
| 9 | import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO; | 8 | import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO; |
| @@ -13,9 +12,7 @@ import org.junit.jupiter.api.Test; | @@ -13,9 +12,7 @@ import org.junit.jupiter.api.Test; | ||
| 13 | import org.springframework.context.annotation.Import; | 12 | import org.springframework.context.annotation.Import; |
| 14 | 13 | ||
| 15 | import javax.annotation.Resource; | 14 | import javax.annotation.Resource; |
| 16 | -import java.util.List; | ||
| 17 | 15 | ||
| 18 | -import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; | ||
| 19 | import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; | 16 | import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; |
| 20 | import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | 17 | import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
| 21 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | 18 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; |
| @@ -120,25 +117,14 @@ public class ContractServiceImplTest extends BaseDbUnitTest { | @@ -120,25 +117,14 @@ public class ContractServiceImplTest extends BaseDbUnitTest { | ||
| 120 | contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setName(null))); | 117 | contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setName(null))); |
| 121 | // 测试 customerId 不匹配 | 118 | // 测试 customerId 不匹配 |
| 122 | contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setCustomerId(null))); | 119 | contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setCustomerId(null))); |
| 123 | - // 测试 businessId 不匹配 | ||
| 124 | - contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setBusinessId(null))); | ||
| 125 | - // 测试 orderDate 不匹配 | ||
| 126 | - contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setOrderDate(null))); | ||
| 127 | // 测试 no 不匹配 | 120 | // 测试 no 不匹配 |
| 128 | contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setNo(null))); | 121 | contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setNo(null))); |
| 129 | - // 测试 discountPercent 不匹配 | ||
| 130 | - contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setDiscountPercent(null))); | ||
| 131 | - // 测试 productPrice 不匹配 | ||
| 132 | - contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setProductPrice(null))); | ||
| 133 | // 准备参数 | 122 | // 准备参数 |
| 134 | CrmContractPageReqVO reqVO = new CrmContractPageReqVO(); | 123 | CrmContractPageReqVO reqVO = new CrmContractPageReqVO(); |
| 135 | reqVO.setName(null); | 124 | reqVO.setName(null); |
| 136 | reqVO.setCustomerId(null); | 125 | reqVO.setCustomerId(null); |
| 137 | reqVO.setBusinessId(null); | 126 | reqVO.setBusinessId(null); |
| 138 | - reqVO.setOrderDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 139 | reqVO.setNo(null); | 127 | reqVO.setNo(null); |
| 140 | - reqVO.setDiscountPercent(null); | ||
| 141 | - reqVO.setProductPrice(null); | ||
| 142 | 128 | ||
| 143 | // 调用 | 129 | // 调用 |
| 144 | PageResult<CrmContractDO> pageResult = contractService.getContractPage(reqVO); | 130 | PageResult<CrmContractDO> pageResult = contractService.getContractPage(reqVO); |
| @@ -148,49 +134,4 @@ public class ContractServiceImplTest extends BaseDbUnitTest { | @@ -148,49 +134,4 @@ public class ContractServiceImplTest extends BaseDbUnitTest { | ||
| 148 | assertPojoEquals(dbContract, pageResult.getList().get(0)); | 134 | assertPojoEquals(dbContract, pageResult.getList().get(0)); |
| 149 | } | 135 | } |
| 150 | 136 | ||
| 151 | - @Test | ||
| 152 | - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 | ||
| 153 | - public void testGetContractList() { | ||
| 154 | - // mock 数据 | ||
| 155 | - CrmContractDO dbContract = randomPojo(CrmContractDO.class, o -> { // 等会查询到 | ||
| 156 | - o.setName("合同名称"); | ||
| 157 | - o.setCustomerId(null); | ||
| 158 | - o.setBusinessId(null); | ||
| 159 | - o.setOrderDate(null); | ||
| 160 | - o.setNo(null); | ||
| 161 | - o.setDiscountPercent(null); | ||
| 162 | - o.setProductPrice(null); | ||
| 163 | - }); | ||
| 164 | - contractMapper.insert(dbContract); | ||
| 165 | - // 测试 name 不匹配 | ||
| 166 | - contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setName(null))); | ||
| 167 | - // 测试 customerId 不匹配 | ||
| 168 | - contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setCustomerId(null))); | ||
| 169 | - // 测试 businessId 不匹配 | ||
| 170 | - contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setBusinessId(null))); | ||
| 171 | - // 测试 orderDate 不匹配 | ||
| 172 | - contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setOrderDate(null))); | ||
| 173 | - // 测试 no 不匹配 | ||
| 174 | - contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setNo(null))); | ||
| 175 | - // 测试 discountPercent 不匹配 | ||
| 176 | - contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setDiscountPercent(null))); | ||
| 177 | - // 测试 productPrice 不匹配 | ||
| 178 | - contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setProductPrice(null))); | ||
| 179 | - // 准备参数 | ||
| 180 | - ContractExportReqVO reqVO = new ContractExportReqVO(); | ||
| 181 | - reqVO.setName(null); | ||
| 182 | - reqVO.setCustomerId(null); | ||
| 183 | - reqVO.setBusinessId(null); | ||
| 184 | - reqVO.setOrderDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 185 | - reqVO.setNo(null); | ||
| 186 | - reqVO.setDiscountPercent(null); | ||
| 187 | - reqVO.setProductPrice(null); | ||
| 188 | - | ||
| 189 | - // 调用 | ||
| 190 | - List<CrmContractDO> list = contractService.getContractList(reqVO); | ||
| 191 | - // 断言 | ||
| 192 | - assertEquals(1, list.size()); | ||
| 193 | - assertPojoEquals(dbContract, list.get(0)); | ||
| 194 | - } | ||
| 195 | - | ||
| 196 | } | 137 | } |
yudao-module-crm/yudao-module-crm-biz/src/test/java/cn/iocoder/yudao/module/crm/service/receivable/CrmCrmReceivablePlanServiceImplTest.java
| @@ -2,10 +2,9 @@ package cn.iocoder.yudao.module.crm.service.receivable; | @@ -2,10 +2,9 @@ package cn.iocoder.yudao.module.crm.service.receivable; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; | 4 | import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; |
| 5 | -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.CrmReceivablePlanCreateReqVO; | ||
| 6 | -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.CrmReceivablePlanExportReqVO; | ||
| 7 | -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.CrmReceivablePlanPageReqVO; | ||
| 8 | -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.CrmReceivablePlanUpdateReqVO; | 5 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanCreateReqVO; |
| 6 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanPageReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanUpdateReqVO; | ||
| 9 | import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; | 8 | import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; |
| 10 | import cn.iocoder.yudao.module.crm.dal.mysql.receivable.CrmReceivablePlanMapper; | 9 | import cn.iocoder.yudao.module.crm.dal.mysql.receivable.CrmReceivablePlanMapper; |
| 11 | import org.junit.jupiter.api.Disabled; | 10 | import org.junit.jupiter.api.Disabled; |
| @@ -13,9 +12,7 @@ import org.junit.jupiter.api.Test; | @@ -13,9 +12,7 @@ import org.junit.jupiter.api.Test; | ||
| 13 | import org.springframework.context.annotation.Import; | 12 | import org.springframework.context.annotation.Import; |
| 14 | 13 | ||
| 15 | import javax.annotation.Resource; | 14 | import javax.annotation.Resource; |
| 16 | -import java.util.List; | ||
| 17 | 15 | ||
| 18 | -import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; | ||
| 19 | import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; | 16 | import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; |
| 20 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | 17 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; |
| 21 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | 18 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; |
| @@ -108,8 +105,6 @@ public class CrmCrmReceivablePlanServiceImplTest extends BaseDbUnitTest { | @@ -108,8 +105,6 @@ public class CrmCrmReceivablePlanServiceImplTest extends BaseDbUnitTest { | ||
| 108 | // mock 数据 | 105 | // mock 数据 |
| 109 | CrmReceivablePlanDO dbReceivablePlan = randomPojo(CrmReceivablePlanDO.class, o -> { // 等会查询到 | 106 | CrmReceivablePlanDO dbReceivablePlan = randomPojo(CrmReceivablePlanDO.class, o -> { // 等会查询到 |
| 110 | o.setPeriod(null); | 107 | o.setPeriod(null); |
| 111 | - o.setStatus(null); | ||
| 112 | - o.setCheckStatus(null); | ||
| 113 | o.setReturnTime(null); | 108 | o.setReturnTime(null); |
| 114 | o.setRemindDays(null); | 109 | o.setRemindDays(null); |
| 115 | o.setRemindTime(null); | 110 | o.setRemindTime(null); |
| @@ -120,38 +115,14 @@ public class CrmCrmReceivablePlanServiceImplTest extends BaseDbUnitTest { | @@ -120,38 +115,14 @@ public class CrmCrmReceivablePlanServiceImplTest extends BaseDbUnitTest { | ||
| 120 | o.setCreateTime(null); | 115 | o.setCreateTime(null); |
| 121 | }); | 116 | }); |
| 122 | crmReceivablePlanMapper.insert(dbReceivablePlan); | 117 | crmReceivablePlanMapper.insert(dbReceivablePlan); |
| 123 | - // 测试 Period 不匹配 | ||
| 124 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setPeriod(null))); | ||
| 125 | - // 测试 status 不匹配 | ||
| 126 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setStatus(null))); | ||
| 127 | - // 测试 checkStatus 不匹配 | ||
| 128 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setCheckStatus(null))); | ||
| 129 | - // 测试 returnTime 不匹配 | ||
| 130 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setReturnTime(null))); | ||
| 131 | - // 测试 remindDays 不匹配 | ||
| 132 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setRemindDays(null))); | ||
| 133 | - // 测试 remindTime 不匹配 | ||
| 134 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setRemindTime(null))); | ||
| 135 | // 测试 customerId 不匹配 | 118 | // 测试 customerId 不匹配 |
| 136 | crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setCustomerId(null))); | 119 | crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setCustomerId(null))); |
| 137 | // 测试 contractId 不匹配 | 120 | // 测试 contractId 不匹配 |
| 138 | crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setContractId(null))); | 121 | crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setContractId(null))); |
| 139 | - // 测试 ownerUserId 不匹配 | ||
| 140 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setOwnerUserId(null))); | ||
| 141 | - // 测试 remark 不匹配 | ||
| 142 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setRemark(null))); | ||
| 143 | - // 测试 createTime 不匹配 | ||
| 144 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setCreateTime(null))); | ||
| 145 | // 准备参数 | 122 | // 准备参数 |
| 146 | CrmReceivablePlanPageReqVO reqVO = new CrmReceivablePlanPageReqVO(); | 123 | CrmReceivablePlanPageReqVO reqVO = new CrmReceivablePlanPageReqVO(); |
| 147 | - reqVO.setStatus(null); | ||
| 148 | - reqVO.setCheckStatus(null); | ||
| 149 | - reqVO.setReturnTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 150 | - reqVO.setRemindTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 151 | reqVO.setCustomerId(null); | 124 | reqVO.setCustomerId(null); |
| 152 | reqVO.setContractId(null); | 125 | reqVO.setContractId(null); |
| 153 | - reqVO.setOwnerUserId(null); | ||
| 154 | - reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 155 | 126 | ||
| 156 | // 调用 | 127 | // 调用 |
| 157 | PageResult<CrmReceivablePlanDO> pageResult = receivablePlanService.getReceivablePlanPage(reqVO); | 128 | PageResult<CrmReceivablePlanDO> pageResult = receivablePlanService.getReceivablePlanPage(reqVO); |
| @@ -161,65 +132,4 @@ public class CrmCrmReceivablePlanServiceImplTest extends BaseDbUnitTest { | @@ -161,65 +132,4 @@ public class CrmCrmReceivablePlanServiceImplTest extends BaseDbUnitTest { | ||
| 161 | assertPojoEquals(dbReceivablePlan, pageResult.getList().get(0)); | 132 | assertPojoEquals(dbReceivablePlan, pageResult.getList().get(0)); |
| 162 | } | 133 | } |
| 163 | 134 | ||
| 164 | - @Test | ||
| 165 | - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 | ||
| 166 | - public void testGetReceivablePlanList() { | ||
| 167 | - // mock 数据 | ||
| 168 | - CrmReceivablePlanDO dbReceivablePlan = randomPojo(CrmReceivablePlanDO.class, o -> { // 等会查询到 | ||
| 169 | - o.setPeriod(null); | ||
| 170 | - o.setStatus(null); | ||
| 171 | - o.setCheckStatus(null); | ||
| 172 | - o.setReturnTime(null); | ||
| 173 | - o.setRemindDays(null); | ||
| 174 | - o.setRemindTime(null); | ||
| 175 | - o.setCustomerId(null); | ||
| 176 | - o.setContractId(null); | ||
| 177 | - o.setOwnerUserId(null); | ||
| 178 | - o.setRemark(null); | ||
| 179 | - o.setCreateTime(null); | ||
| 180 | - }); | ||
| 181 | - crmReceivablePlanMapper.insert(dbReceivablePlan); | ||
| 182 | - // 测试 Period 不匹配 | ||
| 183 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setPeriod(null))); | ||
| 184 | - // 测试 status 不匹配 | ||
| 185 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setStatus(null))); | ||
| 186 | - // 测试 checkStatus 不匹配 | ||
| 187 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setCheckStatus(null))); | ||
| 188 | - // 测试 returnTime 不匹配 | ||
| 189 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setReturnTime(null))); | ||
| 190 | - // 测试 remindDays 不匹配 | ||
| 191 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setRemindDays(null))); | ||
| 192 | - // 测试 remindTime 不匹配 | ||
| 193 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setRemindTime(null))); | ||
| 194 | - // 测试 customerId 不匹配 | ||
| 195 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setCustomerId(null))); | ||
| 196 | - // 测试 contractId 不匹配 | ||
| 197 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setContractId(null))); | ||
| 198 | - // 测试 ownerUserId 不匹配 | ||
| 199 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setOwnerUserId(null))); | ||
| 200 | - // 测试 remark 不匹配 | ||
| 201 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setRemark(null))); | ||
| 202 | - // 测试 createTime 不匹配 | ||
| 203 | - crmReceivablePlanMapper.insert(cloneIgnoreId(dbReceivablePlan, o -> o.setCreateTime(null))); | ||
| 204 | - // 准备参数 | ||
| 205 | - CrmReceivablePlanExportReqVO reqVO = new CrmReceivablePlanExportReqVO(); | ||
| 206 | - reqVO.setPeriod(null); | ||
| 207 | - reqVO.setStatus(null); | ||
| 208 | - reqVO.setCheckStatus(null); | ||
| 209 | - reqVO.setReturnTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 210 | - reqVO.setRemindDays(null); | ||
| 211 | - reqVO.setRemindTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 212 | - reqVO.setCustomerId(null); | ||
| 213 | - reqVO.setContractId(null); | ||
| 214 | - reqVO.setOwnerUserId(null); | ||
| 215 | - reqVO.setRemark(null); | ||
| 216 | - reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 217 | - | ||
| 218 | - // 调用 | ||
| 219 | - List<CrmReceivablePlanDO> list = receivablePlanService.getReceivablePlanList(reqVO); | ||
| 220 | - // 断言 | ||
| 221 | - assertEquals(1, list.size()); | ||
| 222 | - assertPojoEquals(dbReceivablePlan, list.get(0)); | ||
| 223 | - } | ||
| 224 | - | ||
| 225 | } | 135 | } |