浏览代码

feat: 增加客户信息变更回写客户库的接口,修改新旧数据比较记录

zhaojianyang 3 月之前
父节点
当前提交
89db8395d1
共有 15 个文件被更改,包括 602 次插入186 次删除
  1. 13 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/controller/BlinkCustomerController.java
  2. 49 144
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkCustomerDO.java
  3. 65 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/lBlinkCustomerEditVO.java
  4. 2 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/factory/CustomizeProcessFactory.java
  5. 182 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/handler/CustomerEditProcessSubmitEventHandler.java
  6. 27 27
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/handler/CustomerRegisterProcessSubmitEventHandler.java
  7. 66 12
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkCustomerServiceImpl.java
  8. 9 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkCustomerRepository.java
  9. 15 1
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkCustomerService.java
  10. 17 1
      bound-link-api/blink-backend/src/main/resources/mapper/BlinkCustomerRepositoryMapper.xml
  11. 1 1
      bound-link-api/blink-base/src/main/java/com/wx/blink/base/module/support/datatracer/domain/entity/DataTracerEntity.java
  12. 109 0
      bound-link-api/blink-base/src/main/java/com/wx/blink/base/module/support/datatracer/service/DataTracerService.java
  13. 8 0
      bound-link-api/blink-common-dto/src/main/java/com/wx/blink/common/qry/BlinkCustomerQry.java
  14. 34 0
      bound-link-api/blink-common-dto/src/main/java/com/wx/blink/common/vo/BlinkCustomerStatisticsVO.java
  15. 5 0
      bound-link-api/blink-common-dto/src/main/java/com/wx/blink/common/vo/BlinkCustomerVO.java

+ 13 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/controller/BlinkCustomerController.java

@@ -85,4 +85,17 @@ public class BlinkCustomerController {
         return customerService.bizFileDelete(id);
     }
 
+    @Operation(summary = "服务商客户列表")
+    @PostMapping("/supports/customer/providerQueryPage")
+    public ResponseDTO<PageResult<BlinkCustomerVO>> providerQueryPage(@RequestBody BlinkCustomerQry qry) {
+        return ResponseDTO.ok(customerService.providerCustomerQueryPage(qry));
+    }
+
+    @Operation(summary = "服务商客户列表表头统计数据接口")
+    @PostMapping(value = "/supports/customer/providerStatistics/info")
+    public ResponseDTO<BlinkCustomerStatisticsVO> providerStatisticsInfo() {
+        BlinkCustomerQry qry = new BlinkCustomerQry();
+        return ResponseDTO.ok(customerService.providerCustomerStatisticsInfo(qry));
+    }
+
 }

+ 49 - 144
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkCustomerDO.java

@@ -7,6 +7,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.wx.blink.base.common.domain.BaseEntity;
 import com.wx.blink.base.common.json.serializer.FileKeyVoSerializer;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.util.Date;
@@ -22,246 +23,150 @@ import java.util.Date;
 @TableName("blink_customer")
 public class BlinkCustomerDO extends BaseEntity {
 
-    /**
-     * id
-     */
+    @Schema(description = "id")
     @TableId(type = IdType.ASSIGN_UUID)
     private String id;
 
-    /**
-     * 客户编码
-     */
+    @Schema(description = "客户编码")
     private String customerCode;
 
-    /**
-     * 客户名称
-     */
+    @Schema(description = "客户名称")
     private String customerName;
 
-    /**
-     * 客户地区类型
-     */
+    @Schema(description = "客户地区类型")
     private String regionType;
 
-    /**
-     * 客户属性
-     */
+    @Schema(description = "客户属性")
     private String customerAttribute;
 
-    /**
-     * 客户来源
-     */
+    @Schema(description = "客户来源")
     private String customerSource;
 
-    /**
-     * 服务商id
-     */
+    @Schema(description = "服务商id")
     private String providerId;
 
-    /**
-     * 活动id
-     */
+    @Schema(description = "活动id")
     private String activityId;
 
-    /**
-     * 介绍说明
-     */
+    @Schema(description = "介绍说明")
     private String introduction;
 
-    /**
-     * 社会统一信用代码
-     */
+    @Schema(description = "社会统一信用代码")
     private String socialCode;
 
-    /**
-     * 法人代表
-     */
+    @Schema(description = "法人代表")
     private String legalPerson;
 
-    /**
-     * 存续状态
-     */
+    @Schema(description = "存续状态")
     private String survivalStatus;
 
-    /**
-     * 国家或地区
-     */
+    @Schema(description = "国家或地区")
     private String countryRegion;
 
-    /**
-     * 省份
-     */
+    @Schema(description = "省份")
     private String province;
 
-    /**
-     * 省份
-     */
+    @Schema(description = "省份名称")
     private String provinceName;
 
-    /**
-     * 城市
-     */
+    @Schema(description = "城市")
     private String city;
 
-    /**
-     * 城市名称
-     */
+    @Schema(description = "城市名称")
     private String cityName;
 
-    /**
-     * 区或县
-     */
+    @Schema(description = "区或县")
     private String district;
 
-    /**
-     * 区或县名称
-     */
+    @Schema(description = "区或县名称")
     private String districtName;
 
-    /**
-     * 详细地址
-     */
+    @Schema(description = "详细地址")
     private String address;
 
-    /**
-     * 初始化对接人
-     */
+    @Schema(description = "初始化对接人")
     private String customerManager;
 
-    /**
-     * 初始化对接人电话
-     */
+    @Schema(description = "初始化对接人电话")
     private String customerManagerMobile;
 
-    /**
-     * 注册资本
-     */
+    @Schema(description = "注册资本")
     private String companyRegisterCapital;
 
-    /**
-     * 注册时间
-     */
+    @Schema(description = "注册时间")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date companyRegisterDate;
 
-    /**
-     * 官网
-     */
+    @Schema(description = "官网")
     private String officialWebsite;
 
-    /**
-     * 公司简介
-     */
+    @Schema(description = "公司简介")
     private String customerDescription;
 
-    /**
-     * 经营范围
-     */
+    @Schema(description = "经营范围")
     private String customerNature;
 
-    /**
-     * 国家或地区(对接人办公)
-     */
+    @Schema(description = "国家或地区(对接人办公)")
     private String workCountryRegion;
 
-    /**
-     * 省份(对接人办公)
-     */
+    @Schema(description = "省份(对接人办公)")
     private String workProvince;
 
-    /**
-     * 省份(对接人办公)
-     */
+    @Schema(description = "省份(对接人办公)")
     private String workProvinceName;
 
-    /**
-     * 城市(对接人办公)
-     */
+    @Schema(description = "城市(对接人办公)")
     private String workCity;
 
-    /**
-     * 城市名称(对接人办公)
-     */
+    @Schema(description = "城市名称(对接人办公)")
     private String workCityName;
 
-    /**
-     * 区或县(对接人办公)
-     */
+    @Schema(description = "区或县(对接人办公)")
     private String workDistrict;
 
-    /**
-     * 区或县名称(对接人办公)
-     */
+    @Schema(description = "区或县名称(对接人办公)")
     private String workDistrictName;
 
-    /**
-     * 详细地址(对接人办公)
-     */
+    @Schema(description = "详细地址(对接人办公)")
     private String workAddress;
 
-    /**
-     * 集团公司
-     */
+    @Schema(description = "集团公司")
     private String groupCustomerId;
 
-    /**
-     * 客户登记
-     */
+    @Schema(description = "客户登记")
     private String customerGrade;
 
-    /**
-     * 客户行业
-     */
+    @Schema(description = "客户行业")
     private String belongIndustry;
 
-    /**
-     * 归属区域
-     */
+    @Schema(description = "归属区域")
     private String belongRegion;
 
-    /**
-     * 营销人员
-     */
+    @Schema(description = "营销人员")
     private String marketStaff;
 
-    /**
-     * 客户类型
-     */
+    @Schema(description = "客户类型")
     private String customerType;
 
-    /**
-     * 备注
-     */
+    @Schema(description = "备注")
     private String remarks;
 
-    /**
-     * 裁判网附件
-     */
+    @Schema(description = "裁判网附件")
     private String judgeAttachment;
 
-    /**
-     * 法院附件
-     */
+    @Schema(description = "法院附件")
     private String courtAttachment;
 
-    /**
-     * 工商附件
-     */
+    @Schema(description = "工商附件")
     private String industryAttachment;
 
-    /**
-     * 附件集合
-     */
+    @Schema(description = "附件集合")
     private String attachment;
 
-    /**
-     * 审核状态
-     */
+    @Schema(description = "审核状态")
     private String auditStatus;
 
-    /**
-     * 流程来源ID
-     */
+    @Schema(description = "流程来源ID")
     private String sourceFlowId;
 
 }

+ 65 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/lBlinkCustomerEditVO.java

@@ -0,0 +1,65 @@
+package com.wx.blink.backend.domain.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@TableName("l_blink_customer_edit")
+public class lBlinkCustomerEditVO implements Serializable {
+/*客户登记流程表*/
+    @Schema(description = "主键id") @TableField("flow_id") private String flowId;
+    @Schema(description = "父主键id") @TableField("flow_parent_id") private String flowParentId;
+    @Schema(description = "排序健") @TableField("sort_index") private Integer sortIndex;
+    @Schema(description = "名称") @TableField("flow_name") private String flowName;
+    @Schema(description = "创建人") @TableField("create_by") private String createBy;
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Schema(description = "创建时间") @TableField("create_time") private Date createTime;
+    @Schema(description = "更新人") @TableField("update_by") private String updateBy;
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Schema(description = "更新时间") @TableField("update_time") private Date upDate;
+    @Schema(description = "客户编码") @TableField("customer_code") private String customerCode;
+    @Schema(description = "客户名称") @TableField("customer_name") private String customerName;
+    @Schema(description = "客户地区类型 国内 国外") @TableField("region_type") private String regionType;
+    @Schema(description = "客户属性") @TableField("customer_attribute") private String customerAttribute;
+    @Schema(description = "客户来源") @TableField("customer_source") private String customerSource;
+    @Schema(description = "活动id") @TableField("activity_id") private String activityId;
+    @Schema(description = "介绍说明") @TableField("introduction") private String introduction;
+    @Schema(description = "社会统一信用代码") @TableField("social_code") private String socialCode;
+    @Schema(description = "法定代表人") @TableField("legal_person") private String legalPerson;
+    @Schema(description = "存续状态") @TableField("survival_status") private String survivalStatus;
+    @Schema(description = "国家或地区") @TableField("country_region") private String countryRegion;
+    @Schema(description = "省份") @TableField("province") private String province;
+    @Schema(description = "省份名称") @TableField("province_name") private String provinceName;
+    @Schema(description = "城市") @TableField("city") private String city;
+    @Schema(description = "城市名称") @TableField("city_name") private String cityName;
+    @Schema(description = "区或县") @TableField("district") private String district;
+    @Schema(description = "区或县名称") @TableField("district_name") private String districtName;
+    @Schema(description = "详细地址") @TableField("address") private String address;
+    @Schema(description = "初始对接人") @TableField("customer_manager") private String customerManager;
+    @Schema(description = "初始对接人电话") @TableField("customer_manager_mobile") private String customerManagerMobile;
+    @Schema(description = "对接人国家或地区") @TableField("work_country_region") private String workCountryRegion;
+    @Schema(description = "对接省份") @TableField("work_province") private String workProvince;
+    @Schema(description = "对接人省份名称") @TableField("work_province_name") private String workProvinceName;
+    @Schema(description = "对接人城市") @TableField("work_city") private String workCity;
+    @Schema(description = "对接人城市名称") @TableField("work_city_name") private String workCityName;
+    @Schema(description = "对接人区或县") @TableField("work_district") private String workDistrict;
+    @Schema(description = "对接人区或县名称") @TableField("work_district_name") private String workDistrictName;
+    @Schema(description = "详细地址") @TableField("work_address") private String workAddress;
+    @Schema(description = "注册资本") @TableField("company_register_capital") private String companyRegisterCapital;
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Schema(description = "注册时间") @TableField("company_register_date") private Date companyRegisterDate;
+    @Schema(description = "官网地址") @TableField("official_website") private String officialWebsite;
+    @Schema(description = "公司简介") @TableField("customer_description") private String customerDescription;
+    @Schema(description = "经营范围") @TableField("customer_nature") private String customerNature;
+    @Schema(description = "省市区") @TableField("customer_ssq") private String customerSsq;
+    @Schema(description = "对接人省市区") @TableField("work_ssq") private String workSsq;
+    @Schema(description = "客户") @TableField("cusid") private String cusid;
+
+}

+ 2 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/factory/CustomizeProcessFactory.java

@@ -45,6 +45,8 @@ public class CustomizeProcessFactory {
             put("LOAN_APPLY", new LoanApplyProcessEventHandler());
             //客户登记流程
             put("blink_customer_register", new CustomerRegisterProcessSubmitEventHandler());
+            //客户信息变更流程
+            put("blink_customer_edit", new CustomerEditProcessSubmitEventHandler());
         }});
 
         processorMap.put(5, new HashMap<String, CustomizeProcessEventHandler>() {{

+ 182 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/handler/CustomerEditProcessSubmitEventHandler.java

@@ -0,0 +1,182 @@
+package com.wx.blink.backend.handler;
+
+import com.alibaba.fastjson.JSONObject;
+import com.cloud.sa.flow.commom.domain.virentity.StInstanceEvent;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerDO;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerSeniorDO;
+import com.wx.blink.backend.domain.dto.MBlinkCustomerSeniorVO;
+import com.wx.blink.backend.domain.dto.lBlinkCustomerEditVO;
+import com.wx.blink.backend.objectmapper.BlinkCustomerMapper;
+import com.wx.blink.backend.objectmapper.BlinkCustomerSeniorMapper;
+import com.wx.blink.backend.service.IBlinkCustomerSeniorService;
+import com.wx.blink.backend.service.IBlinkCustomerService;
+import com.wx.blink.base.common.domain.ResponseDTO;
+import com.wx.blink.base.common.util.BlinkSpringUtil;
+import com.wx.blink.base.module.support.datatracer.constant.DataTracerTypeEnum;
+import com.wx.blink.base.module.support.datatracer.service.DataTracerService;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+/**
+ * 客户信息变更事件-业务动作
+ */
+public class CustomerEditProcessSubmitEventHandler implements CustomizeProcessEventHandler {
+    private BlinkCustomerMapper customerMapper;
+    private IBlinkCustomerService customerService;
+    private BlinkCustomerSeniorMapper customerSeniorMapper;
+    private IBlinkCustomerSeniorService seniorService;
+    private DataTracerService dataTracerService;
+
+    public CustomerEditProcessSubmitEventHandler() {
+        this.customerMapper = BlinkSpringUtil.getBean(BlinkCustomerMapper.class);
+        this.customerService = BlinkSpringUtil.getBean(IBlinkCustomerService.class);
+        this.customerSeniorMapper = BlinkSpringUtil.getBean(BlinkCustomerSeniorMapper.class);
+        this.seniorService = BlinkSpringUtil.getBean(IBlinkCustomerSeniorService.class);
+        this.dataTracerService = BlinkSpringUtil.getBean(DataTracerService.class);
+    }
+    /**
+     * 状态
+     * 0:保存未提交
+     * 1:驳回到发起人
+     * 2:运行中
+     * 3:流程异常
+     * 4:完成
+     * 5:取消
+     */
+    @Override
+    public ResponseDTO<String> process(StInstanceEvent event) {
+        int state = event.getState();
+        //获取表单数据
+        lBlinkCustomerEditVO editVo = JSONObject.parseObject(event.getMainFormData().toJSONString(), lBlinkCustomerEditVO.class);
+
+
+        //处理省市区
+        Map<String, String> customerSsq = getProvinceCityDistrict(editVo.getCustomerSsq());
+        editVo.setProvince(customerSsq.get("Province"));
+        editVo.setCity(customerSsq.get("City"));
+        editVo.setDistrict(customerSsq.get("District"));
+        Map<String, String> workSsq = getProvinceCityDistrict(editVo.getWorkSsq());
+        editVo.setWorkProvince(workSsq.get("Province"));
+        editVo.setWorkCity(workSsq.get("City"));
+        editVo.setWorkDistrict(workSsq.get("District"));
+        //生成DO
+        BlinkCustomerDO customerDO = editVoToCustomerDO(editVo);
+        //获取原客户信息做对比
+        BlinkCustomerDO oldCustomerDO = customerService.getById(editVo.getCusid());
+        BlinkCustomerDO compareNew = getCompareCustomerDO(customerDO);
+        BlinkCustomerDO compareOld = getCompareCustomerDO(oldCustomerDO);
+
+        customerDO.setUpdateTime(editVo.getCreateTime());
+        customerDO.setUpdateUserId(editVo.getCreateBy());
+        customerService.supportsCustomerUpdate(customerDO, null,false);
+        dataTracerService.update(customerDO.getId(), DataTracerTypeEnum.CUSTOMER,compareOld,compareNew,editVo.getCreateBy());
+        return  ResponseDTO.ok();
+    }
+
+    public Map<String, String> getProvinceCityDistrict(String ssq) {
+        Map<String, String> provinceCityDistrict = new HashMap<>();
+        provinceCityDistrict.put("Province", "");
+        provinceCityDistrict.put("City", "");
+        provinceCityDistrict.put("District", "");
+        if (ssq != null) {
+            String[] strs = ssq.replace("[", "").replace("]", "").split(",");
+            for (int i = 0; i < strs.length; i++) {
+                if (i == 0) provinceCityDistrict.put("Province", strs[i]);
+                if (i == 1) provinceCityDistrict.put("City", strs[i]);
+                if (i == 2) provinceCityDistrict.put("District", strs[i]);
+            }
+        }
+
+        return provinceCityDistrict;
+    }
+    private BlinkCustomerDO editVoToCustomerDO(lBlinkCustomerEditVO editVo){
+        if ( editVo == null ) {
+            return null;
+        }
+
+        BlinkCustomerDO blinkCustomerDO = new BlinkCustomerDO();
+
+        blinkCustomerDO.setCustomerCode( editVo.getCustomerCode() );
+        blinkCustomerDO.setCustomerName( editVo.getCustomerName() );
+        blinkCustomerDO.setRegionType( editVo.getRegionType() );
+        blinkCustomerDO.setCustomerAttribute( editVo.getCustomerAttribute() );
+        blinkCustomerDO.setCustomerSource( editVo.getCustomerSource() );
+        blinkCustomerDO.setActivityId( editVo.getActivityId() );
+        blinkCustomerDO.setIntroduction( editVo.getIntroduction() );
+        blinkCustomerDO.setSocialCode( editVo.getSocialCode() );
+        blinkCustomerDO.setLegalPerson( editVo.getLegalPerson() );
+        blinkCustomerDO.setSurvivalStatus( editVo.getSurvivalStatus() );
+        blinkCustomerDO.setCountryRegion( editVo.getCountryRegion() );
+        blinkCustomerDO.setProvince( editVo.getProvince() );
+        blinkCustomerDO.setProvinceName( editVo.getProvinceName() );
+        blinkCustomerDO.setCity( editVo.getCity() );
+        blinkCustomerDO.setCityName( editVo.getCityName() );
+        blinkCustomerDO.setDistrict( editVo.getDistrict() );
+        blinkCustomerDO.setDistrictName( editVo.getDistrictName() );
+        blinkCustomerDO.setAddress( editVo.getAddress() );
+        blinkCustomerDO.setCustomerManager( editVo.getCustomerManager() );
+        blinkCustomerDO.setCustomerManagerMobile( editVo.getCustomerManagerMobile() );
+        blinkCustomerDO.setCompanyRegisterCapital( editVo.getCompanyRegisterCapital() );
+        blinkCustomerDO.setCompanyRegisterDate( editVo.getCompanyRegisterDate() );
+        blinkCustomerDO.setOfficialWebsite( editVo.getOfficialWebsite() );
+        blinkCustomerDO.setCustomerDescription( editVo.getCustomerDescription() );
+        blinkCustomerDO.setCustomerNature( editVo.getCustomerNature() );
+        blinkCustomerDO.setWorkCountryRegion( editVo.getWorkCountryRegion() );
+        blinkCustomerDO.setWorkProvince( editVo.getWorkProvince() );
+        blinkCustomerDO.setWorkProvinceName( editVo.getWorkProvinceName() );
+        blinkCustomerDO.setWorkCity( editVo.getWorkCity() );
+        blinkCustomerDO.setWorkCityName( editVo.getWorkCityName() );
+        blinkCustomerDO.setWorkDistrict( editVo.getWorkDistrict() );
+        blinkCustomerDO.setWorkDistrictName( editVo.getWorkDistrictName() );
+        blinkCustomerDO.setWorkAddress( editVo.getWorkAddress() );
+        blinkCustomerDO.setId( editVo.getCusid() );
+
+        return blinkCustomerDO;
+    }
+    private BlinkCustomerDO getCompareCustomerDO(BlinkCustomerDO customerDO){
+        if ( customerDO == null ) {
+            return null;
+        }
+
+        BlinkCustomerDO blinkCustomerDO = new BlinkCustomerDO();
+
+        blinkCustomerDO.setCustomerCode( customerDO.getCustomerCode() );
+        blinkCustomerDO.setCustomerName( customerDO.getCustomerName() );
+        blinkCustomerDO.setRegionType( customerDO.getRegionType() );
+        blinkCustomerDO.setCustomerAttribute( customerDO.getCustomerAttribute() );
+        blinkCustomerDO.setCustomerSource( customerDO.getCustomerSource() );
+        blinkCustomerDO.setActivityId( customerDO.getActivityId() );
+        blinkCustomerDO.setIntroduction( customerDO.getIntroduction() );
+        blinkCustomerDO.setSocialCode( customerDO.getSocialCode() );
+        blinkCustomerDO.setLegalPerson( customerDO.getLegalPerson() );
+        blinkCustomerDO.setSurvivalStatus( customerDO.getSurvivalStatus() );
+        blinkCustomerDO.setCountryRegion( customerDO.getCountryRegion() );
+        blinkCustomerDO.setProvince( customerDO.getProvince() );
+        blinkCustomerDO.setProvinceName( customerDO.getProvinceName() );
+        blinkCustomerDO.setCity( customerDO.getCity() );
+        blinkCustomerDO.setCityName( customerDO.getCityName() );
+        blinkCustomerDO.setDistrict( customerDO.getDistrict() );
+        blinkCustomerDO.setDistrictName( customerDO.getDistrictName() );
+        blinkCustomerDO.setAddress( customerDO.getAddress() );
+        blinkCustomerDO.setCustomerManager( customerDO.getCustomerManager() );
+        blinkCustomerDO.setCustomerManagerMobile( customerDO.getCustomerManagerMobile() );
+        blinkCustomerDO.setCompanyRegisterCapital( customerDO.getCompanyRegisterCapital() );
+        blinkCustomerDO.setCompanyRegisterDate( customerDO.getCompanyRegisterDate() );
+        blinkCustomerDO.setOfficialWebsite( customerDO.getOfficialWebsite() );
+        blinkCustomerDO.setCustomerDescription( customerDO.getCustomerDescription() );
+        blinkCustomerDO.setCustomerNature( customerDO.getCustomerNature() );
+        blinkCustomerDO.setWorkCountryRegion( customerDO.getWorkCountryRegion() );
+        blinkCustomerDO.setWorkProvince( customerDO.getWorkProvince() );
+        blinkCustomerDO.setWorkProvinceName( customerDO.getWorkProvinceName() );
+        blinkCustomerDO.setWorkCity( customerDO.getWorkCity() );
+        blinkCustomerDO.setWorkCityName( customerDO.getWorkCityName() );
+        blinkCustomerDO.setWorkDistrict( customerDO.getWorkDistrict() );
+        blinkCustomerDO.setWorkDistrictName( customerDO.getWorkDistrictName() );
+        blinkCustomerDO.setWorkAddress( customerDO.getWorkAddress() );
+        blinkCustomerDO.setId( customerDO.getId() );
+
+        return blinkCustomerDO;
+    }
+
+}

+ 27 - 27
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/handler/CustomerRegisterProcessSubmitEventHandler.java

@@ -19,7 +19,7 @@ import javax.annotation.Resource;
 import java.util.*;
 
 /**
- * 服务商登记发起进行中事件-业务动作
+ * 客户登记流程事件-业务动作
  */
 public class CustomerRegisterProcessSubmitEventHandler implements CustomizeProcessEventHandler {
     private BlinkCustomerMapper customerMapper;
@@ -46,10 +46,10 @@ public class CustomerRegisterProcessSubmitEventHandler implements CustomizeProce
     public ResponseDTO<String> process(StInstanceEvent event) {
         int state = event.getState();
         //获取表单数据
-        lBlinkCustomerRegisterVO registerDo = JSONObject.parseObject(event.getMainFormData().toJSONString(), lBlinkCustomerRegisterVO.class);
+        lBlinkCustomerRegisterVO registerVo = JSONObject.parseObject(event.getMainFormData().toJSONString(), lBlinkCustomerRegisterVO.class);
         //获取表单子表数据
         String flowId ="";
-        if(registerDo.getFlowId()!=null)flowId=registerDo.getFlowId();
+        if(registerVo.getFlowId()!=null)flowId=registerVo.getFlowId();
         List<MBlinkCustomerSeniorVO> seniorVOs= seniorService.flowCustomerSeniorQueryByPid(flowId);
         //生成明细DO
         List<BlinkCustomerSeniorDO> seniorDOs = new ArrayList<>();
@@ -58,18 +58,18 @@ public class CustomerRegisterProcessSubmitEventHandler implements CustomizeProce
                 seniorDOs.add(customerSeniorMapper.customerSeniorVOtoDomain(seniorVO));
             }
         }
-        //生成DO
-        BlinkCustomerDO customerDO = customerMapper.customerCreateVOtoDomain(registerDo);
-        customerDO.setSourceFlowId(registerDo.getFlowId());
         //处理省市区
-        Map<String, String> customerSsq = getProvinceCityDistrict(registerDo.getCustomerSsq());
-        customerDO.setProvince(customerSsq.get("Province"));
-        customerDO.setCity(customerSsq.get("City"));
-        customerDO.setDistrict(customerSsq.get("District"));
-        Map<String, String> workSsq = getProvinceCityDistrict(registerDo.getWorkSsq());
-        customerDO.setWorkProvince(workSsq.get("Province"));
-        customerDO.setWorkCity(workSsq.get("City"));
-        customerDO.setWorkDistrict(workSsq.get("District"));
+        Map<String, String> customerSsq = getProvinceCityDistrict(registerVo.getCustomerSsq());
+        registerVo.setProvince(customerSsq.get("Province"));
+        registerVo.setCity(customerSsq.get("City"));
+        registerVo.setDistrict(customerSsq.get("District"));
+        Map<String, String> workSsq = getProvinceCityDistrict(registerVo.getWorkSsq());
+        registerVo.setWorkProvince(workSsq.get("Province"));
+        registerVo.setWorkCity(workSsq.get("City"));
+        registerVo.setWorkDistrict(workSsq.get("District"));
+        //生成DO
+        BlinkCustomerDO customerDO = customerMapper.customerCreateVOtoDomain(registerVo);
+        customerDO.setSourceFlowId(registerVo.getFlowId());
 
         //运行中状态调用时,为初步写入客户库
         //客户状态:01-审核中,02-有效客户,03-无效客户
@@ -85,35 +85,35 @@ public class CustomerRegisterProcessSubmitEventHandler implements CustomizeProce
             //取消时,状态为失效
             customerDO.setAuditStatus("03");
         }
-        if (registerDo.getIsProviderSend() != null && registerDo.getIsProviderSend() == 1) {
+        if (registerVo.getIsProviderSend() != null && registerVo.getIsProviderSend() == 1) {
             //数据来源为服务商列表发起的流程时,会同步获取到客户id
-            if (registerDo.getProviderSendCusid() == null) {
+            if (registerVo.getProviderSendCusid() == null) {
                 return ResponseDTO.userErrorParam("未获取到对应客户");
             }
-            customerDO.setId(registerDo.getProviderSendCusid());
-            if (registerDo.getInitialScreeningResult() != null && registerDo.getInitialScreeningResult().equals("02")) {
+            customerDO.setId(registerVo.getProviderSendCusid());
+            if (registerVo.getInitialScreeningResult() != null && registerVo.getInitialScreeningResult().equals("02")) {
                 //初筛结果为不通过时,客户状态为失效
                 customerDO.setAuditStatus("03");
             }
             //如果是从服务商列表发起的,只进行更新操作
-            customerDO.setUpdateTime(registerDo.getUpDate());
-            customerDO.setUpdateUserId(registerDo.getUpdateBy());
-            return customerService.supportsCustomerUpdate(customerDO, seniorDOs);
+            customerDO.setUpdateTime(registerVo.getUpDate());
+            customerDO.setUpdateUserId(registerVo.getUpdateBy());
+            return customerService.supportsCustomerUpdate(customerDO, seniorDOs,true);
         } else {
             //用flow_id查询对应的客户
-            BlinkCustomerDO validateCustomer = customerService.queryByCustomerFlowId(registerDo.getFlowId());
+            BlinkCustomerDO validateCustomer = customerService.queryByCustomerFlowId(registerVo.getFlowId());
             //判断是否已经写入一次了
             if (!Objects.nonNull(validateCustomer) || validateCustomer.getId() == null) {
                 //第一次写入保存数据
-                customerDO.setCreateTime(registerDo.getCreateTime());
-                customerDO.setCreateUserId(registerDo.getCreateBy());
+                customerDO.setCreateTime(registerVo.getCreateTime());
+                customerDO.setCreateUserId(registerVo.getCreateBy());
                 return customerService.supportsCustomerCreate(customerDO, seniorDOs);
             } else {
                 //写入过则更新
                 customerDO.setId(validateCustomer.getId());
-                customerDO.setUpdateTime(registerDo.getUpDate());
-                customerDO.setUpdateUserId(registerDo.getUpdateBy());
-                return customerService.supportsCustomerUpdate(customerDO, seniorDOs);
+                customerDO.setUpdateTime(registerVo.getUpDate());
+                customerDO.setUpdateUserId(registerVo.getUpdateBy());
+                return customerService.supportsCustomerUpdate(customerDO, seniorDOs,true);
             }
         }
     }

+ 66 - 12
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkCustomerServiceImpl.java

@@ -16,6 +16,7 @@ import com.wx.blink.base.common.domain.ResponseDTO;
 import com.wx.blink.base.common.util.BlinkEntityUtil;
 import com.wx.blink.base.common.util.BlinkEnumUtil;
 import com.wx.blink.base.common.util.BlinkPageUtil;
+import com.wx.blink.base.module.support.datatracer.constant.DataTracerTypeEnum;
 import com.wx.blink.base.module.support.datatracer.service.DataTracerService;
 import com.wx.blink.base.module.support.dict.service.DictCacheService;
 import com.wx.blink.base.module.support.serialnumber.constant.SerialNumberIdEnum;
@@ -27,8 +28,10 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * @author gufj
@@ -67,7 +70,7 @@ public class BlinkCustomerServiceImpl extends ServiceImpl<BlinkCustomerRepositor
         //执行保存
         this.save(customerDO);
         //执行变更记录
-        //dataTracerService.insert(customerDO.getId(), DataTracerTypeEnum.CUSTOMER);
+        dataTracerService.insert(customerDO.getId(), DataTracerTypeEnum.CUSTOMER);
         return ResponseDTO.ok();
     }
 
@@ -150,12 +153,8 @@ public class BlinkCustomerServiceImpl extends ServiceImpl<BlinkCustomerRepositor
 
     @Override
     public BlinkCustomerStatisticsVO supportsStatisticsInfo(BlinkCustomerQry qry) {
-        BlinkCustomerStatisticsVO statisticsVO = new BlinkCustomerStatisticsVO();
-        statisticsVO.setCustomerQuantity(13);
-        statisticsVO.setCustomerAuditQuantity(3);
-        statisticsVO.setCustomerInvalidQuantity(4);
-        statisticsVO.setCustomerValidQuantity(6);
-        return statisticsVO;
+        List<BlinkCustomerVO> list = customerRepository.supportsCustomerQueryPage(null, qry);
+        return getCustomerStatisticsInfo(list);
     }
 
     @Override
@@ -175,12 +174,12 @@ public class BlinkCustomerServiceImpl extends ServiceImpl<BlinkCustomerRepositor
         //保存归属上级明细表
         seniorService.batchAddWithEmptyByPid(customerDO.getId(),seniorDos);
         //执行变更记录
-        //dataTracerService.insert(customerDO.getId(), DataTracerTypeEnum.CUSTOMER);
+        dataTracerService.insert(customerDO.getId(), DataTracerTypeEnum.CUSTOMER,customerDO.getCreateUserId());
         return ResponseDTO.ok();
     }
 
     @Override
-    public ResponseDTO<String> supportsCustomerUpdate(BlinkCustomerDO customerDO, List<BlinkCustomerSeniorDO> seniorDos) {
+    public ResponseDTO<String> supportsCustomerUpdate(BlinkCustomerDO customerDO, List<BlinkCustomerSeniorDO> seniorDos,boolean isHaveDetail) {
         // 验证客户名称是否重复
         BlinkCustomerDO validateCustomer = customerRepository.queryByCustomerName(customerDO.getCustomerName(), customerDO.getId(), Boolean.FALSE);
         if (Objects.nonNull(validateCustomer)) {
@@ -191,10 +190,9 @@ public class BlinkCustomerServiceImpl extends ServiceImpl<BlinkCustomerRepositor
         //执行保存
         this.updateById(customerDO);
         //保存归属上级明细表
-        seniorService.batchAddWithEmptyByPid(customerDO.getId(),seniorDos);
+        if(isHaveDetail)
+            seniorService.batchAddWithEmptyByPid(customerDO.getId(),seniorDos);
 
-        //执行变更记录
-        //dataTracerService.insert(customerDO.getId(), DataTracerTypeEnum.CUSTOMER);
         return ResponseDTO.ok();
     }
 
@@ -202,4 +200,60 @@ public class BlinkCustomerServiceImpl extends ServiceImpl<BlinkCustomerRepositor
     public BlinkCustomerDO queryByCustomerFlowId(String sourceFlowId) {
         return customerRepository.queryByCustomerFlowId(sourceFlowId);
     }
+
+    @Override
+    public PageResult<BlinkCustomerVO> providerCustomerQueryPage(BlinkCustomerQry qry) {
+        Page<?> page = BlinkPageUtil.convert2PageQuery(qry);
+        List<BlinkCustomerVO> list = customerRepository.providerCustomerQueryPage(page, qry);
+        for (BlinkCustomerVO blinkCustomerDTO : list) {
+            //拼接省市区
+            String province = Optional.ofNullable(blinkCustomerDTO.getProvinceName()).orElse("");
+            String city = Optional.ofNullable(blinkCustomerDTO.getCityName()).orElse("");
+            String district = Optional.ofNullable(blinkCustomerDTO.getDistrictName()).orElse("");
+            blinkCustomerDTO.setProvinceCityDistrict(province + city + district);
+        }
+        PageResult<BlinkCustomerVO> pageResult = BlinkPageUtil.convert2PageResult(page, list);
+        return pageResult;
+    }
+
+    @Override
+    public BlinkCustomerStatisticsVO providerCustomerStatisticsInfo(BlinkCustomerQry qry) {
+        List<BlinkCustomerVO> list = customerRepository.providerCustomerQueryPage(null, qry);
+        return getCustomerStatisticsInfo(list);
+    }
+    public BlinkCustomerStatisticsVO getCustomerStatisticsInfo( List<BlinkCustomerVO> list){
+        Map<String, Integer> countTypes = list.stream()
+                .map(obj -> obj.getAuditStatus() == null ? "00" : obj.getAuditStatus()) // 将null转为字符串"00",作为待审核的状态
+                .collect(Collectors.groupingBy(
+                        auditStatus -> auditStatus,
+                        Collectors.reducing(
+                                0,  // 初始值
+                                obj -> 1,  // 映射函数,每个元素计为1
+                                Integer::sum  // 归约操作,累加
+                        )
+                ));
+        Map<String, Integer> countGrade = list.stream()
+                .map(obj -> obj.getCustomerGrade() == null ? "00" : obj.getCustomerGrade()) // 将null转为字符串"00",作为待审核的状态
+                .collect(Collectors.groupingBy(
+                        grade -> grade,
+                        Collectors.reducing(
+                                0,  // 初始值
+                                obj -> 1,  // 映射函数,每个元素计为1
+                                Integer::sum  // 归约操作,累加
+                        )
+                ));
+        BlinkCustomerStatisticsVO statisticsVO = new BlinkCustomerStatisticsVO();
+        statisticsVO.setCustomerQuantity(list.size());
+        statisticsVO.setCustomerUnAuditQuantity(countTypes.getOrDefault("00",0));
+        statisticsVO.setCustomerAuditQuantity(countTypes.getOrDefault("01",0));
+        statisticsVO.setCustomerInvalidQuantity(countTypes.getOrDefault("02",0));
+        statisticsVO.setCustomerValidQuantity(countTypes.getOrDefault("03",0));
+        statisticsVO.setGradeSQuantity(countGrade.getOrDefault("S",0));
+        statisticsVO.setGradeAQuantity(countGrade.getOrDefault("A",0));
+        statisticsVO.setGradeBQuantity(countGrade.getOrDefault("B",0));
+        statisticsVO.setGradeCQuantity(countGrade.getOrDefault("C",0));
+        statisticsVO.setNoCooperateQuantity(0);
+        statisticsVO.setBlackListQuantity(0);
+        return statisticsVO;
+    }
 }

+ 9 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkCustomerRepository.java

@@ -68,4 +68,13 @@ public interface BlinkCustomerRepository extends BaseMapper<BlinkCustomerDO> {
      * @return
      */
     BlinkCustomerDO queryByCustomerFlowId(@Param("sourceFlowId") String sourceFlowId);
+
+    /**
+     * 服务商客户查询列表
+     *
+     * @param page
+     * @param qry
+     * @return
+     */
+    List<BlinkCustomerVO> providerCustomerQueryPage(Page<?> page, @Param("query") BlinkCustomerQry qry);
 }

+ 15 - 1
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkCustomerService.java

@@ -112,7 +112,7 @@ public interface IBlinkCustomerService extends IService<BlinkCustomerDO> {
      * @param customerDO
      * @return
      */
-    ResponseDTO<String> supportsCustomerUpdate(BlinkCustomerDO customerDO, List<BlinkCustomerSeniorDO> seniorDos);
+    ResponseDTO<String> supportsCustomerUpdate(BlinkCustomerDO customerDO, List<BlinkCustomerSeniorDO> seniorDos,boolean isHaveDetail);
 
     /**
      * 验证是否发起了客户登记流程
@@ -121,4 +121,18 @@ public interface IBlinkCustomerService extends IService<BlinkCustomerDO> {
      * @return
      */
     BlinkCustomerDO queryByCustomerFlowId(String sourceFlowId);
+    /**
+     * 服务商客户查询列表
+     *
+     * @param qry
+     * @return
+     */
+    PageResult<BlinkCustomerVO> providerCustomerQueryPage(BlinkCustomerQry qry);
+    /**
+     * 服务商客户列表表头统计数据接口
+     *
+     * @param qry
+     * @return
+     */
+    BlinkCustomerStatisticsVO providerCustomerStatisticsInfo(BlinkCustomerQry qry);
 }

+ 17 - 1
bound-link-api/blink-backend/src/main/resources/mapper/BlinkCustomerRepositoryMapper.xml

@@ -9,7 +9,7 @@
             AND customer_name like concat('%', #{query.customerName}, '%')
         </if>
         <if test="query.createUserId != null and query.createUserId !=''">
-            AND create_user_id = #{createUserId}
+            AND create_user_id = #{query.createUserId}
         </if>
         order by create_time desc
     </select>
@@ -45,4 +45,20 @@
         from blink_customer
         where deleted_flag = '0' AND source_flow_id = #{sourceFlowId}
     </select>
+
+    <select id="providerCustomerQueryPage" resultType="com.wx.blink.common.vo.BlinkCustomerVO">
+        select *
+        from blink_customer
+        where deleted_flag = '0' and source_flow_id is null
+        <if test="query.customerName != null and query.customerName !=''">
+            AND customer_name like concat('%', #{query.customerName}, '%')
+        </if>
+        <if test="query.createUserId != null and query.createUserId !=''">
+            AND create_user_id = #{query.createUserId}
+        </if>
+        <if test="query.customerType != null and query.customerType !=''">
+            AND customer_type = #{query.customerType}
+        </if>
+        order by create_time desc
+    </select>
 </mapper>

+ 1 - 1
bound-link-api/blink-base/src/main/java/com/wx/blink/base/module/support/datatracer/domain/entity/DataTracerEntity.java

@@ -25,7 +25,7 @@ public class DataTracerEntity {
     /**
      * 数据id
      */
-    private Long dataId;
+    private String dataId;
     /**
      * 业务类型
      * {@link DataTracerTypeEnum}

+ 109 - 0
bound-link-api/blink-base/src/main/java/com/wx/blink/base/module/support/datatracer/service/DataTracerService.java

@@ -11,6 +11,10 @@ import com.wx.blink.base.common.util.BlinkPageUtil;
 import com.wx.blink.base.common.util.BlinkRequestUtil;
 import com.wx.blink.base.module.support.datatracer.constant.DataTracerConst;
 import com.wx.blink.base.module.support.datatracer.dao.DataTracerDao;
+import com.wx.blink.base.module.support.employee.dto.EmployeeDTO;
+import com.wx.blink.base.module.support.employee.qry.EmployeeQry;
+import com.wx.blink.base.module.support.employee.repository.EmployeeRepository;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.extern.slf4j.Slf4j;
 import com.wx.blink.base.module.support.datatracer.constant.DataTracerTypeEnum;
 import com.wx.blink.base.module.support.datatracer.domain.entity.DataTracerEntity;
@@ -19,9 +23,14 @@ import com.wx.blink.base.module.support.datatracer.domain.form.DataTracerQueryFo
 import com.wx.blink.base.module.support.datatracer.domain.vo.DataTracerVO;
 import com.wx.blink.base.module.support.datatracer.manager.DataTracerManger;
 import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import java.lang.reflect.Field;
+import java.lang.annotation.Annotation;
 
 import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -45,6 +54,8 @@ public class DataTracerService {
 
     @Resource
     private DataTracerChangeContentService dataTracerChangeContentService;
+    @Resource
+    private EmployeeRepository employeeRepository;
 
     /**
      * 获取变更内容
@@ -222,5 +233,103 @@ public class DataTracerService {
         PageResult<DataTracerVO> pageResult = BlinkPageUtil.convert2PageResult(page, list);
         return ResponseDTO.ok(pageResult);
     }
+    /**
+     * 保存【新增】数据变动记录,用于业务动作
+     *
+     * @param dataId
+     * @param type
+     */
+    public void insert(String dataId, DataTracerTypeEnum type,String userCode) {
+        DataTracerForm form = DataTracerForm.builder().dataId(dataId).type(type).content(DataTracerConst.INSERT).build();
+        DataTracerEntity tracerEntity = BlinkBeanUtil.copy(form, DataTracerEntity.class);
+        tracerEntity.setType(form.getType().getValue());
+        EmployeeDTO employeeDTO = employeeRepository.queryEmployeeByLoginName(new EmployeeQry(userCode));
+        tracerEntity.setUserId(employeeDTO.getEmployeeId());
+        tracerEntity.setUserName(employeeDTO.getActualName());
+        tracerEntity.setUserType(1);
+        tracerEntity.setCreateTime(LocalDateTime.now());
+        tracerEntity.setUpdateTime(LocalDateTime.now());
+        dataTracerManger.save(tracerEntity);
+    }
+    /**
+     * 保存【修改】数据变动记录,用于业务动作
+     *
+     * @param dataId
+     * @param type
+     */
+    public void update(String dataId, DataTracerTypeEnum type, Object oldObject, Object newObject,String userCode) {
+        DataTracerForm form = DataTracerForm.builder()
+                .dataId(dataId)
+                .type(type)
+                .content(compareObjects(oldObject, newObject))
+                .build();
+        DataTracerEntity tracerEntity = BlinkBeanUtil.copy(form, DataTracerEntity.class);
+        tracerEntity.setType(form.getType().getValue());
+        EmployeeDTO employeeDTO = employeeRepository.queryEmployeeByLoginName(new EmployeeQry(userCode));
+        tracerEntity.setUserId(employeeDTO.getEmployeeId());
+        tracerEntity.setUserName(employeeDTO.getActualName());
+        tracerEntity.setUserType(1);
+        tracerEntity.setCreateTime(LocalDateTime.now());
+        tracerEntity.setUpdateTime(LocalDateTime.now());
+        dataTracerManger.save(tracerEntity);
+    }
+    /**
+     * 比较两个同类型对象,返回差异属性的描述
+     * @param oldObj 旧对象
+     * @param newObj 新对象
+     * @return 差异描述列表
+     */
+    public static String compareObjects(Object oldObj, Object newObj) {
+        List<String> differences = new ArrayList<>();
+        if (oldObj == null || newObj == null) {
+            differences.add("比较对象不能为null");
+            return "";
+        }
+        if (!oldObj.getClass().equals(newObj.getClass())) {
+            differences.add("比较对象类型不同");
+            return "";
+        }
+        Field[] fields = oldObj.getClass().getDeclaredFields();
+        for (Field field : fields) {
+            try {
+                field.setAccessible(true);
+                Object oldValue = field.get(oldObj);
+                Object newValue = field.get(newObj);
+                // 比较两个值是否不同
+                if ((oldValue == null && newValue != null) ||
+                        (oldValue != null && !oldValue.equals(newValue))) {
+                    // 获取字段注释
+                    String fieldComment = getFieldSchema(field);
+                    // 构建差异描述
+                    String diff = String.format("将【%s】由 \"%s\"更改为\"%s\"",
+                            fieldComment,
+                            oldValue != null ? oldValue.toString() : "null",
+                            newValue != null ? newValue.toString() : "null");
 
+                    differences.add(diff);
+                }
+            } catch (Exception e) {
+                differences.add("无法访问字段: " + field.getName());
+            }
+        }
+        String result = differences.stream().collect(Collectors.joining(" 。 "));
+        return result;
+    }
+
+    /**
+     * 获取字段的注释信息
+     * @param field 字段
+     * @return 注释描述
+     */
+    private static String getFieldSchema(Field field) {
+        try {
+            Schema schema = field.getAnnotation(Schema.class);
+            if (schema != null) {
+                return schema.description(); // 获取description属性
+            }
+        } catch (Exception e) {
+            return field.getName();
+        }
+        return field.getName();
+    }
 }

+ 8 - 0
bound-link-api/blink-common-dto/src/main/java/com/wx/blink/common/qry/BlinkCustomerQry.java

@@ -22,5 +22,13 @@ public class BlinkCustomerQry extends PageParam {
      * 创建人
      */
     private String createUserId;
+    /**
+     * 客户地址
+     */
+    private String address;
+    /**
+     * 客户类型
+     */
+    private String customerType;
 
 }

+ 34 - 0
bound-link-api/blink-common-dto/src/main/java/com/wx/blink/common/vo/BlinkCustomerStatisticsVO.java

@@ -10,6 +10,11 @@ public class BlinkCustomerStatisticsVO {
      */
     private Integer customerQuantity;
 
+    /**
+     * 待审核客户
+     */
+    private Integer customerUnAuditQuantity;
+
     /**
      * 审核中
      */
@@ -24,4 +29,33 @@ public class BlinkCustomerStatisticsVO {
      * 有效客户
      */
     private Integer customerValidQuantity;
+
+    /**
+     * S级客户
+     */
+    private Integer gradeSQuantity;
+
+    /**
+     * A级客户
+     */
+    private Integer gradeAQuantity;
+
+    /**
+     * B级客户
+     */
+    private Integer gradeBQuantity;
+    /**
+     * C级客户
+     */
+    private Integer gradeCQuantity;
+    /**
+     * 未合作客户
+     */
+    private Integer noCooperateQuantity;
+    /**
+     * 黑名单客户
+     */
+    private Integer blackListQuantity;
+
+
 }

+ 5 - 0
bound-link-api/blink-common-dto/src/main/java/com/wx/blink/common/vo/BlinkCustomerVO.java

@@ -286,5 +286,10 @@ public class BlinkCustomerVO extends BaseEntity {
      * 拜访次数
      */
     private Integer visitCount;
+    /**
+     * 审批状态
+     */
+    @DataAdaptorMapping(type = "dict", value = "BLINK_CUSTOMER_AUDIT_STATUS")
+    private String auditStatus;
 
 }