mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 18:28:43 +08:00 
			
		
		
		
	code review:CRM 回款计划的逻辑
This commit is contained in:
		| @@ -1,6 +1,7 @@ | ||||
| package cn.iocoder.yudao.module.crm.controller.admin.receivable; | ||||
|  | ||||
| import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||||
| 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.*; | ||||
| @@ -18,9 +19,8 @@ import javax.annotation.Resource; | ||||
| import javax.servlet.http.HttpServletResponse; | ||||
| import javax.validation.Valid; | ||||
| import java.io.IOException; | ||||
| import java.util.Collection; | ||||
| import java.util.List; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
|  | ||||
| import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||||
| import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; | ||||
|  | ||||
| @@ -69,15 +69,6 @@ public class ReceivableController { | ||||
|         return success(ReceivableConvert.INSTANCE.convert(receivable)); | ||||
|     } | ||||
|  | ||||
|     @GetMapping("/list") | ||||
|     @Operation(summary = "获得回款管理列表") | ||||
|     @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") | ||||
|     @PreAuthorize("@ss.hasPermission('crm:receivable:query')") | ||||
|     public CommonResult<List<ReceivableRespVO>> getReceivableList(@RequestParam("ids") Collection<Long> ids) { | ||||
|         List<ReceivableDO> list = receivableService.getReceivableList(ids); | ||||
|         return success(ReceivableConvert.INSTANCE.convertList(list)); | ||||
|     } | ||||
|  | ||||
|     @GetMapping("/page") | ||||
|     @Operation(summary = "获得回款管理分页") | ||||
|     @PreAuthorize("@ss.hasPermission('crm:receivable:query')") | ||||
|   | ||||
| @@ -1,32 +1,28 @@ | ||||
| package cn.iocoder.yudao.module.crm.controller.admin.receivable; | ||||
|  | ||||
| import org.springframework.web.bind.annotation.*; | ||||
| import javax.annotation.Resource; | ||||
| import org.springframework.validation.annotation.Validated; | ||||
| import org.springframework.security.access.prepost.PreAuthorize; | ||||
| import io.swagger.v3.oas.annotations.tags.Tag; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
|  | ||||
| import javax.validation.constraints.*; | ||||
| import javax.validation.*; | ||||
| import javax.servlet.http.*; | ||||
| import java.util.*; | ||||
| import java.io.IOException; | ||||
|  | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||||
| import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||||
|  | ||||
| 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 static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; | ||||
|  | ||||
| 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.convert.receivable.ReceivablePlanConvert; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.ReceivablePlanDO; | ||||
| import cn.iocoder.yudao.module.crm.service.receivable.ReceivablePlanService; | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import io.swagger.v3.oas.annotations.tags.Tag; | ||||
| import org.springframework.security.access.prepost.PreAuthorize; | ||||
| import org.springframework.validation.annotation.Validated; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
|  | ||||
| import javax.annotation.Resource; | ||||
| import javax.servlet.http.HttpServletResponse; | ||||
| import javax.validation.Valid; | ||||
| import java.io.IOException; | ||||
| import java.util.List; | ||||
|  | ||||
| import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||||
| import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; | ||||
|  | ||||
| /** | ||||
|  * @author 赤焰 | ||||
| @@ -73,15 +69,6 @@ public class ReceivablePlanController { | ||||
|         return success(ReceivablePlanConvert.INSTANCE.convert(receivablePlan)); | ||||
|     } | ||||
|  | ||||
|     @GetMapping("/list") | ||||
|     @Operation(summary = "获得回款计划列表") | ||||
|     @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") | ||||
|     @PreAuthorize("@ss.hasPermission('crm:receivable-plan:query')") | ||||
|     public CommonResult<List<ReceivablePlanRespVO>> getReceivablePlanList(@RequestParam("ids") Collection<Long> ids) { | ||||
|         List<ReceivablePlanDO> list = receivablePlanService.getReceivablePlanList(ids); | ||||
|         return success(ReceivablePlanConvert.INSTANCE.convertList(list)); | ||||
|     } | ||||
|  | ||||
|     @GetMapping("/page") | ||||
|     @Operation(summary = "获得回款计划分页") | ||||
|     @PreAuthorize("@ss.hasPermission('crm:receivable-plan:query')") | ||||
|   | ||||
| @@ -1,14 +1,12 @@ | ||||
| package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; | ||||
|  | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import lombok.*; | ||||
| import java.util.*; | ||||
| import java.time.LocalDateTime; | ||||
| import lombok.Data; | ||||
| import org.springframework.format.annotation.DateTimeFormat; | ||||
|  | ||||
| import javax.validation.constraints.NotNull; | ||||
| import java.math.BigDecimal; | ||||
| import java.time.LocalDateTime; | ||||
| import java.time.LocalDateTime; | ||||
| import javax.validation.constraints.*; | ||||
| import org.springframework.format.annotation.DateTimeFormat; | ||||
|  | ||||
| import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||||
|  | ||||
| @@ -19,9 +17,13 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ | ||||
| @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; | ||||
|  | ||||
| @@ -31,9 +33,12 @@ public class ReceivableBaseVO { | ||||
|     @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; | ||||
|  | ||||
| @@ -44,6 +49,7 @@ public class ReceivableBaseVO { | ||||
|     @Schema(description = "回款方式", example = "2") | ||||
|     private String returnType; | ||||
|  | ||||
|     // TODO @liuhongfeng:使用 Int 哈,分; | ||||
|     @Schema(description = "回款金额", example = "31859") | ||||
|     private BigDecimal price; | ||||
|  | ||||
| @@ -56,12 +62,14 @@ public class ReceivableBaseVO { | ||||
|     @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; | ||||
|   | ||||
| @@ -1,12 +1,13 @@ | ||||
| package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; | ||||
|  | ||||
| import lombok.*; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.ToString; | ||||
| import org.springframework.format.annotation.DateTimeFormat; | ||||
|  | ||||
| import java.math.BigDecimal; | ||||
| import java.util.*; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||||
| 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; | ||||
| @@ -17,6 +18,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ | ||||
| @ToString(callSuper = true) | ||||
| public class ReceivablePageReqVO extends PageParam { | ||||
|  | ||||
|     // TODO @liuhongfeng:目前就使用 no 检索即可; | ||||
|     @Schema(description = "回款编号") | ||||
|     private String no; | ||||
|  | ||||
|   | ||||
| @@ -1,15 +1,11 @@ | ||||
| package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; | ||||
|  | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import lombok.*; | ||||
| import java.util.*; | ||||
| import lombok.Data; | ||||
| import org.springframework.format.annotation.DateTimeFormat; | ||||
|  | ||||
| import java.math.BigDecimal; | ||||
| import java.time.LocalDateTime; | ||||
| import java.time.LocalDateTime; | ||||
| import java.time.LocalDateTime; | ||||
| import java.time.LocalDateTime; | ||||
| import javax.validation.constraints.*; | ||||
| import org.springframework.format.annotation.DateTimeFormat; | ||||
|  | ||||
| import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||||
|  | ||||
| @@ -20,9 +16,11 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ | ||||
| @Data | ||||
| public class ReceivablePlanBaseVO { | ||||
|  | ||||
|     // TODO 芋艿:这个字段,在想想命名; | ||||
|     @Schema(description = "期数") | ||||
|     private Long indexNo; | ||||
|  | ||||
|     // TODO @liuhongfeng:中英文之间,有个空格,这样更干净; | ||||
|     @Schema(description = "回款ID", example = "19852") | ||||
|     private Long receivableId; | ||||
|  | ||||
| @@ -30,12 +28,16 @@ public class ReceivablePlanBaseVO { | ||||
|     //@NotNull(message = "完成状态不能为空") | ||||
|     private Integer status; | ||||
|  | ||||
|     // TODO @liuhongfeng:这个字段,可以写个枚举,然后 InEnum 去校验下; | ||||
|     // TODO @liuhongfeng:这个字段,应该不是前端传递的噢,而是后端自己生成的 | ||||
|     @Schema(description = "审批状态", example = "1") | ||||
|     private String checkStatus; | ||||
|  | ||||
|     // TODO @liuhongfeng:这个字段,应该不是前端传递的噢,而是后端自己生成的,所以不适合放在 base 里面; | ||||
|     @Schema(description = "工作流编号", example = "8909") | ||||
|     private Long processInstanceId; | ||||
|  | ||||
|     // TODO @liuhongfeng:使用 Int 哈,分; | ||||
|     @Schema(description = "计划回款金额", example = "29675") | ||||
|     private BigDecimal price; | ||||
|  | ||||
| @@ -43,6 +45,7 @@ public class ReceivablePlanBaseVO { | ||||
|     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||||
|     private LocalDateTime returnTime; | ||||
|  | ||||
|     // TODO @liuhongfeng:这个字段,Integer | ||||
|     @Schema(description = "提前几天提醒") | ||||
|     private Long remindDays; | ||||
|  | ||||
| @@ -56,6 +59,7 @@ public class ReceivablePlanBaseVO { | ||||
|     @Schema(description = "合同ID", example = "3473") | ||||
|     private Long contractId; | ||||
|  | ||||
|     // TODO @liuhongfeng:这个字段,应该不是前端传递的噢,而是后端自己生成的,所以不适合放在 base 里面; | ||||
|     @Schema(description = "负责人", example = "17828") | ||||
|     private Long ownerUserId; | ||||
|  | ||||
|   | ||||
| @@ -1,10 +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 cn.iocoder.yudao.framework.common.pojo.PageParam; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.ToString; | ||||
| 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; | ||||
| @@ -15,6 +17,8 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ | ||||
| @ToString(callSuper = true) | ||||
| public class ReceivablePlanPageReqVO extends PageParam { | ||||
|  | ||||
|     // TODO 芋艿:筛选字段,需要去掉几个,在想想; | ||||
|  | ||||
|     @Schema(description = "期数") | ||||
|     private Long indexNo; | ||||
|  | ||||
|   | ||||
| @@ -1,13 +1,13 @@ | ||||
| package cn.iocoder.yudao.module.crm.dal.dataobject.receivable; | ||||
|  | ||||
| import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | ||||
| import com.baomidou.mybatisplus.annotation.KeySequence; | ||||
| import com.baomidou.mybatisplus.annotation.TableId; | ||||
| import com.baomidou.mybatisplus.annotation.TableName; | ||||
| import lombok.*; | ||||
| import java.util.*; | ||||
| import java.time.LocalDateTime; | ||||
|  | ||||
| import java.math.BigDecimal; | ||||
| import java.time.LocalDateTime; | ||||
| import java.time.LocalDateTime; | ||||
| import com.baomidou.mybatisplus.annotation.*; | ||||
| import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | ||||
|  | ||||
| /** | ||||
|  * 回款管理 DO | ||||
| @@ -35,14 +35,20 @@ public class ReceivableDO extends BaseDO { | ||||
|     private String no; | ||||
|     /** | ||||
|      * 回款计划ID | ||||
|      * | ||||
|      * TODO @liuhongfeng:这个字段,后续要写下关联的实体哈 | ||||
|      */ | ||||
|     private Long planId; | ||||
|     /** | ||||
|      * 客户ID | ||||
|      * | ||||
|      * TODO @liuhongfeng:这个字段,后续要写下关联的实体哈 | ||||
|      */ | ||||
|     private Long customerId; | ||||
|     /** | ||||
|      * 合同ID | ||||
|      * | ||||
|      * TODO @liuhongfeng:这个字段,后续要写下关联的实体哈 | ||||
|      */ | ||||
|     private Long contractId; | ||||
|     /** | ||||
| @@ -53,6 +59,8 @@ public class ReceivableDO extends BaseDO { | ||||
|     private Integer checkStatus; | ||||
|     /** | ||||
|      * 工作流编号 | ||||
|      * | ||||
|      * TODO @liuhongfeng:这个字段,后续要写下关联的实体哈 | ||||
|      */ | ||||
|     private Long processInstanceId; | ||||
|     /** | ||||
| @@ -79,6 +87,7 @@ public class ReceivableDO extends BaseDO { | ||||
|      * 显示顺序 | ||||
|      */ | ||||
|     private Integer sort; | ||||
|     // TODO 芋艿:dataScope、dataScopeDeptIds 在想下; | ||||
|     /** | ||||
|      * 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限) | ||||
|      */ | ||||
|   | ||||
| @@ -1,24 +1,26 @@ | ||||
| package cn.iocoder.yudao.module.crm.service.receivable; | ||||
|  | ||||
| import cn.hutool.core.util.ObjectUtil; | ||||
| import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||||
| import org.springframework.stereotype.Service; | ||||
| import javax.annotation.Resource; | ||||
| import org.springframework.validation.annotation.Validated; | ||||
|  | ||||
| import java.util.*; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.ReceivablePlanDO; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
|  | ||||
| import cn.iocoder.yudao.module.crm.convert.receivable.ReceivablePlanConvert; | ||||
| import cn.iocoder.yudao.module.crm.dal.mysql.receivable.ReceivablePlanMapper; | ||||
|  | ||||
| import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||||
| import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; | ||||
|  | ||||
| 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 实现类 | ||||
| @@ -36,6 +38,7 @@ public class ReceivablePlanServiceImpl implements ReceivablePlanService { | ||||
|     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()); | ||||
|         } | ||||
| @@ -48,6 +51,7 @@ public class ReceivablePlanServiceImpl implements ReceivablePlanService { | ||||
|     public void updateReceivablePlan(ReceivablePlanUpdateReqVO updateReqVO) { | ||||
|         // 校验存在 | ||||
|         validateReceivablePlanExists(updateReqVO.getId()); | ||||
|  | ||||
|         // 更新 | ||||
|         ReceivablePlanDO updateObj = ReceivablePlanConvert.INSTANCE.convert(updateReqVO); | ||||
|         receivablePlanMapper.updateById(updateObj); | ||||
|   | ||||
| @@ -1,21 +1,24 @@ | ||||
| package cn.iocoder.yudao.module.crm.service.receivable; | ||||
|  | ||||
| import org.springframework.stereotype.Service; | ||||
| import javax.annotation.Resource; | ||||
| import org.springframework.validation.annotation.Validated; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import java.util.*; | ||||
| 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.convert.receivable.ReceivableConvert; | ||||
| import cn.iocoder.yudao.module.crm.dal.mysql.receivable.ReceivableMapper; | ||||
|  | ||||
| import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||||
| import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; | ||||
|  | ||||
| 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 实现类 | ||||
| @@ -31,6 +34,8 @@ public class ReceivableServiceImpl implements ReceivableService { | ||||
|  | ||||
|     @Override | ||||
|     public Long createReceivable(ReceivableCreateReqVO createReqVO) { | ||||
|         // TODO @liuhongfeng:planId 是否存在,是否合法,需要去校验; | ||||
|         // TODO @liuhongfeng:其它类似 customerId、contractId 也需要去校验; | ||||
|         // 插入 | ||||
|         ReceivableDO receivable = ReceivableConvert.INSTANCE.convert(createReqVO); | ||||
|         receivableMapper.insert(receivable); | ||||
| @@ -42,6 +47,7 @@ public class ReceivableServiceImpl implements ReceivableService { | ||||
|     public void updateReceivable(ReceivableUpdateReqVO updateReqVO) { | ||||
|         // 校验存在 | ||||
|         validateReceivableExists(updateReqVO.getId()); | ||||
|  | ||||
|         // 更新 | ||||
|         ReceivableDO updateObj = ReceivableConvert.INSTANCE.convert(updateReqVO); | ||||
|         receivableMapper.updateById(updateObj); | ||||
|   | ||||
| @@ -1,33 +1,30 @@ | ||||
| package cn.iocoder.yudao.module.crm.service.receivable; | ||||
|  | ||||
| import org.junit.jupiter.api.Disabled; | ||||
| import org.junit.jupiter.api.Test; | ||||
| import org.springframework.boot.test.mock.mockito.MockBean; | ||||
|  | ||||
| import javax.annotation.Resource; | ||||
|  | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; | ||||
|  | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; | ||||
| 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.dal.dataobject.receivable.ReceivablePlanDO; | ||||
| import cn.iocoder.yudao.module.crm.dal.mysql.receivable.ReceivablePlanMapper; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import org.junit.jupiter.api.Disabled; | ||||
| import org.junit.jupiter.api.Test; | ||||
| import org.springframework.context.annotation.Import; | ||||
|  | ||||
| import javax.annotation.Resource; | ||||
| import org.springframework.context.annotation.Import; | ||||
| import java.util.*; | ||||
| import java.time.LocalDateTime; | ||||
| import java.util.List; | ||||
|  | ||||
| import static cn.hutool.core.util.RandomUtil.*; | ||||
| import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; | ||||
| import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*; | ||||
| import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*; | ||||
| import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*; | ||||
| import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; | ||||
| import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | ||||
| import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.RECEIVABLE_PLAN_NOT_EXISTS; | ||||
| import static org.junit.jupiter.api.Assertions.*; | ||||
| import static org.mockito.Mockito.*; | ||||
|  | ||||
| // TODO 芋艿:后续,需要补充测试用例 | ||||
| /** | ||||
|  * {@link ReceivablePlanServiceImpl} 的单元测试类 | ||||
|  * | ||||
|   | ||||
| @@ -1,33 +1,30 @@ | ||||
| package cn.iocoder.yudao.module.crm.service.receivable; | ||||
|  | ||||
| import org.junit.jupiter.api.Disabled; | ||||
| import org.junit.jupiter.api.Test; | ||||
| import org.springframework.boot.test.mock.mockito.MockBean; | ||||
|  | ||||
| import javax.annotation.Resource; | ||||
|  | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; | ||||
|  | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.*; | ||||
| 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.dal.dataobject.receivable.ReceivableDO; | ||||
| import cn.iocoder.yudao.module.crm.dal.mysql.receivable.ReceivableMapper; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import org.junit.jupiter.api.Disabled; | ||||
| import org.junit.jupiter.api.Test; | ||||
| import org.springframework.context.annotation.Import; | ||||
|  | ||||
| import javax.annotation.Resource; | ||||
| import org.springframework.context.annotation.Import; | ||||
| import java.util.*; | ||||
| import java.time.LocalDateTime; | ||||
| import java.util.List; | ||||
|  | ||||
| import static cn.hutool.core.util.RandomUtil.*; | ||||
| import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; | ||||
| import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*; | ||||
| import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*; | ||||
| import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*; | ||||
| import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; | ||||
| import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; | ||||
| import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | ||||
| import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.RECEIVABLE_NOT_EXISTS; | ||||
| import static org.junit.jupiter.api.Assertions.*; | ||||
| import static org.mockito.Mockito.*; | ||||
|  | ||||
| // TODO 芋艿:等实现完,在校验下; | ||||
| /** | ||||
|  * {@link ReceivableServiceImpl} 的单元测试类 | ||||
|  * | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV