feat(crm): 添加商机关联产品信息获取接口并优化业绩分析功能

- 在 BusinessApi 中新增 getBusinessProduct 方法,用于获取商机所绑定的产品信息
- 实现 CrmBusinessProductDTO 数据传输对象,用于传递商机产品信息
- 在 AchievementController 中添加 getAchievement 方法,用于获取产品业绩分析数据- 实现 BusinessApiImpl 中的 getBusinessProduct 方法,调用业务服务获取产品信息
- 移除 CrmBusinessController 中的 PreAuthorize 注解
This commit is contained in:
furongxin 2025-02-22 16:29:49 +08:00
parent 4900d87c40
commit 471a980905
11 changed files with 63 additions and 11 deletions

View File

@ -7,7 +7,6 @@ import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.xssf.usermodel.XSSFDataValidation;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

View File

@ -4,7 +4,6 @@ import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOABaseRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.cash.BpmOACashRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.payment.BpmOAPaymentRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement.BpmOAReimbursementRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

View File

@ -7,7 +7,6 @@ import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.payment.BpmOAPaymentPa
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.payment.BpmOAPaymentRespVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAPaymentDO;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import io.swagger.v3.oas.annotations.Parameter;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

View File

@ -17,7 +17,6 @@ import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.awt.event.PaintEvent;
import java.util.List;
import java.util.Set;

View File

@ -4,11 +4,9 @@ import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskRespVO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAExpensesItemDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALoanDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASalaryDO;
import cn.iocoder.yudao.module.bpm.enums.definition.BpmTaskRuleScriptEnum;
import cn.iocoder.yudao.module.bpm.service.oa.BpmOAExpensesService;
import cn.iocoder.yudao.module.bpm.service.oa.BpmOALoanService;
import cn.iocoder.yudao.module.bpm.service.oa.BpmOASalaryService;
import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService;
import cn.iocoder.yudao.module.system.api.dept.DeptApi;

View File

@ -1,12 +1,11 @@
package cn.iocoder.yudao.module.bpm.service.oa;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.imprest.BpmOAImprestCreateReqVO;
import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAImprestConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.financialpayment.FinancialPaymentDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAImprestDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO;
@ -24,7 +23,6 @@ import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.hrm.api.crmbusiness;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.hrm.api.crmbusiness.dto.CrmBusinessDTO;
import cn.iocoder.yudao.module.hrm.api.crmbusiness.dto.CrmBusinessProductDTO;
import cn.iocoder.yudao.module.hrm.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -10,6 +11,8 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿fallbackFactory =
@Tag(name = "RPC 服务 - 流程实例")
public interface BusinessApi {
@ -20,4 +23,9 @@ public interface BusinessApi {
@Operation(summary = "获得商机信息")
@Parameter(name = "id", description = "ID", required = true)
CommonResult<CrmBusinessDTO> getBusiness(@RequestParam("id") Long id);
@GetMapping(PREFIX + "/getByBusinessId")
@Operation(summary = "获得商机所绑定产品信息")
@Parameter(name = "businessId", description = "商机编号", required = true)
CommonResult<List<CrmBusinessProductDTO>> getBusinessProduct(@RequestParam("businessId") Long businessId);
}

View File

@ -0,0 +1,38 @@
package cn.iocoder.yudao.module.hrm.api.crmbusiness.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
@Schema(description = "RPC 服务 - 商机产品关联 Response DTO")
@Data
public class CrmBusinessProductDTO {
@Schema(description = "编号")
private Long id;
@Schema(description = "商机id")
private Long businessId;
@Schema(description = "产品id")
private Long productId;
@Schema(description = "商品名称")
private String name;
@Schema(description = "商品属性")
private String productAttrUnique;
@Schema(description = "单价")
private BigDecimal price;
@Schema(description = "数量")
private Integer nums;
@Schema(description = "小计")
private BigDecimal subtotal;
@Schema(description = "备注")
private String remarks;
}

View File

@ -3,14 +3,18 @@ package cn.iocoder.yudao.module.crm.api.crmbusiness;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.crm.controller.admin.crmbusiness.vo.CrmBusinessRespVO;
import cn.iocoder.yudao.module.crm.dal.dataobject.crmbusiness.CrmBusinessProductDO;
import cn.iocoder.yudao.module.crm.service.crmbusiness.CrmBusinessService;
import cn.iocoder.yudao.module.hrm.api.crmbusiness.BusinessApi;
import cn.iocoder.yudao.module.hrm.api.crmbusiness.dto.CrmBusinessDTO;
import cn.iocoder.yudao.module.hrm.api.crmbusiness.dto.CrmBusinessProductDTO;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
/**
@ -28,4 +32,10 @@ public class BusinessApiImpl implements BusinessApi {
CrmBusinessRespVO businessDO = businessService.getBusiness(id);
return success(BeanUtils.toBean(businessDO, CrmBusinessDTO.class));
}
@Override
public CommonResult<List<CrmBusinessProductDTO>> getBusinessProduct(Long businessId) {
List<CrmBusinessProductDO> businessProductList = businessService.getBusinessProductListByBusinessId(businessId);
return success(BeanUtils.toBean(businessProductList, CrmBusinessProductDTO.class));
}
}

View File

@ -56,7 +56,12 @@ public class AchievementController {
return success(achievementService.getSales(relation));
}
@GetMapping("/product-performance")
@Operation(summary = "获得产品业绩分析")
public CommonResult<List<DeptAchieveVO>> getAchievement(@Valid AchievementPageReqVO pageReqVO) {
List<DeptAchieveVO> deptAchieveRespVOS = achievementService.getDeptAchieve(pageReqVO);
return success(deptAchieveRespVOS);
}
}

View File

@ -10,7 +10,6 @@ import cn.iocoder.yudao.module.crm.service.crmbusiness.CrmBusinessService;
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.*;