Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/master'

liuc 6 mesi fa
parent
commit
d84940c890
75 ha cambiato i file con 2272 aggiunte e 473 eliminazioni
  1. 26 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/controller/BlickProviderController.java
  2. 21 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/controller/BlinkCustomerController.java
  3. 11 11
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/controller/BlinkPerformanceController.java
  4. 0 32
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/controller/BlinkProviderController.java
  5. 6 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkCompanyIntroductionDO.java
  6. 51 141
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkCustomerDO.java
  7. 39 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkCustomerSeniorDO.java
  8. 15 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkHonorConfigDO.java
  9. 15 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkPerformanceDO.java
  10. 99 76
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkProviderDO.java
  11. 6 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/BlinkCompanyIntroductionDTO.java
  12. 18 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/BlinkHonorConfigDTO.java
  13. 15 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/BlinkPerformanceCreditDTO.java
  14. 19 2
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/BlinkPerformanceDTO.java
  15. 27 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/BlinkPerformanceProjectsDTO.java
  16. 18 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/BlinkSocialWelfareDTO.java
  17. 32 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/MBlinkCustomerSeniorVO.java
  18. 65 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/lBlinkCustomerEditVO.java
  19. 85 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/lBlinkCustomerRegisterVO.java
  20. 18 2
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/factory/CustomizeProcessFactory.java
  21. 46 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/handler/CustomerBlacklistProcessSubmitEventHandler.java
  22. 182 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/handler/CustomerEditProcessSubmitEventHandler.java
  23. 137 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/handler/CustomerRegisterProcessSubmitEventHandler.java
  24. 2 3
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/handler/ExpenseStatementProcessEventHandler.java
  25. 18 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/handler/LoanApplyProcessEventHandler.java
  26. 50 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/handler/ProviderRegisterProcessEventHandler.java
  27. 39 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/action/ProviderAuditAction.java
  28. 30 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/action/ProviderInterviewAction.java
  29. 28 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/action/ProviderReferralAction.java
  30. 13 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/condition/ProviderAuditCondition.java
  31. 13 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/condition/ProviderInterviewCondition.java
  32. 13 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/condition/ProviderReferralCondition.java
  33. 39 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/config/CommonStateMachineLoader.java
  34. 16 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/config/ProviderStateMachineConfig.java
  35. 13 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/context/ProviderContext.java
  36. 16 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/machineevent/ProviderEvent.java
  37. 20 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/status/ProviderState.java
  38. 2 2
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkCompanyIntroductionServiceImpl.java
  39. 68 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkCustomerSeniorServiceImpl.java
  40. 165 8
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkCustomerServiceImpl.java
  41. 19 7
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkHonorConfigServiceImpl.java
  42. 16 3
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkPerformanceCreditServiceImpl.java
  43. 13 5
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkPerformanceProjectsServiceImpl.java
  44. 24 6
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkPerformanceServiceImpl.java
  45. 94 109
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkProviderServiceImpl.java
  46. 9 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/objectmapper/BlinkCustomerMapper.java
  47. 18 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/objectmapper/BlinkCustomerSeniorMapper.java
  48. 25 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkCustomerRepository.java
  49. 46 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkCustomerSeniorRepository.java
  50. 12 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkPerformanceCreditReporitory.java
  51. 6 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkPerformanceProjectsReporitory.java
  52. 18 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkPerformanceReporitory.java
  53. 1 30
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkProviderRepository.java
  54. 5 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkCompanyIntroductionService.java
  55. 46 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkCustomerSeniorService.java
  56. 55 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkCustomerService.java
  57. 14 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkHonorConfigService.java
  58. 14 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkPerformanceCreditService.java
  59. 10 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkPerformanceProjectsService.java
  60. 21 1
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkPerformanceService.java
  61. 14 32
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkProviderService.java
  62. 14 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkSocialWelfareService.java
  63. 26 1
      bound-link-api/blink-backend/src/main/resources/mapper/BlinkCustomerRepositoryMapper.xml
  64. 18 0
      bound-link-api/blink-backend/src/main/resources/mapper/BlinkCustomerSeniorRepositoryMapper.xml
  65. 7 0
      bound-link-api/blink-backend/src/main/resources/mapper/BlinkProviderRepositoryMapper.xml
  66. 38 0
      bound-link-api/blink-backend/src/main/resources/statemachine-config.yaml
  67. 1 1
      bound-link-api/blink-base/src/main/java/com/wx/blink/base/module/support/datatracer/domain/entity/DataTracerEntity.java
  68. 109 0
      bound-link-api/blink-base/src/main/java/com/wx/blink/base/module/support/datatracer/service/DataTracerService.java
  69. 8 0
      bound-link-api/blink-common-dto/src/main/java/com/wx/blink/common/qry/BlinkCustomerQry.java
  70. 3 0
      bound-link-api/blink-common-dto/src/main/java/com/wx/blink/common/qry/BlinkPerformanceCreditQry.java
  71. 3 0
      bound-link-api/blink-common-dto/src/main/java/com/wx/blink/common/qry/BlinkPerformanceProjectsQry.java
  72. 6 0
      bound-link-api/blink-common-dto/src/main/java/com/wx/blink/common/qry/BlinkPerformanceQry.java
  73. 6 0
      bound-link-api/blink-common-dto/src/main/java/com/wx/blink/common/qry/BlinkSocialWelfareQry.java
  74. 34 0
      bound-link-api/blink-common-dto/src/main/java/com/wx/blink/common/vo/BlinkCustomerStatisticsVO.java
  75. 23 1
      bound-link-api/blink-common-dto/src/main/java/com/wx/blink/common/vo/BlinkCustomerVO.java

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

@@ -0,0 +1,26 @@
+package com.wx.blink.backend.controller;
+
+import com.alibaba.cola.statemachine.StateMachine;
+import com.wx.blink.backend.machinestate.context.ProviderContext;
+import com.wx.blink.backend.machinestate.machineevent.ProviderEvent;
+import com.wx.blink.backend.machinestate.status.ProviderState;
+import com.wx.blink.base.common.domain.ResponseDTO;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@RestController
+public class BlickProviderController {
+
+    @Resource
+    private StateMachine<ProviderState, ProviderEvent, ProviderContext> providerMachine;
+    @Operation(summary = "test")
+    @GetMapping("/ttt/test")
+    public ResponseDTO<String> TEST(){
+
+        providerMachine.fireEvent(ProviderState.INIT, ProviderEvent.AUDIT, new ProviderContext());
+        return ResponseDTO.ok("kkk");
+    }
+}

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

@@ -14,6 +14,8 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
+import java.util.HashMap;
+import java.util.Map;
 
 
 /**
@@ -85,4 +87,23 @@ 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));
+    }
+
+    @Operation(summary = "客户黑名单表单获取明细信息")
+    @GetMapping(value = "/supports/customer/blacklist/details/{id}")
+    public ResponseDTO<Map<String,Object>> supportsCustomerBlacklistDetails(@PathVariable String id) {
+        return ResponseDTO.ok(customerService.supportsCustomerBlacklistDetails(id));
+    }
+
 }

+ 11 - 11
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/controller/BlinkPerformanceController.java

@@ -33,8 +33,8 @@ public class BlinkPerformanceController {
 
     @PostMapping("/supports/performance/save")
     @Operation(summary = "保存业绩案例")
-    public ResponseDTO<String> createPerformance(@RequestBody @Valid BlinkPerformanceDTO dto) {
-        return service.createPerformance(dto);
+    public ResponseDTO<String> savePerformance(@RequestBody @Valid BlinkPerformanceDTO dto) {
+        return service.savePerformance(dto);
     }
 
     @PostMapping("/supports/performance/{id}/delete")
@@ -57,25 +57,25 @@ public class BlinkPerformanceController {
 
     @Operation(summary = "保存企业简介")
     @PostMapping("/supports/company/introduction/save")
-    public ResponseDTO<String> saveCompanyIntroduction(@RequestBody @Valid BlinkCompanyIntroductionDTO dto) {
+    public ResponseDTO<String> saveCompanyIntroduction(@RequestBody BlinkCompanyIntroductionDTO dto) {
         return companyService.saveCompanyIntroduction(dto);
     }
 
     @Operation(summary = "业绩案例查询")
     @PostMapping("/supports/performance/query")
-    public ResponseDTO<PageResult<BlinkPerformanceDTO>> queryPerformance(@RequestBody @Valid BlinkPerformanceQry qry) {
+    public ResponseDTO<PageResult<BlinkPerformanceDTO>> queryPerformance(@RequestBody BlinkPerformanceQry qry) {
         return ResponseDTO.ok(service.queryPerformance(qry));
     }
 
     @Operation(summary = "业绩项目列表查询")
     @PostMapping("/supports/performance/project/query")
-    public ResponseDTO<PageResult<BlinkPerformanceProjectsDTO>> queryPerformanceProject(@RequestBody @Valid BlinkPerformanceProjectsQry qry) {
+    public ResponseDTO<PageResult<BlinkPerformanceProjectsDTO>> queryPerformanceProject(@RequestBody BlinkPerformanceProjectsQry qry) {
         return ResponseDTO.ok(service.queryPerformanceProject(qry));
     }
 
     @Operation(summary = "添加资质")
     @PostMapping("/supports/credit/add")
-    public ResponseDTO<String> addPerformanceCredit(@RequestBody @Valid BlinkPerformanceCreditDTO dto) {
+    public ResponseDTO<String> addPerformanceCredit(@RequestBody BlinkPerformanceCreditDTO dto) {
         return creditService.addPerformanceCredit(dto);
     }
 
@@ -88,13 +88,13 @@ public class BlinkPerformanceController {
 
     @Operation(summary = "查询资质列表")
     @PostMapping("/supports/credit/query")
-    public ResponseDTO<PageResult<BlinkPerformanceCreditDTO>> queryPerformanceCredit(@RequestBody @Valid BlinkPerformanceCreditQry qry) {
+    public ResponseDTO<PageResult<BlinkPerformanceCreditDTO>> queryPerformanceCredit(@RequestBody BlinkPerformanceCreditQry qry) {
         return ResponseDTO.ok(creditService.queryPerformanceCredit(qry));
     }
 
     @Operation(summary = "保存荣誉")
     @PostMapping("/supports/honor/save")
-    public ResponseDTO<String> savePerformanceHonor(@RequestBody @Valid BlinkHonorConfigDTO dto) {
+    public ResponseDTO<String> savePerformanceHonor(@RequestBody BlinkHonorConfigDTO dto) {
         return honorService.savePerformanceHonor(dto);
     }
 
@@ -107,13 +107,13 @@ public class BlinkPerformanceController {
 
     @Operation(summary = "查询荣誉列表")
     @PostMapping("/supports/honor/query")
-    public ResponseDTO<PageResult<BlinkHonorConfigDTO>> queryPerformanceHonor(@RequestBody @Valid BlinkHonorConfigQry qry) {
+    public ResponseDTO<PageResult<BlinkHonorConfigDTO>> queryPerformanceHonor(@RequestBody BlinkHonorConfigQry qry) {
         return ResponseDTO.ok(honorService.queryPerformanceHonor(qry));
     }
 
     @Operation(summary = "保存社会公益")
     @PostMapping("/supports/socialWelfare/save")
-    public ResponseDTO<String> savePerformanceSocialWelfare(@RequestBody @Valid BlinkSocialWelfareDTO dto) {
+    public ResponseDTO<String> savePerformanceSocialWelfare(@RequestBody BlinkSocialWelfareDTO dto) {
         return socialWelfareService.savePerformanceSocialWelfare(dto);
     }
 
@@ -126,7 +126,7 @@ public class BlinkPerformanceController {
 
     @Operation(summary = "查询社会公益列表")
     @PostMapping("/supports/socialWelfare/query")
-    public ResponseDTO<PageResult<BlinkSocialWelfareDTO>> queryPerformanceSocialWelfare(@RequestBody @Valid BlinkSocialWelfareQry qry) {
+    public ResponseDTO<PageResult<BlinkSocialWelfareDTO>> queryPerformanceSocialWelfare(@RequestBody BlinkSocialWelfareQry qry) {
         return ResponseDTO.ok(socialWelfareService.queryPerformanceSocialWelfare(qry));
     }
 

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

@@ -25,38 +25,6 @@ import java.util.List;
 public class BlinkProviderController {
 
 
-    @Resource
-    private IBlinkProviderService providerService;
 
-    @NoNeedLogin
-    @Operation(summary = "服务商创建")
-    @PostMapping("/supports/provider/create")
-    public ResponseDTO<String> providerCreate(@RequestBody @Valid BlinkProviderCreateVO dto) {
-        return providerService.supportsProviderCreate(dto);
-    }
-
-    @Operation(summary = "查询服务商列表")
-    @PostMapping("/supports/provider/queryPage")
-    public ResponseDTO<PageResult<BlinkProviderDTO>> supportsProviderQueryPage(@RequestBody @Valid BlinkProviderQry qry) {
-        return providerService.supportsProviderQueryPage(qry);
-    }
-
-    @Operation(summary = "获取服务商基本信息")
-    @GetMapping("/supports/provider/query/{id}")
-    public ResponseDTO<BlinkProviderDTO> supportsProviderQuery(@PathVariable("id") String id) {
-        return providerService.supportsProviderQuery(id);
-    }
-
-    @Operation(summary = "获取服务商入库审核信息")
-    @GetMapping("/supports/provider/audit/query/{providerId}")
-    public ResponseDTO<BlinkProviderStorageDTO> supportsProviderAuditQuery(@PathVariable("providerId") String providerId) {
-        return providerService.supportsProviderAuditQuery(providerId);
-    }
-
-    @Operation(summary = "获取服务商入库保证金信息")
-    @PostMapping("/supports/provider/margin/query")
-    public ResponseDTO<PageResult<BlinkStorageMarginDTO>> supportsStorageMarginQueryPage(@RequestBody @Valid BlinkProviderQry qry) {
-        return providerService.supportsStorageMarginQueryPage(qry);
-    }
 
 }

+ 6 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkCompanyIntroductionDO.java

@@ -9,7 +9,13 @@ import lombok.Data;
 @Data
 @TableName("blink_company_introduction")
 public class BlinkCompanyIntroductionDO extends BaseEntity {
+    /**
+     * id
+     */
     @TableId(type = IdType.ASSIGN_UUID)
     private String id;
+    /**
+     * 企业描述
+     */
     private String description;
 }

+ 51 - 141
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,241 +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;
 
+    @Schema(description = "流程来源ID")
+    private String sourceFlowId;
+
 }

+ 39 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkCustomerSeniorDO.java

@@ -0,0 +1,39 @@
+package com.wx.blink.backend.domain.dataobject;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.wx.blink.base.common.domain.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 客户归属上级数据 实体类
+ *
+ */
+
+@Data
+@TableName("blink_customer_senior")
+public class BlinkCustomerSeniorDO implements Serializable {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    @Schema(description = "父主键id") @TableField("pid") private String pid;
+    @Schema(description = "排序健") @TableField("sort_index") private Integer sortIndex;
+    @Schema(description = "名称") @TableField("flow_name") private String flowName;
+    @Schema(description = "单位名称") @TableField("unit_name") private String unitName;
+    @Schema(description = "法定代表人") @TableField("unit_legal_person") private String unitLegalPerson;
+    @Schema(description = "股份占比") @TableField("shareholding_ratio") private String shareholdingRatio;
+    @Schema(description = "详细地址") @TableField("unit_address") private String unitAddress;
+    @Schema(description = "企业权责说明") @TableField("authority_description") private String authorityDescription;
+
+}

+ 15 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkHonorConfigDO.java

@@ -8,11 +8,26 @@ import lombok.Data;
 @Data
 @TableName("blink_honor_config")
 public class BlinkHonorConfigDO extends BaseEntity {
+    /**
+     * id
+     */
     @TableId(value = "id", type = com.baomidou.mybatisplus.annotation.IdType.ASSIGN_UUID)
     private String id;
+    /**
+     * 荣誉名称
+     */
     private String honorName;
+    /**
+     * url
+     */
     private String honorUrl;
+    /**
+     * 权重
+     */
     private Long weight;
+    /**
+     * 状态
+     */
     private Integer state;
 
 }

+ 15 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkPerformanceDO.java

@@ -9,10 +9,25 @@ import lombok.Data;
 @Data
 @TableName("blink_performance")
 public class BlinkPerformanceDO extends BaseEntity {
+    /**
+     * id
+     */
     @TableId(type = IdType.ASSIGN_UUID)
     private String id;
+    /**
+     * 名称
+     */
     private String performanceName;
+    /**
+     * url
+     */
     private String performanceUrl;
+    /**
+     * 权重
+     */
     private Long weight;
+    /**
+     * 状态
+     */
     private Integer state;
 }

+ 99 - 76
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkProviderDO.java

@@ -3,160 +3,183 @@ package com.wx.blink.backend.domain.dataobject;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.wx.blink.base.common.domain.BaseEntity;
 import lombok.Data;
 
+import java.util.Date;
+
 @Data
 @TableName("blink_provider")
 public class BlinkProviderDO extends BaseEntity {
     /**
-     * 主键
+     * id
      */
     @TableId(type = IdType.ASSIGN_UUID)
     private String id;
-
     /**
      * 服务商类型
      */
     private String providerType;
-
     /**
      * 区域类型
      */
     private String areaType;
-
+    /**
+     * 服务商名称
+     */
+    private String providerName;
     /**
      * 地区类型
      */
     private String regionType;
-
     /**
-     * 服务商名称
+     * 所在地区
      */
-    private String providerName;
-
+    private String countryRegion;
     /**
-     * 服务商编码
+     * 省市区
      */
-    private String providerCode;
-
+    private String provinceCityDistrict;
     /**
-     * 服务商等级
+     * 详细地址
      */
-    private String providerGrade;
-
+    private String address;
     /**
-     * 统一社会代码
+     * 社会统一机构代码
      */
     private String socialCode;
-
     /**
      * 法人
      */
     private String legalPerson;
-
     /**
-     * 销售团队(数量)
+     * 营销团队人数
      */
-    private Integer teamNumber;
-
+    private Long teamNumber;
+    /**
+     * 联系人
+     */
+    private String contactPerson;
+    /**
+     * 联系电话
+     */
+    private String contactPhone;
     /**
      * 当前职务
      */
     private String currentPosition;
-
     /**
-     * 国家或地区
+     * 是否紧急审核
      */
-    private String countryRegion;
-
+    private Integer urgentAudit;
     /**
-     * 省份
+     * 是否有在手项目
      */
-    private String province;
-
+    private Integer handState;
     /**
-     * 省份名称
+     * 企业业务简介
      */
-    private String provinceName;
-
+    private String companyDescription;
     /**
-     * 城市
+     * 企业资源简介
      */
-    private String city;
-
+    private String companyNature;
     /**
-     * 城市名称
+     * 是否有团队
      */
-    private String cityName;
+    private Integer hasTeam;
 
     /**
-     * 区县
+     * 团队人数
      */
-    private String district;
-
+    private Long teamSize;
     /**
-     * 区县名称
+     * 资源来源
      */
-    private String districtName;
-
+    private String resourceSource;
     /**
-     * 详细地址
+     * 审核人员
      */
-    private String address;
-
+    private String reviewer;
     /**
-     * 沟通语言
+     * 审核时间
      */
-    private String communicateLanguage;
-
+    private Date reviewDate;
     /**
-     * 联系人
+     * 审核意见
      */
-    private String contactPeople;
-
+    private String reviewResult;
     /**
-     * 联系人电话
+     * 预计面试日期
      */
-    private String contactPhone;
-
+    private Date expectedInterviewDate;
     /**
-     * 企业业务简介
+     * 预计面试地址
      */
-    private String companyDescription;
-
+    private String expectedInterviewLocation;
     /**
-     * 业务资源简介
+     * 预计面试人
      */
-    private String companyNature;
-
+    private String expectedInterviewer;
     /**
-     * 审核状态 0待审核 1审核中 2 审核完毕
+     * 面试评价意见
      */
-    private Integer auditStatus;
-
+    private String evaluationOpinion;
     /**
-     * 入库状态 0已认证(引荐完毕之后就是已认证) 1不合格
+     * 面试评价日期
      */
-    private Integer storeStatus;
-
+    private Date evaluationDate;
     /**
-     * 面试状态 0未面试 1面试中 2 面试完毕
+     * 服务商等级
      */
-    private Integer interviewStatus;
-
+    private String providerLevel;
     /**
-     * 引荐状态 0未引荐 1引荐中 2 引荐完毕
+     * 属营销经理
      */
-    private Integer referralStatus;
-
+    private String belongsToMarketingManager;
     /**
-     * 退出状态 1已退出
+     * 需缴纳保证金
      */
-    private Integer outStatus;
-
+    private Double needsDepositAmount;
+    /**
+     * 保证金是否缴纳
+     */
+    private Integer isPaidDeposit;
+    /**
+     * 保证金收款人
+     */
+    private String depositRecipient;
+    /**
+     * 保证金收款账户
+     */
+    private String depositAccount;
+    /**
+     * 预计引荐日期
+     */
+    private Date expectedReferralDate;
+    /**
+     * 引荐人
+     */
+    private String referral;
+    /**
+     * 引荐客户名称
+     */
+    private String referralCustomerName;
+    /**
+     * 引荐人职位
+     */
+    private String referralPosition;
+    /**
+     * 引荐评价意见
+     */
+    private String referralOpinion;
+    /**
+     * 引荐评价日期
+     */
+    private Date referralDate;
     /**
-     * 注册来源
+     * 服务商状态
      */
-    private String storeSource;
+    private Integer state;
 }

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

@@ -5,6 +5,12 @@ import lombok.Data;
 
 @Data
 public class BlinkCompanyIntroductionDTO extends BaseEntity {
+    /**
+     * id
+     */
     private String id;
+    /**
+     * 企业介绍
+     */
     private String description;
 }

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

@@ -5,10 +5,28 @@ import lombok.Data;
 
 @Data
 public class BlinkHonorConfigDTO extends BaseEntity {
+    /**
+     * id
+     */
     private String id;
+    /**
+     * 荣誉名称
+     */
     private String honorName;
+    /**
+     * url
+     */
     private String honorUrl;
+    /**
+     * 权重
+     */
     private Long weight;
+    /**
+     * 状态
+     */
     private Integer state;
+    /**
+     * 创建人姓名
+     */
     private String createName;
 }

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

@@ -5,9 +5,24 @@ import lombok.Data;
 
 @Data
 public class BlinkPerformanceCreditDTO extends BaseEntity {
+    /**
+     * id
+     */
     private String id;
+    /**
+     * 资质名称
+     */
     private String creditName;
+    /**
+     * url
+     */
     private String creditUrl;
+    /**
+     * 权重
+     */
     private Long weight;
+    /**
+     * 状态
+     */
     private Integer state;
 }

+ 19 - 2
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/BlinkPerformanceDTO.java

@@ -5,13 +5,30 @@ import lombok.Data;
 
 @Data
 public class BlinkPerformanceDTO extends BaseEntity {
+    /**
+     * id
+     */
     private String id;
+    /**
+     * 名称
+     */
     private String performanceName;
+    /**
+     * url
+     */
     private String performanceUrl;
     private Long weight;
+    /**
+     * 状态
+     */
     private Integer state;
-    // 关联项目数量
+
+    /**
+     * 关联项目数量
+     */
     private Long projectCount;
-    // 创建人姓名
+    /**
+     * 创建人姓名
+     */
     private String creatorName;
 }

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

@@ -8,15 +8,42 @@ import java.util.Date;
 
 @Data
 public class BlinkPerformanceProjectsDTO extends BaseEntity {
+    /**
+     * id
+     */
     private String id;
+    /**
+     * projectId
+     */
     private String projectId;
+    /**
+     * 项目名称
+     */
     private String projectName;
     private Double contractAmount;
+    /**
+     * 业绩分类id
+     */
     private String performanceId;
+    /**
+     * 项目地址
+     */
     private String projectAddress;
+    /**
+     * 项目开始时间
+     */
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date projectStartTime;
+    /**
+     * 项目工期
+     */
     private Long projectDuration;
+    /**
+     * 权重
+     */
     private Long weight;
+    /**
+     * 项目描述
+     */
     private String projectDescription;
 }

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

@@ -5,10 +5,28 @@ import lombok.Data;
 
 @Data
 public class BlinkSocialWelfareDTO extends BaseEntity {
+    /**
+     * id
+     */
     private String id;
+    /**
+     * 公益名称
+     */
     private String welfareName;
+    /**
+     * url
+     */
     private String welfareUrl;
+    /**
+     * 权重
+     */
     private Long weight;
+    /**
+     * 状态
+     */
     private Integer state;
+    /**
+     * 创建人名称
+     */
     private String createName;
 }

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

@@ -0,0 +1,32 @@
+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;
+
+@Data
+@TableName("m_blink_customer_senior")
+public class MBlinkCustomerSeniorVO 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 updateTime;
+    @Schema(description = "单位名称") @TableField("unit_name") private String unitName;
+    @Schema(description = "法定代表人") @TableField("unit_legal_person") private String unitLegalPerson;
+    @Schema(description = "股份占比") @TableField("shareholding_ratio") private String shareholdingRatio;
+    @Schema(description = "详细地址") @TableField("unit_address") private String unitAddress;
+    @Schema(description = "企业权责说明") @TableField("authority_description") private String authorityDescription;
+
+}

+ 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;
+
+}

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

@@ -0,0 +1,85 @@
+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_register")
+public class lBlinkCustomerRegisterVO 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("provider_id") private String providerId;
+    @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("group_customer_id") private String groupCustomerId;
+    @Schema(description = "客户等级") @TableField("customer_grade") private String customerGrade;
+    @Schema(description = "客户行业") @TableField("belong_industry") private String belongIndustry;
+    @Schema(description = "归属区域") @TableField("belong_region") private String belongRegion;
+    @Schema(description = "营销人员") @TableField("market_staff") private String marketStaff;
+    @Schema(description = "客户类型") @TableField("customer_type") private String customerType;
+    @Schema(description = "备注") @TableField("remarks") private String remarks;
+    @Schema(description = "裁判网附件") @TableField("judge_attachment") private String judgeAttachment;
+    @Schema(description = "法院附件") @TableField("court_attachment") private String courtAttachment;
+    @Schema(description = "工商附件") @TableField("industry_attachment") private String industryAttachment;
+    @Schema(description = "附件集合") @TableField("attachment") private String attachment;
+    @Schema(description = "服务商名称") @TableField("provider_name") private String providerName;
+    @Schema(description = "省市区") @TableField("customer_ssq") private String customerSsq;
+    @Schema(description = "办公详细地址") @TableField("office_address") private String officeAddress;
+    @Schema(description = "集团公司名称") @TableField("group_customer_name") private String groupCustomerName;
+    @Schema(description = "是否服务商客户发起流程") @TableField("is_provider_send") private Integer isProviderSend;
+    @Schema(description = "初筛结果") @TableField("initial_screening_result") private String initialScreeningResult;
+    @Schema(description = "不通过说明") @TableField("no_pass_description") private String noPassDescription;
+    @Schema(description = "对接人省市区") @TableField("work_ssq") private String workSsq;
+    @Schema(description = "服务商发起的客户id") @TableField("provider_send_cusid") private String providerSendCusid;
+    @Schema(description = "归属上级")
+    private List<MBlinkCustomerSeniorVO> seniors;
+
+}

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

@@ -1,7 +1,8 @@
 package com.wx.blink.backend.factory;
 
+import com.wx.blink.backend.handler.CustomerRegisterProcessSubmitEventHandler;
 import com.wx.blink.backend.handler.CustomizeProcessEventHandler;
-import com.wx.blink.backend.handler.ProviderRegisterProcessSubmitEventHandler;
+import com.wx.blink.backend.handler.*;
 import com.wx.blink.base.common.code.SystemErrorCode;
 import com.wx.blink.base.common.domain.ResponseDTO;
 
@@ -22,22 +23,37 @@ public class CustomizeProcessFactory {
 
     static {
         processorMap.put(0, new HashMap<String, CustomizeProcessEventHandler>() {{
-            put("PROVIDER_REGISTER", new ProviderRegisterProcessSubmitEventHandler());
+            //put("PROVIDER_REGISTER", new ProviderRegisterProcessEventHandler());
         }});
 
         processorMap.put(1, new HashMap<String, CustomizeProcessEventHandler>() {{
         }});
 
         processorMap.put(2, new HashMap<String, CustomizeProcessEventHandler>() {{
+            put("PROVIDER_REGISTER", new ProviderRegisterProcessEventHandler());
+            //客户登记流程
+            put("blink_customer_register", new CustomerRegisterProcessSubmitEventHandler());
         }});
 
         processorMap.put(3, new HashMap<String, CustomizeProcessEventHandler>() {{
         }});
 
         processorMap.put(4, new HashMap<String, CustomizeProcessEventHandler>() {{
+            //费用报销流程
+            put("EXPENSE_STATEMENT", new ExpenseStatementProcessEventHandler());
+            //借款申请流程
+            put("LOAN_APPLY", new LoanApplyProcessEventHandler());
+            //客户登记流程
+            put("blink_customer_register", new CustomerRegisterProcessSubmitEventHandler());
+            //客户信息变更流程
+            put("blink_customer_edit", new CustomerEditProcessSubmitEventHandler());
+            //客户黑名单
+            put("blink_customer_blacklist", new CustomerBlacklistProcessSubmitEventHandler());
         }});
 
         processorMap.put(5, new HashMap<String, CustomizeProcessEventHandler>() {{
+            //客户登记流程
+            put("blink_customer_register", new CustomerRegisterProcessSubmitEventHandler());
         }});
     }
 

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

@@ -0,0 +1,46 @@
+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.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 java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 客户信息变更事件-业务动作
+ */
+public class CustomerBlacklistProcessSubmitEventHandler implements CustomizeProcessEventHandler {
+    private IBlinkCustomerService customerService;
+
+    public CustomerBlacklistProcessSubmitEventHandler() {
+        this.customerService = BlinkSpringUtil.getBean(IBlinkCustomerService.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);
+        customerService.customerToBlacklist(editVo.getCusid());
+        return  ResponseDTO.ok();
+    }
+
+}

+ 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;
+    }
+
+}

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

@@ -0,0 +1,137 @@
+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.lBlinkCustomerRegisterVO;
+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 org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+/**
+ * 客户登记流程事件-业务动作
+ */
+public class CustomerRegisterProcessSubmitEventHandler implements CustomizeProcessEventHandler {
+    private BlinkCustomerMapper customerMapper;
+    private IBlinkCustomerService customerService;
+    private BlinkCustomerSeniorMapper customerSeniorMapper;
+    private IBlinkCustomerSeniorService seniorService;
+
+    public CustomerRegisterProcessSubmitEventHandler() {
+        this.customerMapper = BlinkSpringUtil.getBean(BlinkCustomerMapper.class);
+        this.customerService = BlinkSpringUtil.getBean(IBlinkCustomerService.class);
+        this.customerSeniorMapper = BlinkSpringUtil.getBean(BlinkCustomerSeniorMapper.class);
+        this.seniorService = BlinkSpringUtil.getBean(IBlinkCustomerSeniorService.class);
+    }
+    /**
+     * 状态
+     * 0:保存未提交
+     * 1:驳回到发起人
+     * 2:运行中
+     * 3:流程异常
+     * 4:完成
+     * 5:取消
+     */
+    @Override
+    public ResponseDTO<String> process(StInstanceEvent event) {
+        int state = event.getState();
+        //获取表单数据
+        lBlinkCustomerRegisterVO registerVo = JSONObject.parseObject(event.getMainFormData().toJSONString(), lBlinkCustomerRegisterVO.class);
+        //获取表单子表数据
+        String flowId ="";
+        if(registerVo.getFlowId()!=null)flowId=registerVo.getFlowId();
+        List<MBlinkCustomerSeniorVO> seniorVOs= seniorService.flowCustomerSeniorQueryByPid(flowId);
+        //生成明细DO
+        List<BlinkCustomerSeniorDO> seniorDOs = new ArrayList<>();
+        if (seniorVOs != null && !seniorVOs.isEmpty()) {
+            for (MBlinkCustomerSeniorVO seniorVO : seniorVOs) {
+                seniorDOs.add(customerSeniorMapper.customerSeniorVOtoDomain(seniorVO));
+            }
+        }
+        //处理省市区
+        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-无效客户
+        if (state == 2) {
+            //流程开始时,状态为审核中
+            customerDO.setAuditStatus("01");
+        }
+        if (state == 4) {
+            //流程结束时,状态为有效
+            customerDO.setAuditStatus("02");
+        }
+        if (state == 5) {
+            //取消时,状态为失效
+            customerDO.setAuditStatus("03");
+        }
+        if (registerVo.getIsProviderSend() != null && registerVo.getIsProviderSend() == 1) {
+            //数据来源为服务商列表发起的流程时,会同步获取到客户id
+            if (registerVo.getProviderSendCusid() == null) {
+                return ResponseDTO.userErrorParam("未获取到对应客户");
+            }
+            customerDO.setId(registerVo.getProviderSendCusid());
+            if (registerVo.getInitialScreeningResult() != null && registerVo.getInitialScreeningResult().equals("02")) {
+                //初筛结果为不通过时,客户状态为失效
+                customerDO.setAuditStatus("03");
+            }
+            //如果是从服务商列表发起的,只进行更新操作
+            customerDO.setUpdateTime(registerVo.getUpDate());
+            customerDO.setUpdateUserId(registerVo.getUpdateBy());
+            return customerService.supportsCustomerUpdate(customerDO, seniorDOs,true);
+        } else {
+            //用flow_id查询对应的客户
+            BlinkCustomerDO validateCustomer = customerService.queryByCustomerFlowId(registerVo.getFlowId());
+            //判断是否已经写入一次了
+            if (!Objects.nonNull(validateCustomer) || validateCustomer.getId() == null) {
+                //第一次写入保存数据
+                customerDO.setCreateTime(registerVo.getCreateTime());
+                customerDO.setCreateUserId(registerVo.getCreateBy());
+                return customerService.supportsCustomerCreate(customerDO, seniorDOs);
+            } else {
+                //写入过则更新
+                customerDO.setId(validateCustomer.getId());
+                customerDO.setUpdateTime(registerVo.getUpDate());
+                customerDO.setUpdateUserId(registerVo.getUpdateBy());
+                return customerService.supportsCustomerUpdate(customerDO, seniorDOs,true);
+            }
+        }
+    }
+
+    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;
+    }
+}

+ 2 - 3
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/handler/ProviderRegisterProcessSubmitEventHandler.java → bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/handler/ExpenseStatementProcessEventHandler.java

@@ -1,13 +1,12 @@
 package com.wx.blink.backend.handler;
 
-import com.alibaba.fastjson.JSONObject;
 import com.cloud.sa.flow.commom.domain.virentity.StInstanceEvent;
 import com.wx.blink.base.common.domain.ResponseDTO;
 
 /**
- * 服务商登记发起进行中事件-业务动作
+ * 费用报销申请流程事件-业务动作
  */
-public class ProviderRegisterProcessSubmitEventHandler implements CustomizeProcessEventHandler {
+public class ExpenseStatementProcessEventHandler implements CustomizeProcessEventHandler {
     @Override
     public ResponseDTO<String> process(StInstanceEvent event) {
 

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

@@ -0,0 +1,18 @@
+package com.wx.blink.backend.handler;
+
+import com.cloud.sa.flow.commom.domain.virentity.StInstanceEvent;
+import com.wx.blink.base.common.domain.ResponseDTO;
+
+/**
+ * 借款申请流程事件-业务动作
+ */
+public class LoanApplyProcessEventHandler implements CustomizeProcessEventHandler {
+    @Override
+    public ResponseDTO<String> process(StInstanceEvent event) {
+        //流程办结时触发
+        if (event.getState() == 4) {
+
+        }
+        return null;
+    }
+}

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

@@ -0,0 +1,50 @@
+package com.wx.blink.backend.handler;
+
+import com.alibaba.cola.statemachine.StateMachine;
+import com.cloud.sa.flow.commom.domain.virentity.StInstanceEvent;
+import com.wx.blink.backend.constant.ProjectStatusEnum;
+import com.wx.blink.backend.machinestate.context.ProviderContext;
+import com.wx.blink.backend.machinestate.machineevent.ProviderEvent;
+import com.wx.blink.backend.machinestate.status.ProviderState;
+import com.wx.blink.backend.service.IBlinkProviderService;
+import com.wx.blink.base.common.domain.ResponseDTO;
+import com.wx.blink.base.common.util.BlinkSpringUtil;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * 服务商登记发起进行中事件-业务动作
+ */
+public class ProviderRegisterProcessEventHandler implements CustomizeProcessEventHandler {
+    private IBlinkProviderService service;
+    private StateMachine<ProviderState, ProviderEvent, ProviderContext> mechine;
+
+    public ProviderRegisterProcessEventHandler() {
+        this.service = BlinkSpringUtil.getBean(IBlinkProviderService.class);
+        this.mechine = BlinkSpringUtil.getBean(StateMachine.class);
+    }
+
+    @Override
+    public ResponseDTO<String> process(StInstanceEvent event) {
+        // 判断是否注册的新供应商
+        String providerId = event.getMainFormData().getOrDefault("provider_id", "").toString();
+        if (!StringUtils.isNotBlank(providerId)) {
+            // 初始化
+            this.service.registerProvider(event);
+
+        }
+        ProviderContext context=new ProviderContext();
+        context.setData(event);
+        // 服务商状态为初始化
+        context.setEvent(ProviderEvent.AUDIT);
+        context.setFrom(ProviderState.INIT);
+        mechine.fireEvent(ProviderState.INIT,ProviderEvent.AUDIT,context);
+
+        // 服务商状态为审核通过
+        mechine.fireEvent(ProviderState.AUDITED,ProviderEvent.INTERVIEW,context);
+        // 服务商状态为面试通过
+        mechine.fireEvent(ProviderState.INTERVIEWED,ProviderEvent.INTERVIEW,context);
+
+        // 服务商状态为引荐通过
+        return null;
+    }
+}

+ 39 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/action/ProviderAuditAction.java

@@ -0,0 +1,39 @@
+package com.wx.blink.backend.machinestate.action;
+
+import com.alibaba.cola.statemachine.Action;
+import com.cloud.sa.flow.commom.domain.virentity.StInstanceEvent;
+import com.wx.blink.backend.machinestate.context.ProviderContext;
+import com.wx.blink.backend.machinestate.machineevent.ProviderEvent;
+import com.wx.blink.backend.machinestate.status.ProviderState;
+import com.wx.blink.backend.service.IBlinkProviderService;
+import com.wx.blink.base.common.domain.ResponseDTO;
+import com.wx.blink.base.common.util.BlinkSpringUtil;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+
+/**
+ * 审核业务动作
+ */
+@Component
+public class ProviderAuditAction implements Action<ProviderState, ProviderEvent, ProviderContext> {
+
+    private IBlinkProviderService service;
+    public ProviderAuditAction(){
+        this.service= BlinkSpringUtil.getBean(IBlinkProviderService.class);
+    }
+
+    @Override
+    public void execute(ProviderState from, ProviderState to, ProviderEvent event, ProviderContext context) {
+        if(context!=null){
+            if(context.getData()!=null){
+                try {
+                    ResponseDTO<String> result= service.updateAuditProvider(context.getData());
+                } catch (ParseException e) {
+
+                }
+
+            }
+        }
+    }
+}

+ 30 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/action/ProviderInterviewAction.java

@@ -0,0 +1,30 @@
+package com.wx.blink.backend.machinestate.action;
+
+import com.alibaba.cola.statemachine.Action;
+import com.wx.blink.backend.machinestate.context.ProviderContext;
+import com.wx.blink.backend.machinestate.machineevent.ProviderEvent;
+import com.wx.blink.backend.machinestate.status.ProviderState;
+import com.wx.blink.backend.service.IBlinkProviderService;
+import com.wx.blink.base.common.domain.ResponseDTO;
+import com.wx.blink.base.common.util.BlinkSpringUtil;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+
+@Component
+public class ProviderInterviewAction implements Action<ProviderState, ProviderEvent, ProviderContext> {
+    private IBlinkProviderService service;
+    public ProviderInterviewAction(){
+        this.service= BlinkSpringUtil.getBean(IBlinkProviderService.class);
+    }
+
+    @Override
+    public void execute(ProviderState from, ProviderState to, ProviderEvent event, ProviderContext context) {
+        if(context!=null){
+            if(context.getData()!=null){
+                ResponseDTO<String> result= service.updateInterviewProvider(context.getData());
+
+            }
+        }
+    }
+}

+ 28 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/action/ProviderReferralAction.java

@@ -0,0 +1,28 @@
+package com.wx.blink.backend.machinestate.action;
+
+import com.alibaba.cola.statemachine.Action;
+import com.wx.blink.backend.machinestate.context.ProviderContext;
+import com.wx.blink.backend.machinestate.machineevent.ProviderEvent;
+import com.wx.blink.backend.machinestate.status.ProviderState;
+import com.wx.blink.backend.service.IBlinkProviderService;
+import com.wx.blink.base.common.domain.ResponseDTO;
+import com.wx.blink.base.common.util.BlinkSpringUtil;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ProviderReferralAction implements Action<ProviderState, ProviderEvent, ProviderContext> {
+
+    private IBlinkProviderService service;
+    public ProviderReferralAction(){
+        this.service= BlinkSpringUtil.getBean(IBlinkProviderService.class);
+    }
+    @Override
+    public void execute(ProviderState from, ProviderState to, ProviderEvent event, ProviderContext context) {
+        if(context!=null){
+            if(context.getData()!=null){
+                ResponseDTO<String> result= service.updateReferrlaProvider(context.getData());
+
+            }
+        }
+    }
+}

+ 13 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/condition/ProviderAuditCondition.java

@@ -0,0 +1,13 @@
+package com.wx.blink.backend.machinestate.condition;
+
+import com.alibaba.cola.statemachine.Condition;
+import com.wx.blink.backend.machinestate.context.ProviderContext;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ProviderAuditCondition implements Condition<ProviderContext> {
+    @Override
+    public boolean isSatisfied(ProviderContext context) {
+        return true;
+    }
+}

+ 13 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/condition/ProviderInterviewCondition.java

@@ -0,0 +1,13 @@
+package com.wx.blink.backend.machinestate.condition;
+
+import com.alibaba.cola.statemachine.Condition;
+import com.wx.blink.backend.machinestate.context.ProviderContext;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ProviderInterviewCondition implements Condition<ProviderContext> {
+    @Override
+    public boolean isSatisfied(ProviderContext context) {
+        return true;
+    }
+}

+ 13 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/condition/ProviderReferralCondition.java

@@ -0,0 +1,13 @@
+package com.wx.blink.backend.machinestate.condition;
+
+import com.alibaba.cola.statemachine.Condition;
+import com.wx.blink.backend.machinestate.context.ProviderContext;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ProviderReferralCondition implements Condition<ProviderContext> {
+    @Override
+    public boolean isSatisfied(ProviderContext context) {
+        return true;
+    }
+}

+ 39 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/config/CommonStateMachineLoader.java

@@ -0,0 +1,39 @@
+package com.wx.blink.backend.machinestate.config;
+
+import com.alibaba.cola.statemachine.Action;
+import com.alibaba.cola.statemachine.Condition;
+import com.alibaba.cola.statemachine.StateMachine;
+import com.alibaba.cola.statemachine.builder.On;
+import com.alibaba.cola.statemachine.builder.StateMachineBuilder;
+import com.alibaba.cola.statemachine.builder.StateMachineBuilderFactory;
+import com.wx.blink.base.common.util.BlinkSpringUtil;
+import org.springframework.stereotype.Component;
+import org.yaml.snakeyaml.Yaml;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.Function;
+
+@Component
+public class CommonStateMachineLoader {
+    public <S, E, C> StateMachine<S, E, C> load(String name, String file, Function<String, S> stateConv, Function<String, E> eventConv) {
+        StateMachineBuilder<S, E, C> builder = StateMachineBuilderFactory.create();
+        Map<String, List<Map<String, String>>> map = new Yaml().loadAs(getClass().getResourceAsStream(file), Map.class);
+        List<Map<String, String>> list = Optional.ofNullable(map.get(name)).orElse(new ArrayList<>());
+        list.forEach(a -> {
+            On<S, E, C> trans = builder.externalTransition()
+                    .from(stateConv.apply(a.get("from")))
+                    .to(stateConv.apply(a.get("to")))
+                    .on(eventConv.apply(a.get("event")));
+            Optional.ofNullable(a.get("condition"))
+                    .map(bean -> (Condition<C>) BlinkSpringUtil.getBean(bean.substring(5), Condition.class))
+                    .ifPresent(trans::when);
+            Optional.ofNullable(a.get("action"))
+                    .map(bean -> (Action<S, E, C>) BlinkSpringUtil.getBean(bean.substring(5), Action.class))
+                    .ifPresent(trans::perform);
+        });
+        return builder.build(name + "Machine");
+    }
+}

+ 16 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/config/ProviderStateMachineConfig.java

@@ -0,0 +1,16 @@
+package com.wx.blink.backend.machinestate.config;
+
+import com.alibaba.cola.statemachine.StateMachine;
+import com.wx.blink.backend.machinestate.context.ProviderContext;
+import com.wx.blink.backend.machinestate.machineevent.ProviderEvent;
+import com.wx.blink.backend.machinestate.status.ProviderState;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class ProviderStateMachineConfig {
+    @Bean
+    public StateMachine<ProviderState, ProviderEvent, ProviderContext> providerStateMachine(CommonStateMachineLoader loader) {
+        return loader.load("provider","/statemachine-config.yaml", ProviderState::valueOf, ProviderEvent::valueOf);
+    }
+}

+ 13 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/context/ProviderContext.java

@@ -0,0 +1,13 @@
+package com.wx.blink.backend.machinestate.context;
+
+import com.cloud.sa.flow.commom.domain.virentity.StInstanceEvent;
+import com.wx.blink.backend.machinestate.machineevent.ProviderEvent;
+import com.wx.blink.backend.machinestate.status.ProviderState;
+import lombok.Data;
+
+@Data
+public class ProviderContext {
+    private ProviderEvent event;
+    private ProviderState from;
+    private StInstanceEvent data;
+}

+ 16 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/machineevent/ProviderEvent.java

@@ -0,0 +1,16 @@
+package com.wx.blink.backend.machinestate.machineevent;
+
+public enum ProviderEvent {
+
+    REGISTER("服务商注册", 0),
+    AUDIT("初步审核", 1),
+    INTERVIEW("面试", 2),
+    REFERRAL("引荐", 3);
+    private Integer state;
+    private String description;
+
+    ProviderEvent(String description, Integer state) {
+        this.description = description;
+        this.state = state;
+    }
+}

+ 20 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/machinestate/status/ProviderState.java

@@ -0,0 +1,20 @@
+package com.wx.blink.backend.machinestate.status;
+
+public enum ProviderState {
+    INIT("服务商注册完成",0),
+    AUDITED("初步审核完成",1),
+    UNAUDITED("初步审核不通过",2),
+    INTERVIEWED("面试通过",3),
+    UNINTERVIEWED("面试不通过",4),
+    REFERRALING("待引荐",5),
+    REFERRALED("引荐通过",6),
+    UNREFERRALED("引荐不通过",7);
+
+
+    private Integer state;
+    private String description;
+    ProviderState(String description, Integer state) {
+        this.description = description;
+        this.state = state;
+    }
+}

+ 2 - 2
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkCompanyIntroductionServiceImpl.java

@@ -24,11 +24,11 @@ public class BlinkCompanyIntroductionServiceImpl extends ServiceImpl<BlinkCompan
         BlinkCompanyIntroductionDO companyIntroductionDO = mapper.toDO(dto);
         if (StringUtil.isNotEmpty(dto.getId())) {
             BlinkEntityUtil.setUpdatedInfo(companyIntroductionDO);
+            this.updateById(companyIntroductionDO);
         } else {
             BlinkEntityUtil.setCreateInfo(companyIntroductionDO);
-
+            this.save(companyIntroductionDO);
         }
-        this.save(companyIntroductionDO);
         return ResponseDTO.ok();
     }
 }

+ 68 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkCustomerSeniorServiceImpl.java

@@ -0,0 +1,68 @@
+package com.wx.blink.backend.manager;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.wx.blink.backend.domain.dataobject.BlinkBizFileDO;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerDO;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerSeniorDO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerHeaderVO;
+import com.wx.blink.backend.domain.dto.MBlinkCustomerSeniorVO;
+import com.wx.blink.backend.domain.qry.BlinkBizFileQry;
+import com.wx.blink.backend.objectmapper.BlinkCustomerMapper;
+import com.wx.blink.backend.objectmapper.BlinkCustomerSeniorMapper;
+import com.wx.blink.backend.repository.BlinkCustomerRepository;
+import com.wx.blink.backend.repository.BlinkCustomerSeniorRepository;
+import com.wx.blink.backend.service.IBlinkCustomerSeniorService;
+import com.wx.blink.backend.service.IBlinkCustomerService;
+import com.wx.blink.base.common.domain.PageResult;
+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.service.DataTracerService;
+import com.wx.blink.base.module.support.dict.service.DictCacheService;
+import com.wx.blink.base.module.support.serialnumber.constant.SerialNumberIdEnum;
+import com.wx.blink.base.module.support.serialnumber.service.SerialNumberService;
+import com.wx.blink.common.qry.BlinkCustomerQry;
+import com.wx.blink.common.vo.*;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * @author gufj
+ * @date 2025/05/21
+ */
+@Service
+public class BlinkCustomerSeniorServiceImpl extends ServiceImpl<BlinkCustomerSeniorRepository, BlinkCustomerSeniorDO> implements IBlinkCustomerSeniorService {
+
+    @Resource
+    private BlinkCustomerSeniorMapper customerSeniorMapper;
+    @Resource
+    private BlinkCustomerSeniorRepository customerSeniorRepository;
+
+
+    @Override
+    public void batchAddWithEmptyByPid(String pid,List<BlinkCustomerSeniorDO> dos) {
+        customerSeniorRepository.deleteByPid(pid);
+        for (BlinkCustomerSeniorDO seniorDO : dos) {
+            seniorDO.setPid(pid);
+            this.save(seniorDO);
+        }
+    }
+
+    @Override
+    public List<BlinkCustomerSeniorDO> customerSeniorQueryByPid(String pid) {
+        return customerSeniorRepository.customerSeniorQueryByPid(pid);
+    }
+
+    @Override
+    public List<MBlinkCustomerSeniorVO> flowCustomerSeniorQueryByPid(String pid) {
+        return customerSeniorRepository.flowCustomerSeniorQueryByPid(pid);
+    }
+}

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

@@ -4,16 +4,22 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.wx.blink.backend.domain.dataobject.BlinkBizFileDO;
 import com.wx.blink.backend.domain.dataobject.BlinkCustomerDO;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerSeniorDO;
+import com.wx.blink.backend.domain.dataobject.BlinkProviderDO;
 import com.wx.blink.backend.domain.dto.BlinkCustomerHeaderVO;
 import com.wx.blink.backend.domain.qry.BlinkBizFileQry;
 import com.wx.blink.backend.objectmapper.BlinkCustomerMapper;
 import com.wx.blink.backend.repository.BlinkCustomerRepository;
+import com.wx.blink.backend.repository.BlinkProviderRepository;
+import com.wx.blink.backend.service.IBlinkCustomerSeniorService;
 import com.wx.blink.backend.service.IBlinkCustomerService;
+import com.wx.blink.backend.service.IBlinkProviderService;
 import com.wx.blink.base.common.domain.PageResult;
 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;
@@ -24,9 +30,8 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author gufj
@@ -45,6 +50,10 @@ public class BlinkCustomerServiceImpl extends ServiceImpl<BlinkCustomerRepositor
     private DataTracerService dataTracerService;
     @Resource
     private DictCacheService dictCacheService;
+    @Resource
+    private IBlinkCustomerSeniorService seniorService;
+    @Resource
+    private BlinkProviderServiceImpl providerService;
 
     @Override
     public ResponseDTO<String> supportsCustomerCreate(BlinkCustomerCreateVO dto) {
@@ -63,7 +72,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();
     }
 
@@ -107,6 +116,12 @@ public class BlinkCustomerServiceImpl extends ServiceImpl<BlinkCustomerRepositor
         BlinkCustomerDO customerDO = this.getById(id);
         if (Objects.nonNull(customerDO)) {
             customerMapper.domainToDTO(customerDO, customerDTO);
+            BlinkCustomerDO grupCustomerDO = this.getById(customerDO.getGroupCustomerId());
+            BlinkProviderDO providerDO = providerService.getById(customerDO.getProviderId());
+            if(grupCustomerDO!=null && grupCustomerDO.getCustomerName()!=null)
+                customerDTO.setGroupCustomerName(grupCustomerDO.getCustomerName());
+            if(providerDO!=null && providerDO.getProviderName()!=null)
+                customerDTO.setProviderName(providerDO.getProviderName());
         }
         return ResponseDTO.ok(customerDTO);
     }
@@ -146,11 +161,153 @@ public class BlinkCustomerServiceImpl extends ServiceImpl<BlinkCustomerRepositor
 
     @Override
     public BlinkCustomerStatisticsVO supportsStatisticsInfo(BlinkCustomerQry qry) {
+        List<BlinkCustomerVO> list = customerRepository.supportsCustomerQueryPage(null, qry);
+        return getCustomerStatisticsInfo(list);
+    }
+
+    @Override
+    public ResponseDTO<String> supportsCustomerCreate(BlinkCustomerDO customerDO, List<BlinkCustomerSeniorDO> seniorDos) {
+        // 验证客户名称是否重复
+        BlinkCustomerDO validateCustomer = customerRepository.queryByCustomerName(customerDO.getCustomerName(), null, Boolean.FALSE);
+        if (Objects.nonNull(validateCustomer)) {
+            return ResponseDTO.userErrorParam("客户名称重复!请检查");
+        }
+        //生成客户编码
+        SerialNumberIdEnum serialNumberIdEnum = BlinkEnumUtil.getEnumByValue(4, SerialNumberIdEnum.class);
+        customerDO.setCustomerCode(serialNumberService.generate(serialNumberIdEnum));
+        //创建人赋值
+        //BlinkEntityUtil.setCreateInfo(customerDO);
+        //执行保存
+        this.save(customerDO);
+        //保存归属上级明细表
+        seniorService.batchAddWithEmptyByPid(customerDO.getId(),seniorDos);
+        //执行变更记录
+        dataTracerService.insert(customerDO.getId(), DataTracerTypeEnum.CUSTOMER,customerDO.getCreateUserId());
+        return ResponseDTO.ok();
+    }
+
+    @Override
+    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)) {
+            return ResponseDTO.userErrorParam("客户名称重复!请检查");
+        }
+        //修改人赋值
+        //BlinkEntityUtil.setUpdatedInfo(customerDO);
+        //执行保存
+        this.updateById(customerDO);
+        //保存归属上级明细表
+        if(isHaveDetail)
+            seniorService.batchAddWithEmptyByPid(customerDO.getId(),seniorDos);
+
+        return ResponseDTO.ok();
+    }
+
+    @Override
+    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);
+    }
+
+    @Override
+    public void customerToBlacklist(String id) {
+        customerRepository.customerToBlacklist(id);
+    }
+
+    @Override
+    public Map<String, Object> supportsCustomerBlacklistDetails(String id) {
+        Map<String,Object> result = new HashMap<>();
+        //获取归属上级明细
+        List<BlinkCustomerSeniorDO> seniors = seniorService.customerSeniorQueryByPid(id);
+        List<List<String>> seniorsTable = new ArrayList<>();
+        //设定归属上级表头
+        List<String> seniorsHeader = Arrays.asList("单位名称", "法定代表人", "股份占比", "详细地址","企业权责说明");
+        seniorsTable.add(seniorsHeader);
+        //绑定归属上级表体数据
+        if(seniors!=null && !seniors.isEmpty()){
+            for(BlinkCustomerSeniorDO senior:seniors){
+                List<String> seniorsData = Arrays.asList(senior.getUnitName(), senior.getUnitLegalPerson(), senior.getShareholdingRatio(), senior.getUnitAddress(),senior.getAuthorityDescription());
+                seniorsTable.add(seniorsData);
+            }
+        }
+        result.put("seniorsTable",seniorsTable);
+
+        //获取推进中项目
+        List<List<String>> advancingProjectTable = new ArrayList<>();
+        //设定推进中项目表头
+        List<String> advancingProjectHeader = Arrays.asList("项目名称", "项目状态", "概算金额(元)", "合同金额(元)","投标类型","产品类型","归属销售工程师","归属营销部门");
+        advancingProjectTable.add(advancingProjectHeader);
+        //绑定归属上级表体数据
+        List<String> advancingProjectData = Arrays.asList("测试项目", "测试状态", "100", "200","投标类型1","产品类型1","工程师","营销部门");
+        advancingProjectTable.add(advancingProjectData);
+        List<String> advancingProjectData2 = Arrays.asList("测试项目2", "测试状态2", "150", "210","投标类型2","产品类型2","工程师2","营销部门2");
+        advancingProjectTable.add(advancingProjectData2);
+        result.put("advancingProjectTable",advancingProjectTable);
+
+        //获取在建项目
+        List<List<String>> buildingProjectTable = new ArrayList<>();
+        //设定在建项目表头
+        List<String> buildingProjectHeader = Arrays.asList("项目名称", "项目状态", "合同总金额(元)", "已回款总金额(元)","已回款比例(%)","未回款总金额(元)","已开票总金额(元)","未开票总金额(元)","罚款总金额(元)","形象进度(%)","合同进度(%)","产值进度(%)","投标类型","项目来源","归属销售工程师","归属项目经理","归属营销部门");
+        buildingProjectTable.add(buildingProjectHeader);
+        result.put("buildingProjectTable",buildingProjectTable);
+
+        return result;
+    }
+
+    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(13);
-        statisticsVO.setCustomerAuditQuantity(3);
-        statisticsVO.setCustomerInvalidQuantity(4);
-        statisticsVO.setCustomerValidQuantity(6);
+        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;
     }
 }

+ 19 - 7
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkHonorConfigServiceImpl.java

@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.wx.blink.backend.domain.dataobject.BlinkHonorConfigDO;
 import com.wx.blink.backend.domain.dto.BlinkHonorConfigDTO;
-import com.wx.blink.backend.domain.dto.BlinkPerformanceCreditDTO;
 import com.wx.blink.backend.objectmapper.BlinkHonorConfigMapper;
 import com.wx.blink.backend.repository.BlinkHonorConfigReporitory;
 import com.wx.blink.backend.service.IBlinkHonorConfigService;
@@ -26,10 +25,14 @@ public class BlinkHonorConfigServiceImpl extends ServiceImpl<BlinkHonorConfigRep
     private BlinkHonorConfigMapper mapper;
 
 
+    /**
+     * 保存荣誉
+     *
+     * @param dto
+     * @return
+     */
     @Override
     public ResponseDTO<String> savePerformanceHonor(BlinkHonorConfigDTO dto) {
-        ResponseDTO<String> result = new ResponseDTO<>();
-
         // 验重
         Integer count = this.baseMapper.countByHonorName(dto.getHonorName(), dto.getId());
         if (count > 0) {
@@ -42,19 +45,28 @@ public class BlinkHonorConfigServiceImpl extends ServiceImpl<BlinkHonorConfigRep
             this.save(aDo);
         } else {
             BlinkEntityUtil.setUpdatedInfo(aDo);
-            this.save(aDo);
+            this.updateById(aDo);
         }
-        return result;
+        return ResponseDTO.ok();
     }
 
+    /**
+     * 删除荣誉
+     * @param id
+     */
     @Override
     public void deletePerformanceHonor(String id) {
-        BlinkHonorConfigDO aDo   = this.baseMapper.selectById(id);
+        BlinkHonorConfigDO aDo = this.baseMapper.selectById(id);
         aDo.setDeletedFlag(1);
         BlinkEntityUtil.setUpdatedInfo(aDo);
-        this.save(aDo);
+        this.updateById(aDo);
     }
 
+    /**
+     * 查询荣誉列表
+     * @param qry
+     * @return
+     */
     @Override
     public PageResult<BlinkHonorConfigDTO> queryPerformanceHonor(BlinkHonorConfigQry qry) {
         Page<?> page = BlinkPageUtil.convert2PageQuery(qry);

+ 16 - 3
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkPerformanceCreditServiceImpl.java

@@ -26,9 +26,13 @@ public class BlinkPerformanceCreditServiceImpl extends ServiceImpl<BlinkPerforma
     private BlinkPerformanceCreditMapper mapper;
 
 
+    /**
+     * 保存资质
+     * @param dto
+     * @return
+     */
     @Override
     public ResponseDTO<String> addPerformanceCredit(BlinkPerformanceCreditDTO dto) {
-        ResponseDTO<String> result = new ResponseDTO<>();
         // 验重
         Integer count = this.baseMapper.countPerformanceCreditByName(dto.getCreditName(), dto.getId());
         if (count > 0) {
@@ -43,11 +47,15 @@ public class BlinkPerformanceCreditServiceImpl extends ServiceImpl<BlinkPerforma
         } else {
             // 修改
             BlinkEntityUtil.setUpdatedInfo(aDo);
-            this.save(aDo);
+            this.updateById(aDo);
         }
-        return result;
+        return ResponseDTO.ok();
     }
 
+    /**
+     * 删除资质
+     * @param id
+     */
     @Override
     public void deletePerformanceCredit(String id) {
         BlinkPerformanceCreditDO aDo = this.baseMapper.selectById(id);
@@ -56,6 +64,11 @@ public class BlinkPerformanceCreditServiceImpl extends ServiceImpl<BlinkPerforma
         this.save(aDo);
     }
 
+    /**
+     * 查询资质列表
+     * @param qry
+     * @return
+     */
     @Override
     public PageResult<BlinkPerformanceCreditDTO> queryPerformanceCredit(BlinkPerformanceCreditQry qry) {
         Page<?> page = BlinkPageUtil.convert2PageQuery(qry);

+ 13 - 5
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkPerformanceProjectsServiceImpl.java

@@ -18,9 +18,13 @@ public class BlinkPerformanceProjectsServiceImpl extends ServiceImpl<BlinkPerfor
     @Resource
     private BlinkPerformanceProjectsMapper mapper;
 
+    /**
+     * 保存业绩项目
+     * @param dto
+     * @return
+     */
     @Override
     public ResponseDTO<String> createPerformanceProject(BlinkPerformanceProjectsDTO dto) {
-        ResponseDTO<String> result = new ResponseDTO<>();
         // 验重
         Integer count = this.baseMapper.countByPerformanceProjectId(dto.getProjectId(), dto.getId());
         if (count > 0) {
@@ -30,22 +34,26 @@ public class BlinkPerformanceProjectsServiceImpl extends ServiceImpl<BlinkPerfor
         if (StringUtil.isNotEmpty(dto.getId())) {
             // 保存
             BlinkEntityUtil.setUpdatedInfo(aDo);
-            this.save(aDo);
+            this.updateById(aDo);
         } else {
             // 新增
             BlinkEntityUtil.setCreateInfo(aDo);
             this.save(aDo);
         }
-
-        return result;
+        return ResponseDTO.ok();
     }
 
+    /**
+     * 删除业绩项目
+     * @param id
+     * @return
+     */
     @Override
     public ResponseDTO deletePerformanceProject(String id) {
         BlinkPerformanceProjectsDO data = this.baseMapper.selectById(id);
         BlinkEntityUtil.setUpdatedInfo(data);
         data.setDeletedFlag(1);
-        this.save(data);
+        this.updateById(data);
         return ResponseDTO.ok();
     }
 }

+ 24 - 6
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkPerformanceServiceImpl.java

@@ -29,9 +29,13 @@ public class BlinkPerformanceServiceImpl extends ServiceImpl<BlinkPerformanceRep
     @Resource
     private BlinkPerformanceMapper mapper;
 
+    /**
+     * 保存业绩
+     * @param dto
+     * @return
+     */
     @Override
-    public ResponseDTO<String> createPerformance(BlinkPerformanceDTO dto) {
-        ResponseDTO<String> result = new ResponseDTO<>();
+    public ResponseDTO<String> savePerformance(BlinkPerformanceDTO dto) {
         // 验重
         Integer count = this.baseMapper.countByPerformanceName(dto.getPerformanceName(), dto.getId());
         if (count > 0) {
@@ -40,27 +44,36 @@ public class BlinkPerformanceServiceImpl extends ServiceImpl<BlinkPerformanceRep
             BlinkPerformanceDO performanceDO = mapper.toDO(dto);
             if (StringUtil.isEmpty(dto.getId())) {
                 // 新增
-
                 BlinkEntityUtil.setCreateInfo(performanceDO);
                 this.save(performanceDO);
             } else {
                 // 修改
                 BlinkEntityUtil.setUpdatedInfo(performanceDO);
-                this.save(performanceDO);
+                this.updateById(performanceDO);
             }
         }
-        return result;
+        return ResponseDTO.ok();
     }
 
+    /**
+     * 删除业绩
+     * @param id
+     * @return
+     */
     @Override
     public ResponseDTO deletePerformance(String id) {
         BlinkPerformanceDO blinkPerformanceDO = this.baseMapper.selectById(id);
         blinkPerformanceDO.setDeletedFlag(1);
         BlinkEntityUtil.setUpdatedInfo(blinkPerformanceDO);
-        this.save(blinkPerformanceDO);
+        this.updateById(blinkPerformanceDO);
         return ResponseDTO.ok();
     }
 
+    /**
+     * 查询业绩列表
+     * @param qry
+     * @return
+     */
     @Override
     public PageResult<BlinkPerformanceDTO> queryPerformance(BlinkPerformanceQry qry) {
         Page<?> page = BlinkPageUtil.convert2PageQuery(qry);
@@ -70,6 +83,11 @@ public class BlinkPerformanceServiceImpl extends ServiceImpl<BlinkPerformanceRep
         return pageResult;
     }
 
+    /**
+     * 查询业绩项目
+     * @param qry
+     * @return
+     */
     @Override
     public PageResult<BlinkPerformanceProjectsDTO> queryPerformanceProject(BlinkPerformanceProjectsQry qry) {
         Page<?> page = BlinkPageUtil.convert2PageQuery(qry);

+ 94 - 109
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkProviderServiceImpl.java

@@ -1,35 +1,19 @@
 package com.wx.blink.backend.manager;
 
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.date.DateTime;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.wx.blink.backend.domain.dataobject.BlinkProjectDO;
+import com.cloud.sa.flow.commom.domain.virentity.StInstanceEvent;
 import com.wx.blink.backend.domain.dataobject.BlinkProviderDO;
-import com.wx.blink.backend.domain.dto.BlinkProviderProjectDTO;
-import com.wx.blink.backend.domain.dto.BlinkProviderStorageDTO;
-import com.wx.blink.backend.domain.dto.BlinkStorageMarginDTO;
-import com.wx.blink.backend.domain.qry.BlinkProviderQry;
 import com.wx.blink.backend.objectmapper.BlinkProviderMapper;
 import com.wx.blink.backend.repository.BlinkProviderRepository;
 import com.wx.blink.backend.service.IBlinkProviderService;
-import com.wx.blink.base.common.domain.PageResult;
 import com.wx.blink.base.common.domain.ResponseDTO;
-import com.wx.blink.base.common.util.BlinkEnumUtil;
-import com.wx.blink.base.common.util.BlinkPageUtil;
-import com.wx.blink.base.module.support.serialnumber.constant.SerialNumberIdEnum;
 import com.wx.blink.base.module.support.serialnumber.service.SerialNumberService;
-import com.wx.blink.common.dto.BlinkProviderDTO;
-import com.wx.blink.common.vo.BlinkProjectCombineTeamVO;
-import com.wx.blink.common.vo.BlinkProjectVO;
-import com.wx.blink.common.vo.BlinkProviderCreateVO;
+import lombok.SneakyThrows;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.text.DecimalFormat;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 
 @Service
 public class BlinkProviderServiceImpl extends ServiceImpl<BlinkProviderRepository, BlinkProviderDO> implements IBlinkProviderService {
@@ -41,109 +25,110 @@ public class BlinkProviderServiceImpl extends ServiceImpl<BlinkProviderRepositor
     @Resource
     private BlinkProviderMapper mapper;
 
+
     @Override
-    public ResponseDTO<String> supportsProviderCreate(BlinkProviderCreateVO vo) {
-        //如果是个人注册,使用联系人当做服务商名称
-        if (vo.getProviderType().equals("01")) {
-            vo.setProviderName(vo.getContactPeople());
-            // 验证服务商名称+手机号是否重复
-            BlinkProviderDO providerDO = repository.queryByProviderNameAndPhone(vo.getProviderName(), vo.getContactPhone(), null, Boolean.FALSE);
-            if (Objects.nonNull(providerDO)) {
-                return ResponseDTO.userErrorParam("服务商注册校验失败!请检查");
-            }
-        } else {
-            // 验证服务商名称是否重复
-            BlinkProviderDO providerDO = repository.queryByProviderName(vo.getProviderName(), null, Boolean.FALSE);
-            if (Objects.nonNull(providerDO)) {
-                return ResponseDTO.userErrorParam("服务商名称重复!请检查");
-            }
+    public ResponseDTO<String> registerProvider(StInstanceEvent event) {
+
+
+        BlinkProviderDO provider = new BlinkProviderDO();
+        String providerType = event.getMainFormData().getOrDefault("provider_type", "01").toString();
+        provider.setProviderType(providerType);
+        String providerName = event.getMainFormData().getOrDefault("provider_name", "").toString();
+        String contactPeople = event.getMainFormData().getOrDefault("contact_people", "").toString();
+        if (providerType.equals("01")) {
+            provider.setProviderName(contactPeople);
         }
-        BlinkProviderDO entity = new BlinkProviderDO();
-        mapper.ProviderCreateVoToDomain(vo, entity);
-        // 生成服务商账号
-        SerialNumberIdEnum serialNumberIdEnum = BlinkEnumUtil.getEnumByValue(4, SerialNumberIdEnum.class);
-        String serialNumber = serialNumberService.generate(serialNumberIdEnum);
-//        // 设置服务商账号
-        entity.setProviderCode("KH" + serialNumber);
-        entity.setCreateUserId("admin");
-        entity.setCreateTime(DateTime.now());
-        this.save(entity);
+        // 验重
+        Integer count = repository.countProviderByName(providerName);
+        if (count > 0) {
+            return ResponseDTO.userErrorParam(providerName + "已经存在,请检查!");
+        }
+        provider.setProviderName(providerName);
+        provider.setRegionType(event.getMainFormData().getOrDefault("region_type", "").toString());
+        provider.setCountryRegion(event.getMainFormData().getOrDefault("country_region", "").toString());
+        provider.setProvinceCityDistrict(event.getMainFormData().getOrDefault("province_city_district", "").toString());
+        provider.setAddress(event.getMainFormData().getOrDefault("address", "").toString());
+        provider.setSocialCode(event.getMainFormData().getOrDefault("social_code", "").toString());
+        provider.setLegalPerson(event.getMainFormData().getOrDefault("legal_person", "").toString());
+        provider.setTeamNumber(Long.valueOf(event.getMainFormData().getOrDefault("team_number", "0").toString()));
+        provider.setUrgentAudit(Integer.valueOf(event.getMainFormData().getOrDefault("urgent_audit", "0").toString()));
+        provider.setCompanyNature(event.getMainFormData().getOrDefault("company_nature", "").toString());
+        provider.setHandState(Integer.valueOf(event.getMainFormData().getOrDefault("hand_state", "0").toString()));
+        provider.setCompanyDescription(event.getMainFormData().getOrDefault("company_description", "").toString());
+        provider.setState(0);
+        this.baseMapper.insert(provider);
         return ResponseDTO.ok();
     }
 
-    /**
-     * 获取服务商基本信息
-     *
-     * @param id
-     * @return
-     */
     @Override
-    public ResponseDTO<BlinkProviderDTO> supportsProviderQuery(String id) {
-        // 验证服务商名称是否重复
-        BlinkProviderDO providerDO = repository.queryByProviderName(null, id, Boolean.FALSE);
-        if (!Objects.nonNull(providerDO)) {
-            return ResponseDTO.userErrorParam("服务商不存在!请检查");
+    public ResponseDTO<String> updateAuditProvider(StInstanceEvent data) throws ParseException {
+        BlinkProviderDO aDo = this.baseMapper.selectById(data.getMainFormData().getOrDefault("provider_id", "").toString());
+        // todo 历史业绩插入子表
+        // todo 在手项目插入子表
+        aDo.setResourceSource(data.getMainFormData().getOrDefault("resource_source", "").toString());
+        aDo.setHasTeam(Integer.valueOf(data.getMainFormData().getOrDefault("has_team", "0").toString()));
+        aDo.setTeamSize(Long.valueOf(data.getMainFormData().getOrDefault("team_size", "0").toString()));
+        String reviewComments = data.getMainFormData().getOrDefault("review_comments", "0").toString();
+        if (reviewComments.equals("0")) {
+            aDo.setState(2);
+        } else {
+            aDo.setState(1);
         }
-        BlinkProviderDTO dto = new BlinkProviderDTO();
-        mapper.toBlinkProviderDTO(providerDO, dto);
-        return ResponseDTO.ok(dto);
-    }
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
 
-    @Override
-    public ResponseDTO<PageResult<BlinkProviderDTO>> supportsProviderQueryPage(BlinkProviderQry qry) {
-        Page<?> page = BlinkPageUtil.convert2PageQuery(qry);
-        List<BlinkProviderDTO> list = repository.supportsProviderQueryPage(page, qry);
-        PageResult<BlinkProviderDTO> pageResult = BlinkPageUtil.convert2PageResult(page, list);
-        return ResponseDTO.ok(pageResult);
+        aDo.setReviewerDate(formatter.parse(data.getMainFormData().getOrDefault("review_date", "").toString()));
+        aDo.setReviewer(data.getMainFormData().getOrDefault("reviewer", "").toString());
+        aDo.setExpectedInterviewDate(formatter.parse(data.getMainFormData().getOrDefault("expected_interview_date", "").toString()));
+        aDo.setExpectedInterviewLocation(data.getMainFormData().getOrDefault("expected_interview_location", "").toString());
+        aDo.setExpectedInterviewer(data.getMainFormData().getOrDefault("expected_interviewer", "").toString());
+        this.baseMapper.updateById(aDo);
+        return ResponseDTO.ok();
     }
 
+    @SneakyThrows
     @Override
-    public ResponseDTO<BlinkProviderDTO> supportsProviderSingleQuery(String id) {
-        //定义返回
-        BlinkProviderDTO providerVO = new BlinkProviderDTO();
-        BlinkProviderDO providerDO = this.getById(id);
-        if (Objects.nonNull(providerDO)) {
-            mapper.domainToProviderVO(providerDO, providerVO);
+    public ResponseDTO<String> updateInterviewProvider(StInstanceEvent data) {
+        String providerId = data.getMainFormData().getOrDefault("provider_id", "").toString();
+        BlinkProviderDO aDo = this.baseMapper.selectById(providerId);
+        String evaluationOpinion = data.getMainFormData().getOrDefault("evaluation_opinion", "0").toString();
+        if (evaluationOpinion.equals("1"))
+            aDo.setState(4);
+        if (evaluationOpinion.equals("0"))
+            aDo.setState(3);
+        if (evaluationOpinion.equals("2"))
+            aDo.setState(5);
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+        aDo.setEvaluationDate(formatter.parse(data.getMainFormData().getOrDefault("evaluation_date", "").toString()));
+        aDo.setProviderLevel(data.getMainFormData().getOrDefault("provider_level", "").toString());
+        aDo.setNeedsDepositAmount(Double.parseDouble(data.getMainFormData().getOrDefault("needs_to_deposit_security_deposit", "0").toString()));
+        aDo.setIsPaidDeposit(Integer.valueOf(data.getMainFormData().getOrDefault("has_security_deposit_been_paid", "0").toString()));
+        aDo.setDepositReipient(data.getMainFormData().getOrDefault("security_deposit_recipient", "").toString());
+        aDo.setDepositAccount(data.getMainFormData().getOrDefault("security_deposit_collection_account", "").toString());
+        if (evaluationOpinion.equals("2")) {
+            aDo.setExpectedReferralDate(formatter.parse(data.getMainFormData().getOrDefault("expected_referral_date", "").toString()));
+            aDo.setReferralCustomerName(data.getMainFormData().getOrDefault("referral_customer_name", "").toString());
+            aDo.setReferral(data.getMainFormData().getOrDefault("referral", "").toString());
+            aDo.setReferralPosition(data.getMainFormData().getOrDefault("referral_position", "").toString());
         }
-        return ResponseDTO.ok(providerVO);
-    }
-
-    /**
-     * 获取服务商入库审核信息
-     *
-     * @param providerId
-     * @return
-     */
-    @Override
-    public ResponseDTO<BlinkProviderStorageDTO> supportsProviderAuditQuery(String providerId) {
-        BlinkProviderStorageDTO storageDTO = new BlinkProviderStorageDTO();
-        List<BlinkProviderProjectDTO> providerProjectDTOS = new ArrayList<>();
-        providerProjectDTOS.add(new BlinkProviderProjectDTO());
-        storageDTO.setHistoryProjectList(providerProjectDTOS);
-        storageDTO.setCurrentProjectList(providerProjectDTOS);
-        return ResponseDTO.ok(storageDTO);
+        this.baseMapper.updateById(aDo);
+        return ResponseDTO.ok();
     }
 
+    @SneakyThrows
     @Override
-    public ResponseDTO<PageResult<BlinkStorageMarginDTO>> supportsStorageMarginQueryPage(BlinkProviderQry qry) {
-        BlinkStorageMarginDTO marginDTO = new BlinkStorageMarginDTO();
-        marginDTO.setProviderId("1");
-        marginDTO.setMarginName("入库保证金");
-        marginDTO.setSerialNumber("202506181740");
-        DecimalFormat df = new DecimalFormat("#,##0.00");
-        String result = df.format(5000.00);
-        marginDTO.setMarginAmount(result);
-        marginDTO.setInitiatedTime("2025.06.30");
-        marginDTO.setBusinessCommissioner("张经理");
-        marginDTO.setCreateTime(new DateTime("2025-06-13 18:34:49.986"));
-        List<BlinkStorageMarginDTO> marginDTOS = new ArrayList<>();
-        marginDTOS.add(marginDTO);
-        marginDTOS.add(marginDTO);
-        marginDTOS.add(marginDTO);
-        marginDTOS.add(marginDTO);
-        marginDTOS.add(marginDTO);
-        Page<?> page = BlinkPageUtil.convert2PageQuery(qry);
-        PageResult<BlinkStorageMarginDTO> pageResult = BlinkPageUtil.convert2PageResult(page, marginDTOS);
-        return ResponseDTO.ok(pageResult);
+    public ResponseDTO<String> updateReferrlaProvider(StInstanceEvent data) {
+        String providerId = data.getMainFormData().getOrDefault("provider_id", "").toString();
+        BlinkProviderDO aDo = this.baseMapper.selectById(providerId);
+        String evaluationOpinion = data.getMainFormData().getOrDefault("recommendation_evaluation_opinion", "").toString();
+        if (evaluationOpinion.equals("0"))
+            aDo.setState(6);
+        if (evaluationOpinion.equals("1"))
+            aDo.setState(7);
+        aDo.setProviderLevel(data.getMainFormData().getOrDefault("provider_level", "").toString());
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+        aDo.setReferralDate(formatter.parse(data.getMainFormData().getOrDefault("referral_date", "").toString()));
+        aDo.setBelongsToMarketingManager(data.getMainFormData().getOrDefault("belongs_to_marketing_manager", "").toString());
+        this.updateById(aDo);
+        return ResponseDTO.ok();
     }
 }

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

@@ -2,6 +2,7 @@ package com.wx.blink.backend.objectmapper;
 
 import com.wx.blink.backend.domain.dataobject.BlinkBizFileDO;
 import com.wx.blink.backend.domain.dataobject.BlinkCustomerDO;
+import com.wx.blink.backend.domain.dto.lBlinkCustomerRegisterVO;
 import com.wx.blink.base.common.util.BlinkStringUtil;
 import com.wx.blink.common.vo.BlinkBizFileCreateVO;
 import com.wx.blink.common.vo.BlinkCustomerCreateVO;
@@ -50,4 +51,12 @@ public interface BlinkCustomerMapper {
      * @return
      */
     BlinkCustomerDO customerUpdateVOtoDomain(BlinkCustomerUpdateVO dto);
+
+    /**
+     * 客户流程数据registerVO转do
+     *
+     * @param registerVO
+     * @return
+     */
+    BlinkCustomerDO customerCreateVOtoDomain(lBlinkCustomerRegisterVO registerVO);
 }

+ 18 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/objectmapper/BlinkCustomerSeniorMapper.java

@@ -0,0 +1,18 @@
+package com.wx.blink.backend.objectmapper;
+
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerSeniorDO;
+import com.wx.blink.backend.domain.dto.MBlinkCustomerSeniorVO;
+import com.wx.blink.base.common.util.BlinkStringUtil;
+import org.mapstruct.Mapper;
+
+@Mapper(componentModel = "spring", imports = {BlinkStringUtil.class})
+public interface BlinkCustomerSeniorMapper {
+
+    /**
+     * 客户主数据创建VO转do
+     *
+     * @param vo
+     * @return
+     */
+    BlinkCustomerSeniorDO customerSeniorVOtoDomain(MBlinkCustomerSeniorVO vo);
+}

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

@@ -60,4 +60,29 @@ public interface BlinkCustomerRepository extends BaseMapper<BlinkCustomerDO> {
      * @return
      */
     List<BlinkBizFileVO> bizFileQueryPage(Page<?> page, @Param("query") BlinkBizFileQry qry);
+
+    /**
+     * 验证是否发起了客户登记流程
+     *
+     * @param sourceFlowId
+     * @return
+     */
+    BlinkCustomerDO queryByCustomerFlowId(@Param("sourceFlowId") String sourceFlowId);
+
+    /**
+     * 服务商客户查询列表
+     *
+     * @param page
+     * @param qry
+     * @return
+     */
+    List<BlinkCustomerVO> providerCustomerQueryPage(Page<?> page, @Param("query") BlinkCustomerQry qry);
+
+    /**
+     * 客户加入黑名单
+     *
+     * @param id
+     * @return
+     */
+    void customerToBlacklist(@Param("id") String id);
 }

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

@@ -0,0 +1,46 @@
+package com.wx.blink.backend.repository;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.wx.blink.backend.domain.dataobject.BlinkBizFileDO;
+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.qry.BlinkBizFileQry;
+import com.wx.blink.common.qry.BlinkCustomerQry;
+import com.wx.blink.common.vo.BlinkBizFileVO;
+import com.wx.blink.common.vo.BlinkCustomerVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Mapper
+@Component
+public interface BlinkCustomerSeniorRepository extends BaseMapper<BlinkCustomerSeniorDO> {
+
+    /**
+     * 客户归属上级查询列表
+     *
+     * @param pid
+     * @return
+     */
+    List<BlinkCustomerSeniorDO> customerSeniorQueryByPid(@Param("pid") String pid);
+
+    /**
+     * 删除相同Pid的所有归属上级
+     *
+     * @param pid
+     * @return
+     */
+    void deleteByPid(@Param("pid") String pid);
+    /**
+     * 流程归属上级查询列表
+     *
+     * @param pid
+     * @return
+     */
+    List<MBlinkCustomerSeniorVO> flowCustomerSeniorQueryByPid(@Param("pid")String pid);
+
+}

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

@@ -14,7 +14,19 @@ import java.util.List;
 public interface BlinkPerformanceCreditReporitory extends BaseMapper<BlinkPerformanceCreditDO> {
 
 
+    /**
+     * 查重
+     * @param creditName
+     * @param id
+     * @return
+     */
     Integer countPerformanceCreditByName(@Param("creditName") String creditName, @Param("id") String id);
 
+    /**
+     * 查询资质列表
+     * @param page
+     * @param qry
+     * @return
+     */
     List<BlinkPerformanceCreditDTO> queryPerformanceCredit(Page<?> page, @Param("qry")BlinkPerformanceCreditQry qry);
 }

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

@@ -9,5 +9,11 @@ import org.apache.ibatis.annotations.Param;
 public interface BlinkPerformanceProjectsReporitory extends BaseMapper<BlinkPerformanceProjectsDO> {
 
 
+    /**
+     * 查重
+     * @param projectId
+     * @param id
+     * @return
+     */
     Integer countByPerformanceProjectId(@Param("projectId") String projectId, @Param("id") String id);
 }

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

@@ -16,9 +16,27 @@ import java.util.List;
 public interface BlinkPerformanceReporitory extends BaseMapper<BlinkPerformanceDO> {
 
 
+    /**
+     * 验重
+     * @param performanceName
+     * @param id
+     * @return
+     */
     Integer countByPerformanceName(@Param("performanceName") String performanceName, @Param("id") String id);
 
+    /**
+     * 查询业绩分类
+     * @param page
+     * @param qry
+     * @return
+     */
     List<BlinkPerformanceDTO> queryPerformance(Page<?> page, @Param("qry") BlinkPerformanceQry qry);
 
+    /**
+     * 查询业绩项目
+     * @param page
+     * @param qry
+     * @return
+     */
     List<BlinkPerformanceProjectsDTO> queryPerformanceProject(Page<?> page, @Param("qry") BlinkPerformanceProjectsQry qry);
 }

+ 1 - 30
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkProviderRepository.java

@@ -15,34 +15,5 @@ import java.util.List;
 @Component
 public interface BlinkProviderRepository extends BaseMapper<BlinkProviderDO> {
 
-    /**
-     * 验证服务商是否重复
-     *
-     * @param providerName
-     * @param deletedFlag
-     * @param id
-     * @return
-     */
-    BlinkProviderDO queryByProviderName(@Param("providerName") String providerName, @Param("id") String id, @Param("deletedFlag") Boolean deletedFlag);
-
-    /**
-     * 服务商查询列表
-     *
-     * @param page
-     * @param qry
-     * @return
-     */
-    List<BlinkProviderDTO> supportsProviderQueryPage(Page<?> page, @Param("query") BlinkProviderQry qry);
-
-
-    /**
-     * 验证服务商名称+手机号是否重复
-     *
-     * @param providerName
-     * @param contactPhone
-     * @param id
-     * @param deletedFlag
-     * @return
-     */
-    BlinkProviderDO queryByProviderNameAndPhone(@Param("providerName") String providerName, @Param("contactPhone") String contactPhone, @Param("id") Long id, @Param("deletedFlag") Boolean deletedFlag);
+    Integer countProviderByName(String providerName);
 }

+ 5 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkCompanyIntroductionService.java

@@ -5,5 +5,10 @@ import com.wx.blink.backend.domain.dto.BlinkPerformanceDTO;
 import com.wx.blink.base.common.domain.ResponseDTO;
 
 public interface IBlinkCompanyIntroductionService {
+    /**
+     * 保存公司介绍
+     * @param dto
+     * @return
+     */
     ResponseDTO<String> saveCompanyIntroduction(BlinkCompanyIntroductionDTO dto);
 }

+ 46 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkCustomerSeniorService.java

@@ -0,0 +1,46 @@
+package com.wx.blink.backend.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerDO;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerSeniorDO;
+import com.wx.blink.backend.domain.dto.BlinkCustomerHeaderVO;
+import com.wx.blink.backend.domain.dto.MBlinkCustomerSeniorVO;
+import com.wx.blink.backend.domain.qry.BlinkBizFileQry;
+import com.wx.blink.base.common.domain.PageResult;
+import com.wx.blink.base.common.domain.ResponseDTO;
+import com.wx.blink.common.qry.BlinkCustomerQry;
+import com.wx.blink.common.vo.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+
+public interface IBlinkCustomerSeniorService extends IService<BlinkCustomerSeniorDO> {
+
+    /**
+     * 批量新增归属上级并清空原来的数据
+     *
+     * @param dos
+     * @return
+     */
+    void batchAddWithEmptyByPid(String pid,List<BlinkCustomerSeniorDO> dos);
+
+
+    /**
+     * 归属上级查询列表
+     *
+     * @param pid
+     * @return
+     */
+    List<BlinkCustomerSeniorDO> customerSeniorQueryByPid(String pid);
+
+    /**
+     * 流程归属上级查询列表
+     *
+     * @param pid
+     * @return
+     */
+    List<MBlinkCustomerSeniorVO> flowCustomerSeniorQueryByPid(String pid);
+
+
+}

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

@@ -2,14 +2,18 @@ package com.wx.blink.backend.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.wx.blink.backend.domain.dataobject.BlinkCustomerDO;
+import com.wx.blink.backend.domain.dataobject.BlinkCustomerSeniorDO;
 import com.wx.blink.backend.domain.dto.BlinkCustomerHeaderVO;
 import com.wx.blink.backend.domain.qry.BlinkBizFileQry;
 import com.wx.blink.base.common.domain.PageResult;
 import com.wx.blink.base.common.domain.ResponseDTO;
 import com.wx.blink.common.qry.BlinkCustomerQry;
 import com.wx.blink.common.vo.*;
+import org.apache.ibatis.annotations.Param;
 
 import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author gufj
@@ -96,4 +100,55 @@ public interface IBlinkCustomerService extends IService<BlinkCustomerDO> {
      * @return
      */
     BlinkCustomerStatisticsVO supportsStatisticsInfo(BlinkCustomerQry qry);
+
+    /**
+     * 新增客户
+     *
+     * @param customerDO
+     * @return
+     */
+    ResponseDTO<String> supportsCustomerCreate(BlinkCustomerDO customerDO, List<BlinkCustomerSeniorDO> seniorDos);/**
+     * 编辑更新客户
+     *
+     * @param customerDO
+     * @return
+     */
+    ResponseDTO<String> supportsCustomerUpdate(BlinkCustomerDO customerDO, List<BlinkCustomerSeniorDO> seniorDos,boolean isHaveDetail);
+
+    /**
+     * 验证是否发起了客户登记流程
+     *
+     * @param sourceFlowId
+     * @return
+     */
+    BlinkCustomerDO queryByCustomerFlowId(String sourceFlowId);
+    /**
+     * 服务商客户查询列表
+     *
+     * @param qry
+     * @return
+     */
+    PageResult<BlinkCustomerVO> providerCustomerQueryPage(BlinkCustomerQry qry);
+    /**
+     * 服务商客户列表表头统计数据接口
+     *
+     * @param qry
+     * @return
+     */
+    BlinkCustomerStatisticsVO providerCustomerStatisticsInfo(BlinkCustomerQry qry);
+    /**
+     * 客户加入黑名单
+     *
+     * @param id
+     * @return
+     */
+    void customerToBlacklist(String id);
+
+    /**
+     * 客户黑名单表单获取明细信息(包含归属上级、推进中项目、在建项目)
+     *
+     * @param id
+     * @return
+     */
+    Map<String,Object> supportsCustomerBlacklistDetails(String id);
 }

+ 14 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkHonorConfigService.java

@@ -7,9 +7,23 @@ import com.wx.blink.base.common.domain.ResponseDTO;
 import com.wx.blink.common.qry.BlinkHonorConfigQry;
 
 public interface IBlinkHonorConfigService {
+    /**
+     * 保存荣誉
+     * @param dto
+     * @return
+     */
     ResponseDTO<String> savePerformanceHonor(BlinkHonorConfigDTO dto);
 
+    /**
+     * 删除荣誉
+     * @param id
+     */
     void deletePerformanceHonor(String id);
 
+    /**
+     * 查询荣誉列表
+     * @param qry
+     * @return
+     */
     PageResult<BlinkHonorConfigDTO> queryPerformanceHonor(BlinkHonorConfigQry qry);
 }

+ 14 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkPerformanceCreditService.java

@@ -7,9 +7,23 @@ import com.wx.blink.base.common.domain.ResponseDTO;
 import com.wx.blink.common.qry.BlinkPerformanceCreditQry;
 
 public interface IBlinkPerformanceCreditService {
+    /**
+     * 保存资质
+     * @param dto
+     * @return
+     */
     ResponseDTO<String> addPerformanceCredit(BlinkPerformanceCreditDTO dto);
 
+    /**
+     * 删除资质
+     * @param id
+     */
     void deletePerformanceCredit(String id);
 
+    /**
+     * 查询资质列表
+     * @param qry
+     * @return
+     */
     PageResult<BlinkPerformanceCreditDTO> queryPerformanceCredit(BlinkPerformanceCreditQry qry);
 }

+ 10 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkPerformanceProjectsService.java

@@ -4,7 +4,17 @@ import com.wx.blink.backend.domain.dto.BlinkPerformanceProjectsDTO;
 import com.wx.blink.base.common.domain.ResponseDTO;
 
 public interface IBlinkPerformanceProjectsService {
+    /**
+     * 创建业绩项目
+     * @param dto
+     * @return
+     */
     ResponseDTO<String> createPerformanceProject(BlinkPerformanceProjectsDTO dto);
 
+    /**
+     * 删除业绩项目
+     * @param id
+     * @return
+     */
     ResponseDTO deletePerformanceProject(String id);
 }

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

@@ -11,12 +11,32 @@ import com.wx.blink.common.qry.BlinkPerformanceProjectsQry;
 import com.wx.blink.common.qry.BlinkPerformanceQry;
 
 public interface IBlinkPerformanceService  {
-    ResponseDTO<String> createPerformance(BlinkPerformanceDTO dto);
+    /**
+     * 保存业绩分类
+     * @param dto
+     * @return
+     */
+    ResponseDTO<String> savePerformance(BlinkPerformanceDTO dto);
 
+    /**
+     * 删除业绩分类
+     * @param id
+     * @return
+     */
     ResponseDTO deletePerformance(String id);
 
+    /**
+     * 查询业绩二维表
+     * @param qry
+     * @return
+     */
     PageResult<BlinkPerformanceDTO> queryPerformance(BlinkPerformanceQry qry);
 
+    /**
+     * 查询业绩项目
+     * @param qry
+     * @return
+     */
     PageResult<BlinkPerformanceProjectsDTO> queryPerformanceProject(BlinkPerformanceProjectsQry qry);
 
 }

+ 14 - 32
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkProviderService.java

@@ -1,5 +1,6 @@
 package com.wx.blink.backend.service;
 
+import com.cloud.sa.flow.commom.domain.virentity.StInstanceEvent;
 import com.wx.blink.backend.domain.dto.BlinkProviderStorageDTO;
 import com.wx.blink.backend.domain.dto.BlinkStorageMarginDTO;
 import com.wx.blink.backend.domain.qry.BlinkProviderQry;
@@ -8,56 +9,37 @@ import com.wx.blink.base.common.domain.ResponseDTO;
 import com.wx.blink.common.dto.BlinkProviderDTO;
 import com.wx.blink.common.vo.BlinkProviderCreateVO;
 
+import java.text.ParseException;
 import java.util.List;
 
 public interface IBlinkProviderService {
 
-    /**
-     * 服务商创建
-     *
-     * @param vo
-     * @return
-     */
-    ResponseDTO<String> supportsProviderCreate(BlinkProviderCreateVO vo);
-
-    /**
-     * 查询服务商列表
-     *
-     * @param qry
-     * @return
-     */
-    ResponseDTO<PageResult<BlinkProviderDTO>> supportsProviderQueryPage(BlinkProviderQry qry);
 
     /**
-     * 获取服务商基本信息
-     *
-     * @param id
+     * 服务商注册业务动作
+     * @param event
      * @return
      */
-    ResponseDTO<BlinkProviderDTO> supportsProviderQuery(String id);
+    ResponseDTO<String> registerProvider(StInstanceEvent event);
 
     /**
-     * 获取服务商入库审核信息
-     *
-     * @param providerId
+     * 服务商审核修改服务商信息
+     * @param data
      * @return
      */
-    ResponseDTO<BlinkProviderStorageDTO> supportsProviderAuditQuery(String providerId);
+    ResponseDTO<String> updateAuditProvider(StInstanceEvent data) throws ParseException;
 
     /**
-     * 获取服务商入库保证金信息
-     *
-     * @param qry
+     * 修改面试服务商信息
+     * @param data
      * @return
      */
-    ResponseDTO<PageResult<BlinkStorageMarginDTO>> supportsStorageMarginQueryPage(BlinkProviderQry qry);
-
+    ResponseDTO<String> updateInterviewProvider(StInstanceEvent data);
 
     /**
-     * 获取服务商信息
-     *
-     * @param id
+     * 修改引荐服务商信息
+     * @param data
      * @return
      */
-    ResponseDTO<BlinkProviderDTO> supportsProviderSingleQuery(String id);
+    ResponseDTO<String> updateReferrlaProvider(StInstanceEvent data);
 }

+ 14 - 0
bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkSocialWelfareService.java

@@ -7,9 +7,23 @@ import com.wx.blink.base.common.domain.ResponseDTO;
 import com.wx.blink.common.qry.BlinkSocialWelfareQry;
 
 public interface IBlinkSocialWelfareService {
+    /**
+     * 保存公益信息
+     * @param dto
+     * @return
+     */
     ResponseDTO<String> savePerformanceSocialWelfare(BlinkSocialWelfareDTO dto);
 
+    /**
+     * 删除公益信息
+     * @param id
+     */
     void deletePerformanceSocialWelfare(String id);
 
+    /**
+     * 查询公益信息列表
+     * @param qry
+     * @return
+     */
     PageResult<BlinkSocialWelfareDTO> queryPerformanceSocialWelfare(BlinkSocialWelfareQry qry);
 }

+ 26 - 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>
@@ -39,4 +39,29 @@
             and biz_module = #{bizModule}
         </if>
     </select>
+
+    <select id="queryByCustomerFlowId" resultType="com.wx.blink.backend.domain.dataobject.BlinkCustomerDO">
+        select *
+        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>
+    <update id="customerToBlacklist">
+        update blink_customer set is_black_list=1 where id = #{id}
+    </update>
 </mapper>

+ 18 - 0
bound-link-api/blink-backend/src/main/resources/mapper/BlinkCustomerSeniorRepositoryMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.wx.blink.backend.repository.BlinkCustomerSeniorRepository">
+    <select id="customerSeniorQueryByPid" resultType="com.wx.blink.backend.domain.dataobject.BlinkCustomerSeniorDO">
+        select * from blink_customer_senior
+        where pid = #{pid}
+        order by sort_index asc
+    </select>
+
+    <update id="deleteByPid">
+        delete from blink_customer_senior
+        where pid = #{pid}
+    </update>
+
+    <select id="flowCustomerSeniorQueryByPid" resultType="com.wx.blink.backend.domain.dto.MBlinkCustomerSeniorVO">
+        select * from m_blink_customer_senior where flow_parent_id=#{pid}
+    </select>
+</mapper>

+ 7 - 0
bound-link-api/blink-backend/src/main/resources/mapper/BlinkProviderRepositoryMapper.xml

@@ -68,4 +68,11 @@
             AND id = #{id}
         </if>
     </select>
+
+    <select id="countProviderByName" resultType="java.lang.Integer">
+        select count(1)
+        from blink_provider
+        where deleted_flag = 0
+          and provider_name = #{providerName}
+    </select>
 </mapper>

+ 38 - 0
bound-link-api/blink-backend/src/main/resources/statemachine-config.yaml

@@ -0,0 +1,38 @@
+#服务商状态机配置
+provider:
+#  初始化状态到审核通过状态
+  - from: INIT
+    event: AUDIT
+    to: AUDITED
+    condition: bean:providerAuditCondition
+    action: bean:providerAuditAction
+#    初始化状态到审核不通过状态
+  - from: INIT
+    to: UNAUDITED
+    event: AUDIT
+    condition: bean:providerAuditCondition
+    action: bean:providerAuditAction
+#    审核通过状态到面试通过状态
+  - from: AUDITED
+    to: INTERVIEWED
+    event: INTERVIEW
+    condition: bean:providerInterviewCondition
+    action: bean:providerInterviewAction
+#    审核通过状态到面试不通过状态
+  - from: AUDITED
+    to: UNINTERVIEWED
+    event: INTERVIEW
+    condition: bean:providerInterviewCondition
+    action: bean:providerInterviewAction
+#    面试通过状态到引荐通过状态
+  - from: INTERVIEWED
+    to: REFERRALED
+    event: REFERRAL
+    condition: bean:providerReferralCondition
+    action: bean:providerReferralAction
+#    面试通过状态到引荐不通过状态
+  - from: INTERVIEWED
+    to: UNREFERRALED
+    event: REFERRAL
+    condition: bean:providerReferralCondition
+    action: bean:providerReferralAction

+ 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;
 
 }

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

@@ -5,6 +5,9 @@ import lombok.Data;
 
 @Data
 public class BlinkPerformanceCreditQry extends PageParam {
+    /**
+     * 资质名称
+     */
     private String creditName;
 
 }

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

@@ -5,6 +5,9 @@ import lombok.Data;
 
 @Data
 public class BlinkPerformanceProjectsQry extends PageParam {
+    /**
+     * 项目名称
+     */
     private String projectName;
     private String performanceId;
 }

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

@@ -5,6 +5,12 @@ import lombok.Data;
 
 @Data
 public class BlinkPerformanceQry extends PageParam {
+    /**
+     * 名称
+     */
     private String performanceName;
+    /**
+     * 状态
+     */
     private String state;
 }

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

@@ -5,6 +5,12 @@ import lombok.Data;
 
 @Data
 public class BlinkSocialWelfareQry extends PageParam {
+    /**
+     * 状态
+     */
     private String state;
+    /**
+     * 公益名称
+     */
     private String welfareName;
 }

+ 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;
+
+
 }

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

@@ -242,7 +242,7 @@ public class BlinkCustomerVO extends BaseEntity {
     /**
      * 客户类型
      */
-    @DataAdaptorMapping(type = "dict", value = "BLINK_CUSTOMER_TYPE")
+    //@DataAdaptorMapping(type = "dict", value = "BLINK_CUSTOMER_TYPE") 由于是多个值导致无法正确取数
     private String customerType;
 
     /**
@@ -286,5 +286,27 @@ public class BlinkCustomerVO extends BaseEntity {
      * 拜访次数
      */
     private Integer visitCount;
+    /**
+     * 审批状态
+     */
+    @DataAdaptorMapping(type = "dict", value = "BLINK_CUSTOMER_AUDIT_STATUS")
+    private String auditStatus;
+
+    /**
+     * 是否黑名单
+     */
+    private Integer is_black_list;
+
+
+    /**
+     * 服务商id
+     */
+    private String providerName;
+
+
+    /**
+     * 集团公司
+     */
+    private String groupCustomerName;
 
 }