Commit b13531448272b2c6012bd0b5c55740c50968d5b6

Authored by 芋道源码
Committed by Gitee
2 parents 77d63403 b94cd087

!890 修复:CRM 更新回款报错、待办事项中即将到期的合同查询报错、新增商机产品不显示

Merge pull request !890 from 李占宏/develop
yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/product/CrmProductStatusEnum.java
1 package cn.iocoder.yudao.module.crm.enums.product; 1 package cn.iocoder.yudao.module.crm.enums.product;
2 2
  3 +import cn.hutool.core.util.ObjUtil;
3 import cn.iocoder.yudao.framework.common.core.IntArrayValuable; 4 import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
4 import lombok.AllArgsConstructor; 5 import lombok.AllArgsConstructor;
5 import lombok.Getter; 6 import lombok.Getter;
@@ -35,4 +36,12 @@ public enum CrmProductStatusEnum implements IntArrayValuable { @@ -35,4 +36,12 @@ public enum CrmProductStatusEnum implements IntArrayValuable {
35 return ARRAYS; 36 return ARRAYS;
36 } 37 }
37 38
  39 + public static boolean isEnable(Integer status) {
  40 + return ObjUtil.equal(ENABLE.status, status);
  41 + }
  42 +
  43 + public static boolean isDisable(Integer status) {
  44 + return ObjUtil.equal(DISABLE.status, status);
  45 + }
  46 +
38 } 47 }
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/CrmProductController.java
1 package cn.iocoder.yudao.module.crm.controller.admin.product; 1 package cn.iocoder.yudao.module.crm.controller.admin.product;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;  
5 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
6 import cn.iocoder.yudao.framework.common.pojo.PageParam; 5 import cn.iocoder.yudao.framework.common.pojo.PageParam;
7 import cn.iocoder.yudao.framework.common.pojo.PageResult; 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
@@ -14,6 +13,7 @@ import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProduc @@ -14,6 +13,7 @@ import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProduc
14 import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductSaveReqVO; 13 import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductSaveReqVO;
15 import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO; 14 import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO;
16 import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO; 15 import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO;
  16 +import cn.iocoder.yudao.module.crm.enums.product.CrmProductStatusEnum;
17 import cn.iocoder.yudao.module.crm.service.product.CrmProductCategoryService; 17 import cn.iocoder.yudao.module.crm.service.product.CrmProductCategoryService;
18 import cn.iocoder.yudao.module.crm.service.product.CrmProductService; 18 import cn.iocoder.yudao.module.crm.service.product.CrmProductService;
19 import cn.iocoder.yudao.module.system.api.user.AdminUserApi; 19 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
@@ -96,7 +96,7 @@ public class CrmProductController { @@ -96,7 +96,7 @@ public class CrmProductController {
96 @GetMapping("/simple-list") 96 @GetMapping("/simple-list")
97 @Operation(summary = "获得产品精简列表", description = "只包含被开启的产品,主要用于前端的下拉选项") 97 @Operation(summary = "获得产品精简列表", description = "只包含被开启的产品,主要用于前端的下拉选项")
98 public CommonResult<List<CrmProductRespVO>> getProductSimpleList() { 98 public CommonResult<List<CrmProductRespVO>> getProductSimpleList() {
99 - List<CrmProductDO> list = productService.getProductListByStatus(CommonStatusEnum.ENABLE.getStatus()); 99 + List<CrmProductDO> list = productService.getProductListByStatus(CrmProductStatusEnum.ENABLE.getStatus());
100 return success(convertList(list, product -> new CrmProductRespVO().setId(product.getId()).setName(product.getName()) 100 return success(convertList(list, product -> new CrmProductRespVO().setId(product.getId()).setName(product.getName())
101 .setUnit(product.getUnit()).setNo(product.getNo()).setPrice(product.getPrice()))); 101 .setUnit(product.getUnit()).setNo(product.getNo()).setPrice(product.getPrice())));
102 } 102 }
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.crm.service.contract; @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.crm.service.contract;
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.hutool.core.collection.ListUtil; 4 import cn.hutool.core.collection.ListUtil;
5 import cn.hutool.core.lang.Assert; 5 import cn.hutool.core.lang.Assert;
  6 +import cn.hutool.core.lang.Validator;
6 import cn.hutool.core.util.ObjUtil; 7 import cn.hutool.core.util.ObjUtil;
7 import cn.iocoder.yudao.framework.common.pojo.PageResult; 8 import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; 9 import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
@@ -345,6 +346,9 @@ public class CrmContractServiceImpl implements CrmContractService { @@ -345,6 +346,9 @@ public class CrmContractServiceImpl implements CrmContractService {
345 if (config != null && Boolean.FALSE.equals(config.getNotifyEnabled())) { 346 if (config != null && Boolean.FALSE.equals(config.getNotifyEnabled())) {
346 config = null; 347 config = null;
347 } 348 }
  349 + if(Validator.isNull(config)){
  350 + return new PageResult<>();
  351 + }
348 } 352 }
349 // 2. 查询分页 353 // 2. 查询分页
350 return contractMapper.selectPage(pageReqVO, userId, config); 354 return contractMapper.selectPage(pageReqVO, userId, config);
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductServiceImpl.java
1 package cn.iocoder.yudao.module.crm.service.product; 1 package cn.iocoder.yudao.module.crm.service.product;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;  
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 5 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
7 import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductPageReqVO; 6 import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductPageReqVO;
@@ -11,6 +10,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO; @@ -11,6 +10,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO;
11 import cn.iocoder.yudao.module.crm.dal.mysql.product.CrmProductMapper; 10 import cn.iocoder.yudao.module.crm.dal.mysql.product.CrmProductMapper;
12 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; 11 import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
13 import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; 12 import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum;
  13 +import cn.iocoder.yudao.module.crm.enums.product.CrmProductStatusEnum;
14 import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPermission; 14 import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPermission;
15 import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService; 15 import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService;
16 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO; 16 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO;
@@ -165,7 +165,7 @@ public class CrmProductServiceImpl implements CrmProductService { @@ -165,7 +165,7 @@ public class CrmProductServiceImpl implements CrmProductService {
165 if (productMap.get(id) == null) { 165 if (productMap.get(id) == null) {
166 throw exception(PRODUCT_NOT_EXISTS); 166 throw exception(PRODUCT_NOT_EXISTS);
167 } 167 }
168 - if (CommonStatusEnum.isDisable(product.getStatus())) { 168 + if (CrmProductStatusEnum.isDisable(product.getStatus())) {
169 throw exception(PRODUCT_NOT_ENABLE, product.getName()); 169 throw exception(PRODUCT_NOT_ENABLE, product.getName());
170 } 170 }
171 } 171 }
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableServiceImpl.java
@@ -164,9 +164,9 @@ public class CrmReceivableServiceImpl implements CrmReceivableService { @@ -164,9 +164,9 @@ public class CrmReceivableServiceImpl implements CrmReceivableService {
164 @CrmPermission(bizType = CrmBizTypeEnum.CRM_RECEIVABLE, bizId = "#updateReqVO.id", level = CrmPermissionLevelEnum.WRITE) 164 @CrmPermission(bizType = CrmBizTypeEnum.CRM_RECEIVABLE, bizId = "#updateReqVO.id", level = CrmPermissionLevelEnum.WRITE)
165 public void updateReceivable(CrmReceivableSaveReqVO updateReqVO) { 165 public void updateReceivable(CrmReceivableSaveReqVO updateReqVO) {
166 Assert.notNull(updateReqVO.getId(), "回款编号不能为空"); 166 Assert.notNull(updateReqVO.getId(), "回款编号不能为空");
167 - updateReqVO.setOwnerUserId(null).setCustomerId(null).setContractId(null).setPlanId(null); // 不允许修改的字段  
168 // 1.1 校验可回款金额超过上限 167 // 1.1 校验可回款金额超过上限
169 validateReceivablePriceExceedsLimit(updateReqVO); 168 validateReceivablePriceExceedsLimit(updateReqVO);
  169 + updateReqVO.setOwnerUserId(null).setCustomerId(null).setContractId(null).setPlanId(null); // 不允许修改的字段
170 // 1.2 校验存在 170 // 1.2 校验存在
171 CrmReceivableDO receivable = validateReceivableExists(updateReqVO.getId()); 171 CrmReceivableDO receivable = validateReceivableExists(updateReqVO.getId());
172 // 1.3 只有草稿、审批中,可以编辑; 172 // 1.3 只有草稿、审批中,可以编辑;