Parcourir la source

协议管理代码的提交

dongxin il y a 1 an
Parent
commit
4a57e1f367
26 fichiers modifiés avec 1469 ajouts et 7 suppressions
  1. 81 0
      commons/src/main/java/com/jzg/commons/entity/dto/AgreementAddParam.java
  2. 21 0
      commons/src/main/java/com/jzg/commons/entity/dto/AgreementAuthParam.java
  3. 82 0
      commons/src/main/java/com/jzg/commons/entity/dto/AgreementEditParam.java
  4. 57 0
      commons/src/main/java/com/jzg/commons/entity/dto/AgreementParam.java
  5. 133 0
      commons/src/main/java/com/jzg/commons/entity/po/PtlAgreement.java
  6. 28 0
      commons/src/main/java/com/jzg/commons/entity/po/PtlAgreementDept.java
  7. 23 0
      commons/src/main/java/com/jzg/commons/entity/vo/AgreementInfoVo.java
  8. 24 0
      commons/src/main/java/com/jzg/commons/entity/vo/AgreementUserVo.java
  9. 153 0
      commons/src/main/java/com/jzg/commons/entity/vo/AgreementVo.java
  10. 3 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysDeptVo.java
  11. 1 1
      gateway/src/main/resources/application-dev.yml
  12. 5 4
      tenant/organization/pom.xml
  13. 3 1
      tenant/organization/src/main/java/com/jzg/organization/OrganizationApplication.java
  14. 21 0
      tenant/organization/src/main/java/com/jzg/organization/client/EsmInsCompanyClient.java
  15. 163 0
      tenant/organization/src/main/java/com/jzg/organization/controller/AgreementController.java
  16. 20 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/PtlAgreementDeptMapper.java
  17. 38 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/PtlAgreementMapper.java
  18. 8 1
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserMapper.java
  19. 36 0
      tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementDeptService.java
  20. 98 0
      tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementService.java
  21. 105 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementDeptServiceImpl.java
  22. 222 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementServiceImpl.java
  23. 2 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysMessageNoticeServiceImpl.java
  24. 15 0
      tenant/organization/src/main/resources/mapper/PtlAgreementDeptMapper.xml
  25. 113 0
      tenant/organization/src/main/resources/mapper/PtlAgreementMapper.xml
  26. 14 0
      tenant/organization/src/main/resources/mapper/SysUserMapper.xml

+ 81 - 0
commons/src/main/java/com/jzg/commons/entity/dto/AgreementAddParam.java

@@ -0,0 +1,81 @@
+package com.jzg.commons.entity.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "协议表新增dto")
+@Data
+public class AgreementAddParam {
+
+    @Schema(description = "协议名称")
+    @Size(min=1,max=50,message = "协议名称长度不能大于50")
+    @NotNull(message = "协议名称不能为空")
+    private String agreementTitle;
+
+    @Schema(description = "协议简称")
+    @Size(min=1,max=50,message = "协议简称长度不能大于50")
+    @NotNull(message = "协议简称不能为空")
+    private String agreementAbbreviation;
+
+    @Schema(description = "协议生效时间")
+//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @NotNull(message = "协议生效时间不能为空")
+    private LocalDateTime startDate;
+
+    @Schema(description = "协议失效时间")
+//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @NotNull(message = "协议失效时间不能为空")
+    private LocalDateTime endDate;
+
+    @Schema(description = "是否含增值税结算 0-否 1-是")
+    @NotNull(message = "请选择增是否含增值税结算")
+    private Integer withTax;
+
+    @Schema(description = "结算周期")
+    @NotNull(message = "请输入结算周期")
+    private Integer moneyTime;
+
+    @Size(min=1,max=500,message = "协议描述长度不能大于3")
+    @Schema(description = "协议描述")
+    @NotNull(message = "请输入协议描述")
+    private String agreementName;
+
+    @Schema(description = "协议归属id")
+    @NotNull(message = "请选择协议归属")
+    private String deptId;
+
+    @Schema(description = "关联-保险公司id")
+    @NotNull(message = "请选择保险公司")
+    private String companyId;
+
+    @Schema(description = "协议类型 1-平台协议-平台结算 2-私有协议-自行结算 3-网销协议-自行结算")
+    @NotNull(message = "请选择协议类型")
+    private Integer agreementType;
+
+    @Schema(description = "对接管理人id")
+    @NotNull(message = "请选择协议管理人")
+    private String custodianId;
+
+    @Schema(description = "对接人")
+    @NotNull(message = "请输入对接人姓名")
+    @Size(min=1,max=50,message = "对接人姓名长度不能大于50")
+    private String dockingPerson;
+
+    @Schema(description = "联系方式(对接人)")
+    @Size(min=1,max=11,message = "对接人联系方式长度不能大于11")
+    @NotNull(message = "请输入对接人手机号")
+    private String dockingPhone;
+
+    @Schema(description = "保司账号id")
+    @NotNull(message = "请选择出单账号")
+    private String attributionId;
+
+    @Schema(description = "协议文件")
+    private String fileId;
+
+}

+ 21 - 0
commons/src/main/java/com/jzg/commons/entity/dto/AgreementAuthParam.java

@@ -0,0 +1,21 @@
+package com.jzg.commons.entity.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.util.List;
+
+@Schema(description = "协议授权保存dto")
+@Data
+public class AgreementAuthParam {
+
+    @NotNull(message = "协议id不能为空")
+    @Schema(description = "协议id")
+    private String id;
+
+    @NotEmpty(message = "机构id不能为空")
+    @Schema(description = "机构id数组")
+    private List<String> deptIds;
+}

+ 82 - 0
commons/src/main/java/com/jzg/commons/entity/dto/AgreementEditParam.java

@@ -0,0 +1,82 @@
+package com.jzg.commons.entity.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "协议表新增dto")
+@Data
+public class AgreementEditParam {
+
+    @NotNull(message = "协议id不能为空")
+    @Schema(description = "协议id")
+    private String id;
+
+    @Schema(description = "协议名称")
+    @Size(min=1,max=50,message = "协议名称长度不能大于50")
+    @NotNull(message = "协议名称不能为空")
+    private String agreementTitle;
+
+    @Schema(description = "协议简称")
+    @Size(min=1,max=50,message = "协议简称长度不能大于50")
+    @NotNull(message = "协议简称不能为空")
+    private String agreementAbbreviation;
+
+    @Schema(description = "协议生效时间")
+    @NotNull(message = "协议生效时间不能为空")
+    private LocalDateTime startDate;
+
+    @Schema(description = "协议失效时间")
+    @NotNull(message = "协议失效时间不能为空")
+    private LocalDateTime endDate;
+
+    @Schema(description = "是否含增值税结算 0-否 1-是")
+    @NotNull(message = "请选择增是否含增值税结算")
+    private Integer withTax;
+
+    @Schema(description = "结算周期")
+    @Size(min=1,max=3,message = "结算周期长度不能大于3")
+    @NotNull(message = "请输入结算周期")
+    private Integer moneyTime;
+
+    @Size(min=1,max=500,message = "协议描述长度不能大于3")
+    @Schema(description = "协议描述")
+    @NotNull(message = "请输入协议描述")
+    private String agreementName;
+
+    @Schema(description = "协议归属id")
+    @NotNull(message = "请选择协议归属")
+    private String deptId;
+
+    @Schema(description = "关联-保险公司id")
+    @NotNull(message = "请选择保险公司")
+    private String companyId;
+
+    @Schema(description = "协议类型 1-平台协议-平台结算 2-私有协议-自行结算 3-网销协议-自行结算")
+    @NotNull(message = "请选择协议类型")
+    private Integer agreementType;
+
+    @Schema(description = "对接管理人id")
+    @NotNull(message = "请选择协议管理人")
+    private String custodianId;
+
+    @Schema(description = "对接人")
+    @NotNull(message = "请输入对接人姓名")
+    @Size(min=1,max=50,message = "对接人姓名长度不能大于50")
+    private String dockingPerson;
+
+    @Schema(description = "联系方式(对接人)")
+    @Size(min=1,max=11,message = "对接人联系方式长度不能大于11")
+    @NotNull(message = "请输入对接人手机号")
+    private String dockingPhone;
+
+    @Schema(description = "保司账号id")
+    @NotNull(message = "请选择出单账号")
+    private String attributionId;
+
+    @Schema(description = "协议文件")
+    private String fileId;
+}

+ 57 - 0
commons/src/main/java/com/jzg/commons/entity/dto/AgreementParam.java

@@ -0,0 +1,57 @@
+package com.jzg.commons.entity.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "协议表分页查询dto")
+@Data
+public class AgreementParam extends PageRequest {
+
+    /** 协议搜索值 */
+    @Schema(description = "协议搜索值")
+    private String searchValue;
+
+    /** 关联-保险公司id */
+    @Schema(description = "关联-保险公司id")
+    private String companyId;
+
+    @Schema(description = "协议类型 1-平台协议-平台结算 2-私有协议-自行结算 3-网销协议-自行结算")
+    private Integer agreementType;
+
+    @Schema(description = "有效状态 0.生效中 1.已失效")
+    private String validStatus;
+
+    @Schema(description = "协议状态 0-启用 1-停用")
+    private Integer isEnable;
+
+    @Schema(description = "是否含增值税结算 0-否 1-是")
+    private Integer withTax;
+
+    @Schema(description = "对接人(手机号,名字查询)")
+    private String dockingPerson;
+
+    @Schema(description = "出单账号")
+    private String attributionName;
+
+    @Schema(description = "生效开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime takeStartDate;
+
+    @Schema(description = "生效结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime takeEndDate;
+
+    @Schema(description = "失效开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime loseStartDate;
+
+    @Schema(description = "失效结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime loseEndDate;
+
+
+}

+ 133 - 0
commons/src/main/java/com/jzg/commons/entity/po/PtlAgreement.java

@@ -0,0 +1,133 @@
+package com.jzg.commons.entity.po;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jzg.commons.core.base.BaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 协议信息表
+ * @TableName ptl_agreement
+ */
+@Schema(description = "协议管理表")
+@Data
+public class PtlAgreement extends BaseModel {
+
+    /** 主键 */
+    @Schema(description = "主键")
+    private String id;
+
+    /** 协议类型 1-平台协议-平台结算 2-私有协议-自行结算 3-网销协议-自行结算*/
+    @Schema(description = "协议类型 1-平台协议-平台结算 2-私有协议-自行结算 3-网销协议-自行结算")
+    private Integer agreementType;
+
+    /** 协议代码 */
+    @Schema(description = "协议代码")
+    private String agreementCode;
+
+    /** 协议描述 */
+    @Schema(description = "协议描述")
+    private String agreementName;
+
+    /** 协议名称 */
+    @Schema(description = "协议名称")
+    private String agreementTitle;
+
+    /** 协议简称 */
+    @Schema(description = "协议简称")
+    private String agreementAbbreviation;
+
+    /** 协议状态 0-停用 1-在用 */
+    @Schema(description = "协议状态 0-启用 1-停用")
+    private Integer isEnable;
+
+    /** 关联-保险公司id */
+    @Schema(description = "关联-保险公司id")
+    private String companyId;
+
+    /** 协议起期 */
+    @Schema(description = "协议起期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime startDate;
+
+    /** 协议止期 */
+    @Schema(description = "协议止期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime endDate;
+
+    /** 结算周期 */
+    @Schema(description = "结算周期")
+    private Integer moneyTime;
+
+    /** 保单匹配协议日期类型(保单日期类型) 1-出单日期 2-起保日期*/
+    @Schema(description = "保单匹配协议日期类型(保单日期类型) 1-出单日期 2-起保日期")
+    private String matchType;
+
+    /** 对接人 */
+    @Schema(description = "对接人")
+    private String dockingPerson;
+
+    /** 联系方式(对接人)*/
+    @Schema(description = "联系方式(对接人)")
+    private String dockingPhone;
+
+    /** 是否含增值税结算 0-否 1-是 */
+    @Schema(description = "是否含增值税结算 0-否 1-是")
+    private Integer withTax;
+
+    /** 佣金发放方式 */
+    @Schema(description = "佣金发放方式")
+    private Integer moneyType;
+
+    /** 有效状态 0.无效 1.有效 */
+    @Schema(description = "有效状态 0.生效中 1.已失效")
+    private String validStatus;
+
+    /** 附件id */
+    @Schema(description = "附件id")
+    private String fileId;
+
+    /** 审核内容 */
+    @Schema(description = "审核内容")
+    private String auditContent;
+
+    /** 审核状态 0 申请审核 1 审核通过 2 审核不通过 */
+    @Schema(description = "审核状态 0 申请审核 1 审核通过 2 审核不通过")
+    private Integer auditStatus;
+
+    /** 序号 */
+    @Schema(description = "序号")
+    private Integer serialNumber;
+
+    /** 审核方式 1 人工审核 2 自动审核 */
+    @Schema(description = "审核方式 1 人工审核 2 自动审核")
+    private Integer auditType;
+
+    /** 内部机构id */
+    @Schema(description = "内部机构id")
+    private String deptId;
+
+    /** 是否是外部订单的费用  0 否 1 是 */
+    @Schema(description = "是否是外部订单的费用  0 否 1 是")
+    private Integer isExternal;
+
+    /** 对接管理人id */
+    @Schema(description = "对接管理人id")
+    private String custodianId;
+
+    /** 系统code */
+    @Schema(description = "系统code")
+    private String systemCode;
+
+    /** 保司账号id */
+    @Schema(description = "保司账号id")
+    private String attributionId;
+
+
+
+}

+ 28 - 0
commons/src/main/java/com/jzg/commons/entity/po/PtlAgreementDept.java

@@ -0,0 +1,28 @@
+package com.jzg.commons.entity.po;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 协议授权部门表
+ * @TableName ptl_agreement_dept
+ */
+@Schema(description = "协议授权部门表")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class PtlAgreementDept{
+
+    /**
+     * 协议id
+     */
+    private String agreementId;
+
+    /**
+     * 部门ID
+     */
+    private String deptId;
+
+}

+ 23 - 0
commons/src/main/java/com/jzg/commons/entity/vo/AgreementInfoVo.java

@@ -0,0 +1,23 @@
+package com.jzg.commons.entity.vo;
+
+import com.jzg.commons.entity.po.PtlAgreementDept;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Schema(description = "协议明细VO")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AgreementInfoVo {
+
+    @Schema(description = "协议信息")
+    private AgreementVo agreement;
+
+    @Schema(description = "部门授权信息")
+    private List<PtlAgreementDept> dept;
+
+}

+ 24 - 0
commons/src/main/java/com/jzg/commons/entity/vo/AgreementUserVo.java

@@ -0,0 +1,24 @@
+package com.jzg.commons.entity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "协议后线人员VO")
+@Data
+public class AgreementUserVo {
+
+    @Schema(description = "主键")
+    public String id;
+
+    @Schema(description = "用户id")
+    public String userId;
+
+    @Schema(description = "姓名")
+    public String name;
+
+    @Schema(description = "手机号")
+    public String mobile;
+
+    @Schema(description = "机构id")
+    public String deptId;
+}

+ 153 - 0
commons/src/main/java/com/jzg/commons/entity/vo/AgreementVo.java

@@ -0,0 +1,153 @@
+package com.jzg.commons.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jzg.commons.core.base.BaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "协议表VO")
+@Data
+public class AgreementVo extends BaseModel {
+
+    /** 主键 */
+    @Schema(description = "主键")
+    private String id;
+
+    /** 协议类型 1-平台协议-平台结算 2-私有协议-自行结算 3-网销协议-自行结算*/
+    @Schema(description = "协议类型 1-平台协议-平台结算 2-私有协议-自行结算 3-网销协议-自行结算")
+    private Integer agreementType;
+
+    /** 协议代码 */
+    @Schema(description = "协议代码")
+    private String agreementCode;
+
+    /** 协议描述 */
+    @Schema(description = "协议描述")
+    private String agreementName;
+
+    /** 协议名称 */
+    @Schema(description = "协议名称")
+    private String agreementTitle;
+
+    /** 协议简称 */
+    @Schema(description = "协议简称")
+    private String agreementAbbreviation;
+
+    /** 协议状态 0-停用 1-在用 */
+    @Schema(description = "协议状态 0-启用 1-停用")
+    private Integer isEnable;
+
+    /** 关联-保险公司id */
+    @Schema(description = "关联-保险公司id")
+    private String companyId;
+
+    /** 协议起期 */
+    @Schema(description = "协议起期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime startDate;
+
+    /** 协议止期 */
+    @Schema(description = "协议止期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime endDate;
+
+    /** 结算周期 */
+    @Schema(description = "结算周期")
+    private Integer moneyTime;
+
+    /** 保单匹配协议日期类型(保单日期类型) 1-出单日期 2-起保日期*/
+    @Schema(description = "保单匹配协议日期类型(保单日期类型) 1-出单日期 2-起保日期")
+    private String matchType;
+
+    /** 对接人 */
+    @Schema(description = "对接人")
+    private String dockingPerson;
+
+    /** 联系方式(对接人)*/
+    @Schema(description = "联系方式(对接人)")
+    private String dockingPhone;
+
+    /** 是否含增值税结算 0-否 1-是 */
+    @Schema(description = "是否含增值税结算 0-否 1-是")
+    private Integer withTax;
+
+    /** 佣金发放方式 */
+    @Schema(description = "佣金发放方式")
+    private Integer moneyType;
+
+    /** 有效状态 0.无效 1.有效 */
+    @Schema(description = "有效状态 0.生效中 1.已失效")
+    private String validStatus;
+
+    /** 附件id */
+    @Schema(description = "附件id")
+    private String fileId;
+
+    /** 审核内容 */
+    @Schema(description = "审核内容")
+    private String auditContent;
+
+    /** 审核状态 0 申请审核 1 审核通过 2 审核不通过 */
+    @Schema(description = "审核状态 0 申请审核 1 审核通过 2 审核不通过")
+    private Integer auditStatus;
+
+    /** 序号 */
+    @Schema(description = "序号")
+    private Integer serialNumber;
+
+    /** 审核方式 1 人工审核 2 自动审核 */
+    @Schema(description = "审核方式 1 人工审核 2 自动审核")
+    private Integer auditType;
+
+    /** 协议归属 */
+    @Schema(description = "协议归属id")
+    private String deptId;
+
+    /** 是否是外部订单的费用  0 否 1 是 */
+    @Schema(description = "是否是外部订单的费用  0 否 1 是")
+    private Integer isExternal;
+
+    /** 对接管理人id */
+    @Schema(description = "对接管理人id")
+    private String custodianId;
+
+    /** 系统code */
+    @Schema(description = "系统code")
+    private String systemCode;
+
+    /** 保司账号id */
+    @Schema(description = "保司账号id")
+    private String attributionId;
+
+    /** 保司账号用户名 */
+    @Schema(description = "保司账号用户名")
+    private String username;
+
+    /** 保司账号简称 */
+    @Schema(description = "保司账号简称")
+    private String userAbbr;
+
+    /** 对接管理人名称 */
+    @Schema(description = "对接管理人名称")
+    private String managerName;
+
+    /** 对接管理人部门 */
+    @Schema(description = "对接管理人部门")
+    private String deptName;
+
+    /** 附件名称 */
+    @Schema(description = "附件名称")
+    private String fileName;
+
+    /** 附件地址 */
+    @Schema(description = "附件地址")
+    private String fileUrl;
+
+    /** 关联-保险公司简称 */
+    @Schema(description = "关联-保险公司简称")
+    private String company;
+
+
+}

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysDeptVo.java

@@ -77,6 +77,9 @@ public class SysDeptVo implements Serializable {
     @Schema(description = "部门下的人数")
     private String userCount;
 
+    @Schema(description = "协议选中机构字段")
+    private Integer isCheck;
+
     public SysDeptVo(){}
 
     public SysDeptVo(SysDept sysDept){

+ 1 - 1
gateway/src/main/resources/application-dev.yml

@@ -15,6 +15,6 @@ spring:
         - id: tenant_route
           uri: http://localhost:8084/
           predicates:
-            - Path=/tenant/**,/dept/**,/area/**,/dict/**,/userInfo/**,/sysOrganization/**,/activity/**,/message/**,/messageNotice/**,/poster/**
+            - Path=/tenant/**,/dept/**,/area/**,/dict/**,/userInfo/**,/sysOrganization/**,/activity/**,/message/**,/messageNotice/**,/poster/**,/agreement/**
 
 

+ 5 - 4
tenant/organization/pom.xml

@@ -16,10 +16,11 @@
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
 
-<!--        <dependency>-->
-<!--            <groupId>org.springframework.cloud</groupId>-->
-<!--            <artifactId>spring-cloud-openfeign-core</artifactId>-->
-<!--        </dependency>-->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+
 
         <dependency>
             <groupId>com.jzg</groupId>

+ 3 - 1
tenant/organization/src/main/java/com/jzg/organization/OrganizationApplication.java

@@ -4,10 +4,12 @@ import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.ComponentScan;
 
 @SpringBootApplication
 @EnableDiscoveryClient
+@EnableFeignClients
 @ComponentScan(basePackages = {"com.jzg.commons","com.jzg.organization"})
 @MapperScan({"com.jzg.organization.mapper","com.jzg.commons.mapper"})
 public class OrganizationApplication {
@@ -15,4 +17,4 @@ public class OrganizationApplication {
         SpringApplication.run(OrganizationApplication.class, args);
     }
 
-}
+}

+ 21 - 0
tenant/organization/src/main/java/com/jzg/organization/client/EsmInsCompanyClient.java

@@ -0,0 +1,21 @@
+package com.jzg.organization.client;
+
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.EsmInsCompany;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@FeignClient(name="jzg-platform",url = "http://localhost:8083/")
+public interface EsmInsCompanyClient {
+
+
+    /**
+     * 根据id获取保险公司信息
+     * @param id
+     * @return
+     */
+    @GetMapping("/esmInsCompany/findById")
+    public HttpResult<EsmInsCompany> findById(@RequestParam String id);
+}

+ 163 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/AgreementController.java

@@ -0,0 +1,163 @@
+package com.jzg.organization.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.AgreementAddParam;
+import com.jzg.commons.entity.dto.AgreementAuthParam;
+import com.jzg.commons.entity.dto.AgreementEditParam;
+import com.jzg.commons.entity.dto.AgreementParam;
+import com.jzg.commons.entity.enums.YesNoEnum;
+import com.jzg.commons.entity.po.EsmInsCompany;
+import com.jzg.commons.entity.vo.AgreementVo;
+import com.jzg.commons.entity.vo.UpAndDownVo;
+import com.jzg.commons.util.AssertionUtils;
+import com.jzg.commons.util.StringUtils;
+import com.jzg.organization.client.EsmInsCompanyClient;
+import com.jzg.organization.service.PtlAgreementDeptService;
+import com.jzg.organization.service.PtlAgreementService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 协议管理接口
+ *
+ * @author dongxin
+ */
+@Tag(name="协议管理接口")
+@RestController
+@RequestMapping("/agreement")
+public class AgreementController  extends BaseController {
+
+    @Autowired
+    private PtlAgreementService agreementService;
+
+    @Autowired
+    private PtlAgreementDeptService agreementDeptService;
+
+    /**
+     * 消息列表分页
+     * @return
+     */
+    @PostMapping("/agreementList")
+    @Operation(summary = "协议列表分页")
+    public HttpResult agreementList(@RequestBody AgreementParam param){
+        Page<AgreementVo> result = agreementService.queryPage(param);
+        return HttpResult.ok(result);
+    }
+
+    /**
+     * 协议信息查询
+     * @param id
+     * @return
+     */
+    @GetMapping(value = { "/agreementGet"})
+    @Operation(summary = "协议信息查询")
+    public HttpResult agreementGet(String id) {
+        return HttpResult.ok(agreementService.queryById(id));
+    }
+
+    /**
+     * 协议添加
+     * @param param
+     * @return
+     */
+    @Operation(summary = "协议添加")
+    @PostMapping("/agreementAdd")
+    public HttpResult agreementAdd(@Validated @RequestBody AgreementAddParam param) {
+
+        boolean nameExists = agreementService.isExistsName(param.getAgreementTitle(), null);
+        AssertionUtils.isFail(nameExists,"协议名称重复!");
+        LocalDateTime startDate = param.getStartDate();
+        LocalDateTime endDate = param.getEndDate();
+        if(endDate.isBefore(startDate) || startDate.isEqual(endDate)){
+            AssertionUtils.isFail(nameExists,"协议生效时间不能大于失效时间!");
+        }
+        agreementService.agreementAdd(param);
+        return HttpResult.ok("新增成功");
+    }
+
+    /**
+     * 协议修改
+     * @param param
+     * @return
+     */
+    @Operation(summary = "协议修改")
+    @PostMapping("/agreementEdit")
+    public HttpResult agreementEdit(@Validated @RequestBody AgreementEditParam param) {
+
+        boolean nameExists = agreementService.isExistsName(param.getAgreementTitle(), param.getId());
+        AssertionUtils.isFail(nameExists,"协议名称重复!");
+        LocalDateTime startDate = param.getStartDate();
+        LocalDateTime endDate = param.getEndDate();
+        if(endDate.isBefore(startDate) || startDate.isEqual(endDate)){
+            AssertionUtils.isFail(nameExists,"协议生效时间不能大于失效时间!");
+        }
+        agreementService.agreementEdit(param);
+        return HttpResult.ok("修改成功");
+    }
+
+    /**
+     * 协议授权机构查询
+     * @param id
+     * @return
+     */
+    @GetMapping(value = { "/deptTree"})
+    @Operation(summary = "协议授权机构查询")
+    public HttpResult deptTree(String id) {
+        return HttpResult.ok(agreementDeptService.deptTree(id));
+    }
+
+    /**
+     * 协议授权保存
+     * @param param
+     * @return
+     */
+    @Operation(summary = "协议授权保存")
+    @PostMapping("/authSave")
+    public HttpResult authSave(@Validated @RequestBody AgreementAuthParam param) {
+        agreementDeptService.authSave(param);
+        return HttpResult.ok("授权成功");
+    }
+
+    /**
+     * 根据机构获取后线人员列表
+     * @param deptId
+     * @return
+     */
+    @GetMapping(value = { "/getUserByDeptId"})
+    @Operation(summary = "根据机构获取后线人员列表")
+    public HttpResult getUserByDeptId(String deptId) {
+        return HttpResult.ok(agreementService.getUserByDeptId(deptId));
+    }
+
+    /**
+     * 批量删除协议
+     *
+     * @param ids 主键串
+     */
+    @Operation(summary = "批量删除协议")
+    @DeleteMapping("/agreementDelete")
+    public HttpResult agreementDelete(String[] ids) {
+        return HttpResult.ok(agreementService.deleteByIds(List.of(ids))? "删除成功":"删除失败");
+    }
+
+    /**
+     * 启用/禁用协议
+     * @param upAndDownVo
+     * @return
+     */
+    @PostMapping("/sysUpAndDown")
+    @Operation(summary = "启用/禁用协议")
+    public HttpResult upAndDown(@RequestBody UpAndDownVo upAndDownVo) {
+        agreementService.upAndDown(upAndDownVo);
+        return HttpResult.ok(YesNoEnum.YES.equals(upAndDownVo.getOpType())? "启用成功": "禁用成功");
+    }
+}

+ 20 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/PtlAgreementDeptMapper.java

@@ -0,0 +1,20 @@
+package com.jzg.organization.mapper;
+
+import com.jzg.commons.entity.po.PtlAgreementDept;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @author dongxin
+* @description 针对表【ptl_agreement_dept(协议授权部门表)】的数据库操作Mapper
+* @createDate 2025-02-18 17:58:58
+* @Entity generator.domain.PtlAgreementDept
+*/
+@Mapper
+public interface PtlAgreementDeptMapper extends BaseMapper<PtlAgreementDept> {
+
+}
+
+
+
+

+ 38 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/PtlAgreementMapper.java

@@ -0,0 +1,38 @@
+package com.jzg.organization.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.entity.dto.AgreementParam;
+import com.jzg.commons.entity.po.PtlAgreement;
+import com.jzg.commons.entity.vo.AgreementVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+* @author dongxin
+* @description 针对表【ptl_agreement(协议信息表)】的数据库操作Mapper
+* @createDate 2025-02-18 10:49:25
+* @Entity generator.domain.PtlAgreement
+*/
+@Mapper
+public interface PtlAgreementMapper extends BaseMapper<PtlAgreement> {
+
+    /**
+     * 协议分页查询
+     * @param page
+     * @param param
+     * @return
+     */
+    Page<AgreementVo> queryPage( Page page, @Param("param") AgreementParam param);
+
+    /**
+     * 通过id获取协议
+     * @param id
+     * @return
+     */
+    AgreementVo queryById(@Param("id") String id);
+}
+
+
+
+

+ 8 - 1
tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserMapper.java

@@ -2,7 +2,7 @@ package com.jzg.organization.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jzg.commons.entity.po.SysUser;
-import com.jzg.commons.entity.po.SysUserJzgInfo;
+import com.jzg.commons.entity.vo.AgreementUserVo;
 import com.jzg.commons.entity.vo.SysUserInfoListVo;
 import com.jzg.commons.entity.vo.SysUserSelectVo;
 import com.jzg.commons.entity.vo.SysUserVo;
@@ -26,4 +26,11 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      * @return
      */
     List<String> getUserRoleName(String userId);
+
+    /**
+     * 根据机构获取后线人员列表
+     * @param deptId
+     * @return
+     */
+    List<AgreementUserVo> getUserByDeptId(@Param("deptId") String deptId);
 }

+ 36 - 0
tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementDeptService.java

@@ -0,0 +1,36 @@
+package com.jzg.organization.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.dto.AgreementAuthParam;
+import com.jzg.commons.entity.po.PtlAgreementDept;
+import com.jzg.commons.entity.vo.SysDeptVo;
+
+import java.util.List;
+
+/**
+* @author dongxin
+* @description 针对表【ptl_agreement_dept(协议授权部门表)】的数据库操作Service
+* @createDate 2025-02-18 17:58:58
+*/
+public interface PtlAgreementDeptService extends IService<PtlAgreementDept> {
+
+    /**
+     * 通过 协议id 获取 协议授权部门
+     * @param id
+     * @return
+     */
+    List<PtlAgreementDept> getByAgreementId(String id);
+
+    /**
+     * 获取协议授权机构树
+     * @param id
+     * @return
+     */
+    List<SysDeptVo> deptTree(String id);
+
+    /**
+     * 协议授权保存
+     * @param param
+     */
+    void authSave(AgreementAuthParam param);
+}

+ 98 - 0
tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementService.java

@@ -0,0 +1,98 @@
+package com.jzg.organization.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jzg.commons.entity.dto.AgreementAddParam;
+import com.jzg.commons.entity.dto.AgreementAuthParam;
+import com.jzg.commons.entity.dto.AgreementEditParam;
+import com.jzg.commons.entity.dto.AgreementParam;
+import com.jzg.commons.entity.po.PtlAgreement;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.vo.AgreementInfoVo;
+import com.jzg.commons.entity.vo.AgreementUserVo;
+import com.jzg.commons.entity.vo.AgreementVo;
+import com.jzg.commons.entity.vo.UpAndDownVo;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+
+import java.util.List;
+
+/**
+* @author dongxin
+* @description 针对表【ptl_agreement(协议信息表)】的数据库操作Service
+* @createDate 2025-02-18 10:49:25
+*/
+public interface PtlAgreementService extends IService<PtlAgreement> {
+
+    /**
+     * 协议分页查询
+     * @param param
+     * @return
+     */
+    Page<AgreementVo> queryPage(AgreementParam param);
+
+    /**
+     * 协议明细查询
+     * @param id
+     * @return
+     */
+    AgreementInfoVo queryById(String id);
+
+    /**
+     * 查询协议是否存在
+     * @param id
+     * @return
+     */
+    AgreementVo isExistById(String id);
+
+    /**
+     * 根据名称 判断是否存在数据
+     * @param agreementTitle
+     * @param id
+     * @return
+     */
+    boolean isExistsName(String agreementTitle, String id);
+
+    /**
+     * 协议新增
+     * @param param
+     */
+    void agreementAdd(AgreementAddParam param);
+
+    /**
+     * 协议修改
+     * @param param
+     */
+    void agreementEdit(AgreementEditParam param);
+
+    /**
+     * 根据机构获取后线人员列表
+     * @param deptId
+     * @return
+     */
+    List<AgreementUserVo> getUserByDeptId(String deptId);
+
+    /**
+     * 批量删除协议
+     * @param ids
+     * @return
+     */
+    boolean deleteByIds(List<String> ids);
+
+    /**
+     * 启用/禁用协议
+     * @param upAndDownVo
+     */
+    void upAndDown(UpAndDownVo upAndDownVo);
+
+    /**
+     * 禁用协议
+     * @param id
+     */
+    void unDeploy(String id);
+
+    /**
+     * 启用协议
+     * @param id
+     */
+    void reDeploy(String id);
+}

+ 105 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementDeptServiceImpl.java

@@ -0,0 +1,105 @@
+package com.jzg.organization.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.entity.dto.AgreementAuthParam;
+import com.jzg.commons.entity.po.PtlAgreementDept;
+import com.jzg.commons.entity.po.SysArea;
+import com.jzg.commons.entity.po.SysDept;
+import com.jzg.commons.entity.po.SysUserJzgInfo;
+import com.jzg.commons.entity.vo.SysDeptVo;
+import com.jzg.organization.mapper.PtlAgreementDeptMapper;
+import com.jzg.organization.mapper.SysDeptMapper;
+import com.jzg.organization.service.PtlAgreementDeptService;
+import com.jzg.organization.service.SysDeptService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+* @author dongxin
+* @description 针对表【ptl_agreement_dept(协议授权部门表)】的数据库操作Service实现
+* @createDate 2025-02-18 17:58:58
+*/
+@Service
+public class PtlAgreementDeptServiceImpl extends ServiceImpl<PtlAgreementDeptMapper, PtlAgreementDept>
+    implements PtlAgreementDeptService {
+
+    @Autowired
+    private BaseController baseController;
+
+    @Autowired
+    private SysDeptMapper deptMapper;
+
+    @Override
+    public List<PtlAgreementDept> getByAgreementId(String id) {
+        LambdaQueryWrapper<PtlAgreementDept> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(PtlAgreementDept::getAgreementId, id);
+        return list(lambdaQueryWrapper);
+    }
+
+    @Override
+    public List<SysDeptVo> deptTree(String id) {
+        // 获取所有协议选中的机构id
+        LambdaQueryWrapper<PtlAgreementDept> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(PtlAgreementDept::getAgreementId, id);
+        List<PtlAgreementDept> agreementDepts = list(wrapper);
+        Map<String, PtlAgreementDept> deptMap = agreementDepts.stream().collect(Collectors.toMap(PtlAgreementDept::getDeptId, dept -> dept));
+        String deptId = baseController.getUserDeptId();
+        List<SysDeptVo> sysDepts = new ArrayList<>();
+        SysDept sysDept = deptMapper.selectById(deptId);
+        SysDeptVo sysDeptVo = new SysDeptVo(sysDept);
+        List<SysDept> depts = deptMapper.selectDeptVoList(deptId, null);
+        List<SysDeptVo> voDept = new ArrayList<>();
+        depts.forEach(item->{
+            SysDeptVo sysDeptv = new SysDeptVo(item);
+            if(deptMap.containsKey(sysDeptv.getId())){
+                sysDeptv.setIsCheck(1);
+            }else{
+                sysDeptv.setIsCheck(0);
+            }
+            voDept.add(sysDeptv);
+        });
+        Map<String, List<SysDeptVo>> map = voDept.stream().collect(Collectors.groupingBy(SysDeptVo::getParentId));
+        voDept.forEach(i -> i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>())));
+        if(!Objects.isNull(sysDept)) {
+            sysDepts = map.get(sysDeptVo.getParentId());
+        }else{
+            sysDepts = map.get("0");
+        }
+        List<SysDeptVo> newResultDept = new ArrayList<>();
+        newResultDept.addAll(sysDepts);
+        return newResultDept;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void authSave(AgreementAuthParam param) {
+        // 删除之前所有的授权id
+        LambdaQueryWrapper<PtlAgreementDept> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(PtlAgreementDept::getAgreementId, param.getId());
+        this.remove(wrapper);
+
+        // 新增保存授权数据
+        List<String> deptIds = param.getDeptIds();
+        List<PtlAgreementDept> agreementDepts = new ArrayList<>();
+        deptIds.forEach(deptId->{
+            PtlAgreementDept dept = new PtlAgreementDept(param.getId(),deptId);
+            agreementDepts.add(dept);
+        });
+        this.saveBatch(agreementDepts);
+    }
+}
+
+
+
+

+ 222 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementServiceImpl.java

@@ -0,0 +1,222 @@
+package com.jzg.organization.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.convert.Convert;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.AgreementAddParam;
+import com.jzg.commons.entity.dto.AgreementAuthParam;
+import com.jzg.commons.entity.dto.AgreementEditParam;
+import com.jzg.commons.entity.dto.AgreementParam;
+import com.jzg.commons.entity.enums.YesNoEnum;
+import com.jzg.commons.entity.po.EsmInsCompany;
+import com.jzg.commons.entity.po.PtlAgreement;
+import com.jzg.commons.entity.po.PtlAgreementDept;
+import com.jzg.commons.entity.po.SysSystem;
+import com.jzg.commons.entity.vo.AgreementInfoVo;
+import com.jzg.commons.entity.vo.AgreementUserVo;
+import com.jzg.commons.entity.vo.AgreementVo;
+import com.jzg.commons.entity.vo.UpAndDownVo;
+import com.jzg.commons.exception.SystemException;
+import com.jzg.commons.util.MinioUtils;
+import com.jzg.commons.util.StringUtils;
+import com.jzg.commons.util.idgen.IdGenerate;
+import com.jzg.commons.util.idgen.IdWorker;
+import com.jzg.organization.client.EsmInsCompanyClient;
+import com.jzg.organization.mapper.PtlAgreementMapper;
+import com.jzg.organization.mapper.SysUserMapper;
+import com.jzg.organization.service.PtlAgreementDeptService;
+import com.jzg.organization.service.PtlAgreementService;
+import jakarta.annotation.Resource;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Objects;
+
+/**
+* @author dongxin
+* @description 针对表【ptl_agreement(协议信息表)】的数据库操作Service实现
+* @createDate 2025-02-18 10:49:25
+*/
+@Service
+public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, PtlAgreement>
+    implements PtlAgreementService {
+
+    @Value("${minio.bucket-name}")
+    private String bucketName;
+
+    @Autowired
+    private PtlAgreementDeptService agreementDeptService;
+
+    @Qualifier("baseController")
+    @Autowired
+    private BaseController baseController;
+
+    @Autowired
+    private EsmInsCompanyClient companyClient;
+
+    @Autowired
+    private SysUserMapper userMapper;
+
+
+    @Override
+    public Page<AgreementVo> queryPage(AgreementParam param) {
+        Page<AgreementVo> page = baseMapper.queryPage(param.getPage(), param);
+        List<AgreementVo> agreementVos = page.getRecords();
+        if(CollUtil.isNotEmpty(agreementVos)){
+            for (AgreementVo agreementVo : agreementVos) {
+                // 获取文件外链地址
+                String fileUrl = MinioUtils.getPresignedObjectUrl(bucketName,agreementVo.getFileName());
+                agreementVo.setFileUrl(fileUrl);
+                LocalDateTime startDate = agreementVo.getStartDate();
+                LocalDateTime endDate = agreementVo.getEndDate();
+                LocalDateTime now = LocalDateTime.now();
+                PtlAgreement agreement = new PtlAgreement();
+                agreement.setId(agreementVo.getId());
+                //更新是否有效
+                if (now.isEqual(startDate) || (now.isAfter(startDate) && now.isBefore(endDate))) {
+                    agreement.setValidStatus("0");
+                } else {
+                    agreement.setValidStatus("1");
+                }
+                updateById(agreement);
+            }
+        }
+        return page;
+    }
+
+    @Override
+    public AgreementInfoVo queryById(String id) {
+        AgreementVo agreementVo = this.isExistById(id);
+
+        // 获取协议授权
+        List<PtlAgreementDept> deptList = agreementDeptService.getByAgreementId(id);
+        AgreementInfoVo agreementInfoVo = new AgreementInfoVo(agreementVo,deptList);
+        return agreementInfoVo;
+    }
+
+    @Override
+    public AgreementVo isExistById(String id) {
+        AgreementVo agreementVo = baseMapper.queryById(id);
+        if (ObjectUtils.isEmpty(agreementVo)) {
+            throw new SystemException("协议id不存在!");
+        }
+        return agreementVo;
+    }
+
+    @Override
+    public boolean isExistsName(String agreementTitle, String id) {
+        long count = this.count(new LambdaQueryWrapper<PtlAgreement>()
+                .eq(PtlAgreement::getAgreementTitle, agreementTitle)
+                .ne(StringUtils.isNotNull(id),PtlAgreement::getId, id)
+        );
+        return count > 0;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void agreementAdd(AgreementAddParam param) {
+        PtlAgreement ptlAgreement = new PtlAgreement();
+        BeanUtils.copyProperties(param,ptlAgreement);
+        String sysCode = baseController.getUserSystemCode();
+
+        // 获取保险公司信息
+        HttpResult<EsmInsCompany> result = companyClient.findById(param.getCompanyId());
+        String companyCode = "";
+        if(result.getCode() == 200 && Objects.nonNull(result.getData())){
+            companyCode = result.getData().getCompanyCode();
+        }else{
+            throw new SystemException("无法获取到保险公司信息");
+        }
+        // code生成规则 系统code + 保险公司code + 时间戳
+        ptlAgreement.setAgreementCode(sysCode + companyCode + +System.currentTimeMillis());
+        ptlAgreement.setSerialNumber(0);
+        ptlAgreement.setIsExternal(0);
+        ptlAgreement.setIsEnable(YesNoEnum.NO.getCode()); // 启用
+
+        // 判断生效状态
+        LocalDateTime startDate = param.getStartDate();
+        LocalDateTime endDate = param.getEndDate();
+        LocalDateTime now = LocalDateTime.now();
+        //更新是否有效
+        if (now.isEqual(startDate) || (now.isAfter(startDate) && now.isBefore(endDate))) {
+            ptlAgreement.setValidStatus("0");
+        } else {
+            ptlAgreement.setValidStatus("1");
+        }
+        save(ptlAgreement);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void agreementEdit(AgreementEditParam param) {
+        PtlAgreement ptlAgreement = new PtlAgreement();
+        BeanUtils.copyProperties(param,ptlAgreement);
+        // 判断生效状态
+        LocalDateTime startDate = param.getStartDate();
+        LocalDateTime endDate = param.getEndDate();
+        LocalDateTime now = LocalDateTime.now();
+        //更新是否有效
+        if (now.isEqual(startDate) || (now.isAfter(startDate) && now.isBefore(endDate))) {
+            ptlAgreement.setValidStatus("0");
+        } else {
+            ptlAgreement.setValidStatus("1");
+        }
+        updateById(ptlAgreement);
+    }
+
+    @Override
+    public List<AgreementUserVo> getUserByDeptId(String deptId) {
+        List<AgreementUserVo> userVoList = userMapper.getUserByDeptId(deptId);
+        return userVoList;
+    }
+
+    @Override
+    public boolean deleteByIds(List<String> ids) {
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+
+    @Override
+    public void upAndDown(UpAndDownVo upAndDownVo) {
+        if(YesNoEnum.YES.equals(upAndDownVo.getOpType())) {
+            upAndDownVo.getIds().forEach(id->{
+                reDeploy(Convert.toStr(id));
+            });
+        } else {
+            upAndDownVo.getIds().forEach(id->{
+                unDeploy(Convert.toStr(id));
+            });
+        }
+    }
+
+    @Override
+    public void unDeploy(String id) {
+        PtlAgreement agreement = new PtlAgreement();
+        agreement.setId(id);
+        agreement.setIsEnable(YesNoEnum.NO.getCode());
+        baseMapper.updateById(agreement);
+    }
+
+    @Override
+    public void reDeploy(String id) {
+        PtlAgreement agreement = new PtlAgreement();
+        agreement.setId(id);
+        agreement.setIsEnable(YesNoEnum.YES.getCode());
+        baseMapper.updateById(agreement);
+    }
+
+}
+
+
+
+

+ 2 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysMessageNoticeServiceImpl.java

@@ -21,6 +21,7 @@ import com.jzg.organization.service.SysMessageNoticeService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Map;
@@ -62,6 +63,7 @@ public class SysMessageNoticeServiceImpl extends ServiceImpl<SysMessageNoticeMap
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean deleteByIds(List<String> ids) {
         // 删除 通知用户表
         LambdaQueryWrapper<SysNoticeUser> wrapper = new LambdaQueryWrapper<>();

+ 15 - 0
tenant/organization/src/main/resources/mapper/PtlAgreementDeptMapper.xml

@@ -0,0 +1,15 @@
+<?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.jzg.organization.mapper.PtlAgreementDeptMapper">
+
+    <resultMap id="BaseResultMap" type="com.jzg.commons.entity.po.PtlAgreementDept">
+            <result property="agreementId" column="agreement_id" jdbcType="BIGINT"/>
+            <result property="deptId" column="dept_id" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        agreement_id,dept_id
+    </sql>
+</mapper>

+ 113 - 0
tenant/organization/src/main/resources/mapper/PtlAgreementMapper.xml

@@ -0,0 +1,113 @@
+<?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.jzg.organization.mapper.PtlAgreementMapper">
+
+    <resultMap id="BaseResultMap" type="com.jzg.commons.entity.po.PtlAgreement">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="agreementType" column="agreement_type" jdbcType="TINYINT"/>
+            <result property="agreementCode" column="agreement_code" jdbcType="VARCHAR"/>
+            <result property="agreementName" column="agreement_name" jdbcType="VARCHAR"/>
+            <result property="agreementTitle" column="agreement_title" jdbcType="VARCHAR"/>
+            <result property="agreementAbbreviation" column="agreement_abbreviation" jdbcType="VARCHAR"/>
+            <result property="isEnable" column="is_enable" jdbcType="TINYINT"/>
+            <result property="companyId" column="company_id" jdbcType="VARCHAR"/>
+            <result property="startDate" column="start_date" jdbcType="TIMESTAMP"/>
+            <result property="endDate" column="end_date" jdbcType="TIMESTAMP"/>
+            <result property="moneyTime" column="money_time" jdbcType="INTEGER"/>
+            <result property="matchType" column="match_type" jdbcType="VARCHAR"/>
+            <result property="dockingPerson" column="docking_person" jdbcType="VARCHAR"/>
+            <result property="dockingPhone" column="docking_phone" jdbcType="VARCHAR"/>
+            <result property="validStatus" column="valid_status" jdbcType="VARCHAR"/>
+            <result property="moneyType" column="money_type" jdbcType="TINYINT"/>
+            <result property="fileId" column="file_id" jdbcType="VARCHAR"/>
+            <result property="auditContent" column="audit_content" jdbcType="VARCHAR"/>
+            <result property="auditStatus" column="audit_status" jdbcType="TINYINT"/>
+            <result property="serialNumber" column="serial_number" jdbcType="INTEGER"/>
+            <result property="withTax" column="with_tax" jdbcType="TINYINT"/>
+            <result property="auditType" column="audit_type" jdbcType="TINYINT"/>
+            <result property="deptId" column="dept_id" jdbcType="VARCHAR"/>
+            <result property="isExternal" column="is_external" jdbcType="TINYINT"/>
+            <result property="custodianId" column="custodian_id" jdbcType="VARCHAR"/>
+            <result property="systemCode" column="system_code" jdbcType="VARCHAR"/>
+            <result property="attributionId" column="attribution_id" jdbcType="VARCHAR"/>
+            <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+            <result property="isDelete" column="is_delete" jdbcType="TINYINT"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        pa.id,pa.agreement_type,pa.agreement_code,
+        pa.agreement_name,pa.agreement_title,pa.agreement_abbreviation,
+        pa.is_enable,pa.company_id,
+        pa.start_date,pa.end_date,pa.money_time,
+        pa.match_type,pa.docking_person,pa.docking_phone,
+        pa.valid_status,pa.money_type,pa.file_id,
+        pa.audit_content,pa.audit_status,pa.serial_number,
+        pa.with_tax,pa.audit_type,pa.dept_id,
+        pa.is_external,pa.custodian_id,pa.system_code,pa.attribution_id,
+        pa.create_by,pa.create_time,pa.update_by,
+        pa.create_by,pa.create_time,pa.update_by,
+        pa.update_time,pa.is_delete,paa.username,paa.user_abbr as userAbber,
+        suji.name as managerName,sd.name as deptName,suf.file_name as fileName, eic.name_simple as company
+    </sql>
+    <select id="queryPage" resultType="com.jzg.commons.entity.vo.AgreementVo">
+        select <include refid="Base_Column_List"/>
+        FROM ptl_agreement pa
+        LEFT JOIN ptl_agreement_attribution paa on pa.attribution_id = paa.id
+        LEFT JOIN sys_user_jzg_info suji on pa.custodian_id = suji.user_id
+        LEFT JOIN sys_dept sd on suji.dept_id = sd.id
+        LEFT JOIN sys_upload_files suf on pa.file_id = suf.id
+        LEFT JOIN esm_ins_company eic on pa.company_id = eic.id
+        <where>
+            pa.is_delete = 0
+            <if test="param.searchValue != null and param.searchValue != ''">
+                and ( pa.agreement_code = #{param.searchValue} or pa.agreement_title = #{param.searchValue} or pa.agreement_abbreviation = #{param.searchValue})
+            </if>
+            <if test="param.companyId != null and param.companyId != ''">
+                and pa.company_id = #{param.companyId}
+            </if>
+            <if test="param.agreementType != null ">
+                and pa.agreement_type = #{param.agreementType}
+            </if>
+            <if test="param.validStatus != null ">
+                and pa.valid_status = #{param.validStatus}
+            </if>
+            <if test="param.isEnable != null ">
+                and pa.is_enable = #{param.isEnable}
+            </if>
+            <if test="param.withTax != null ">
+                and pa.with_tax = #{param.withTax}
+            </if>
+            <if test="param.dockingPerson != null and param.dockingPerson != ''">
+                and ( pa.docking_person = #{param.dockingPerson} or pa.docking_phone = #{param.dockingPerson} )
+            </if>
+            <if test="param.attributionName != null and param.attributionName != ''">
+                and ( paa.username = #{param.attributionName} or paa.user_abbr = #{param.attributionName} )
+            </if>
+            <if test="param.takeStartDate != null and param.takeEndDate != null">
+                and DATE_FORMAT(pa.start_date, '%Y-%m-%d') between #{param.takeStartDate} AND #{param.takeEndDate}
+            </if>
+            <if test="param.loseStartDate != null and param.loseEndDate != null">
+                and DATE_FORMAT(pa.end_date, '%Y-%m-%d') between #{param.loseStartDate} AND #{param.loseEndDate}
+            </if>
+
+        </where>
+    </select>
+    <select id="queryById" resultType="com.jzg.commons.entity.vo.AgreementVo">
+        select <include refid="Base_Column_List"/>
+        FROM ptl_agreement pa
+        LEFT JOIN ptl_agreement_attribution paa on pa.attribution_id = paa.id
+        LEFT JOIN sys_user_jzg_info suji on pa.custodian_id = suji.user_id
+        LEFT JOIN sys_dept sd on suji.dept_id = sd.id
+        LEFT JOIN sys_upload_files suf on pa.file_id = suf.id
+        <where>
+            <if test="id != null and id != ''">
+                and pa.id = #{id}
+            </if>
+        </where>
+    </select>
+</mapper>

+ 14 - 0
tenant/organization/src/main/resources/mapper/SysUserMapper.xml

@@ -62,4 +62,18 @@
         WHERE
             sur.user_id = #{userId}
     </select>
+    <select id="getUserByDeptId" resultType="com.jzg.commons.entity.vo.AgreementUserVo">
+        SELECT suji.id, suji.user_id as userId, suji.name, su.mobile, suji.dept_id as deptId
+        FROM sys_user_jzg_info suji
+        LEFT JOIN sys_user su on suji.user_id = su.id
+        <where>
+            1=1
+            and suji.is_delete = 0 and suji.type_attr = 2
+            <if test="deptId != null and deptId != ''">
+                AND suji.dept_id = #{deptId}
+            </if>
+        </where>
+        group by suji.id
+        order by suji.create_time desc
+    </select>
 </mapper>