diff --git a/sql/mysql/crm.sql b/sql/mysql/crm.sql index de7922d24..8c662c238 100644 --- a/sql/mysql/crm.sql +++ b/sql/mysql/crm.sql @@ -41,7 +41,7 @@ CREATE TABLE `crm_receivable` ( DROP TABLE IF EXISTS `crm_receivable_plan`; CREATE TABLE `crm_receivable_plan` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', - `index_no` bigint(20) NULL DEFAULT NULL COMMENT '期数', + `period` tinyint(4) DEFAULT NULL COMMENT '期数', `receivable_id` bigint(20) NULL DEFAULT NULL COMMENT '回款ID', `status` tinyint(4) NOT NULL COMMENT '完成状态', `check_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '审批状态', diff --git a/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/AuditStatusEnum.java b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/AuditStatusEnum.java new file mode 100644 index 000000000..6cc1012b6 --- /dev/null +++ b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/AuditStatusEnum.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.module.crm.enums; + +import cn.iocoder.yudao.framework.common.core.IntArrayValuable; + +import java.util.Arrays; + +/** + * 流程审批状态枚举类 + * 0 未审核 1 审核通过 2 审核拒绝 3 审核中 4 已撤回 + * @author 赤焰 + */ +public enum AuditStatusEnum implements IntArrayValuable { + /** + * 未审批 + */ + AUDIT_NEW(0, "未审批"), + /** + * 审核通过 + */ + AUDIT_FINISH(1, "审核通过"), + /** + * 审核拒绝 + */ + AUDIT_REJECT(2, "审核拒绝"), + /** + * 审核中 + */ + AUDIT_DOING(3, "审核中"), + /** + * 已撤回 + */ + AUDIT_RETURN(4, "已撤回"); + + private final Integer value; + private final String desc; + + public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(AuditStatusEnum::getValue).toArray(); + + /** + * + * @param value + * @param desc + */ + AuditStatusEnum(Integer value, String desc) { + this.value = value; + this.desc = desc; + } + + public Integer getValue() { + return value; + } + + public String getDesc() { + return desc; + } + + @Override + public int[] array() { + return ARRAYS; + } +} diff --git a/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/DictTypeConstants.java b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/DictTypeConstants.java index 0e412ee9b..71f550775 100644 --- a/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/DictTypeConstants.java +++ b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/DictTypeConstants.java @@ -11,5 +11,6 @@ public interface DictTypeConstants { String CRM_CUSTOMER_INDUSTRY = "crm_customer_industry"; // CRM 客户所属行业 String CRM_CUSTOMER_LEVEL = "crm_customer_level"; // CRM 客户等级 String CRM_CUSTOMER_SOURCE = "crm_customer_source"; // CRM 客户来源 + String CRM_RECEIVABLE_CHECK_STATUS = "crm_receivable_check_status"; // CRM 审批状态 } diff --git a/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java index 9e1de7bad..3a6e3713b 100644 --- a/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java +++ b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java @@ -26,10 +26,11 @@ public interface ErrorCodeConstants { // ========== 联系人管理 1-020-003-000 ========== ErrorCode CONTACT_NOT_EXISTS = new ErrorCode(1_020_003_000, "联系人不存在"); - // TODO @liuhongfeng:错误码分段; - ErrorCode RECEIVABLE_NOT_EXISTS = new ErrorCode(1_030_000_001, "回款管理不存在"); + // ========== 回款管理 1-020-004-000 ========== + ErrorCode RECEIVABLE_NOT_EXISTS = new ErrorCode(1_020_004_000, "回款管理不存在"); - ErrorCode RECEIVABLE_PLAN_NOT_EXISTS = new ErrorCode(1_040_000_001, "回款计划不存在"); + // ========== 合同管理 1-020-005-000 ========== + ErrorCode RECEIVABLE_PLAN_NOT_EXISTS = new ErrorCode(1_020_005_000, "回款计划不存在"); // ========== 客户管理 1_020_006_000 ========== ErrorCode CUSTOMER_NOT_EXISTS = new ErrorCode(1_020_006_000, "客户不存在"); diff --git a/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ReturnTypeEnum.java b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ReturnTypeEnum.java new file mode 100644 index 000000000..d9ca477be --- /dev/null +++ b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ReturnTypeEnum.java @@ -0,0 +1,8 @@ +package cn.iocoder.yudao.module.crm.enums; + +/** + * @author 赤焰 + */ + +public enum ReturnTypeEnum { +} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/ReceivableController.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/CrmReceivableController.java similarity index 64% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/ReceivableController.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/CrmReceivableController.java index c88f31f6d..4f7d9e674 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/ReceivableController.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/CrmReceivableController.java @@ -5,9 +5,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; -import cn.iocoder.yudao.module.crm.convert.receivable.ReceivableConvert; -import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.ReceivableDO; -import cn.iocoder.yudao.module.crm.service.receivable.ReceivableService; +import cn.iocoder.yudao.module.crm.convert.receivable.CrmReceivableConvert; +import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivableDO; +import cn.iocoder.yudao.module.crm.service.receivable.CrmReceivableService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -28,23 +28,23 @@ import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.E @RestController @RequestMapping("/crm/receivable") @Validated -public class ReceivableController { +public class CrmReceivableController { @Resource - private ReceivableService receivableService; + private CrmReceivableService crmReceivableService; @PostMapping("/create") @Operation(summary = "创建回款管理") @PreAuthorize("@ss.hasPermission('crm:receivable:create')") - public CommonResult createReceivable(@Valid @RequestBody ReceivableCreateReqVO createReqVO) { - return success(receivableService.createReceivable(createReqVO)); + public CommonResult createReceivable(@Valid @RequestBody CrmReceivableCreateReqVO createReqVO) { + return success(crmReceivableService.createReceivable(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新回款管理") @PreAuthorize("@ss.hasPermission('crm:receivable:update')") - public CommonResult updateReceivable(@Valid @RequestBody ReceivableUpdateReqVO updateReqVO) { - receivableService.updateReceivable(updateReqVO); + public CommonResult updateReceivable(@Valid @RequestBody CrmReceivableUpdateReqVO updateReqVO) { + crmReceivableService.updateReceivable(updateReqVO); return success(true); } @@ -53,7 +53,7 @@ public class ReceivableController { @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('crm:receivable:delete')") public CommonResult deleteReceivable(@RequestParam("id") Long id) { - receivableService.deleteReceivable(id); + crmReceivableService.deleteReceivable(id); return success(true); } @@ -61,29 +61,29 @@ public class ReceivableController { @Operation(summary = "获得回款管理") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('crm:receivable:query')") - public CommonResult getReceivable(@RequestParam("id") Long id) { - ReceivableDO receivable = receivableService.getReceivable(id); - return success(ReceivableConvert.INSTANCE.convert(receivable)); + public CommonResult getReceivable(@RequestParam("id") Long id) { + CrmReceivableDO receivable = crmReceivableService.getReceivable(id); + return success(CrmReceivableConvert.INSTANCE.convert(receivable)); } @GetMapping("/page") @Operation(summary = "获得回款管理分页") @PreAuthorize("@ss.hasPermission('crm:receivable:query')") - public CommonResult> getReceivablePage(@Valid ReceivablePageReqVO pageVO) { - PageResult pageResult = receivableService.getReceivablePage(pageVO); - return success(ReceivableConvert.INSTANCE.convertPage(pageResult)); + public CommonResult> getReceivablePage(@Valid CrmReceivablePageReqVO pageVO) { + PageResult pageResult = crmReceivableService.getReceivablePage(pageVO); + return success(CrmReceivableConvert.INSTANCE.convertPage(pageResult)); } @GetMapping("/export-excel") @Operation(summary = "导出回款管理 Excel") @PreAuthorize("@ss.hasPermission('crm:receivable:export')") @OperateLog(type = EXPORT) - public void exportReceivableExcel(@Valid ReceivableExportReqVO exportReqVO, + public void exportReceivableExcel(@Valid CrmReceivableExportReqVO exportReqVO, HttpServletResponse response) throws IOException { - List list = receivableService.getReceivableList(exportReqVO); + List list = crmReceivableService.getReceivableList(exportReqVO); // 导出 Excel - List datas = ReceivableConvert.INSTANCE.convertList02(list); - ExcelUtils.write(response, "回款管理.xls", "数据", ReceivableExcelVO.class, datas); + List datas = CrmReceivableConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "回款管理.xls", "数据", CrmReceivableExcelVO.class, datas); } } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/ReceivablePlanController.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/CrmReceivablePlanController.java similarity index 62% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/ReceivablePlanController.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/CrmReceivablePlanController.java index 0c33eb25a..afba2b721 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/ReceivablePlanController.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/CrmReceivablePlanController.java @@ -5,9 +5,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; -import cn.iocoder.yudao.module.crm.convert.receivable.ReceivablePlanConvert; -import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.ReceivablePlanDO; -import cn.iocoder.yudao.module.crm.service.receivable.ReceivablePlanService; +import cn.iocoder.yudao.module.crm.convert.receivable.CrmReceivablePlanConvert; +import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; +import cn.iocoder.yudao.module.crm.service.receivable.CrmReceivablePlanService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -28,23 +28,23 @@ import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.E @RestController @RequestMapping("/crm/receivable-plan") @Validated -public class ReceivablePlanController { +public class CrmReceivablePlanController { @Resource - private ReceivablePlanService receivablePlanService; + private CrmReceivablePlanService crmReceivablePlanService; @PostMapping("/create") @Operation(summary = "创建回款计划") @PreAuthorize("@ss.hasPermission('crm:receivable-plan:create')") - public CommonResult createReceivablePlan(@Valid @RequestBody ReceivablePlanCreateReqVO createReqVO) { - return success(receivablePlanService.createReceivablePlan(createReqVO)); + public CommonResult createReceivablePlan(@Valid @RequestBody CrmReceivablePlanCreateReqVO createReqVO) { + return success(crmReceivablePlanService.createReceivablePlan(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新回款计划") @PreAuthorize("@ss.hasPermission('crm:receivable-plan:update')") - public CommonResult updateReceivablePlan(@Valid @RequestBody ReceivablePlanUpdateReqVO updateReqVO) { - receivablePlanService.updateReceivablePlan(updateReqVO); + public CommonResult updateReceivablePlan(@Valid @RequestBody CrmReceivablePlanUpdateReqVO updateReqVO) { + crmReceivablePlanService.updateReceivablePlan(updateReqVO); return success(true); } @@ -53,7 +53,7 @@ public class ReceivablePlanController { @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('crm:receivable-plan:delete')") public CommonResult deleteReceivablePlan(@RequestParam("id") Long id) { - receivablePlanService.deleteReceivablePlan(id); + crmReceivablePlanService.deleteReceivablePlan(id); return success(true); } @@ -61,29 +61,29 @@ public class ReceivablePlanController { @Operation(summary = "获得回款计划") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('crm:receivable-plan:query')") - public CommonResult getReceivablePlan(@RequestParam("id") Long id) { - ReceivablePlanDO receivablePlan = receivablePlanService.getReceivablePlan(id); - return success(ReceivablePlanConvert.INSTANCE.convert(receivablePlan)); + public CommonResult getReceivablePlan(@RequestParam("id") Long id) { + CrmReceivablePlanDO receivablePlan = crmReceivablePlanService.getReceivablePlan(id); + return success(CrmReceivablePlanConvert.INSTANCE.convert(receivablePlan)); } @GetMapping("/page") @Operation(summary = "获得回款计划分页") @PreAuthorize("@ss.hasPermission('crm:receivable-plan:query')") - public CommonResult> getReceivablePlanPage(@Valid ReceivablePlanPageReqVO pageVO) { - PageResult pageResult = receivablePlanService.getReceivablePlanPage(pageVO); - return success(ReceivablePlanConvert.INSTANCE.convertPage(pageResult)); + public CommonResult> getReceivablePlanPage(@Valid CrmReceivablePlanPageReqVO pageVO) { + PageResult pageResult = crmReceivablePlanService.getReceivablePlanPage(pageVO); + return success(CrmReceivablePlanConvert.INSTANCE.convertPage(pageResult)); } @GetMapping("/export-excel") @Operation(summary = "导出回款计划 Excel") @PreAuthorize("@ss.hasPermission('crm:receivable-plan:export')") @OperateLog(type = EXPORT) - public void exportReceivablePlanExcel(@Valid ReceivablePlanExportReqVO exportReqVO, + public void exportReceivablePlanExcel(@Valid CrmReceivablePlanExportReqVO exportReqVO, HttpServletResponse response) throws IOException { - List list = receivablePlanService.getReceivablePlanList(exportReqVO); + List list = crmReceivablePlanService.getReceivablePlanList(exportReqVO); // 导出 Excel - List datas = ReceivablePlanConvert.INSTANCE.convertList02(list); - ExcelUtils.write(response, "回款计划.xls", "数据", ReceivablePlanExcelVO.class, datas); + List datas = CrmReceivablePlanConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "回款计划.xls", "数据", CrmReceivablePlanExcelVO.class, datas); } } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableBaseVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableBaseVO.java new file mode 100644 index 000000000..24b1d57e4 --- /dev/null +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableBaseVO.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; + +import cn.iocoder.yudao.framework.common.validation.InEnum; +import cn.iocoder.yudao.module.crm.enums.AuditStatusEnum; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * 回款管理 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +@Data +public class CrmReceivableBaseVO { + + @Schema(description = "回款编号",requiredMode = Schema.RequiredMode.REQUIRED, example = "31177") + private String no; + + @Schema(description = "回款计划", example = "31177") + private Long planId; + + @Schema(description = "客户名称", example = "4963") + private Long customerId; + + @Schema(description = "合同名称", example = "30305") + private Long contractId; + + @Schema(description = "审批状态", example = "1") + @InEnum(AuditStatusEnum.class) + private Integer checkStatus; + + @Schema(description = "回款日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime returnTime; + + @Schema(description = "回款方式", example = "2") + private String returnType; + + @Schema(description = "回款金额", example = "31859") + private Integer price; + + @Schema(description = "负责人", example = "22202") + private Long ownerUserId; + + @Schema(description = "批次", example = "2539") + private Long batchId; + + @Schema(description = "显示顺序") + private Integer sort; + + @Schema(description = "备注", example = "备注") + private String remark; + + @Schema(description = "完成状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + private Integer status; + +} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableCreateReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableCreateReqVO.java similarity index 69% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableCreateReqVO.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableCreateReqVO.java index d38d0bd5f..a2d43d8c1 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableCreateReqVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableCreateReqVO.java @@ -1,14 +1,12 @@ package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; import lombok.*; -import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; -import javax.validation.constraints.*; @Schema(description = "管理后台 - CRM 回款创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class ReceivableCreateReqVO extends ReceivableBaseVO { +public class CrmReceivableCreateReqVO extends CrmReceivableBaseVO { } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableExcelVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableExcelVO.java similarity index 59% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableExcelVO.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableExcelVO.java index b525341d3..1bd461499 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableExcelVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableExcelVO.java @@ -1,11 +1,8 @@ package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; -import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.math.BigDecimal; -import java.time.LocalDateTime; + import java.time.LocalDateTime; import com.alibaba.excel.annotation.ExcelProperty; @@ -19,7 +16,7 @@ import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; * @author 赤焰 */ @Data -public class ReceivableExcelVO { +public class CrmReceivableExcelVO { @ExcelProperty("ID") private Long id; @@ -30,14 +27,14 @@ public class ReceivableExcelVO { @ExcelProperty("回款计划ID") private Long planId; - @ExcelProperty("客户ID") + @ExcelProperty("客户名称") private Long customerId; - @ExcelProperty("合同ID") + @ExcelProperty("合同名称") private Long contractId; @ExcelProperty(value = "审批状态", converter = DictConvert.class) - @DictFormat("crm_receivable_check_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(cn.iocoder.yudao.module.crm.enums.DictTypeConstants.CRM_RECEIVABLE_CHECK_STATUS) private Integer checkStatus; @ExcelProperty("工作流编号") @@ -50,7 +47,7 @@ public class ReceivableExcelVO { private String returnType; @ExcelProperty("回款金额") - private BigDecimal price; + private Integer price; @ExcelProperty("负责人") private Long ownerUserId; @@ -58,17 +55,8 @@ public class ReceivableExcelVO { @ExcelProperty("批次") private Long batchId; - //@ExcelProperty("显示顺序") - //private Integer sort; - - //@ExcelProperty("数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)") - //private Integer dataScope; - - //@ExcelProperty("数据范围(指定部门数组)") - //private String dataScopeDeptIds; - @ExcelProperty(value = "状态", converter = DictConvert.class) - @DictFormat("common_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @DictFormat(DictTypeConstants.COMMON_STATUS) private Integer status; @ExcelProperty("备注") diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableExportReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableExportReqVO.java similarity index 65% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableExportReqVO.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableExportReqVO.java index 4a9a033f3..b674bbc2b 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableExportReqVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableExportReqVO.java @@ -4,7 +4,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; -import java.math.BigDecimal; import java.time.LocalDateTime; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -12,28 +11,25 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ /** * @author 赤焰 */ -@Schema(description = "管理后台 - CRM 回款 Excel 导出 Request VO,参数和 ReceivablePageReqVO 是一致的") +@Schema(description = "管理后台 - CRM 回款 Excel 导出 Request VO,参数和 CrmReceivablePageReqVO 是一致的") @Data -public class ReceivableExportReqVO { +public class CrmReceivableExportReqVO { @Schema(description = "回款编号") private String no; - @Schema(description = "回款计划ID", example = "31177") + @Schema(description = "回款计划", example = "31177") private Long planId; - @Schema(description = "客户ID", example = "4963") + @Schema(description = "客户名称", example = "4963") private Long customerId; - @Schema(description = "合同ID", example = "30305") + @Schema(description = "合同名称", example = "30305") private Long contractId; @Schema(description = "审批状态", example = "1") private Integer checkStatus; - @Schema(description = "工作流编号", example = "16568") - private Long processInstanceId; - @Schema(description = "回款日期") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] returnTime; @@ -42,7 +38,7 @@ public class ReceivableExportReqVO { private String returnType; @Schema(description = "回款金额", example = "31859") - private BigDecimal price; + private Integer price; @Schema(description = "负责人", example = "22202") private Long ownerUserId; @@ -50,15 +46,6 @@ public class ReceivableExportReqVO { @Schema(description = "批次", example = "2539") private Long batchId; - @Schema(description = "显示顺序") - private Integer sort; - - @Schema(description = "数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)") - private Integer dataScope; - - @Schema(description = "数据范围(指定部门数组)") - private String dataScopeDeptIds; - @Schema(description = "状态", example = "1") private Integer status; diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePageReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePageReqVO.java similarity index 62% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePageReqVO.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePageReqVO.java index ba4775535..3a90ed809 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePageReqVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePageReqVO.java @@ -7,7 +7,6 @@ import lombok.EqualsAndHashCode; import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; -import java.math.BigDecimal; import java.time.LocalDateTime; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -16,27 +15,23 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class ReceivablePageReqVO extends PageParam { +public class CrmReceivablePageReqVO extends PageParam { - // TODO @liuhongfeng:目前就使用 no 检索即可; @Schema(description = "回款编号") private String no; @Schema(description = "回款计划ID", example = "31177") private Long planId; - @Schema(description = "客户ID", example = "4963") + @Schema(description = "客户名称", example = "4963") private Long customerId; - @Schema(description = "合同ID", example = "30305") + @Schema(description = "合同名称", example = "30305") private Long contractId; @Schema(description = "审批状态", example = "1") private Integer checkStatus; - @Schema(description = "工作流编号", example = "16568") - private Long processInstanceId; - @Schema(description = "回款日期") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] returnTime; @@ -45,29 +40,15 @@ public class ReceivablePageReqVO extends PageParam { private String returnType; @Schema(description = "回款金额", example = "31859") - private BigDecimal price; + private Integer price; @Schema(description = "负责人", example = "22202") private Long ownerUserId; - @Schema(description = "批次", example = "2539") - private Long batchId; - - @Schema(description = "显示顺序") - private Integer sort; - - @Schema(description = "数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)") - private Integer dataScope; - - @Schema(description = "数据范围(指定部门数组)") - private String dataScopeDeptIds; @Schema(description = "状态", example = "1") private Integer status; - @Schema(description = "备注", example = "随便") - private String remark; - @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanBaseVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanBaseVO.java similarity index 52% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanBaseVO.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanBaseVO.java index 59f333e4b..49d00892e 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanBaseVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanBaseVO.java @@ -1,10 +1,11 @@ package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; +import cn.iocoder.yudao.framework.common.validation.InEnum; +import cn.iocoder.yudao.module.crm.enums.AuditStatusEnum; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; -import java.math.BigDecimal; import java.time.LocalDateTime; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -14,59 +15,48 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 */ @Data -public class ReceivablePlanBaseVO { +public class CrmReceivablePlanBaseVO { - // TODO 芋艿:这个字段,在想想命名; - @Schema(description = "期数") - private Long indexNo; + @Schema(description = "期数", example = "1") + private Integer period; - // TODO @liuhongfeng:中英文之间,有个空格,这样更干净; - @Schema(description = "回款ID", example = "19852") + @Schema(description = "回款计划", example = "19852") private Long receivableId; @Schema(description = "完成状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - //@NotNull(message = "完成状态不能为空") private Integer status; - // TODO @liuhongfeng:这个字段,可以写个枚举,然后 InEnum 去校验下; - // TODO @liuhongfeng:这个字段,应该不是前端传递的噢,而是后端自己生成的 @Schema(description = "审批状态", example = "1") - private String checkStatus; + @InEnum(AuditStatusEnum.class) + private Integer checkStatus; - // TODO @liuhongfeng:这个字段,应该不是前端传递的噢,而是后端自己生成的,所以不适合放在 base 里面; - @Schema(description = "工作流编号", example = "8909") - private Long processInstanceId; - - // TODO @liuhongfeng:使用 Int 哈,分; @Schema(description = "计划回款金额", example = "29675") - private BigDecimal price; + private Integer price; @Schema(description = "计划回款日期") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime returnTime; - // TODO @liuhongfeng:这个字段,Integer @Schema(description = "提前几天提醒") - private Long remindDays; + private Integer remindDays; @Schema(description = "提醒日期") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime remindTime; - @Schema(description = "客户ID", example = "18026") + @Schema(description = "客户名称", example = "18026") private Long customerId; - @Schema(description = "合同ID", example = "3473") + @Schema(description = "合同名称", example = "3473") private Long contractId; - // TODO @liuhongfeng:这个字段,应该不是前端传递的噢,而是后端自己生成的,所以不适合放在 base 里面; @Schema(description = "负责人", example = "17828") private Long ownerUserId; @Schema(description = "显示顺序") private Integer sort; - @Schema(description = "备注", example = "随便") + @Schema(description = "备注", example = "备注") private String remark; } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanCreateReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanCreateReqVO.java similarity index 68% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanCreateReqVO.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanCreateReqVO.java index d03e76eb0..cebfd28cb 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanCreateReqVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanCreateReqVO.java @@ -1,14 +1,12 @@ package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; import lombok.*; -import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; -import javax.validation.constraints.*; @Schema(description = "管理后台 - CRM 回款计划创建 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class ReceivablePlanCreateReqVO extends ReceivablePlanBaseVO { +public class CrmReceivablePlanCreateReqVO extends CrmReceivablePlanBaseVO { } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanExcelVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanExcelVO.java similarity index 70% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanExcelVO.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanExcelVO.java index f0b822115..a7246e252 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanExcelVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanExcelVO.java @@ -1,8 +1,8 @@ package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; +import cn.iocoder.yudao.module.system.enums.DictTypeConstants; import lombok.*; -import java.math.BigDecimal; import java.time.LocalDateTime; import com.alibaba.excel.annotation.ExcelProperty; @@ -16,36 +16,36 @@ import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; * @author 芋道源码 */ @Data -public class ReceivablePlanExcelVO { +public class CrmReceivablePlanExcelVO { @ExcelProperty("ID") private Long id; @ExcelProperty("期数") - private Long indexNo; + private Integer period; @ExcelProperty("回款ID") private Long receivableId; - @ExcelProperty(value = "完成状态", converter = DictConvert.class) - @DictFormat("common_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 + @ExcelProperty(value = "状态", converter = DictConvert.class) + @DictFormat(DictTypeConstants.COMMON_STATUS) private Integer status; @ExcelProperty(value = "审批状态", converter = DictConvert.class) - @DictFormat("crm_receivable_check_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 - private String checkStatus; + @DictFormat(cn.iocoder.yudao.module.crm.enums.DictTypeConstants.CRM_RECEIVABLE_CHECK_STATUS) + private Integer checkStatus; //@ExcelProperty("工作流编号") //private Long processInstanceId; @ExcelProperty("计划回款金额") - private BigDecimal price; + private Integer price; @ExcelProperty("计划回款日期") private LocalDateTime returnTime; @ExcelProperty("提前几天提醒") - private Long remindDays; + private Integer remindDays; @ExcelProperty("提醒日期") private LocalDateTime remindTime; @@ -53,7 +53,7 @@ public class ReceivablePlanExcelVO { @ExcelProperty("客户ID") private Long customerId; - @ExcelProperty("合同ID") + @ExcelProperty("合同名称") private Long contractId; @ExcelProperty("负责人") diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanExportReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanExportReqVO.java similarity index 77% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanExportReqVO.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanExportReqVO.java index 506ffa1ed..8002d41af 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanExportReqVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanExportReqVO.java @@ -1,42 +1,41 @@ package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; import lombok.*; -import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; -import cn.iocoder.yudao.framework.common.pojo.PageParam; + import java.time.LocalDateTime; import org.springframework.format.annotation.DateTimeFormat; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -@Schema(description = "管理后台 - CRM 回款计划 Excel 导出 Request VO,参数和 ReceivablePlanPageReqVO 是一致的") +@Schema(description = "管理后台 - CRM 回款计划 Excel 导出 Request VO,参数和 CrmReceivablePlanPageReqVO 是一致的") @Data -public class ReceivablePlanExportReqVO { +public class CrmReceivablePlanExportReqVO { @Schema(description = "期数") - private Long indexNo; + private Integer period; @Schema(description = "完成状态", example = "2") private Integer status; @Schema(description = "审批状态", example = "1") - private String checkStatus; + private Integer checkStatus; @Schema(description = "计划回款日期") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] returnTime; @Schema(description = "提前几天提醒") - private Long remindDays; + private Integer remindDays; @Schema(description = "提醒日期") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] remindTime; - @Schema(description = "客户ID", example = "18026") + @Schema(description = "客户名称", example = "18026") private Long customerId; - @Schema(description = "合同ID", example = "3473") + @Schema(description = "合同名称", example = "3473") private Long contractId; @Schema(description = "负责人", example = "17828") diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanPageReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanPageReqVO.java similarity index 73% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanPageReqVO.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanPageReqVO.java index 16ad6353d..10e26207a 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanPageReqVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanPageReqVO.java @@ -15,42 +15,31 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class ReceivablePlanPageReqVO extends PageParam { - - // TODO 芋艿:筛选字段,需要去掉几个,在想想; - - @Schema(description = "期数") - private Long indexNo; +public class CrmReceivablePlanPageReqVO extends PageParam { @Schema(description = "完成状态", example = "2") private Integer status; @Schema(description = "审批状态", example = "1") - private String checkStatus; + private Integer checkStatus; @Schema(description = "计划回款日期") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] returnTime; - @Schema(description = "提前几天提醒") - private Long remindDays; - @Schema(description = "提醒日期") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] remindTime; - @Schema(description = "客户ID", example = "18026") + @Schema(description = "客户名称", example = "18026") private Long customerId; - @Schema(description = "合同ID", example = "3473") + @Schema(description = "合同名称", example = "3473") private Long contractId; @Schema(description = "负责人", example = "17828") private Long ownerUserId; - @Schema(description = "备注", example = "随便") - private String remark; - @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanRespVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanRespVO.java similarity index 88% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanRespVO.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanRespVO.java index ce49d5977..243e7f782 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanRespVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanRespVO.java @@ -8,7 +8,7 @@ import java.time.LocalDateTime; @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class ReceivablePlanRespVO extends ReceivablePlanBaseVO { +public class CrmReceivablePlanRespVO extends CrmReceivablePlanBaseVO { @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25153") private Long id; diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanUpdateReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanUpdateReqVO.java similarity index 84% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanUpdateReqVO.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanUpdateReqVO.java index 1f539537d..5471cfba3 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanUpdateReqVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivablePlanUpdateReqVO.java @@ -2,14 +2,14 @@ package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import java.util.*; + import javax.validation.constraints.*; @Schema(description = "管理后台 - CRM 回款计划更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class ReceivablePlanUpdateReqVO extends ReceivablePlanBaseVO { +public class CrmReceivablePlanUpdateReqVO extends CrmReceivablePlanBaseVO { @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25153") @NotNull(message = "ID不能为空") diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableRespVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableRespVO.java similarity index 89% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableRespVO.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableRespVO.java index 1646cd5a8..00d984da5 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableRespVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableRespVO.java @@ -8,7 +8,7 @@ import java.time.LocalDateTime; @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class ReceivableRespVO extends ReceivableBaseVO { +public class CrmReceivableRespVO extends CrmReceivableBaseVO { @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25787") private Long id; diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableUpdateReqVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableUpdateReqVO.java similarity index 85% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableUpdateReqVO.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableUpdateReqVO.java index 008c06b63..d6241f258 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableUpdateReqVO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/CrmReceivableUpdateReqVO.java @@ -2,14 +2,14 @@ package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import java.util.*; + import javax.validation.constraints.*; @Schema(description = "管理后台 - CRM 回款更新 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class ReceivableUpdateReqVO extends ReceivableBaseVO { +public class CrmReceivableUpdateReqVO extends CrmReceivableBaseVO { @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25787") @NotNull(message = "ID不能为空") diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableBaseVO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableBaseVO.java deleted file mode 100644 index bb0bc5745..000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableBaseVO.java +++ /dev/null @@ -1,80 +0,0 @@ -package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import javax.validation.constraints.NotNull; -import java.math.BigDecimal; -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -/** - * 回款管理 Base VO,提供给添加、修改、详细的子 VO 使用 - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 - */ -@Data -public class ReceivableBaseVO { - - // TODO @liuhongfeng:部分缺少 example 的字段,要补充下; - // TODO @liuhongfeng:部分字段,需要必传,要写 requiredMode = Schema.RequiredMode.REQUIRED,以及对应的 validator 非空校验 - - @Schema(description = "回款编号") - private String no; - - // TODO @liuhongfeng:中英文之间,有个空格,这样更干净; - @Schema(description = "回款计划ID", example = "31177") - private Long planId; - - @Schema(description = "客户ID", example = "4963") - private Long customerId; - - @Schema(description = "合同ID", example = "30305") - private Long contractId; - - // TODO @liuhongfeng:这个字段,可以写个枚举,然后 InEnum 去校验下; - // TODO @liuhongfeng:这个字段,应该不是前端传递的噢,而是后端自己生成的 - @Schema(description = "审批状态", example = "1") - private Integer checkStatus; - - // TODO @liuhongfeng:这个字段,应该不是前端传递的噢,而是后端自己生成的,所以不适合放在 base 里面; - @Schema(description = "工作流编号", example = "16568") - private Long processInstanceId; - - @Schema(description = "回款日期") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime returnTime; - - @Schema(description = "回款方式", example = "2") - private String returnType; - - // TODO @liuhongfeng:使用 Int 哈,分; - @Schema(description = "回款金额", example = "31859") - private BigDecimal price; - - @Schema(description = "负责人", example = "22202") - private Long ownerUserId; - - @Schema(description = "批次", example = "2539") - private Long batchId; - - @Schema(description = "显示顺序") - private Integer sort; - - // TODO @芋艿:这个字段在看看;dataScope、dataScopeDeptIds - @Schema(description = "数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)") - private Integer dataScope; - - @Schema(description = "数据范围(指定部门数组)") - private String dataScopeDeptIds; - - // TODO @liuhongfeng:这个字段,这个字段,应该不是前端传递的噢,而是后端自己生成的,所以不适合放在 base 里面; - @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "状态不能为空") - private Integer status; - - @Schema(description = "备注", example = "随便") - private String remark; - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/receivable/CrmReceivableConvert.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/receivable/CrmReceivableConvert.java new file mode 100644 index 000000000..23345fbe6 --- /dev/null +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/receivable/CrmReceivableConvert.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.crm.convert.receivable; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivableDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; + +/** + * 回款管理 Convert + * + * @author 赤焰 + */ +@Mapper +public interface CrmReceivableConvert { + + CrmReceivableConvert INSTANCE = Mappers.getMapper(CrmReceivableConvert.class); + + CrmReceivableDO convert(CrmReceivableCreateReqVO bean); + + CrmReceivableDO convert(CrmReceivableUpdateReqVO bean); + + CrmReceivableRespVO convert(CrmReceivableDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/receivable/CrmReceivablePlanConvert.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/receivable/CrmReceivablePlanConvert.java new file mode 100644 index 000000000..4b2d65c60 --- /dev/null +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/receivable/CrmReceivablePlanConvert.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.crm.convert.receivable; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; + +/** + * 回款计划 Convert + * + * @author 芋道源码 + */ +@Mapper +public interface CrmReceivablePlanConvert { + + CrmReceivablePlanConvert INSTANCE = Mappers.getMapper(CrmReceivablePlanConvert.class); + + CrmReceivablePlanDO convert(CrmReceivablePlanCreateReqVO bean); + + CrmReceivablePlanDO convert(CrmReceivablePlanUpdateReqVO bean); + + CrmReceivablePlanRespVO convert(CrmReceivablePlanDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/receivable/ReceivableConvert.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/receivable/ReceivableConvert.java deleted file mode 100644 index 7f14aaddd..000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/receivable/ReceivableConvert.java +++ /dev/null @@ -1,34 +0,0 @@ -package cn.iocoder.yudao.module.crm.convert.receivable; - -import java.util.*; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; - -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; -import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.ReceivableDO; - -/** - * 回款管理 Convert - * - * @author 赤焰 - */ -@Mapper -public interface ReceivableConvert { - - ReceivableConvert INSTANCE = Mappers.getMapper(ReceivableConvert.class); - - ReceivableDO convert(ReceivableCreateReqVO bean); - - ReceivableDO convert(ReceivableUpdateReqVO bean); - - ReceivableRespVO convert(ReceivableDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - - List convertList02(List list); - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/receivable/ReceivablePlanConvert.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/receivable/ReceivablePlanConvert.java deleted file mode 100644 index 81ec646f3..000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/receivable/ReceivablePlanConvert.java +++ /dev/null @@ -1,34 +0,0 @@ -package cn.iocoder.yudao.module.crm.convert.receivable; - -import java.util.*; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; - -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; -import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.ReceivablePlanDO; - -/** - * 回款计划 Convert - * - * @author 芋道源码 - */ -@Mapper -public interface ReceivablePlanConvert { - - ReceivablePlanConvert INSTANCE = Mappers.getMapper(ReceivablePlanConvert.class); - - ReceivablePlanDO convert(ReceivablePlanCreateReqVO bean); - - ReceivablePlanDO convert(ReceivablePlanUpdateReqVO bean); - - ReceivablePlanRespVO convert(ReceivablePlanDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - - List convertList02(List list); - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/receivable/ReceivableDO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/receivable/CrmReceivableDO.java similarity index 80% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/receivable/ReceivableDO.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/receivable/CrmReceivableDO.java index d80f76a91..b74507dd1 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/receivable/ReceivableDO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/receivable/CrmReceivableDO.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; -import java.math.BigDecimal; import java.time.LocalDateTime; /** @@ -22,7 +21,7 @@ import java.time.LocalDateTime; @Builder @NoArgsConstructor @AllArgsConstructor -public class ReceivableDO extends BaseDO { +public class CrmReceivableDO extends BaseDO { /** * ID @@ -34,27 +33,26 @@ public class ReceivableDO extends BaseDO { */ private String no; /** - * 回款计划ID + * 回款计划 * - * TODO @liuhongfeng:这个字段,后续要写下关联的实体哈 + * 对应实体 {@link CrmReceivablePlanDO} */ private Long planId; /** * 客户ID * - * TODO @liuhongfeng:这个字段,后续要写下关联的实体哈 + * 对应实体 {@link cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO} */ private Long customerId; /** * 合同ID * - * TODO @liuhongfeng:这个字段,后续要写下关联的实体哈 + * 对应实体 {@link cn.iocoder.yudao.module.crm.dal.dataobject.contract.ContractDO} */ private Long contractId; /** * 审批状态 - * - * 枚举 {@link TODO crm_receivable_check_status 对应的类} + * 对应字典 {@link cn.iocoder.yudao.module.crm.enums.DictTypeConstants#CRM_RECEIVABLE_CHECK_STATUS} */ private Integer checkStatus; /** @@ -74,7 +72,7 @@ public class ReceivableDO extends BaseDO { /** * 回款金额 */ - private BigDecimal price; + private Integer price; /** * 负责人 */ @@ -99,7 +97,8 @@ public class ReceivableDO extends BaseDO { /** * 状态 * - * 枚举 {@link TODO common_status 对应的类} + * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum} + * */ private Integer status; /** diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/receivable/ReceivablePlanDO.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/receivable/CrmReceivablePlanDO.java similarity index 76% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/receivable/ReceivablePlanDO.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/receivable/CrmReceivablePlanDO.java index 4447df053..4274250e8 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/receivable/ReceivablePlanDO.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/receivable/CrmReceivablePlanDO.java @@ -1,12 +1,9 @@ package cn.iocoder.yudao.module.crm.dal.dataobject.receivable; import lombok.*; -import java.util.*; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; + import java.time.LocalDateTime; + import com.baomidou.mybatisplus.annotation.*; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; @@ -23,7 +20,7 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; @Builder @NoArgsConstructor @AllArgsConstructor -public class ReceivablePlanDO extends BaseDO { +public class CrmReceivablePlanDO extends BaseDO { /** * ID @@ -33,23 +30,23 @@ public class ReceivablePlanDO extends BaseDO { /** * 期数 */ - private Long indexNo; + private Integer period; /** * 回款ID */ private Long receivableId; /** - * 完成状态 + * 状态 + * + * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum} * - * 枚举 {@link TODO common_status 对应的类} */ private Integer status; /** * 审批状态 - * - * 枚举 {@link TODO crm_receivable_check_status 对应的类} + * 对应字典 {@link cn.iocoder.yudao.module.crm.enums.DictTypeConstants#CRM_RECEIVABLE_CHECK_STATUS} */ - private String checkStatus; + private Integer checkStatus; /** * 工作流编号 */ @@ -57,7 +54,7 @@ public class ReceivablePlanDO extends BaseDO { /** * 计划回款金额 */ - private BigDecimal price; + private Integer price; /** * 计划回款日期 */ @@ -65,7 +62,7 @@ public class ReceivablePlanDO extends BaseDO { /** * 提前几天提醒 */ - private Long remindDays; + private Integer remindDays; /** * 提醒日期 */ diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivableMapper.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivableMapper.java new file mode 100644 index 000000000..716704fb8 --- /dev/null +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivableMapper.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.module.crm.dal.mysql.receivable; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivableDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; + +/** + * 回款管理 Mapper + * + * @author 赤焰 + */ +@Mapper +public interface CrmReceivableMapper extends BaseMapperX { + + default PageResult selectPage(CrmReceivablePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(CrmReceivableDO::getNo, reqVO.getNo()) + .eqIfPresent(CrmReceivableDO::getPlanId, reqVO.getPlanId()) + .eqIfPresent(CrmReceivableDO::getCustomerId, reqVO.getCustomerId()) + .eqIfPresent(CrmReceivableDO::getContractId, reqVO.getContractId()) + .eqIfPresent(CrmReceivableDO::getCheckStatus, reqVO.getCheckStatus()) + .betweenIfPresent(CrmReceivableDO::getReturnTime, reqVO.getReturnTime()) + .eqIfPresent(CrmReceivableDO::getReturnType, reqVO.getReturnType()) + .eqIfPresent(CrmReceivableDO::getPrice, reqVO.getPrice()) + .eqIfPresent(CrmReceivableDO::getOwnerUserId, reqVO.getOwnerUserId()) + .eqIfPresent(CrmReceivableDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(CrmReceivableDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(CrmReceivableDO::getId)); + } + + default List selectList(CrmReceivableExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(CrmReceivableDO::getNo, reqVO.getNo()) + .eqIfPresent(CrmReceivableDO::getPlanId, reqVO.getPlanId()) + .eqIfPresent(CrmReceivableDO::getCustomerId, reqVO.getCustomerId()) + .eqIfPresent(CrmReceivableDO::getContractId, reqVO.getContractId()) + .eqIfPresent(CrmReceivableDO::getCheckStatus, reqVO.getCheckStatus()) + .betweenIfPresent(CrmReceivableDO::getReturnTime, reqVO.getReturnTime()) + .eqIfPresent(CrmReceivableDO::getReturnType, reqVO.getReturnType()) + .eqIfPresent(CrmReceivableDO::getPrice, reqVO.getPrice()) + .eqIfPresent(CrmReceivableDO::getOwnerUserId, reqVO.getOwnerUserId()) + .eqIfPresent(CrmReceivableDO::getBatchId, reqVO.getBatchId()) + .eqIfPresent(CrmReceivableDO::getStatus, reqVO.getStatus()) + .eqIfPresent(CrmReceivableDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(CrmReceivableDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(CrmReceivableDO::getId)); + } + +} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivablePlanMapper.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivablePlanMapper.java new file mode 100644 index 000000000..62b2c0c54 --- /dev/null +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivablePlanMapper.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.crm.dal.mysql.receivable; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; + +/** + * 回款计划 Mapper + * + * @author 芋道源码 + */ +@Mapper +public interface CrmReceivablePlanMapper extends BaseMapperX { + + default PageResult selectPage(CrmReceivablePlanPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(CrmReceivablePlanDO::getStatus, reqVO.getStatus()) + .eqIfPresent(CrmReceivablePlanDO::getCheckStatus, reqVO.getCheckStatus()) + .betweenIfPresent(CrmReceivablePlanDO::getReturnTime, reqVO.getReturnTime()) + .betweenIfPresent(CrmReceivablePlanDO::getRemindTime, reqVO.getRemindTime()) + .eqIfPresent(CrmReceivablePlanDO::getCustomerId, reqVO.getCustomerId()) + .eqIfPresent(CrmReceivablePlanDO::getContractId, reqVO.getContractId()) + .eqIfPresent(CrmReceivablePlanDO::getOwnerUserId, reqVO.getOwnerUserId()) + .betweenIfPresent(CrmReceivablePlanDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(CrmReceivablePlanDO::getId)); + } + + default List selectList(CrmReceivablePlanExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(CrmReceivablePlanDO::getPeriod, reqVO.getPeriod()) + .eqIfPresent(CrmReceivablePlanDO::getStatus, reqVO.getStatus()) + .eqIfPresent(CrmReceivablePlanDO::getCheckStatus, reqVO.getCheckStatus()) + .betweenIfPresent(CrmReceivablePlanDO::getReturnTime, reqVO.getReturnTime()) + .eqIfPresent(CrmReceivablePlanDO::getRemindDays, reqVO.getRemindDays()) + .betweenIfPresent(CrmReceivablePlanDO::getRemindTime, reqVO.getRemindTime()) + .eqIfPresent(CrmReceivablePlanDO::getCustomerId, reqVO.getCustomerId()) + .eqIfPresent(CrmReceivablePlanDO::getContractId, reqVO.getContractId()) + .eqIfPresent(CrmReceivablePlanDO::getOwnerUserId, reqVO.getOwnerUserId()) + .eqIfPresent(CrmReceivablePlanDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(CrmReceivablePlanDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(CrmReceivablePlanDO::getId)); + } + +} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/ReceivableMapper.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/ReceivableMapper.java deleted file mode 100644 index 08031772c..000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/ReceivableMapper.java +++ /dev/null @@ -1,64 +0,0 @@ -package cn.iocoder.yudao.module.crm.dal.mysql.receivable; - -import java.util.*; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.ReceivableDO; -import org.apache.ibatis.annotations.Mapper; -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; - -/** - * 回款管理 Mapper - * - * @author 赤焰 - */ -@Mapper -public interface ReceivableMapper extends BaseMapperX { - - default PageResult selectPage(ReceivablePageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(ReceivableDO::getNo, reqVO.getNo()) - .eqIfPresent(ReceivableDO::getPlanId, reqVO.getPlanId()) - .eqIfPresent(ReceivableDO::getCustomerId, reqVO.getCustomerId()) - .eqIfPresent(ReceivableDO::getContractId, reqVO.getContractId()) - .eqIfPresent(ReceivableDO::getCheckStatus, reqVO.getCheckStatus()) - .eqIfPresent(ReceivableDO::getProcessInstanceId, reqVO.getProcessInstanceId()) - .betweenIfPresent(ReceivableDO::getReturnTime, reqVO.getReturnTime()) - .eqIfPresent(ReceivableDO::getReturnType, reqVO.getReturnType()) - .eqIfPresent(ReceivableDO::getPrice, reqVO.getPrice()) - .eqIfPresent(ReceivableDO::getOwnerUserId, reqVO.getOwnerUserId()) - .eqIfPresent(ReceivableDO::getBatchId, reqVO.getBatchId()) - .eqIfPresent(ReceivableDO::getSort, reqVO.getSort()) - .eqIfPresent(ReceivableDO::getDataScope, reqVO.getDataScope()) - .eqIfPresent(ReceivableDO::getDataScopeDeptIds, reqVO.getDataScopeDeptIds()) - .eqIfPresent(ReceivableDO::getStatus, reqVO.getStatus()) - .eqIfPresent(ReceivableDO::getRemark, reqVO.getRemark()) - .betweenIfPresent(ReceivableDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(ReceivableDO::getId)); - } - - default List selectList(ReceivableExportReqVO reqVO) { - return selectList(new LambdaQueryWrapperX() - .eqIfPresent(ReceivableDO::getNo, reqVO.getNo()) - .eqIfPresent(ReceivableDO::getPlanId, reqVO.getPlanId()) - .eqIfPresent(ReceivableDO::getCustomerId, reqVO.getCustomerId()) - .eqIfPresent(ReceivableDO::getContractId, reqVO.getContractId()) - .eqIfPresent(ReceivableDO::getCheckStatus, reqVO.getCheckStatus()) - .eqIfPresent(ReceivableDO::getProcessInstanceId, reqVO.getProcessInstanceId()) - .betweenIfPresent(ReceivableDO::getReturnTime, reqVO.getReturnTime()) - .eqIfPresent(ReceivableDO::getReturnType, reqVO.getReturnType()) - .eqIfPresent(ReceivableDO::getPrice, reqVO.getPrice()) - .eqIfPresent(ReceivableDO::getOwnerUserId, reqVO.getOwnerUserId()) - .eqIfPresent(ReceivableDO::getBatchId, reqVO.getBatchId()) - .eqIfPresent(ReceivableDO::getSort, reqVO.getSort()) - .eqIfPresent(ReceivableDO::getDataScope, reqVO.getDataScope()) - .eqIfPresent(ReceivableDO::getDataScopeDeptIds, reqVO.getDataScopeDeptIds()) - .eqIfPresent(ReceivableDO::getStatus, reqVO.getStatus()) - .eqIfPresent(ReceivableDO::getRemark, reqVO.getRemark()) - .betweenIfPresent(ReceivableDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(ReceivableDO::getId)); - } - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/ReceivablePlanMapper.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/ReceivablePlanMapper.java deleted file mode 100644 index ac35133a7..000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/ReceivablePlanMapper.java +++ /dev/null @@ -1,52 +0,0 @@ -package cn.iocoder.yudao.module.crm.dal.mysql.receivable; - -import java.util.*; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.ReceivablePlanDO; -import org.apache.ibatis.annotations.Mapper; -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; - -/** - * 回款计划 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ReceivablePlanMapper extends BaseMapperX { - - default PageResult selectPage(ReceivablePlanPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(ReceivablePlanDO::getIndexNo, reqVO.getIndexNo()) - .eqIfPresent(ReceivablePlanDO::getStatus, reqVO.getStatus()) - .eqIfPresent(ReceivablePlanDO::getCheckStatus, reqVO.getCheckStatus()) - .betweenIfPresent(ReceivablePlanDO::getReturnTime, reqVO.getReturnTime()) - .eqIfPresent(ReceivablePlanDO::getRemindDays, reqVO.getRemindDays()) - .betweenIfPresent(ReceivablePlanDO::getRemindTime, reqVO.getRemindTime()) - .eqIfPresent(ReceivablePlanDO::getCustomerId, reqVO.getCustomerId()) - .eqIfPresent(ReceivablePlanDO::getContractId, reqVO.getContractId()) - .eqIfPresent(ReceivablePlanDO::getOwnerUserId, reqVO.getOwnerUserId()) - .eqIfPresent(ReceivablePlanDO::getRemark, reqVO.getRemark()) - .betweenIfPresent(ReceivablePlanDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(ReceivablePlanDO::getId)); - } - - default List selectList(ReceivablePlanExportReqVO reqVO) { - return selectList(new LambdaQueryWrapperX() - .eqIfPresent(ReceivablePlanDO::getIndexNo, reqVO.getIndexNo()) - .eqIfPresent(ReceivablePlanDO::getStatus, reqVO.getStatus()) - .eqIfPresent(ReceivablePlanDO::getCheckStatus, reqVO.getCheckStatus()) - .betweenIfPresent(ReceivablePlanDO::getReturnTime, reqVO.getReturnTime()) - .eqIfPresent(ReceivablePlanDO::getRemindDays, reqVO.getRemindDays()) - .betweenIfPresent(ReceivablePlanDO::getRemindTime, reqVO.getRemindTime()) - .eqIfPresent(ReceivablePlanDO::getCustomerId, reqVO.getCustomerId()) - .eqIfPresent(ReceivablePlanDO::getContractId, reqVO.getContractId()) - .eqIfPresent(ReceivablePlanDO::getOwnerUserId, reqVO.getOwnerUserId()) - .eqIfPresent(ReceivablePlanDO::getRemark, reqVO.getRemark()) - .betweenIfPresent(ReceivablePlanDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(ReceivablePlanDO::getId)); - } - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/ReceivablePlanService.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanService.java similarity index 64% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/ReceivablePlanService.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanService.java index 163ebc26a..b8c472fa3 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/ReceivablePlanService.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanService.java @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.crm.service.receivable; import java.util.*; import javax.validation.*; import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; -import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.ReceivablePlanDO; +import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; /** @@ -11,7 +11,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; * * @author 芋道源码 */ -public interface ReceivablePlanService { +public interface CrmReceivablePlanService { /** * 创建回款计划 @@ -19,14 +19,14 @@ public interface ReceivablePlanService { * @param createReqVO 创建信息 * @return 编号 */ - Long createReceivablePlan(@Valid ReceivablePlanCreateReqVO createReqVO); + Long createReceivablePlan(@Valid CrmReceivablePlanCreateReqVO createReqVO); /** * 更新回款计划 * * @param updateReqVO 更新信息 */ - void updateReceivablePlan(@Valid ReceivablePlanUpdateReqVO updateReqVO); + void updateReceivablePlan(@Valid CrmReceivablePlanUpdateReqVO updateReqVO); /** * 删除回款计划 @@ -41,7 +41,7 @@ public interface ReceivablePlanService { * @param id 编号 * @return 回款计划 */ - ReceivablePlanDO getReceivablePlan(Long id); + CrmReceivablePlanDO getReceivablePlan(Long id); /** * 获得回款计划列表 @@ -49,7 +49,7 @@ public interface ReceivablePlanService { * @param ids 编号 * @return 回款计划列表 */ - List getReceivablePlanList(Collection ids); + List getReceivablePlanList(Collection ids); /** * 获得回款计划分页 @@ -57,7 +57,7 @@ public interface ReceivablePlanService { * @param pageReqVO 分页查询 * @return 回款计划分页 */ - PageResult getReceivablePlanPage(ReceivablePlanPageReqVO pageReqVO); + PageResult getReceivablePlanPage(CrmReceivablePlanPageReqVO pageReqVO); /** * 获得回款计划列表, 用于 Excel 导出 @@ -65,6 +65,6 @@ public interface ReceivablePlanService { * @param exportReqVO 查询条件 * @return 回款计划列表 */ - List getReceivablePlanList(ReceivablePlanExportReqVO exportReqVO); + List getReceivablePlanList(CrmReceivablePlanExportReqVO exportReqVO); } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanServiceImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanServiceImpl.java new file mode 100644 index 000000000..b3497b686 --- /dev/null +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanServiceImpl.java @@ -0,0 +1,129 @@ +package cn.iocoder.yudao.module.crm.service.receivable; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.CrmReceivablePlanCreateReqVO; +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.CrmReceivablePlanExportReqVO; +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.CrmReceivablePlanPageReqVO; +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.CrmReceivablePlanUpdateReqVO; +import cn.iocoder.yudao.module.crm.convert.receivable.CrmReceivablePlanConvert; +import cn.iocoder.yudao.module.crm.dal.dataobject.contract.ContractDO; +import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; +import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; +import cn.iocoder.yudao.module.crm.dal.mysql.receivable.CrmReceivablePlanMapper; +import cn.iocoder.yudao.module.crm.enums.AuditStatusEnum; +import cn.iocoder.yudao.module.crm.service.contract.ContractService; +import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.Collection; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; + +/** + * 回款计划 Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Validated +public class CrmReceivablePlanServiceImpl implements CrmReceivablePlanService { + + @Resource + private CrmReceivablePlanMapper crmReceivablePlanMapper; + @Resource + private ContractService contractService; + @Resource + private CrmCustomerService crmCustomerService; + + @Override + public Long createReceivablePlan(CrmReceivablePlanCreateReqVO createReqVO) { + // 插入 + CrmReceivablePlanDO receivablePlan = CrmReceivablePlanConvert.INSTANCE.convert(createReqVO); + if (ObjectUtil.isNull(receivablePlan.getStatus())){ + receivablePlan.setStatus(CommonStatusEnum.ENABLE.getStatus()); + } + if (ObjectUtil.isNull(receivablePlan.getCheckStatus())){ + receivablePlan.setCheckStatus(AuditStatusEnum.AUDIT_NEW.getValue()); + } + + checkReceivablePlan(receivablePlan); + + crmReceivablePlanMapper.insert(receivablePlan); + // 返回 + return receivablePlan.getId(); + } + + private void checkReceivablePlan(CrmReceivablePlanDO receivablePlan) { + + if(ObjectUtil.isNull(receivablePlan.getContractId())){ + throw exception(CONTRACT_NOT_EXISTS); + } + + ContractDO contract = contractService.getContract(receivablePlan.getContractId()); + if(ObjectUtil.isNull(contract)){ + throw exception(CONTRACT_NOT_EXISTS); + } + + CrmCustomerDO customer = crmCustomerService.getCustomer(receivablePlan.getCustomerId()); + if(ObjectUtil.isNull(customer)){ + throw exception(CUSTOMER_NOT_EXISTS); + } + + } + + @Override + public void updateReceivablePlan(CrmReceivablePlanUpdateReqVO updateReqVO) { + // 校验存在 + validateReceivablePlanExists(updateReqVO.getId()); + + // 更新 + CrmReceivablePlanDO updateObj = CrmReceivablePlanConvert.INSTANCE.convert(updateReqVO); + crmReceivablePlanMapper.updateById(updateObj); + } + + @Override + public void deleteReceivablePlan(Long id) { + // 校验存在 + validateReceivablePlanExists(id); + // 删除 + crmReceivablePlanMapper.deleteById(id); + } + + private void validateReceivablePlanExists(Long id) { + if (crmReceivablePlanMapper.selectById(id) == null) { + throw exception(RECEIVABLE_PLAN_NOT_EXISTS); + } + } + + @Override + public CrmReceivablePlanDO getReceivablePlan(Long id) { + return crmReceivablePlanMapper.selectById(id); + } + + @Override + public List getReceivablePlanList(Collection ids) { + if (CollUtil.isEmpty(ids)) { + return ListUtil.empty(); + } + return crmReceivablePlanMapper.selectBatchIds(ids); + } + + @Override + public PageResult getReceivablePlanPage(CrmReceivablePlanPageReqVO pageReqVO) { + return crmReceivablePlanMapper.selectPage(pageReqVO); + } + + @Override + public List getReceivablePlanList(CrmReceivablePlanExportReqVO exportReqVO) { + return crmReceivablePlanMapper.selectList(exportReqVO); + } + +} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/ReceivableService.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableService.java similarity index 67% rename from yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/ReceivableService.java rename to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableService.java index a673ec99e..8875faaa9 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/ReceivableService.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableService.java @@ -4,7 +4,7 @@ import java.util.*; import javax.validation.*; import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; -import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.ReceivableDO; +import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivableDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; /** @@ -12,7 +12,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; * * @author 赤焰 */ -public interface ReceivableService { +public interface CrmReceivableService { /** * 创建回款管理 @@ -20,14 +20,14 @@ public interface ReceivableService { * @param createReqVO 创建信息 * @return 编号 */ - Long createReceivable(@Valid ReceivableCreateReqVO createReqVO); + Long createReceivable(@Valid CrmReceivableCreateReqVO createReqVO); /** * 更新回款管理 * * @param updateReqVO 更新信息 */ - void updateReceivable(@Valid ReceivableUpdateReqVO updateReqVO); + void updateReceivable(@Valid CrmReceivableUpdateReqVO updateReqVO); /** * 删除回款管理 @@ -42,7 +42,7 @@ public interface ReceivableService { * @param id 编号 * @return 回款管理 */ - ReceivableDO getReceivable(Long id); + CrmReceivableDO getReceivable(Long id); /** * 获得回款管理列表 @@ -50,7 +50,7 @@ public interface ReceivableService { * @param ids 编号 * @return 回款管理列表 */ - List getReceivableList(Collection ids); + List getReceivableList(Collection ids); /** * 获得回款管理分页 @@ -58,7 +58,7 @@ public interface ReceivableService { * @param pageReqVO 分页查询 * @return 回款管理分页 */ - PageResult getReceivablePage(ReceivablePageReqVO pageReqVO); + PageResult getReceivablePage(CrmReceivablePageReqVO pageReqVO); /** * 获得回款管理列表, 用于 Excel 导出 @@ -66,6 +66,6 @@ public interface ReceivableService { * @param exportReqVO 查询条件 * @return 回款管理列表 */ - List getReceivableList(ReceivableExportReqVO exportReqVO); + List getReceivableList(CrmReceivableExportReqVO exportReqVO); } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableServiceImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableServiceImpl.java new file mode 100644 index 000000000..ff751bc51 --- /dev/null +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableServiceImpl.java @@ -0,0 +1,138 @@ +package cn.iocoder.yudao.module.crm.service.receivable; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.CrmReceivableCreateReqVO; +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.CrmReceivableExportReqVO; +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.CrmReceivablePageReqVO; +import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.CrmReceivableUpdateReqVO; +import cn.iocoder.yudao.module.crm.convert.receivable.CrmReceivableConvert; +import cn.iocoder.yudao.module.crm.dal.dataobject.contract.ContractDO; +import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; +import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivableDO; +import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; +import cn.iocoder.yudao.module.crm.dal.mysql.receivable.CrmReceivableMapper; +import cn.iocoder.yudao.module.crm.enums.AuditStatusEnum; +import cn.iocoder.yudao.module.crm.service.contract.ContractService; +import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.Collection; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; + +/** + * 回款管理 Service 实现类 + * + * @author 赤焰 + */ +@Service +@Validated +public class CrmReceivableServiceImpl implements CrmReceivableService { + + @Resource + private CrmReceivableMapper crmReceivableMapper; + @Resource + private ContractService contractService; + @Resource + private CrmCustomerService crmCustomerService; + @Resource + private CrmReceivablePlanService crmReceivablePlanService; + + @Override + public Long createReceivable(CrmReceivableCreateReqVO createReqVO) { + // 插入 + CrmReceivableDO receivable = CrmReceivableConvert.INSTANCE.convert(createReqVO); + if (ObjectUtil.isNull(receivable.getStatus())){ + receivable.setStatus(CommonStatusEnum.ENABLE.getStatus()); + } + if (ObjectUtil.isNull(receivable.getCheckStatus())){ + receivable.setCheckStatus(AuditStatusEnum.AUDIT_NEW.getValue()); + } + + //校验 + checkReceivable(receivable); + + crmReceivableMapper.insert(receivable); + // 返回 + return receivable.getId(); + } + + private void checkReceivable(CrmReceivableDO receivable) { + + if(ObjectUtil.isNull(receivable.getContractId())){ + throw exception(CONTRACT_NOT_EXISTS); + } + + ContractDO contract = contractService.getContract(receivable.getContractId()); + if(ObjectUtil.isNull(contract)){ + throw exception(CONTRACT_NOT_EXISTS); + } + + CrmCustomerDO customer = crmCustomerService.getCustomer(receivable.getCustomerId()); + if(ObjectUtil.isNull(customer)){ + throw exception(CUSTOMER_NOT_EXISTS); + } + + CrmReceivablePlanDO receivablePlan = crmReceivablePlanService.getReceivablePlan(receivable.getPlanId()); + if(ObjectUtil.isNull(receivablePlan)){ + throw exception(RECEIVABLE_PLAN_NOT_EXISTS); + } + + } + + @Override + public void updateReceivable(CrmReceivableUpdateReqVO updateReqVO) { + // 校验存在 + validateReceivableExists(updateReqVO.getId()); + + // 更新 + CrmReceivableDO updateObj = CrmReceivableConvert.INSTANCE.convert(updateReqVO); + crmReceivableMapper.updateById(updateObj); + } + + @Override + public void deleteReceivable(Long id) { + // 校验存在 + validateReceivableExists(id); + // 删除 + crmReceivableMapper.deleteById(id); + } + + private void validateReceivableExists(Long id) { + if (crmReceivableMapper.selectById(id) == null) { + throw exception(RECEIVABLE_NOT_EXISTS); + } + } + + @Override + public CrmReceivableDO getReceivable(Long id) { + return crmReceivableMapper.selectById(id); + } + + @Override + public List getReceivableList(Collection ids) { + if (CollUtil.isEmpty(ids)) { + return ListUtil.empty(); + } + return crmReceivableMapper.selectBatchIds(ids); + } + + @Override + public PageResult getReceivablePage(CrmReceivablePageReqVO pageReqVO) { + return crmReceivableMapper.selectPage(pageReqVO); + } + + @Override + public List getReceivableList(CrmReceivableExportReqVO exportReqVO) { + return crmReceivableMapper.selectList(exportReqVO); + } + +} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/ReceivablePlanServiceImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/ReceivablePlanServiceImpl.java deleted file mode 100644 index c0b236ac0..000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/ReceivablePlanServiceImpl.java +++ /dev/null @@ -1,97 +0,0 @@ -package cn.iocoder.yudao.module.crm.service.receivable; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.collection.ListUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.ReceivablePlanCreateReqVO; -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.ReceivablePlanExportReqVO; -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.ReceivablePlanPageReqVO; -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.ReceivablePlanUpdateReqVO; -import cn.iocoder.yudao.module.crm.convert.receivable.ReceivablePlanConvert; -import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.ReceivablePlanDO; -import cn.iocoder.yudao.module.crm.dal.mysql.receivable.ReceivablePlanMapper; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; -import java.util.Collection; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.RECEIVABLE_PLAN_NOT_EXISTS; - -/** - * 回款计划 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ReceivablePlanServiceImpl implements ReceivablePlanService { - - @Resource - private ReceivablePlanMapper receivablePlanMapper; - - @Override - public Long createReceivablePlan(ReceivablePlanCreateReqVO createReqVO) { - // 插入 - ReceivablePlanDO receivablePlan = ReceivablePlanConvert.INSTANCE.convert(createReqVO); - // TODO @liuhongfeng:空格要注释;if (ObjectUtil.isNull(receivablePlan.getStatus())) { - if(ObjectUtil.isNull(receivablePlan.getStatus())){ - receivablePlan.setStatus(CommonStatusEnum.ENABLE.getStatus()); - } - receivablePlanMapper.insert(receivablePlan); - // 返回 - return receivablePlan.getId(); - } - - @Override - public void updateReceivablePlan(ReceivablePlanUpdateReqVO updateReqVO) { - // 校验存在 - validateReceivablePlanExists(updateReqVO.getId()); - - // 更新 - ReceivablePlanDO updateObj = ReceivablePlanConvert.INSTANCE.convert(updateReqVO); - receivablePlanMapper.updateById(updateObj); - } - - @Override - public void deleteReceivablePlan(Long id) { - // 校验存在 - validateReceivablePlanExists(id); - // 删除 - receivablePlanMapper.deleteById(id); - } - - private void validateReceivablePlanExists(Long id) { - if (receivablePlanMapper.selectById(id) == null) { - throw exception(RECEIVABLE_PLAN_NOT_EXISTS); - } - } - - @Override - public ReceivablePlanDO getReceivablePlan(Long id) { - return receivablePlanMapper.selectById(id); - } - - @Override - public List getReceivablePlanList(Collection ids) { - if (CollUtil.isEmpty(ids)) { - return ListUtil.empty(); - } - return receivablePlanMapper.selectBatchIds(ids); - } - - @Override - public PageResult getReceivablePlanPage(ReceivablePlanPageReqVO pageReqVO) { - return receivablePlanMapper.selectPage(pageReqVO); - } - - @Override - public List getReceivablePlanList(ReceivablePlanExportReqVO exportReqVO) { - return receivablePlanMapper.selectList(exportReqVO); - } - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/ReceivableServiceImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/ReceivableServiceImpl.java deleted file mode 100644 index 94b25f6ed..000000000 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/ReceivableServiceImpl.java +++ /dev/null @@ -1,93 +0,0 @@ -package cn.iocoder.yudao.module.crm.service.receivable; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.collection.ListUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.ReceivableCreateReqVO; -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.ReceivableExportReqVO; -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.ReceivablePageReqVO; -import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.ReceivableUpdateReqVO; -import cn.iocoder.yudao.module.crm.convert.receivable.ReceivableConvert; -import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.ReceivableDO; -import cn.iocoder.yudao.module.crm.dal.mysql.receivable.ReceivableMapper; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; -import java.util.Collection; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.RECEIVABLE_NOT_EXISTS; - -/** - * 回款管理 Service 实现类 - * - * @author 赤焰 - */ -@Service -@Validated -public class ReceivableServiceImpl implements ReceivableService { - - @Resource - private ReceivableMapper receivableMapper; - - @Override - public Long createReceivable(ReceivableCreateReqVO createReqVO) { - // TODO @liuhongfeng:planId 是否存在,是否合法,需要去校验; - // TODO @liuhongfeng:其它类似 customerId、contractId 也需要去校验; - // 插入 - ReceivableDO receivable = ReceivableConvert.INSTANCE.convert(createReqVO); - receivableMapper.insert(receivable); - // 返回 - return receivable.getId(); - } - - @Override - public void updateReceivable(ReceivableUpdateReqVO updateReqVO) { - // 校验存在 - validateReceivableExists(updateReqVO.getId()); - - // 更新 - ReceivableDO updateObj = ReceivableConvert.INSTANCE.convert(updateReqVO); - receivableMapper.updateById(updateObj); - } - - @Override - public void deleteReceivable(Long id) { - // 校验存在 - validateReceivableExists(id); - // 删除 - receivableMapper.deleteById(id); - } - - private void validateReceivableExists(Long id) { - if (receivableMapper.selectById(id) == null) { - throw exception(RECEIVABLE_NOT_EXISTS); - } - } - - @Override - public ReceivableDO getReceivable(Long id) { - return receivableMapper.selectById(id); - } - - @Override - public List getReceivableList(Collection ids) { - if (CollUtil.isEmpty(ids)) { - return ListUtil.empty(); - } - return receivableMapper.selectBatchIds(ids); - } - - @Override - public PageResult getReceivablePage(ReceivablePageReqVO pageReqVO) { - return receivableMapper.selectPage(pageReqVO); - } - - @Override - public List getReceivableList(ReceivableExportReqVO exportReqVO) { - return receivableMapper.selectList(exportReqVO); - } - -} diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/receivable/ReceivableMapper.xml b/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/receivable/CrmReceivableMapper.xml similarity index 95% rename from yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/receivable/ReceivableMapper.xml rename to yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/receivable/CrmReceivableMapper.xml index b87beb08f..b2ab2042e 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/receivable/ReceivableMapper.xml +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/receivable/CrmReceivableMapper.xml @@ -1,6 +1,6 @@ - +