فهرست منبع

Merge remote-tracking branch 'origin/master'

WIN10模板\Admin 3 ماه پیش
والد
کامیت
f0641b01fa
16فایلهای تغییر یافته به همراه599 افزوده شده و 0 حذف شده
  1. 5 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkCustomerDO.java
  2. 39 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dataobject/BlinkCustomerSeniorDO.java
  3. 32 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/MBlinkCustomerSeniorVO.java
  4. 85 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/domain/dto/lBlinkCustomerRegisterVO.java
  5. 8 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/factory/CustomizeProcessFactory.java
  6. 137 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/handler/CustomerRegisterProcessSubmitEventHandler.java
  7. 68 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkCustomerSeniorServiceImpl.java
  8. 49 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/manager/BlinkCustomerServiceImpl.java
  9. 9 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/objectmapper/BlinkCustomerMapper.java
  10. 18 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/objectmapper/BlinkCustomerSeniorMapper.java
  11. 8 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkCustomerRepository.java
  12. 46 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/repository/BlinkCustomerSeniorRepository.java
  13. 46 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkCustomerSeniorService.java
  14. 25 0
      bound-link-api/blink-backend/src/main/java/com/wx/blink/backend/service/IBlinkCustomerService.java
  15. 6 0
      bound-link-api/blink-backend/src/main/resources/mapper/BlinkCustomerRepositoryMapper.xml
  16. 18 0
      bound-link-api/blink-backend/src/main/resources/mapper/BlinkCustomerSeniorRepositoryMapper.xml

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

@@ -259,4 +259,9 @@ public class BlinkCustomerDO extends BaseEntity {
      */
     private String auditStatus;
 
+    /**
+     * 流程来源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;
+
+}

+ 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 flowParent_id;
+    @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 unitLegal_person;
+    @Schema(description = "股份占比") @TableField("shareholding_ratio") private String shareholdingRatio;
+    @Schema(description = "详细地址") @TableField("unit_address") private String unitAddress;
+    @Schema(description = "企业权责说明") @TableField("authority_description") private String authorityDescription;
+
+}

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

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

@@ -1,5 +1,7 @@
 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.*;
 import com.wx.blink.base.common.code.SystemErrorCode;
 import com.wx.blink.base.common.domain.ResponseDTO;
@@ -29,6 +31,8 @@ public class CustomizeProcessFactory {
 
         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>() {{
@@ -39,9 +43,13 @@ public class CustomizeProcessFactory {
             put("EXPENSE_STATEMENT", new ExpenseStatementProcessEventHandler());
             //借款申请流程
             put("LOAN_APPLY", new LoanApplyProcessEventHandler());
+            //客户登记流程
+            put("blink_customer_register", new CustomerRegisterProcessSubmitEventHandler());
         }});
 
         processorMap.put(5, new HashMap<String, CustomizeProcessEventHandler>() {{
+            //客户登记流程
+            put("blink_customer_register", new CustomerRegisterProcessSubmitEventHandler());
         }});
     }
 

+ 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 registerDo = JSONObject.parseObject(event.getMainFormData().toJSONString(), lBlinkCustomerRegisterVO.class);
+        //获取表单子表数据
+        String flowId ="";
+        if(registerDo.getFlowId()!=null)flowId=registerDo.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));
+            }
+        }
+        //生成DO
+        BlinkCustomerDO customerDO = customerMapper.customerCreateVOtoDomain(registerDo);
+        customerDO.setSourceFlowId(registerDo.getFlowId());
+        //处理省市区
+        Map<String, String> customerSsq = getProvinceCityDistrict(registerDo.getCustomerSsq());
+        customerDO.setProvince(customerSsq.get("Province"));
+        customerDO.setCity(customerSsq.get("City"));
+        customerDO.setDistrict(customerSsq.get("District"));
+        Map<String, String> workSsq = getProvinceCityDistrict(registerDo.getWorkSsq());
+        customerDO.setWorkProvince(workSsq.get("Province"));
+        customerDO.setWorkCity(workSsq.get("City"));
+        customerDO.setWorkDistrict(workSsq.get("District"));
+
+        //运行中状态调用时,为初步写入客户库
+        //客户状态:01-审核中,02-有效客户,03-无效客户
+        if (state == 2) {
+            //流程开始时,状态为审核中
+            customerDO.setAuditStatus("01");
+        }
+        if (state == 4) {
+            //流程结束时,状态为有效
+            customerDO.setAuditStatus("02");
+        }
+        if (state == 5) {
+            //取消时,状态为失效
+            customerDO.setAuditStatus("03");
+        }
+        if (registerDo.getIsProviderSend() != null && registerDo.getIsProviderSend() == 1) {
+            //数据来源为服务商列表发起的流程时,会同步获取到客户id
+            if (registerDo.getProviderSendCusid() == null) {
+                return ResponseDTO.userErrorParam("未获取到对应客户");
+            }
+            customerDO.setId(registerDo.getProviderSendCusid());
+            if (registerDo.getInitialScreeningResult() != null && registerDo.getInitialScreeningResult().equals("02")) {
+                //初筛结果为不通过时,客户状态为失效
+                customerDO.setAuditStatus("03");
+            }
+            //如果是从服务商列表发起的,只进行更新操作
+            customerDO.setUpdateTime(registerDo.getUpDate());
+            customerDO.setUpdateUserId(registerDo.getUpdateBy());
+            return customerService.supportsCustomerUpdate(customerDO, seniorDOs);
+        } else {
+            //用flow_id查询对应的客户
+            BlinkCustomerDO validateCustomer = customerService.queryByCustomerFlowId(registerDo.getFlowId());
+            //判断是否已经写入一次了
+            if (!Objects.nonNull(validateCustomer) || validateCustomer.getId() == null) {
+                //第一次写入保存数据
+                customerDO.setCreateTime(registerDo.getCreateTime());
+                customerDO.setCreateUserId(registerDo.getCreateBy());
+                return customerService.supportsCustomerCreate(customerDO, seniorDOs);
+            } else {
+                //写入过则更新
+                customerDO.setId(validateCustomer.getId());
+                customerDO.setUpdateTime(registerDo.getUpDate());
+                customerDO.setUpdateUserId(registerDo.getUpdateBy());
+                return customerService.supportsCustomerUpdate(customerDO, seniorDOs);
+            }
+        }
+    }
+
+    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;
+    }
+}

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

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

@@ -4,10 +4,12 @@ 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.qry.BlinkBizFileQry;
 import com.wx.blink.backend.objectmapper.BlinkCustomerMapper;
 import com.wx.blink.backend.repository.BlinkCustomerRepository;
+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;
@@ -45,6 +47,8 @@ public class BlinkCustomerServiceImpl extends ServiceImpl<BlinkCustomerRepositor
     private DataTracerService dataTracerService;
     @Resource
     private DictCacheService dictCacheService;
+    @Resource
+    private IBlinkCustomerSeniorService seniorService;
 
     @Override
     public ResponseDTO<String> supportsCustomerCreate(BlinkCustomerCreateVO dto) {
@@ -153,4 +157,49 @@ public class BlinkCustomerServiceImpl extends ServiceImpl<BlinkCustomerRepositor
         statisticsVO.setCustomerValidQuantity(6);
         return statisticsVO;
     }
+
+    @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);
+        return ResponseDTO.ok();
+    }
+
+    @Override
+    public ResponseDTO<String> supportsCustomerUpdate(BlinkCustomerDO customerDO, List<BlinkCustomerSeniorDO> seniorDos) {
+        // 验证客户名称是否重复
+        BlinkCustomerDO validateCustomer = customerRepository.queryByCustomerName(customerDO.getCustomerName(), customerDO.getId(), Boolean.FALSE);
+        if (Objects.nonNull(validateCustomer)) {
+            return ResponseDTO.userErrorParam("客户名称重复!请检查");
+        }
+        //修改人赋值
+        //BlinkEntityUtil.setUpdatedInfo(customerDO);
+        //执行保存
+        this.updateById(customerDO);
+        //保存归属上级明细表
+        seniorService.batchAddWithEmptyByPid(customerDO.getId(),seniorDos);
+
+        //执行变更记录
+        //dataTracerService.insert(customerDO.getId(), DataTracerTypeEnum.CUSTOMER);
+        return ResponseDTO.ok();
+    }
+
+    @Override
+    public BlinkCustomerDO queryByCustomerFlowId(String sourceFlowId) {
+        return customerRepository.queryByCustomerFlowId(sourceFlowId);
+    }
 }

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

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

@@ -60,4 +60,12 @@ 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);
 }

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

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

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

@@ -2,14 +2,17 @@ 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;
 
 /**
  * @author gufj
@@ -96,4 +99,26 @@ 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);
+
+    /**
+     * 验证是否发起了客户登记流程
+     *
+     * @param sourceFlowId
+     * @return
+     */
+    BlinkCustomerDO queryByCustomerFlowId(String sourceFlowId);
 }

+ 6 - 0
bound-link-api/blink-backend/src/main/resources/mapper/BlinkCustomerRepositoryMapper.xml

@@ -39,4 +39,10 @@
             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>
 </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="supportsCustomerQueryPage" 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>