Explorar el Código

反向生成文件,链属功能

sqg hace 4 años
padre
commit
fa13569277
Se han modificado 21 ficheros con 1839 adiciones y 0 borrados
  1. 107 0
      sc-service/src/main/java/com/huyi/service/base/entity/SysCompanyRel.java
  2. 113 0
      sc-service/src/main/java/com/huyi/service/base/entity/SysCompanySpare.java
  3. 77 0
      sc-service/src/main/java/com/huyi/service/base/entity/SysUserCompanyRel.java
  4. 16 0
      sc-service/src/main/java/com/huyi/service/base/mapper/SysCompanyRelMapper.java
  5. 16 0
      sc-service/src/main/java/com/huyi/service/base/mapper/SysCompanySpareMapper.java
  6. 16 0
      sc-service/src/main/java/com/huyi/service/base/mapper/SysUserCompanyRelMapper.java
  7. 57 0
      sc-service/src/main/java/com/huyi/service/base/service/ISysCompanyRelService.java
  8. 57 0
      sc-service/src/main/java/com/huyi/service/base/service/ISysCompanySpareService.java
  9. 60 0
      sc-service/src/main/java/com/huyi/service/base/service/ISysUserCompanyRelService.java
  10. 61 0
      sc-service/src/main/java/com/huyi/service/base/service/impl/SysCompanyRelServiceImpl.java
  11. 61 0
      sc-service/src/main/java/com/huyi/service/base/service/impl/SysCompanySpareServiceImpl.java
  12. 64 0
      sc-service/src/main/java/com/huyi/service/base/service/impl/SysUserCompanyRelServiceImpl.java
  13. 490 0
      sc-service/src/main/java/com/huyi/service/rel/controller/CompanyRelImportController.java
  14. 432 0
      sc-service/src/main/java/com/huyi/service/rel/controller/OwnCompanyRelController.java
  15. 29 0
      sc-service/src/main/java/com/huyi/service/rel/mapper/OwnCompanyRelMapper.java
  16. 28 0
      sc-service/src/main/java/com/huyi/service/rel/service/IOwnCompanyRelService.java
  17. 38 0
      sc-service/src/main/java/com/huyi/service/rel/service/impl/OwnCompanyRelServiceImpl.java
  18. 22 0
      sc-service/src/main/resources/mapper/base/SysCompanyRelMapper.xml
  19. 23 0
      sc-service/src/main/resources/mapper/base/SysCompanySpareMapper.xml
  20. 17 0
      sc-service/src/main/resources/mapper/base/SysUserCompanyRelMapper.xml
  21. 55 0
      sc-service/src/main/resources/mapper/rel/OwnCompanyRelMapper.xml

+ 107 - 0
sc-service/src/main/java/com/huyi/service/base/entity/SysCompanyRel.java

@@ -0,0 +1,107 @@
+package com.huyi.service.base.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 企业链属关系表
+ * </p>
+ *
+ * @author songqg
+ * @since 2021-08-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("sys_company_rel")
+public class SysCompanyRel implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId("scr_id")
+    private String scrId;
+
+    /**
+     * 发起方
+     */
+    @TableField("scr_launch_company_id")
+    private String scrLaunchCompanyId;
+
+    /**
+     * 接收方
+     */
+    @TableField("scr_receive_company_id")
+    private String scrReceiveCompanyId;
+
+    /**
+     * 00:待链属, 01:正常, 02:拒绝链属
+     */
+    @TableField("scr_status")
+    private String scrStatus;
+
+    /**
+     * 链属关系(发起方) 00:供应商 01:核心企业
+     */
+    @TableField("scr_launch_type")
+    private String scrLaunchType;
+
+    /**
+     * 链属关系(接收方) 00:供应商 01:核心企业
+     */
+    @TableField("scr_receive_type")
+    private String scrReceiveType;
+
+    /**
+     * 联系人
+     */
+    @TableField("scr_contarct")
+    private String scrContarct;
+
+    /**
+     * 联系电话
+     */
+    @TableField("scr_contarct_phone")
+    private String scrContarctPhone;
+
+    /**
+     * 邮箱
+     */
+    @TableField("scr_contarct_email")
+    private String scrContarctEmail;
+
+    /**
+     * 创建者
+     */
+    @TableField("create_by")
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    @TableField("update_by")
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 113 - 0
sc-service/src/main/java/com/huyi/service/base/entity/SysCompanySpare.java

@@ -0,0 +1,113 @@
+package com.huyi.service.base.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 链属公司信息表
+ * </p>
+ *
+ * @author songqg
+ * @since 2021-08-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("sys_company_spare")
+public class SysCompanySpare implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId("scp_id")
+    private String scpId;
+
+    /**
+     * 录入企业
+     */
+    @TableField("scp_company_id")
+    private String scpCompanyId;
+
+    /**
+     * 企业名称
+     */
+    @TableField("scp_name")
+    private String scpName;
+
+    /**
+     * 统一社会信用代码
+     */
+    @TableField("scp_social_code")
+    private String scpSocialCode;
+
+    /**
+     * 联系人
+     */
+    @TableField("scp_contarct")
+    private String scpContarct;
+
+    /**
+     * 联系电话
+     */
+    @TableField("scp_contarct_phone")
+    private String scpContarctPhone;
+
+    /**
+     * 邮箱
+     */
+    @TableField("scp_contarct_email")
+    private String scpContarctEmail;
+
+    /**
+     * 企业类型 00:供应商,01:核心企业
+     */
+    @TableField("scp_type")
+    private String scpType;
+
+    /**
+     * 备注
+     */
+    @TableField("scp_remarks")
+    private String scpRemarks;
+
+    /**
+     * 状态 00:正常 01:已认证 99:删除
+     */
+    @TableField("scp_status")
+    private String scpStatus;
+
+    /**
+     * 创建人
+     */
+    @TableField("create_by")
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 修改人
+     */
+    @TableField("update_by")
+    private String updateBy;
+
+    /**
+     * 修改时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 77 - 0
sc-service/src/main/java/com/huyi/service/base/entity/SysUserCompanyRel.java

@@ -0,0 +1,77 @@
+package com.huyi.service.base.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 用户与企业关系表
+ * </p>
+ *
+ * @author songqg
+ * @since 2021-08-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("sys_user_company_rel")
+public class SysUserCompanyRel implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 用户ID
+     */
+    @TableId("sucr_user_id")
+    private Long sucrUserId;
+
+    /**
+     * 企业ID
+     */
+    @TableField("sucr_company_id")
+    private String sucrCompanyId;
+
+    /**
+     * 部门id
+     */
+    @TableField("sucr_dept_id")
+    private Long sucrDeptId;
+
+    /**
+     * 是否经办人 0:不是, 1:是
+     */
+    @TableField("sucr_handler")
+    private String sucrHandler;
+
+    /**
+     * 创建者
+     */
+    @TableField("create_by")
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+    @TableField("update_by")
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 16 - 0
sc-service/src/main/java/com/huyi/service/base/mapper/SysCompanyRelMapper.java

@@ -0,0 +1,16 @@
+package com.huyi.service.base.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huyi.service.base.entity.SysCompanyRel;
+
+/**
+ * <p>
+ * 企业链属关系表 Mapper 接口
+ * </p>
+ *
+ * @author songqg
+ * @since 2021-08-17
+ */
+public interface SysCompanyRelMapper extends BaseMapper<SysCompanyRel> {
+
+}

+ 16 - 0
sc-service/src/main/java/com/huyi/service/base/mapper/SysCompanySpareMapper.java

@@ -0,0 +1,16 @@
+package com.huyi.service.base.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huyi.service.base.entity.SysCompanySpare;
+
+/**
+ * <p>
+ * 链属公司信息表 Mapper 接口
+ * </p>
+ *
+ * @author songqg
+ * @since 2021-08-17
+ */
+public interface SysCompanySpareMapper extends BaseMapper<SysCompanySpare> {
+
+}

+ 16 - 0
sc-service/src/main/java/com/huyi/service/base/mapper/SysUserCompanyRelMapper.java

@@ -0,0 +1,16 @@
+package com.huyi.service.base.mapper;
+
+import com.huyi.service.base.entity.SysUserCompanyRel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 用户与企业关系表 Mapper 接口
+ * </p>
+ *
+ * @author songqg
+ * @since 2021-08-21
+ */
+public interface SysUserCompanyRelMapper extends BaseMapper<SysUserCompanyRel> {
+
+}

+ 57 - 0
sc-service/src/main/java/com/huyi/service/base/service/ISysCompanyRelService.java

@@ -0,0 +1,57 @@
+package com.huyi.service.base.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huyi.service.base.entity.SysCompanyRel;
+import com.keao.tianhu.starter.mybatis.plus.entity.QueryRequest;
+
+import java.util.List;
+
+/**
+ * ClassName: ISysCompanyRelService<br>
+ * Description: SysCompanyRelService接口 <br>
+ * Company: keao
+ *
+ * @author songqg
+ * @version v1.0.0    2021-08-17  songqg    由Generator自动创建
+ */
+public interface ISysCompanyRelService extends IService<SysCompanyRel> {
+    /**
+     * 查询(分页)
+     *
+     * @param request QueryRequest
+     * @param wrapper LambdaQueryWrapper<SysCompanyRel>
+     * @return IPage<SysCompanyRel>
+     */
+    IPage<SysCompanyRel> findSysCompanyRels(QueryRequest request, LambdaQueryWrapper<SysCompanyRel> wrapper);
+
+    /**
+     * 查询(所有)
+     *
+     * @param wrapper LambdaQueryWrapper<SysCompanyRel>
+     * @return List<SysCompanyRel>
+     */
+    List<SysCompanyRel> findSysCompanyRels(LambdaQueryWrapper<SysCompanyRel> wrapper);
+
+    /**
+     * 新增
+     *
+     * @param sysCompanyRel sysCompanyRel
+     */
+    void createSysCompanyRel(SysCompanyRel sysCompanyRel);
+
+    /**
+     * 修改
+     *
+     * @param sysCompanyRel sysCompanyRel
+     */
+    void updateSysCompanyRel(SysCompanyRel sysCompanyRel);
+
+    /**
+     * 删除
+     *
+     * @param wrapper LambdaQueryWrapper<SysCompanyRel>
+     */
+    void deleteSysCompanyRel(LambdaQueryWrapper<SysCompanyRel> wrapper);
+}

+ 57 - 0
sc-service/src/main/java/com/huyi/service/base/service/ISysCompanySpareService.java

@@ -0,0 +1,57 @@
+package com.huyi.service.base.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huyi.service.base.entity.SysCompanySpare;
+import com.keao.tianhu.starter.mybatis.plus.entity.QueryRequest;
+
+import java.util.List;
+
+/**
+ * ClassName: ISysCompanySpareService<br>
+ * Description: SysCompanySpareService接口 <br>
+ * Company: keao
+ *
+ * @author songqg
+ * @version v1.0.0    2021-08-17  songqg    由Generator自动创建
+ */
+public interface ISysCompanySpareService extends IService<SysCompanySpare> {
+    /**
+     * 查询(分页)
+     *
+     * @param request QueryRequest
+     * @param wrapper LambdaQueryWrapper<SysCompanySpare>
+     * @return IPage<SysCompanySpare>
+     */
+    IPage<SysCompanySpare> findSysCompanySpares(QueryRequest request, LambdaQueryWrapper<SysCompanySpare> wrapper);
+
+    /**
+     * 查询(所有)
+     *
+     * @param wrapper LambdaQueryWrapper<SysCompanySpare>
+     * @return List<SysCompanySpare>
+     */
+    List<SysCompanySpare> findSysCompanySpares(LambdaQueryWrapper<SysCompanySpare> wrapper);
+
+    /**
+     * 新增
+     *
+     * @param sysCompanySpare sysCompanySpare
+     */
+    void createSysCompanySpare(SysCompanySpare sysCompanySpare);
+
+    /**
+     * 修改
+     *
+     * @param sysCompanySpare sysCompanySpare
+     */
+    void updateSysCompanySpare(SysCompanySpare sysCompanySpare);
+
+    /**
+     * 删除
+     *
+     * @param wrapper LambdaQueryWrapper<SysCompanySpare>
+     */
+    void deleteSysCompanySpare(LambdaQueryWrapper<SysCompanySpare> wrapper);
+}

+ 60 - 0
sc-service/src/main/java/com/huyi/service/base/service/ISysUserCompanyRelService.java

@@ -0,0 +1,60 @@
+package com.huyi.service.base.service;
+
+import com.huyi.service.base.entity.SysUserCompanyRel;
+
+import com.keao.tianhu.starter.mybatis.plus.entity.QueryRequest;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+
+
+import java.util.List;
+
+/**
+ * ClassName: ISysUserCompanyRelService<br>
+ * Description: SysUserCompanyRelService接口 <br>
+ * Company: keao
+ *
+ * @author songqg
+ * @version v1.0.0    2021-08-21  songqg    由Generator自动创建
+ */
+public interface ISysUserCompanyRelService extends IService<SysUserCompanyRel> {
+    /**
+     * 查询(分页)
+     *
+     * @param request QueryRequest
+     * @param wrapper LambdaQueryWrapper<SysUserCompanyRel>
+     * @return IPage<SysUserCompanyRel>
+     */
+    IPage<SysUserCompanyRel> findSysUserCompanyRels(QueryRequest request, LambdaQueryWrapper<SysUserCompanyRel> wrapper);
+
+    /**
+     * 查询(所有)
+     *
+     * @param wrapper LambdaQueryWrapper<SysUserCompanyRel>
+     * @return List<SysUserCompanyRel>
+     */
+    List<SysUserCompanyRel> findSysUserCompanyRels(LambdaQueryWrapper<SysUserCompanyRel> wrapper);
+
+    /**
+     * 新增
+     *
+     * @param sysUserCompanyRel sysUserCompanyRel
+     */
+    void createSysUserCompanyRel(SysUserCompanyRel sysUserCompanyRel);
+
+    /**
+     * 修改
+     *
+     * @param sysUserCompanyRel sysUserCompanyRel
+     */
+    void updateSysUserCompanyRel(SysUserCompanyRel sysUserCompanyRel);
+
+    /**
+     * 删除
+     *
+     * @param wrapper LambdaQueryWrapper<SysUserCompanyRel>
+     */
+    void deleteSysUserCompanyRel(LambdaQueryWrapper<SysUserCompanyRel> wrapper);
+}

+ 61 - 0
sc-service/src/main/java/com/huyi/service/base/service/impl/SysCompanyRelServiceImpl.java

@@ -0,0 +1,61 @@
+package com.huyi.service.base.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huyi.service.base.entity.SysCompanyRel;
+import com.huyi.service.base.mapper.SysCompanyRelMapper;
+import com.huyi.service.base.service.ISysCompanyRelService;
+import com.keao.tianhu.starter.mybatis.plus.entity.QueryRequest;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * ClassName: SysCompanyRelServiceImpl<br>
+ * Description: ISysCompanyRelService实现 <br>
+ * Company: keao
+ *
+ * @author songqg
+ * @version v1.0.0    2021-08-17  songqg    由Generator自动创建
+ */
+@Service
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
+public class SysCompanyRelServiceImpl extends ServiceImpl<SysCompanyRelMapper, SysCompanyRel> implements ISysCompanyRelService {
+
+    @Autowired
+    private SysCompanyRelMapper sysCompanyRelMapper;
+
+    @Override
+    public IPage<SysCompanyRel> findSysCompanyRels(QueryRequest request, LambdaQueryWrapper<SysCompanyRel> wrapper) {
+        Page<SysCompanyRel> page = new Page<>(request.getPageNum(), request.getPageSize());
+        return this.page(page, wrapper);
+    }
+
+    @Override
+    public List<SysCompanyRel> findSysCompanyRels(LambdaQueryWrapper<SysCompanyRel> wrapper) {
+		return this.list(wrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void createSysCompanyRel(SysCompanyRel sysCompanyRel) {
+        this.save(sysCompanyRel);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateSysCompanyRel(SysCompanyRel sysCompanyRel) {
+        this.saveOrUpdate(sysCompanyRel);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteSysCompanyRel(LambdaQueryWrapper<SysCompanyRel> wrapper) {
+	    this.remove(wrapper);
+	}
+}

+ 61 - 0
sc-service/src/main/java/com/huyi/service/base/service/impl/SysCompanySpareServiceImpl.java

@@ -0,0 +1,61 @@
+package com.huyi.service.base.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huyi.service.base.entity.SysCompanySpare;
+import com.huyi.service.base.mapper.SysCompanySpareMapper;
+import com.huyi.service.base.service.ISysCompanySpareService;
+import com.keao.tianhu.starter.mybatis.plus.entity.QueryRequest;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * ClassName: SysCompanySpareServiceImpl<br>
+ * Description: ISysCompanySpareService实现 <br>
+ * Company: keao
+ *
+ * @author songqg
+ * @version v1.0.0    2021-08-17  songqg    由Generator自动创建
+ */
+@Service
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
+public class SysCompanySpareServiceImpl extends ServiceImpl<SysCompanySpareMapper, SysCompanySpare> implements ISysCompanySpareService {
+
+    @Autowired
+    private SysCompanySpareMapper sysCompanySpareMapper;
+
+    @Override
+    public IPage<SysCompanySpare> findSysCompanySpares(QueryRequest request, LambdaQueryWrapper<SysCompanySpare> wrapper) {
+        Page<SysCompanySpare> page = new Page<>(request.getPageNum(), request.getPageSize());
+        return this.page(page, wrapper);
+    }
+
+    @Override
+    public List<SysCompanySpare> findSysCompanySpares(LambdaQueryWrapper<SysCompanySpare> wrapper) {
+		return this.list(wrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void createSysCompanySpare(SysCompanySpare sysCompanySpare) {
+        this.save(sysCompanySpare);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateSysCompanySpare(SysCompanySpare sysCompanySpare) {
+        this.saveOrUpdate(sysCompanySpare);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteSysCompanySpare(LambdaQueryWrapper<SysCompanySpare> wrapper) {
+	    this.remove(wrapper);
+	}
+}

+ 64 - 0
sc-service/src/main/java/com/huyi/service/base/service/impl/SysUserCompanyRelServiceImpl.java

@@ -0,0 +1,64 @@
+package com.huyi.service.base.service.impl;
+
+import com.huyi.service.base.entity.SysUserCompanyRel;
+import com.huyi.service.base.mapper.SysUserCompanyRelMapper;
+import com.huyi.service.base.service.ISysUserCompanyRelService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.keao.tianhu.starter.mybatis.plus.entity.QueryRequest;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+
+
+import java.util.List;
+
+/**
+ * ClassName: SysUserCompanyRelServiceImpl<br>
+ * Description: ISysUserCompanyRelService实现 <br>
+ * Company: keao
+ *
+ * @author songqg
+ * @version v1.0.0    2021-08-21  songqg    由Generator自动创建
+ */
+@Service
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
+public class SysUserCompanyRelServiceImpl extends ServiceImpl<SysUserCompanyRelMapper, SysUserCompanyRel> implements ISysUserCompanyRelService {
+
+    @Autowired
+    private SysUserCompanyRelMapper sysUserCompanyRelMapper;
+
+    @Override
+    public IPage<SysUserCompanyRel> findSysUserCompanyRels(QueryRequest request, LambdaQueryWrapper<SysUserCompanyRel> wrapper) {
+        Page<SysUserCompanyRel> page = new Page<>(request.getPageNum(), request.getPageSize());
+        return this.page(page, wrapper);
+    }
+
+    @Override
+    public List<SysUserCompanyRel> findSysUserCompanyRels(LambdaQueryWrapper<SysUserCompanyRel> wrapper) {
+		return this.list(wrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void createSysUserCompanyRel(SysUserCompanyRel sysUserCompanyRel) {
+        this.save(sysUserCompanyRel);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateSysUserCompanyRel(SysUserCompanyRel sysUserCompanyRel) {
+        this.saveOrUpdate(sysUserCompanyRel);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteSysUserCompanyRel(LambdaQueryWrapper<SysUserCompanyRel> wrapper) {
+	    this.remove(wrapper);
+	}
+}

+ 490 - 0
sc-service/src/main/java/com/huyi/service/rel/controller/CompanyRelImportController.java

@@ -0,0 +1,490 @@
+package com.huyi.service.rel.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.huyi.service.base.entity.SysCompany;
+import com.huyi.service.base.entity.SysCompanyRel;
+import com.huyi.service.base.entity.SysCompanySpare;
+import com.huyi.service.base.service.ISysCompanyRelService;
+import com.huyi.service.base.service.ISysCompanyService;
+import com.huyi.service.base.service.ISysCompanySpareService;
+import com.tianhu.common.core.utils.CommonUtil;
+import com.tianhu.common.core.utils.DateUtils;
+import com.tianhu.common.core.utils.IdUtils;
+import com.tianhu.common.core.utils.file.ExcelFileUtils;
+import com.tianhu.common.core.web.controller.BaseController;
+import com.tianhu.common.core.web.domain.AjaxResult;
+import com.tianhu.common.log.annotation.Log;
+import com.tianhu.common.log.enums.BusinessType;
+import com.tianhu.common.security.annotation.PreAuthorize;
+import com.tianhu.common.security.service.TokenService;
+import com.tianhu.system.api.domain.SysUser;
+import com.tianhu.system.api.model.LoginUser;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.ss.usermodel.BorderStyle;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.IndexedColors;
+import org.apache.poi.ss.usermodel.VerticalAlignment;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 链属导入Controller
+ * 
+ * @author keao
+ * @date 2020-12-16
+ */
+@RestController
+@RequestMapping("/relImport")
+public class CompanyRelImportController extends BaseController
+{
+    private static final Logger log = LoggerFactory.getLogger(CompanyRelImportController.class);
+
+    @Autowired
+    private ISysCompanyRelService iSysCompanyRelService;
+
+    @Autowired
+    private ISysCompanyService iSysCompanyService;
+
+    @Autowired
+    private ISysCompanySpareService iSysCompanySpareService;
+
+    @Autowired
+    private TokenService tokenService;
+
+    /**
+     * 企业正常状态
+     */
+    private String NORMAL_STATE = "00";
+
+    /**
+     * 停用状态
+     */
+    private String CONFIRM_STATE = "01";
+
+    /**
+     * 拒绝链属
+     */
+    private String REFUSE_STATE = "02";
+
+    /**
+     * 删除状态
+     */
+    private String DELETE_STATE = "99";
+
+
+    /**
+     * 链属模板导出
+     * @param response
+     */
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response)
+    {
+        String sheetName = "链属模板";
+        String fileName = "链属模板";
+        //行宽度
+        List<Integer> columnWidth = new ArrayList<>();
+
+        //获取当前操作人员
+        LoginUser userInfo = tokenService.getLoginUser();
+        SysUser use = userInfo.getSysUser();
+        String companyId = use.getCompanyId();
+        LambdaQueryWrapper<SysCompany> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(SysCompany::getScyId,companyId);
+        List<SysCompany> companyList = iSysCompanyService.findSysCompanys(queryWrapper);
+        String companyName = companyList.get(0).getScyName();
+        String companyCode = companyList.get(0).getScySocialCode();
+
+        List<String> list = new ArrayList<>();
+        //列表表头
+        List<String> firstColumnName = new ArrayList<>();
+        firstColumnName.add(companyName);
+        firstColumnName.add(companyCode);
+        int firstColumnNumber = firstColumnName.size();
+
+        List<String> columnName = new ArrayList<>();
+        columnName.add("*供应商企业全称");
+        columnName.add("*供应商企业社会统一代码");
+        columnName.add("联系人名称");
+        columnName.add("联系人手机号码");
+        int columnNumber = columnName.size();
+        for(String width:columnName){
+            columnWidth.add(20);
+        }
+        try {
+            HSSFWorkbook wb = exportNoResponse(sheetName, fileName, firstColumnNumber,
+                    columnNumber, columnWidth, firstColumnName, columnName, list);
+            response.setCharacterEncoding("UTF-8");
+            // 设置contentType为excel格式
+            response.setContentType("application/vnd.ms-excel;charset=utf-8");
+            //默认Excel名称
+            response.setHeader("Content-disposition", "attachment;filename=" + "链属模板"+ URLEncoder.encode(fileName + ".xls", "UTF-8"));
+            response.flushBuffer();
+            OutputStream outputStream = response.getOutputStream();
+            wb.write(outputStream);
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException var) {
+                    var.printStackTrace();
+                }
+            }
+        } catch (Exception varLog) {
+            log.error("导出Excel异常{}", varLog.getMessage());
+        }
+    }
+
+    /**
+     * 链属导入
+     * @param file  链属文件
+     * @return
+     * @throws Exception
+     */
+    @Log(title = "链属导入", businessType = BusinessType.IMPORT)
+    @PreAuthorize(hasAnyPermi = "system:relImport:importData")
+    @Transactional(rollbackFor=Exception.class)
+    @PostMapping("/importData")
+    public AjaxResult importData(MultipartFile file) throws Exception
+    {
+        //获取当前操作人员
+        LoginUser userInfo = tokenService.getLoginUser();
+        SysUser use = userInfo.getSysUser();
+        String companyId = use.getCompanyId();
+        String userId = String.valueOf(use.getUserId());
+
+        //列表对应字段
+        List<String> columnName = new ArrayList<>();
+        columnName.add("scyName");
+        columnName.add("scySocialCode");
+        columnName.add("scrContarct");
+        columnName.add("scrContarctPhone");
+        //excel数据
+        List<Map<String,String>> templateData = ExcelFileUtils.readExecleasy(file,columnName,2);
+        if(templateData.size() == 0){
+            return AjaxResult.error("导入数据不能为空");
+        }
+        //未添加成功的list
+        String userNameList = "";
+        //链属集合
+        List<SysCompanyRel> relList = new ArrayList<>();
+        //链属企业信息
+        List<SysCompanySpare> spareList = new ArrayList<>();
+        //个税详情表集合
+        //返回结果信息
+        StringBuilder failureMsg = new StringBuilder();
+        int failureNum = 0;
+        StringBuilder successMsg = new StringBuilder();
+        int successNum = 0;
+        //循环处理excel数据
+        for (int i = 0; i < templateData.size(); i++){
+            Map<String,String> map = templateData.get(i);
+            //供应商企业全称
+            String scyName = CommonUtil.objToString(map.get("scyName"));
+            //供应商企业社会统一代码
+            String scySocialCode = CommonUtil.objToString(map.get("scySocialCode"));
+            //联系人
+            String scrContarct = CommonUtil.objToString(map.get("scrContarct"));
+            //联系人手机号
+            String scrContarctPhone = CommonUtil.objToString(map.get("scrContarctPhone"));
+
+            //供应商企业全称
+            if(CommonUtil.isNotEmpty(scyName)){
+                if(scyName.length() <= 60){
+                }else{
+                    userNameList += scyName+",";
+                    failureNum++;
+                    failureMsg.append("<br/>第" + (i+1) + "行数据导入失败,供应商企业全称不能大于60位");
+                    log.error("新增" + scyName + "的链属失败,供应商企业全称不能大于60位");
+                    continue;
+                }
+            }else{
+                userNameList += scyName+",";
+                failureNum++;
+                failureMsg.append("<br/>第" + (i+1) + "行数据导入失败,供应商企业全称不能为空");
+                log.error("新增" + scyName + "的链属失败,供应商企业全称不能为空");
+                continue;
+            }
+            //供应商企业社会统一代码
+            if(CommonUtil.isNotEmpty(scySocialCode)){
+                if(scyName.length() <= 100){
+                }else{
+                    userNameList += scyName+",";
+                    failureNum++;
+                    failureMsg.append("<br/>第" + (i+1) + "行数据导入失败,企业社会统一代码不能大于60位");
+                    log.error("新增" + scyName + "的链属失败,企业社会统一代码不能大于60位");
+                    continue;
+                }
+                //社会统一代码正则校验
+                String checkSocialCode = "^([0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}|[1-9]\\d{14})$";
+                Pattern regeSocialCode = Pattern.compile(checkSocialCode);
+                Matcher matcherSocialCode = regeSocialCode.matcher(scySocialCode);
+                boolean isMatSocialCode = matcherSocialCode.matches();
+                if(!isMatSocialCode){
+                    userNameList += scyName+",";
+                    failureNum++;
+                    failureMsg.append("<br/>第" + (i+1) + "行数据导入失败,企业社会统一代码格式错误");
+                    log.error("新增" + scyName + "的链属失败,企业社会统一代码格式错误");
+                    continue;
+                }
+            }else{
+                userNameList += scyName+",";
+                failureNum++;
+                failureMsg.append("<br/>第" + (i+1) + "行数据导入失败,企业社会统一代码不能为空");
+                log.error("新增" + scyName + "的链属失败,企业社会统一代码不能为空");
+                continue;
+            }
+            //联系人
+//            if(CommonUtil.isNotEmpty(scrContarct)){
+//                if(scrContarct.length() <= 30){
+//                }else{
+//                    userNameList += scyName+",";
+//                    failureNum++;
+//                    failureMsg.append("<br/>第" + (i+1) + "行数据导入失败,联系人不能大于30位");
+//                    log.error("新增" + scyName + "的链属失败,联系人不能大于30位");
+//                    continue;
+//                }
+//            }else{
+//                userNameList += scyName+",";
+//                failureNum++;
+//                failureMsg.append("<br/>第" + (i+1) + "行数据导入失败,联系人不能为空");
+//                log.error("新增" + scyName + "的链属失败,联系人不能为空");
+//                continue;
+//            }
+            //联系人手机号
+//            if(CommonUtil.isNotEmpty(scrContarctPhone)){
+//                //手机号
+//                String checkPhone = "^1[3|4|5|6|7|8|9][0-9]\\d{8}$";
+//                Pattern phonePattern = Pattern.compile(checkPhone);
+//                boolean phoneResult = phonePattern.matcher(scrContarctPhone).matches();
+//                if(!phoneResult){
+//                    userNameList += scyName+",";
+//                    failureNum++;
+//                    failureMsg.append("<br/>第" + (i+1) + "行数据导入失败,联系人手机号格式不正确");
+//                    log.error("新增" + scyName + "的链属失败,联系人手机号格式不正确");
+//                    continue;
+//                }
+//                if(scrContarctPhone.length() > 11){
+//                    userNameList += scyName+",";
+//                    failureNum++;
+//                    failureMsg.append("<br/>第" + (i+1) + "行数据导入失败,联系人手机号不能超过11位");
+//                    log.error("新增" + scyName + "的链属失败,联系人手机号不能超过11位");
+//                    continue;
+//                }
+//            }else{
+//                userNameList += scyName+",";
+//                failureNum++;
+//                failureMsg.append("<br/>第" + (i+1) + "行数据导入失败,联系人手机号不能为空");
+//                log.error("新增" + scyName + "的链属失败,联系人手机号不能为空");
+//                continue;
+//            }
+            //查询链属企业信息
+            LambdaQueryWrapper<SysCompany> queryWrapper = new LambdaQueryWrapper<>();
+            //统一社会信用代码
+            queryWrapper.eq(SysCompany::getScySocialCode,scySocialCode);
+            //企业名称
+            queryWrapper.like(SysCompany::getScyName,scyName);
+            //状态00
+            queryWrapper.ne(SysCompany::getScyStatus,DELETE_STATE);
+            List<SysCompany> list = iSysCompanyService.findSysCompanys(queryWrapper);
+            //主键
+            String id = IdUtils.fastSimpleUUID();
+
+            String scyId = "";
+            if(list.size() > 0) {
+                scyId = list.get(0).getScyId();
+                String finalScyId = scyId;
+                //判断两者是否已经链属
+                LambdaQueryWrapper<SysCompanyRel> wrapper = new LambdaQueryWrapper<>();
+                wrapper.and(j->j.eq(SysCompanyRel::getScrLaunchCompanyId, companyId).or().eq(SysCompanyRel::getScrReceiveCompanyId,  companyId));
+                wrapper.and(j->j.eq(SysCompanyRel::getScrLaunchCompanyId, finalScyId).or().eq(SysCompanyRel::getScrReceiveCompanyId, finalScyId));
+                wrapper.and(j->j.eq(SysCompanyRel::getScrStatus,NORMAL_STATE).or().eq(SysCompanyRel::getScrStatus,CONFIRM_STATE));
+                List<SysCompanyRel> companyRelList = iSysCompanyRelService.findSysCompanyRels(wrapper);
+                if(companyRelList.size() > 0){
+                    throw new Exception("已经和此企业链属,不得重复链属");
+                }
+                SysCompanyRel sysCompanyRel = new SysCompanyRel();
+                //主键
+                sysCompanyRel.setScrId(id);
+                //发起方
+                sysCompanyRel.setScrLaunchCompanyId(companyId);
+                //接收方
+                sysCompanyRel.setScrReceiveCompanyId(scyId);
+                //联系人
+                sysCompanyRel.setScrContarct(scrContarct);
+                //联系电话
+                sysCompanyRel.setScrContarctPhone(scrContarctPhone);
+                //链属关系为供应商
+                //发起方为核心企业01
+                sysCompanyRel.setScrLaunchType(CONFIRM_STATE);
+                //接收方为供应商00
+                sysCompanyRel.setScrReceiveType(NORMAL_STATE);
+                //状态 01:正常
+                sysCompanyRel.setScrStatus(CONFIRM_STATE);
+                //创建者
+                sysCompanyRel.setCreateBy(userId);
+                //创建时间
+                sysCompanyRel.setCreateTime(DateUtils.getNowDate());
+                relList.add(sysCompanyRel);
+            }else {
+                //新增链属公司信息
+                SysCompanySpare sysCompanySpare = new SysCompanySpare();
+                sysCompanySpare.setScpId(id);
+                sysCompanySpare.setScpCompanyId(companyId);
+                //企业名称
+                sysCompanySpare.setScpName(scyName);
+                //统一社会信用代码
+                sysCompanySpare.setScpSocialCode(scySocialCode);
+                //联系人
+                sysCompanySpare.setScpContarct(scrContarct);
+                //联系电话
+                sysCompanySpare.setScpContarctPhone(scrContarctPhone);
+                //企业类型 00:供应商
+                sysCompanySpare.setScpType(NORMAL_STATE);
+                //状态 00:正常
+                sysCompanySpare.setScpStatus(NORMAL_STATE);
+                //创建人
+                sysCompanySpare.setCreateBy(userId);
+                //创建时间
+                sysCompanySpare.setCreateTime(DateUtils.getNowDate());
+                spareList.add(sysCompanySpare);
+            }
+            successNum++;
+        }
+        if(CommonUtil.isNotEmpty(userNameList)){
+            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
+            return AjaxResult.success(failureMsg.toString());
+        }
+        //统一校验完成后再进行数据添加
+        //链属表表
+        for(SysCompanyRel rel : relList){
+            iSysCompanyRelService.createSysCompanyRel(rel);
+        }
+        //链属企业信息表
+        for(SysCompanySpare spare : spareList){
+            //todo 短信通知
+            iSysCompanySpareService.createSysCompanySpare(spare);
+        }
+        successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条");
+        return AjaxResult.success(successMsg.toString());
+    }
+
+    /**
+     * 导出模板
+     * @param sheetName
+     * @param fileName
+     * @param columnNumber
+     * @param columnWidth
+     * @param firstColumnName
+     * @param columnName
+     * @param dataList
+     * @return
+     * @throws Exception
+     */
+    public static HSSFWorkbook exportNoResponse(String sheetName, String fileName, int firstColumnNumber, int columnNumber, List<Integer> columnWidth, List<String> firstColumnName,List<String> columnName, List<String> dataList) throws Exception {
+        HSSFWorkbook wb = new HSSFWorkbook();
+            HSSFSheet sheet = wb.createSheet(sheetName);
+
+            for(int i = 0; i < firstColumnNumber; ++i) {
+                for(int j = 0; j <= i; ++j) {
+                    if (i == j) {
+                        sheet.setColumnWidth(i, (Integer)columnWidth.get(j) * 256);
+                    }
+                }
+            }
+
+            for(int i = 0; i < columnNumber; ++i) {
+                for(int j = 0; j <= i; ++j) {
+                    if (i == j) {
+                        sheet.setColumnWidth(i, (Integer)columnWidth.get(j) * 256);
+                    }
+                }
+            }
+
+        HSSFRow firstRow = sheet.createRow(0);
+        firstRow.setHeightInPoints(37.0F);
+        HSSFCellStyle firstStyle = wb.createCellStyle();
+        firstStyle.setWrapText(true);
+        firstStyle.setAlignment(HorizontalAlignment.CENTER);
+        firstStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+        firstStyle.setBottomBorderColor(IndexedColors.BLACK.index);
+        firstStyle.setBorderBottom(BorderStyle.THIN);
+        firstStyle.setBorderLeft(BorderStyle.THIN);
+        firstStyle.setBorderRight(BorderStyle.THIN);
+        firstStyle.setBorderTop(BorderStyle.THIN);
+        HSSFFont firstHeaderFont = wb.createFont();
+        firstHeaderFont.setBold(true);
+        firstHeaderFont.setFontName("黑体");
+        firstHeaderFont.setFontHeightInPoints((short)10);
+        firstStyle.setFont(firstHeaderFont);
+
+            HSSFRow row = sheet.createRow(1);
+            row.setHeightInPoints(37.0F);
+            HSSFCellStyle style = wb.createCellStyle();
+            style.setWrapText(true);
+            style.setAlignment(HorizontalAlignment.CENTER);
+            style.setVerticalAlignment(VerticalAlignment.CENTER);
+            style.setBottomBorderColor(IndexedColors.BLACK.index);
+            style.setBorderBottom(BorderStyle.THIN);
+            style.setBorderLeft(BorderStyle.THIN);
+            style.setBorderRight(BorderStyle.THIN);
+            style.setBorderTop(BorderStyle.THIN);
+            HSSFFont headerFont = wb.createFont();
+            headerFont.setBold(true);
+            headerFont.setFontName("黑体");
+            headerFont.setFontHeightInPoints((short)10);
+            style.setFont(headerFont);
+
+            int i;
+            for(int j = 0; j < firstColumnNumber; ++j) {
+                HSSFCell firstCell = firstRow.createCell(j);
+                firstCell.setCellValue((String)firstColumnName.get(j));
+                firstCell.setCellStyle(firstStyle);
+            }
+            for(i = 0; i < columnNumber; ++i) {
+                HSSFCell cell = row.createCell(i);
+                cell.setCellValue((String)columnName.get(i));
+                cell.setCellStyle(style);
+            }
+
+            for(i = 0; i < dataList.size(); ++i) {
+                row = sheet.createRow(i + 3);
+                HSSFCellStyle zidonghuanhang = wb.createCellStyle();
+                zidonghuanhang.setWrapText(true);
+                zidonghuanhang.setVerticalAlignment(VerticalAlignment.CENTER);
+                zidonghuanhang.setBottomBorderColor(IndexedColors.BLACK.index);
+                zidonghuanhang.setBorderBottom(BorderStyle.THIN);
+                zidonghuanhang.setBorderLeft(BorderStyle.THIN);
+                zidonghuanhang.setBorderRight(BorderStyle.THIN);
+                zidonghuanhang.setBorderTop(BorderStyle.THIN);
+                HSSFCellStyle zidonghuanhang2 = wb.createCellStyle();
+                zidonghuanhang2.setWrapText(true);
+                zidonghuanhang2.setVerticalAlignment(VerticalAlignment.CENTER);
+                zidonghuanhang2.setAlignment(HorizontalAlignment.CENTER);
+                zidonghuanhang2.setBottomBorderColor(IndexedColors.BLACK.index);
+                zidonghuanhang2.setBorderBottom(BorderStyle.THIN);
+                zidonghuanhang2.setBorderLeft(BorderStyle.THIN);
+                zidonghuanhang2.setBorderRight(BorderStyle.THIN);
+                zidonghuanhang2.setBorderTop(BorderStyle.THIN);
+                HSSFCell datacell = null;
+                datacell = row.createCell(1);
+                datacell.setCellValue((String)dataList.get(i));
+                datacell.setCellStyle(zidonghuanhang2);
+            }
+        return wb;
+    }
+}

+ 432 - 0
sc-service/src/main/java/com/huyi/service/rel/controller/OwnCompanyRelController.java

@@ -0,0 +1,432 @@
+package com.huyi.service.rel.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.huyi.service.base.entity.SysCompany;
+import com.huyi.service.base.entity.SysCompanyRel;
+import com.huyi.service.base.entity.SysCompanySpare;
+import com.huyi.service.base.service.ISysCompanyRelService;
+import com.huyi.service.base.service.ISysCompanyService;
+import com.huyi.service.base.service.ISysCompanySpareService;
+import com.huyi.service.rel.service.IOwnCompanyRelService;
+import com.keao.tianhu.starter.mybatis.plus.entity.QueryRequest;
+import com.tianhu.common.core.domain.R;
+import com.tianhu.common.core.utils.CommonUtil;
+import com.tianhu.common.core.utils.DateUtils;
+import com.tianhu.common.core.utils.IdUtils;
+import com.tianhu.common.core.web.controller.BaseController;
+import com.tianhu.common.log.annotation.Log;
+import com.tianhu.common.log.enums.BusinessType;
+import com.tianhu.common.security.annotation.PreAuthorize;
+import com.tianhu.common.security.service.TokenService;
+import com.tianhu.system.api.model.LoginUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 链属Controller
+ * 
+ * @author keao
+ * @date 2020-12-16
+ */
+@RestController
+@RequestMapping("/rel")
+public class OwnCompanyRelController extends BaseController
+{
+    @Autowired
+    private IOwnCompanyRelService iOwnCompanyRelService;
+
+    @Autowired
+    private ISysCompanyRelService iSysCompanyRelService;
+
+    @Autowired
+    private ISysCompanyService iSysCompanyService;
+
+    @Autowired
+    private ISysCompanySpareService iSysCompanySpareService;
+
+    @Autowired
+    private TokenService tokenService;
+
+    /**
+     * 企业正常状态
+     */
+    private String NORMAL_STATE = "00";
+
+    /**
+     * 停用状态
+     */
+    private String CONFIRM_STATE = "01";
+
+    /**
+     * 拒绝链属
+     */
+    private String REFUSE_STATE = "02";
+
+    /**
+     * 删除状态
+     */
+    private String DELETE_STATE = "99";
+
+    /**
+     * 查询链属列表
+     * @param scySocialCode 社会统一信用代码
+     * @param companyName   企业名称
+     * @param scrType       企业类型
+     * @param scrStatus     链属状态
+     * @param request
+     * @return
+     */
+    @PreAuthorize(hasPermi = "service:rel:list")
+    @Log(title = "查询链属列表", businessType = BusinessType.OTHER)
+    @Transactional(rollbackFor = Exception.class)
+    @GetMapping("/list")
+    public R list(String scySocialCode, String companyName, String scrType, String scrStatus,QueryRequest request)
+    {
+        //获取当前操作员
+        LoginUser user = tokenService.getLoginUser();
+        String companyId = user.getSysUser().getCompanyId();
+        Map map = new HashMap();
+        map.put("companyId",companyId);
+        if(CommonUtil.isNotEmpty(companyName)) {
+            map.put("companyName", companyName);
+        }
+        if(CommonUtil.isNotEmpty(scySocialCode)) {
+            map.put("scySocialCode", scySocialCode);
+        }
+        if(CommonUtil.isNotEmpty(scrType)) {
+            map.put("scrType", scrType);
+        }
+        if(CommonUtil.isNotEmpty(scrStatus)) {
+            map.put("scrStatus", scrStatus);
+        }
+        IPage<Map> list = iOwnCompanyRelService.selectCompanyRelList(request,map);
+        return R.ok(list,companyId);
+    }
+
+    /**
+     * 查询链属未认证列表
+     * @param scySocialCode 社会统一信用代码
+     * @param companyName   企业名称
+     * @param scrType   企业类型
+     * @param request
+     * @return
+     */
+    @PreAuthorize(hasPermi = "system:rel:list")
+    @Log(title = "查询链属未认证列表", businessType = BusinessType.OTHER)
+    @Transactional(rollbackFor = Exception.class)
+    @GetMapping("/notCertifiedList")
+    public R notCertifiedList(String scySocialCode, String companyName, String scrType, QueryRequest request)
+    {
+        //获取当前操作员
+        LoginUser user = tokenService.getLoginUser();
+        String companyId = user.getSysUser().getCompanyId();
+        LambdaQueryWrapper<SysCompanySpare> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(SysCompanySpare::getScpCompanyId,companyId);
+        //社会统一信用代码
+        if(CommonUtil.isNotEmpty(scySocialCode)){
+            queryWrapper.like(SysCompanySpare::getScpSocialCode,scySocialCode);
+        }
+        //企业名称
+        if(CommonUtil.isNotEmpty(companyName)){
+            queryWrapper.like(SysCompanySpare::getScpName,companyName);
+        }
+        //企业类型
+        if(CommonUtil.isNotEmpty(scrType)){
+            queryWrapper.eq(SysCompanySpare::getScpType,scrType);
+        }
+        queryWrapper.eq(SysCompanySpare::getScpStatus,NORMAL_STATE);
+        IPage<SysCompanySpare> notCertifiedList = iSysCompanySpareService.findSysCompanySpares(request,queryWrapper);
+        return R.ok(notCertifiedList);
+    }
+
+    /**
+     * 查询企业列表
+     */
+    @GetMapping("/companyList")
+    @Log(title = "查询企业列表", businessType = BusinessType.OTHER)
+    @Transactional(rollbackFor = Exception.class)
+    public R companyList(String scyName, QueryRequest request)throws Exception {
+        //获取当前操作员
+        LoginUser user = tokenService.getLoginUser();
+        String companyId = user.getSysUser().getCompanyId();
+        LambdaQueryWrapper<SysCompany> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.ne(SysCompany::getScyId,companyId);
+        if(CommonUtil.isNotEmpty(scyName)) {
+            queryWrapper.like(SysCompany::getScyName, scyName);
+        }
+        queryWrapper.eq(SysCompany::getScyStatus,NORMAL_STATE);
+        IPage<SysCompany> list = iSysCompanyService.findSysCompanys(request,queryWrapper);
+        return R.ok(list);
+    }
+
+    /**
+     * 查询企业
+     */
+    @GetMapping("/companyListQuery/{scyName}")
+    @Log(title = "查询企业列表", businessType = BusinessType.OTHER)
+    @Transactional(rollbackFor = Exception.class)
+    public R companyListQuery(@PathVariable("scyName") String scyName)throws Exception {
+        LambdaQueryWrapper<SysCompany> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(SysCompany::getScyName,scyName);
+        queryWrapper.eq(SysCompany::getScyStatus,NORMAL_STATE);
+        List<SysCompany> list = iSysCompanyService.findSysCompanys(queryWrapper);
+        return R.ok(list);
+    }
+
+    /**
+     * 新增链属
+     */
+    @PreAuthorize(hasPermi = "service:rel:add")
+    @Log(title = "新增链属信息", businessType = BusinessType.INSERT)
+    @Transactional(rollbackFor = Exception.class)
+    @PostMapping("/addCompanyRel")
+    public R addCompanyRel(@RequestBody Map<String,Object> map) throws Exception {
+        //获取当前操作员
+        LoginUser user = tokenService.getLoginUser();
+        String companyId = user.getSysUser().getCompanyId();
+        String userId = String.valueOf(user.getSysUser().getUserId());
+
+        //链属关系(00:供应商 01:核心企业)
+        String scrReceiveType = CommonUtil.objToString(map.get("scrReceiveType"));
+        if(CommonUtil.isEmpty(scrReceiveType)){
+            throw new Exception("企业类型不能为空");
+        }
+        //链属企业名称
+        String scyName = CommonUtil.objToString(map.get("scyName"));
+        if(CommonUtil.isEmpty(scyName)){
+            throw new Exception("企业名称不能为空");
+        }
+        //统一社会信用代码
+        String scySocialCode = CommonUtil.objToString(map.get("scySocialCode"));
+        if(CommonUtil.isEmpty(scySocialCode)){
+            throw new Exception("统一信用代码不能为空");
+        }
+        //统一信用代码正则校验
+        String checkSocialCode = "^([0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}|[1-9]\\d{14})$";
+        Pattern regeSocialCode = Pattern.compile(checkSocialCode);
+        Matcher matcherSocialCode = regeSocialCode.matcher(scySocialCode);
+        boolean isMatSocialCode = matcherSocialCode.matches();
+        if(!isMatSocialCode){
+            throw new Exception("统一信用代码格式错误");
+        }
+        //查询链属企业信息
+        LambdaQueryWrapper<SysCompany> queryWrapper = new LambdaQueryWrapper<>();
+        //统一社会信用代码
+        queryWrapper.eq(SysCompany::getScySocialCode,scySocialCode);
+        //企业名称
+        queryWrapper.like(SysCompany::getScyName,scyName);
+        //状态00
+        queryWrapper.ne(SysCompany::getScyStatus,DELETE_STATE);
+        List<SysCompany> list = iSysCompanyService.findSysCompanys(queryWrapper);
+        //链属联系人
+        String scrContarct = CommonUtil.objToString(map.get("scrContarct"));
+        if(scrContarct.length() > 30){
+            throw new Exception("联系人过长");
+        }
+        //链属联系人手机号
+        String scrContarctPhone = CommonUtil.objToString(map.get("scrContarctPhone"));
+        if(CommonUtil.isNotEmpty(scrContarctPhone)) {
+            if(scrContarctPhone.length() > 11){
+                throw new Exception("手机号不能超过11位");
+            }
+            String checkPhone = "^1[3|4|5|6|7|8|9][0-9]\\d{8}$";
+            Pattern regePhone = Pattern.compile(checkPhone);
+            Matcher matcherPhone = regePhone.matcher(scrContarctPhone);
+            boolean isMatPhone = matcherPhone.matches();
+            if (!isMatPhone) {
+                throw new Exception("手机格式不正确");
+            }
+        }
+        //链属联系人邮箱
+        String scrContarctEmail = CommonUtil.objToString(map.get("scrContarctEmail"));
+        if(CommonUtil.isNotEmpty(scrContarctEmail)) {
+            String checkEmail = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
+            Pattern regeEmail = Pattern.compile(checkEmail);
+            Matcher matcherEmail = regeEmail.matcher(scrContarctEmail);
+            boolean isMatEmail = matcherEmail.matches();
+            if (!isMatEmail) {
+                throw new Exception("邮箱格式不正确");
+            }
+        }
+        //创建主键
+        String scrId = IdUtils.fastSimpleUUID();
+        //链属企业Id
+        String scyId = "";
+        if(list.size() > 0) {
+            scyId = list.get(0).getScyId();
+            String finalScyId = scyId;
+            //判断两者是否已经链属
+            LambdaQueryWrapper<SysCompanyRel> wrapper = new LambdaQueryWrapper<>();
+            wrapper.and(i->i.eq(SysCompanyRel::getScrLaunchCompanyId, companyId).or().eq(SysCompanyRel::getScrReceiveCompanyId,  companyId));
+            wrapper.and(i->i.eq(SysCompanyRel::getScrLaunchCompanyId, finalScyId).or().eq(SysCompanyRel::getScrReceiveCompanyId, finalScyId));
+            wrapper.ne(SysCompanyRel::getScrStatus,DELETE_STATE);
+            List<SysCompanyRel> relList = iSysCompanyRelService.findSysCompanyRels(wrapper);
+            if(relList.size() > 0){
+                throw new Exception("已经和此企业链属,不得重复链属");
+            }
+            SysCompanyRel sysCompanyRel = new SysCompanyRel();
+            //主键
+            sysCompanyRel.setScrId(scrId);
+            //发起方
+            sysCompanyRel.setScrLaunchCompanyId(companyId);
+            //接收方
+            sysCompanyRel.setScrReceiveCompanyId(scyId);
+            //联系人
+            sysCompanyRel.setScrContarct(scrContarct);
+            //联系电话
+            sysCompanyRel.setScrContarctPhone(scrContarctPhone);
+            //邮箱
+            sysCompanyRel.setScrContarctEmail(scrContarctEmail);
+            //链属关系为供应商
+            if(NORMAL_STATE.equals(scrReceiveType)) {
+                //发起方为核心企业01
+                sysCompanyRel.setScrLaunchType(CONFIRM_STATE);
+                //接收方为供应商00
+                sysCompanyRel.setScrReceiveType(NORMAL_STATE);
+                //状态 01:正常
+                sysCompanyRel.setScrStatus(CONFIRM_STATE);
+            }else if(CONFIRM_STATE.equals(scrReceiveType)){
+                //发起方为供应商00
+                sysCompanyRel.setScrLaunchType(NORMAL_STATE);
+                //接收方为核心企业01
+                sysCompanyRel.setScrReceiveType(CONFIRM_STATE);
+                //状态 00:待链属
+                sysCompanyRel.setScrStatus(NORMAL_STATE);
+            }
+            //创建者
+            sysCompanyRel.setCreateBy(userId);
+            //创建时间
+            sysCompanyRel.setCreateTime(DateUtils.getNowDate());
+            iSysCompanyRelService.createSysCompanyRel(sysCompanyRel);
+        }else {
+            //新增链属公司信息
+            SysCompanySpare sysCompanySpare = new SysCompanySpare();
+            sysCompanySpare.setScpId(scrId);
+            sysCompanySpare.setScpCompanyId(companyId);
+            //企业名称
+            sysCompanySpare.setScpName(scyName);
+            //统一社会信用代码
+            sysCompanySpare.setScpSocialCode(scySocialCode);
+            //联系人
+            sysCompanySpare.setScpContarct(scrContarct);
+            //联系电话
+            sysCompanySpare.setScpContarctPhone(scrContarctPhone);
+            //邮箱
+            sysCompanySpare.setScpContarctEmail(scrContarctEmail);
+            //企业类型 00:供应商,01:核心企业
+            sysCompanySpare.setScpType(scrReceiveType);
+            //状态 00:正常
+            sysCompanySpare.setScpStatus(NORMAL_STATE);
+            //创建人
+            sysCompanySpare.setCreateBy(userId);
+            //创建时间
+            sysCompanySpare.setCreateTime(DateUtils.getNowDate());
+            //todo 短信通知
+            iSysCompanySpareService.createSysCompanySpare(sysCompanySpare);
+        }
+        return R.ok();
+    }
+
+    /**
+     * 拒绝与同意链属
+     * @param map
+     * @return
+     */
+    @PreAuthorize(hasPermi = "service:rel:update")
+    @Log(title = "拒绝与删除链属关系", businessType = BusinessType.UPDATE)
+    @PutMapping("/updateRel")
+    public R updateRel(@RequestBody Map<String,Object> map) throws Exception
+    {
+        String launchScrId = CommonUtil.objToString(map.get("launchScrId"));
+        if(CommonUtil.isEmpty(launchScrId)){
+            throw new Exception("要执行信息的主键为空");
+        }
+        String state = CommonUtil.objToString(map.get("state"));
+        if(CommonUtil.isEmpty(state)){
+            throw new Exception("要执行信息的状态为空");
+        }
+        SysCompanyRel sysCompanyRel = new SysCompanyRel();
+        //主键
+        sysCompanyRel.setScrId(launchScrId);
+        //状态01:同意 02:拒绝链属
+        sysCompanyRel.setScrStatus(state);
+        iSysCompanyRelService.updateById(sysCompanyRel);
+        return R.ok();
+    }
+
+    /**
+     * 删除链属
+     * @param launchScrId
+     * @return
+     */
+    @PreAuthorize(hasPermi = "service:rel:delete")
+    @Log(title = "删除链属公司", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{launchScrId}")
+    public R remove(@PathVariable String launchScrId)
+    {
+        SysCompanyRel sysCompanyRel = new SysCompanyRel();
+        //主键
+        sysCompanyRel.setScrId(launchScrId);
+        //状态99
+        sysCompanyRel.setScrStatus(DELETE_STATE);
+        iSysCompanyRelService.updateById(sysCompanyRel);
+        return R.ok();
+    }
+
+
+    /**
+     * 删除链属企业信息数据
+     * @param scpId
+     * @return
+     */
+    @PreAuthorize(hasPermi = "service:spare:removeSpare")
+    @Log(title = "删除未认证链属公司信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/removeSpare/{scpId}")
+    public R removeSpare(@PathVariable String scpId)
+    {
+        SysCompanySpare sysCompanySpare = new SysCompanySpare();
+        //主键
+        sysCompanySpare.setScpId(scpId);
+        //状态99
+        sysCompanySpare.setScpStatus(DELETE_STATE);
+        iSysCompanySpareService.updateById(sysCompanySpare);
+        return R.ok();
+    }
+
+    /**
+     * 查询企业详情
+     */
+    @GetMapping("/companyDetails")
+    @Log(title = "链属企业详情", businessType = BusinessType.OTHER)
+    @Transactional(rollbackFor = Exception.class)
+    public R companyDetails( String scyId )throws Exception {
+        LambdaQueryWrapper<SysCompany> queryWrapper = new LambdaQueryWrapper<>();
+        if(CommonUtil.isNotEmpty(scyId)) {
+            queryWrapper.like(SysCompany::getScyId, scyId);
+        }
+        List<SysCompany> list = iSysCompanyService.findSysCompanys(queryWrapper);
+        return R.ok(list);
+    }
+
+    /**
+     * 查询企业列表
+     */
+    @GetMapping("/listAllCompany")
+    @Log(title = "所有企业列表", businessType = BusinessType.OTHER)
+    @Transactional(rollbackFor = Exception.class)
+    public R listAllCompany()throws Exception {
+        LambdaQueryWrapper<SysCompany> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(SysCompany::getScyStatus,NORMAL_STATE);
+        List<SysCompany> list = iSysCompanyService.findSysCompanys(queryWrapper);
+        return R.ok(list);
+    }
+
+}

+ 29 - 0
sc-service/src/main/java/com/huyi/service/rel/mapper/OwnCompanyRelMapper.java

@@ -0,0 +1,29 @@
+package com.huyi.service.rel.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huyi.service.base.entity.SysCompanyRel;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 企业链属关系表 Mapper 接口
+ * </p>
+ *
+ * @author songqg
+ * @since 2021-08-16
+ */
+public interface OwnCompanyRelMapper extends BaseMapper<SysCompanyRel> {
+
+    /**
+     * 查询链属信息
+     * @param page
+     * @param map
+     * @return
+     */
+    public IPage<Map> selectCompanyRelList(Page<Map> page, @Param("paramMap")Map map);
+}

+ 28 - 0
sc-service/src/main/java/com/huyi/service/rel/service/IOwnCompanyRelService.java

@@ -0,0 +1,28 @@
+package com.huyi.service.rel.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huyi.service.base.entity.SysCompanyRel;
+import com.keao.tianhu.starter.mybatis.plus.entity.QueryRequest;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * ClassName: IOwnCompanyRelService<br>
+ * Description: SysCompanyRelService接口 <br>
+ * Company: keao
+ *
+ * @author songqg
+ * @version v1.0.0    2021-08-16  songqg    由Generator自动创建
+ */
+public interface IOwnCompanyRelService extends IService<SysCompanyRel> {
+
+    /**
+     * 查询链属信息
+     * @param request
+     * @param map
+     * @return
+     */
+    public IPage<Map> selectCompanyRelList(QueryRequest request, Map map);
+}

+ 38 - 0
sc-service/src/main/java/com/huyi/service/rel/service/impl/OwnCompanyRelServiceImpl.java

@@ -0,0 +1,38 @@
+package com.huyi.service.rel.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huyi.service.base.entity.SysCompanyRel;
+import com.huyi.service.rel.mapper.OwnCompanyRelMapper;
+import com.huyi.service.rel.service.IOwnCompanyRelService;
+import com.keao.tianhu.starter.mybatis.plus.entity.QueryRequest;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * ClassName: SysCompanyRelServiceImpl<br>
+ * Description: ISysCompanyRelService实现 <br>
+ * Company: keao
+ *
+ * @author songqg
+ * @version v1.0.0    2021-08-16  songqg    由Generator自动创建
+ */
+@Service
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
+public class OwnCompanyRelServiceImpl extends ServiceImpl<OwnCompanyRelMapper, SysCompanyRel> implements IOwnCompanyRelService {
+
+    @Autowired
+    private OwnCompanyRelMapper ownCompanyRelMapper;
+
+    @Override
+    public IPage<Map> selectCompanyRelList(QueryRequest request, Map map) {
+        Page page = new Page<>(request.getPageNum(), request.getPageSize());
+        return ownCompanyRelMapper.selectCompanyRelList(page,map);
+    }
+}

+ 22 - 0
sc-service/src/main/resources/mapper/base/SysCompanyRelMapper.xml

@@ -0,0 +1,22 @@
+<?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.huyi.service.base.mapper.SysCompanyRelMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.huyi.service.base.entity.SysCompanyRel">
+        <id column="scr_id" property="scrId" />
+        <result column="scr_launch_company_id" property="scrLaunchCompanyId" />
+        <result column="scr_receive_company_id" property="scrReceiveCompanyId" />
+        <result column="scr_status" property="scrStatus" />
+        <result column="scr_launch_type" property="scrLaunchType" />
+        <result column="scr_receive_type" property="scrReceiveType" />
+        <result column="scr_contarct" property="scrContarct" />
+        <result column="scr_contarct_phone" property="scrContarctPhone" />
+        <result column="scr_contarct_email" property="scrContarctEmail" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>

+ 23 - 0
sc-service/src/main/resources/mapper/base/SysCompanySpareMapper.xml

@@ -0,0 +1,23 @@
+<?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.huyi.service.base.mapper.SysCompanySpareMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.huyi.service.base.entity.SysCompanySpare">
+        <id column="scp_id" property="scpId" />
+        <result column="scp_company_id" property="scpCompanyId" />
+        <result column="scp_name" property="scpName" />
+        <result column="scp_social_code" property="scpSocialCode" />
+        <result column="scp_contarct" property="scpContarct" />
+        <result column="scp_contarct_phone" property="scpContarctPhone" />
+        <result column="scp_contarct_email" property="scpContarctEmail" />
+        <result column="scp_type" property="scpType" />
+        <result column="scp_remarks" property="scpRemarks" />
+        <result column="scp_status" property="scpStatus" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>

+ 17 - 0
sc-service/src/main/resources/mapper/base/SysUserCompanyRelMapper.xml

@@ -0,0 +1,17 @@
+<?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.huyi.service.base.mapper.SysUserCompanyRelMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.huyi.service.base.entity.SysUserCompanyRel">
+        <id column="sucr_user_id" property="sucrUserId" />
+        <result column="sucr_company_id" property="sucrCompanyId" />
+        <result column="sucr_dept_id" property="sucrDeptId" />
+        <result column="sucr_handler" property="sucrHandler" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>

+ 55 - 0
sc-service/src/main/resources/mapper/rel/OwnCompanyRelMapper.xml

@@ -0,0 +1,55 @@
+<?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.huyi.service.rel.mapper.OwnCompanyRelMapper">
+
+    <select id="selectCompanyRelList" parameterType="map" resultType="map">
+        SELECT
+            r.scr_id                'launchScrId',
+            r.scr_launch_company_id 'launchCompanyId',
+            r.scr_receive_company_id'launchReceiveScrCompanyId',
+            r.scr_status		    'launchScrStatus',
+            r.scr_contarct          'launchScrContarct',
+            r.scr_contarct_phone    'launchScrContarctPhone',
+            r.scr_contarct_email    'launchScrContarctEmail',
+            r.scr_launch_type       'launchScrLaunchType',
+            r.scr_receive_type      'launchScrReceiveType',
+            s.scy_id		        'launchScyId',
+            s.scy_social_code	    'launchScySocialCode',
+            s.scy_name		        'launchScyName',
+            s.scy_type		        'launchScyType',
+            s.scy_legal		        'launchScyLegal',
+            s.scy_phone		        'launchScyPhone',
+            p.scy_id		        'receiveScyId',
+            p.scy_social_code	    'receiveScySocialCode',
+            p.scy_name		        'receiveScyName',
+            p.scy_type		        'receiveScyType',
+            p.scy_legal		        'receiveScyLegal',
+            p.scy_phone		        'receiveScyPhone'
+        FROM sys_company_rel r
+        LEFT JOIN sys_company s ON r.scr_launch_company_id = s.scy_id
+        LEFT JOIN sys_company p ON r.scr_receive_company_id = p.scy_id
+        WHERE 1=1
+        <if test="paramMap.companyId != null and paramMap.companyId != '' ">
+            AND (r.scr_launch_company_id = #{paramMap.companyId} OR r.scr_receive_company_id = #{paramMap.companyId})
+        </if>
+        <if test="paramMap.companyName != null and paramMap.companyName != '' ">
+            AND (s.scy_name LIKE CONCAT('%', #{paramMap.companyName}, '%') OR p.scy_name LIKE CONCAT('%', #{paramMap.companyName}, '%'))
+        </if>
+        <if test="paramMap.scySocialCode != null and paramMap.scySocialCode != '' ">
+            AND (s.scy_social_code LIKE CONCAT('%', #{paramMap.scySocialCode}, '%') OR p.scy_social_code LIKE CONCAT('%', #{paramMap.scySocialCode}, '%'))
+        </if>
+        <if test="paramMap.scrType != null and paramMap.scrType != '' and paramMap.scrType == '00' ">
+            AND ((r.scr_launch_company_id = #{paramMap.companyId} AND r.scr_launch_type = '01')
+            OR (r.scr_receive_company_id = #{paramMap.companyId} AND r.scr_receive_type = '01'))
+        </if>
+        <if test="paramMap.scrType != null and paramMap.scrType != '' and paramMap.scrType == '01' ">
+            AND ((r.scr_launch_company_id = #{paramMap.companyId} AND r.scr_launch_type = '00')
+            OR (r.scr_receive_company_id = #{paramMap.companyId} AND r.scr_receive_type = '00'))
+        </if>
+        <if test="paramMap.scrStatus != null and paramMap.scrStatus != '' ">
+            AND r.scr_status = #{paramMap.scrStatus}
+        </if>
+        AND r.scr_status != '99'
+        ORDER BY r.create_time DESC
+    </select>
+</mapper>