Explorar el Código

Merge remote-tracking branch 'origin/master'

wks hace 1 año
padre
commit
1704717199
Se han modificado 55 ficheros con 997 adiciones y 229 borrados
  1. 6 0
      authentication/src/main/java/com/jzg/config/JzgAuthenticationProvider.java
  2. 8 0
      authentication/src/main/resources/application.yml
  3. 80 53
      commons/src/main/java/com/jzg/commons/config/DataPermissionInterceptor.java
  4. 2 0
      commons/src/main/java/com/jzg/commons/config/MultiTenantHandler.java
  5. 6 7
      commons/src/main/java/com/jzg/commons/config/MyBatisPlusConfig.java
  6. 10 0
      commons/src/main/java/com/jzg/commons/constants/Constants.java
  7. 7 0
      commons/src/main/java/com/jzg/commons/constants/ReturnInformation.java
  8. 28 0
      commons/src/main/java/com/jzg/commons/entity/dto/CostTypeEntity.java
  9. 20 6
      commons/src/main/java/com/jzg/commons/entity/dto/PtlAgreementCostAdd.java
  10. 110 0
      commons/src/main/java/com/jzg/commons/entity/dto/PtlAgreementCostEnd.java
  11. 15 0
      commons/src/main/java/com/jzg/commons/entity/dto/RulesAttParam.java
  12. 8 2
      commons/src/main/java/com/jzg/commons/entity/po/PtlAgreementCost.java
  13. 15 1
      commons/src/main/java/com/jzg/commons/entity/po/PtlAgreementCostRule.java
  14. 5 1
      commons/src/main/java/com/jzg/commons/entity/po/PtlAgreementUndwrtRulesAttr.java
  15. 1 1
      commons/src/main/java/com/jzg/commons/entity/po/PtlAgreementUndwrtRulesAttrLink.java
  16. 38 0
      commons/src/main/java/com/jzg/commons/entity/po/PtlAreaLicense.java
  17. 15 0
      commons/src/main/java/com/jzg/commons/entity/po/RuleConditionsVerify.java
  18. 10 1
      commons/src/main/java/com/jzg/commons/entity/po/SysActivity.java
  19. 3 0
      commons/src/main/java/com/jzg/commons/entity/vo/AgreementUserVo.java
  20. 13 0
      commons/src/main/java/com/jzg/commons/entity/vo/PtlAgreementCostVo.java
  21. 138 0
      commons/src/main/java/com/jzg/commons/util/ListUtils.java
  22. 15 1
      gateway/src/main/resources/application-dev.yml
  23. 3 14
      gateway/src/main/resources/application.yml
  24. 1 1
      platform/src/main/java/com/jzg/controller/SysSystemController.java
  25. 1 1
      platform/src/main/java/com/jzg/service/SysSystemService.java
  26. 0 2
      platform/src/main/java/com/jzg/service/impl/SysSystemServiceImpl.java
  27. 11 7
      platform/src/main/resources/application.yml
  28. 2 2
      tenant/organization/src/main/java/com/jzg/organization/controller/AgreementController.java
  29. 23 6
      tenant/organization/src/main/java/com/jzg/organization/controller/PtlAgreementCostController.java
  30. 32 0
      tenant/organization/src/main/java/com/jzg/organization/controller/PtlAreaLicenseController.java
  31. 15 6
      tenant/organization/src/main/java/com/jzg/organization/controller/PtlNewAgreementController.java
  32. 4 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/PtlAgreementCostRuleMapper.java
  33. 3 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/PtlAgreementCostTypeMapper.java
  34. 9 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/PtlAreaLicenseMapper.java
  35. 3 1
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserMapper.java
  36. 1 1
      tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementCostRuleService.java
  37. 13 1
      tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementCostService.java
  38. 1 1
      tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementCostTypeService.java
  39. 3 4
      tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementService.java
  40. 5 0
      tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementUndwrtRulesAttrService.java
  41. 2 0
      tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementUndwrtRulesDictService.java
  42. 18 0
      tenant/organization/src/main/java/com/jzg/organization/service/PtlAreaLicenseService.java
  43. 6 4
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostRuleServiceImpl.java
  44. 84 30
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostServiceImpl.java
  45. 5 6
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostTypeServiceImpl.java
  46. 1 1
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementDeptServiceImpl.java
  47. 15 12
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementServiceImpl.java
  48. 56 26
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementUndwrtRulesAttrServiceImpl.java
  49. 4 2
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementUndwrtRulesDictServiceImpl.java
  50. 24 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAreaLicenseServiceImpl.java
  51. 44 22
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysActivityServiceImpl.java
  52. 27 2
      tenant/organization/src/main/resources/application.yml
  53. 8 0
      tenant/organization/src/main/resources/mapper/PtlAgreementCostMapper.xml
  54. 15 3
      tenant/organization/src/main/resources/mapper/SysActivityMapper.xml
  55. 5 1
      tenant/organization/src/main/resources/mapper/SysUserMapper.xml

+ 6 - 0
authentication/src/main/java/com/jzg/config/JzgAuthenticationProvider.java

@@ -127,6 +127,8 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
                 jzgUserInfo.setHeadSculpture(MinioUtils.getPresignedObjectUrl("jzg", jzgUserInfo.getHeadSculpture()));
             }
         }
+
+
         //角色数据权限
         List<String> roleIds = userPerms.stream().map(x -> x.getRoleId()).collect(Collectors.toList()).stream().distinct().collect(Collectors.toList());
         List<SysRoleDataScope> sysRoleDataScopes = sysRoleDataScopeMapper.selectList(new LambdaQueryWrapper<SysRoleDataScope>()
@@ -143,6 +145,10 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
             } else {
                 List<SysRoleDataScope> dataScopes = sysRoleDataScopes.stream().filter(x -> x.getDataMark().equals("1")).collect(Collectors.toList());
                 dataDeptIds.add(jzgUserInfo.getDeptId());
+                if (!dataScopes.isEmpty()) {
+                    sysRoleDataScopeVo.setDataMark("1");
+                    sysRoleDataScopeVo.setDeptIds(dataDeptIds);
+                }
                 List<SysRoleDataScope> dataScopes3 = sysRoleDataScopes.stream().filter(x -> x.getDataMark().equals("3")).collect(Collectors.toList());
                 List<String> dataScopeLinkRoleIds = dataScopes3.stream().map(x -> x.getRoleId()).collect(Collectors.toList());
                 if(!dataScopeLinkRoleIds.isEmpty()) {

+ 8 - 0
authentication/src/main/resources/application.yml

@@ -8,3 +8,11 @@ mybatis-plus:
   mapper-locations: classpath*:/mapper/*Mapper.xml
   configuration:
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+data-scope:
+  tables:
+    - sys_system
+    - sys_user
+    - sys_user_role
+    - sys_organization_user_link
+    - sys_area

+ 80 - 53
commons/src/main/java/com/jzg/commons/config/DataPermissionInterceptor.java

@@ -1,9 +1,17 @@
 package com.jzg.commons.config;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.handler.MultiDataPermissionHandler;
 import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
+import com.jzg.commons.constants.SystemConstants;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.entity.properties.DataScopeProperties;
+import net.sf.jsqlparser.JSQLParserException;
+import net.sf.jsqlparser.expression.Expression;
+import net.sf.jsqlparser.expression.ExpressionVisitor;
+import net.sf.jsqlparser.parser.CCJSqlParserUtil;
+import net.sf.jsqlparser.parser.SimpleNode;
+import net.sf.jsqlparser.schema.Table;
 import org.apache.ibatis.executor.Executor;
 import org.apache.ibatis.executor.statement.StatementHandler;
 import org.apache.ibatis.mapping.MappedStatement;
@@ -17,23 +25,25 @@ import org.apache.ibatis.session.SqlSessionFactory;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
 
 import java.lang.reflect.Field;
 import java.sql.Connection;
 import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * 数据权限拦截器
  */
+@Order(2)
 @Intercepts({
         @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}),
 //        @Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class})
 })
-public class DataPermissionInterceptor implements InnerInterceptor {
+    public class DataPermissionInterceptor implements MultiDataPermissionHandler {
 
     private List<String> ignoredTables;
 
@@ -52,8 +62,6 @@ public class DataPermissionInterceptor implements InnerInterceptor {
         this.dataScopeProperties = dataScopeProperties;
     }
 
-
-
     private boolean shouldIgnoreTable(String sql) {
         for (String table : dataScopeProperties.getTables()) {
             if (sql.toLowerCase().contains(table.toLowerCase())) {
@@ -63,55 +71,74 @@ public class DataPermissionInterceptor implements InnerInterceptor {
         return false;
     }
 
+    private String getTableName(Table table){
+        return String.valueOf(table.getAlias() == null ? table.getName() : table.getAlias().getName());
+    }
+
     @Override
-    public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
-
-        try {
-            if(shouldIgnoreTable(boundSql.getSql())) {
-                String currentUserDeptId = baseController.getUserDeptId();
-                String userDataScope = baseController.getUserDataScope();
-                JSONObject dataScope = JSONObject.parseObject(userDataScope);
-                List<String> deptIds = new ArrayList<>();
-                StringBuilder additionalSql = new StringBuilder();
-                //如果数据权限为空   并且用户名为admin 则不做数据权限
-                if(dataScope.isEmpty() && baseController.getUserName().equals("admin")){
-                    return;
-                }
-                if (dataScope.getString("dataMark").equals("2")) {
-                    additionalSql.append(" AND dept_id in (");
-                    additionalSql.append("select id from sys_dept where route like '"+currentUserDeptId+"%'");
-                    additionalSql.append(")");
-                }else {
-                    deptIds = dataScope.getObject("deptIds", List.class);
-                    additionalSql.append(" AND dept_id in (");
-                    deptIds.forEach(deptId -> {
-                        additionalSql.append("'" + deptId + "',");
-                    });
-                    additionalSql.deleteCharAt(additionalSql.length() - 1);
-                    additionalSql.append(")");
-                }
-
-                // 获取原始 SQL
-                String sql = boundSql.getSql();
-
-                if (sql.toLowerCase().contains("select")) {
-                    sql += additionalSql.toString();
-                    Field field = null;
-                    try {
-                        field = BoundSql.class.getDeclaredField("sql");
-                    } catch (NoSuchFieldException e) {
-                        throw new RuntimeException(e);
-                    }
-                    field.setAccessible(true);
-                    try {
-                        field.set(boundSql, sql);
-                    } catch (IllegalAccessException e) {
-                        throw new RuntimeException(e);
-                    }
-                }
+    public Expression getSqlSegment(Table table, Expression where, String mappedStatementId) {
+
+        String currentUserDeptId = baseController.getUserDeptId();
+        String userDataScope = baseController.getUserDataScope();
+        String userSystemCode = baseController.getUserSystemCode();
+        JSONObject dataScope = JSONObject.parseObject(userDataScope);
+        //如果用户名为admin  不做数据权限
+
+        if (dataScope == null || (dataScope.isEmpty() && baseController.getUserName().equals("admin")) || userSystemCode.equals(SystemConstants.SYSTEM_PLATFORM.getCode())) {
+            return null;
+        }
+        StringBuilder additionalSql = new StringBuilder();
+        String tableName = getTableName(table);
+        if(!shouldIgnoreTable(table.getName())) {
+            String fieldName = table.getName().equals("sys_dept") ? "id" : "dept_id";
+            List<String> deptIds = new ArrayList<>();
+            if (dataScope.getString("dataMark").equals("2")) {
+                additionalSql.append(tableName).append(".").append(fieldName).append(" in (");
+                additionalSql.append("select id from sys_dept where route like '").append(currentUserDeptId).append("%'");
+                additionalSql.append(")");
+            } else {
+                deptIds = dataScope.getObject("deptIds", List.class);
+                additionalSql.append(tableName).append(".").append(fieldName).append(" in (");
+                deptIds.forEach(deptId -> {
+                    additionalSql.append("'" + deptId + "',");
+                });
+                additionalSql.deleteCharAt(additionalSql.length() - 1);
+                additionalSql.append(")");
+            }
+            try {
+                return CCJSqlParserUtil.parseCondExpression(additionalSql.toString());
+            } catch (JSQLParserException e) {
+                throw new RuntimeException(e);
             }
-        }catch (Exception e){
-            System.out.printf(e.getMessage());
+        }
+        return null;
+    }
+
+    private static class SqlExpression implements Expression {
+        private final String sql;
+
+        public SqlExpression(String sql) {
+            this.sql = sql;
+        }
+
+        @Override
+        public String toString() {
+            return sql;
+        }
+
+        @Override
+        public void accept(ExpressionVisitor expressionVisitor) {
+
+        }
+
+        @Override
+        public SimpleNode getASTNode() {
+            return null;
+        }
+
+        @Override
+        public void setASTNode(SimpleNode node) {
+
         }
     }
 }

+ 2 - 0
commons/src/main/java/com/jzg/commons/config/MultiTenantHandler.java

@@ -9,6 +9,7 @@ import jodd.util.StringUtil;
 import net.sf.jsqlparser.expression.Expression;
 import net.sf.jsqlparser.expression.StringValue;
 import net.sf.jsqlparser.schema.Column;
+import org.springframework.core.annotation.Order;
 
 import java.util.List;
 
@@ -18,6 +19,7 @@ import java.util.List;
  *
  * @author dongxin
  */
+@Order(1)
 public class MultiTenantHandler implements TenantLineHandler {
 
     private final TenantProperties properties;

+ 6 - 7
commons/src/main/java/com/jzg/commons/config/MyBatisPlusConfig.java

@@ -1,11 +1,10 @@
 package com.jzg.commons.config;
 
 
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
 import com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler;
-import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
 import com.jzg.commons.core.base.BaseController;
@@ -29,10 +28,10 @@ public class MyBatisPlusConfig {
     @Autowired
     BaseController baseController;
 
-    @Bean
-    public DataPermissionInterceptor dataPermissionInterceptor(DataScopeProperties dataScopeProperties){
-        return new DataPermissionInterceptor(redissonClient,baseController,dataScopeProperties);
-    }
+//    @Bean
+//    public DataPermissionInterceptor dataPermissionInterceptor(DataScopeProperties dataScopeProperties){
+//        return new DataPermissionInterceptor(redissonClient,baseController,dataScopeProperties);
+//    }
 
     @Bean
     public PaginationInnerInterceptor paginationInnerInterceptor(){
@@ -50,7 +49,7 @@ public class MyBatisPlusConfig {
             // 启用多租户插件拦截
             interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new MultiTenantHandler(tenantProperties,baseController)));
         }
-        interceptor.addInnerInterceptor(dataPermissionInterceptor(dataScopeProperties));
+        interceptor.addInnerInterceptor(new DataPermissionInterceptor(new com.jzg.commons.config.DataPermissionInterceptor(redissonClient,baseController,dataScopeProperties)));
         interceptor.addInnerInterceptor(paginationInnerInterceptor());
         return interceptor;
     }

+ 10 - 0
commons/src/main/java/com/jzg/commons/constants/Constants.java

@@ -92,5 +92,15 @@ public class Constants
      */
     public static final String DEFAULT_PARENT_ID = "0";
 
+    /**
+     * 启用
+     */
+    public static final boolean ENABLE = true;
+
+    /**
+     * 禁用
+     */
+    public static final boolean DISABLE = false;
+
 
 }

+ 7 - 0
commons/src/main/java/com/jzg/commons/constants/ReturnInformation.java

@@ -7,4 +7,11 @@ public class ReturnInformation {
 
     public static final String FAILURE_MESSAGE = "保存失败";
 
+
+
+    public static final String UPDATE_SUCCESS = "修改成功";
+
+
+    public static final String UPDATE_FAILED = "修改失败";
+
 }

+ 28 - 0
commons/src/main/java/com/jzg/commons/entity/dto/CostTypeEntity.java

@@ -0,0 +1,28 @@
+package com.jzg.commons.entity.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class CostTypeEntity {
+
+
+    @Schema(description = "费用类型1-交强险2-商业险3-驾意险")
+    private int costType;
+
+    @Schema(description = "入口比例")
+    private BigDecimal inlet;
+
+    @Schema(description = "出口比例")
+    private BigDecimal export;
+
+    @Schema(description = "手续费")
+    private BigDecimal commission;
+
+    @Schema(description = "加投比例")
+    private BigDecimal addThrow;
+
+
+}

+ 20 - 6
commons/src/main/java/com/jzg/commons/entity/dto/PtlAgreementCostAdd.java

@@ -32,6 +32,10 @@ public class PtlAgreementCostAdd {
     @NotNull(message = "生效时间不能为空")
     private Date effectiveTime;
 
+    @Schema(description = "手动审核截止日期")
+    @NotNull(message = "手动审核截止日期不能为空")
+    private Date deadlineTime;
+
     @Schema(description = "失效时间")
     @NotNull(message = "失效时间不能为空")
     private Date failureTime;
@@ -65,16 +69,26 @@ public class PtlAgreementCostAdd {
     public static class RuleConditionDto {
 
         @Schema(description = "费用管理ID")
-        private String ptlAgreementCostId;
+        private Long ptlAgreementCostId;
+
+        @Schema(description = "承包规则id")
+        private String rulesId;
+
+        @Schema(description = "属性id")
+        private String attrId;
+
+        @Schema(description = "属性编码")
+        private String attrCode;
+
+        @Schema(description = "左操作数")
+        private String min;
 
-        @Schema(description = "规则ID")
-        private String ruleId;
+        @Schema(description = "右操作数")
+        private String max;
 
-        @Schema(description = "运算符")
+        @Schema(description = "操作符")
         private String operator;
 
-        @Schema(description = "值")
-        private String dataValue;
 
     }
 

+ 110 - 0
commons/src/main/java/com/jzg/commons/entity/dto/PtlAgreementCostEnd.java

@@ -0,0 +1,110 @@
+package com.jzg.commons.entity.dto;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@Schema(description = "协议费用管理新增")
+public class PtlAgreementCostEnd {
+
+
+    @Schema(description = "协议费用管理ID")
+    private String id;
+
+    @Schema(description = "协议ID")
+    @NotBlank(message = "协议ID不能为空")
+    private String ptlAgreementId;
+
+    @Schema(description = "险种")
+    @NotBlank(message = "险种不能为空")
+    private String productName;
+
+    @Schema(description = "险种ID")
+    private String productId;
+
+    @Schema(description = "承保规则ID")
+    private String coverRuleId;
+
+    @Schema(description = "生效时间")
+    @NotNull(message = "生效时间不能为空")
+    private Date effectiveTime;
+
+    @Schema(description = "手动审核截止日期")
+    @NotNull(message = "手动审核截止日期不能为空")
+    private Date deadlineTime;
+
+    @Schema(description = "失效时间")
+    @NotNull(message = "失效时间不能为空")
+    private Date failureTime;
+
+    @Schema(description = "审核方式0-自动审核;1-手动审核")
+    @NotBlank(message = "审核方式不能为空")
+    private String auditMethod;
+
+    @Schema(description = "费用描述")
+    private String costDescribe;
+
+    @Schema(description = "0-未审核1-审核通过2-审核未通过")
+    private String approved;
+
+    @Schema(description = "是否有效0有效1-失效")
+    private String isValid;
+
+    @Schema(description = "是否启用0-启用-1失效")
+    private String isEnabled;
+
+    @Schema(description = "费用类型集合")
+    private List<PtlAgreementCostTypeDto> ptlAgreementCostTypeList;
+
+
+    @Schema(description = "规则条件集合")
+    private List<RuleConditionDto> ruleConditions;
+
+
+    @Data
+    @Schema(description = "规则条件集合描述")
+    public static class RuleConditionDto {
+
+        @Schema(description = "费用管理ID")
+        private String ptlAgreementCostId;
+
+        @Schema(description = "规则ID")
+        private String ruleId;
+
+        @Schema(description = "运算符")
+        private String operator;
+
+        @Schema(description = "值")
+        private String dataValue;
+
+    }
+
+    @Data
+    @Schema(description = "费用类型集合描述")
+    public static class PtlAgreementCostTypeDto {
+
+        @Schema(description = "费用类型1-交强险2-商业险3-驾意险")
+        private int costType;
+
+        @Schema(description = "入口比例")
+        private BigDecimal inlet;
+
+        @Schema(description = "出口比例")
+        private BigDecimal export;
+
+        @Schema(description = "手续费")
+        private BigDecimal commission;
+
+        @Schema(description = "加投比例")
+        private BigDecimal addThrow;
+
+    }
+
+}

+ 15 - 0
commons/src/main/java/com/jzg/commons/entity/dto/RulesAttParam.java

@@ -0,0 +1,15 @@
+package com.jzg.commons.entity.dto;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@Schema(description = "协议承保规则属性参数")
+public class RulesAttParam {
+
+    @Schema(description = "属性名称")
+    private String attrName;
+
+
+}

+ 8 - 2
commons/src/main/java/com/jzg/commons/entity/po/PtlAgreementCost.java

@@ -28,14 +28,20 @@ public class PtlAgreementCost extends BaseModel {
 
     private Long productId;
 
+    private Date deadlineTime;
+
     private Date effectiveTime;
 
     private Date failureTime;
 
-    private Long auditMethod;
+    private int auditMethod;
 
     private String costDescribe;
 
-    private int approved;
+    private Integer approved;
+
+    private Boolean isValid;
+
+    private Boolean isEnabled;
 
 }

+ 15 - 1
commons/src/main/java/com/jzg/commons/entity/po/PtlAgreementCostRule.java

@@ -4,18 +4,32 @@ package com.jzg.commons.entity.po;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 @Data
 @Schema(description = "协议费用管理规则")
 @TableName("ptl_agreement_cost_rule")
-public class PtlAgreementCostRule {
+public class PtlAgreementCostRule extends BaseModel {
 
     @TableId(type = IdType.ASSIGN_ID)
     private Long id;
 
     private Long ptlAgreementCostId;
 
+    private Long rulesId;
+
+    private Long attrId;
+
+    private String attrCode;
+
+    private String min;
+
+    private String max;
+
+    private String operator;
+
+    private String batch;
 
 }

+ 5 - 1
commons/src/main/java/com/jzg/commons/entity/po/PtlAgreementUndwrtRulesAttr.java

@@ -3,6 +3,7 @@ package com.jzg.commons.entity.po;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.jzg.commons.core.base.BaseModel;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -16,7 +17,7 @@ import java.util.List;
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
-public class PtlAgreementUndwrtRulesAttr {
+public class PtlAgreementUndwrtRulesAttr extends BaseModel {
 
     @TableId(value = "id", type = com.baomidou.mybatisplus.annotation.IdType.AUTO)
     private String id;
@@ -54,6 +55,9 @@ public class PtlAgreementUndwrtRulesAttr {
     @TableField(exist = false)
     private String max;
 
+    @TableField(exist = false)
+    private List<SysDict> rulesDict;
+
     @TableField(exist = false)
     private List<PtlAgreementUndwrtRulesDictLabal> dictLabal;
 }

+ 1 - 1
commons/src/main/java/com/jzg/commons/entity/po/PtlAgreementUndwrtRulesAttrLink.java

@@ -14,7 +14,7 @@ import lombok.Data;
  */
 @Schema(description = "协议承保规则属性关联表表")
 @Data
-public class PtlAgreementUndwrtRulesAttrLink  extends BaseModel {
+public class PtlAgreementUndwrtRulesAttrLink extends BaseModel {
 
     /** 主键/自增 */
     @Schema(description = "主键/自增")

+ 38 - 0
commons/src/main/java/com/jzg/commons/entity/po/PtlAreaLicense.java

@@ -0,0 +1,38 @@
+package com.jzg.commons.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+@Data
+public class PtlAreaLicense {
+
+    /**
+     *
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 车牌
+     */
+    private String license;
+
+    /**
+     * 地区编号
+     */
+    private String areaNumber;
+
+    /**
+     * 地区名称
+     */
+    private String areaName;
+
+
+    /**
+     * 父级id
+     */
+    private String parentNumber;
+
+
+}

+ 15 - 0
commons/src/main/java/com/jzg/commons/entity/po/RuleConditionsVerify.java

@@ -0,0 +1,15 @@
+package com.jzg.commons.entity.po;
+
+import lombok.Data;
+
+@Data
+public class RuleConditionsVerify {
+
+
+    private String ruleId;
+
+    private String operator;
+
+    private String dataValue;
+
+}

+ 10 - 1
commons/src/main/java/com/jzg/commons/entity/po/SysActivity.java

@@ -13,6 +13,7 @@ import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * @author quchen
@@ -73,7 +74,7 @@ public class SysActivity implements Serializable {
     private List<SysActivityAward> awardList;
 
     @TableField(exist = false)
-    @Schema(description = "机构列表")
+    @Schema(description = "机构名称")
     private String actDeptName;
 
     @TableField(exist = false)
@@ -84,6 +85,14 @@ public class SysActivity implements Serializable {
     @Schema(description = "机构列表信息")
     private List<DeptData> deptData;
 
+    @TableField(exist = false)
+    @Schema(description = "参与范围")
+    private String depts;
+
+    @TableField(exist = false)
+    @Schema(description = "参与用户人数")
+    private AtomicInteger userCount;
+
     @Data
     @NoArgsConstructor
     public static class DeptData implements Serializable {

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

@@ -21,4 +21,7 @@ public class AgreementUserVo {
 
     @Schema(description = "机构id")
     public String deptId;
+
+    @Schema(description = "机构名称")
+    public String deptName;
 }

+ 13 - 0
commons/src/main/java/com/jzg/commons/entity/vo/PtlAgreementCostVo.java

@@ -28,9 +28,22 @@ public class PtlAgreementCostVo {
     @Schema(description = "失效时间")
     private Date failureTime;
 
+    @Schema(description = "手动审核截止日期(超过设置的截日期,审核会变为自动审核)")
+    private Date deadlineTime;
+
     @Schema(description = "审核方式0-自动审核;1-手动审核")
     private String auditMethod;
 
+    @Schema(description = "0-未审核1-审核通过2-审核未通过")
+    private int approved;
+
+    @Schema(description = "是否有效0-无效;1-有效")
+    private boolean isValid;
+
+    @Schema(description = "是否启用0-禁用;1-启用")
+    private boolean isEnabled;
+
+
     @Schema(description = "费用描述")
     private String costDescribe;
 

+ 138 - 0
commons/src/main/java/com/jzg/commons/util/ListUtils.java

@@ -0,0 +1,138 @@
+package com.jzg.commons.util;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+
+public class ListUtils implements List {
+    @Override
+    public int size() {
+        return 0;
+    }
+
+    @Override
+    public boolean isEmpty() {
+        return false;
+    }
+
+    @Override
+    public boolean contains(Object o) {
+        return false;
+    }
+
+    @NotNull
+    @Override
+    public Iterator iterator() {
+        return null;
+    }
+
+    @NotNull
+    @Override
+    public Object[] toArray() {
+        return new Object[0];
+    }
+
+    @Override
+    public boolean add(Object o) {
+        return false;
+    }
+
+    @Override
+    public boolean remove(Object o) {
+        return false;
+    }
+
+    @Override
+    public boolean addAll(@NotNull Collection c) {
+        return false;
+    }
+
+    @Override
+    public boolean addAll(int index, @NotNull Collection c) {
+        return false;
+    }
+
+    @Override
+    public void clear() {
+
+    }
+
+    @Override
+    public Object get(int index) {
+        return null;
+    }
+
+    @Override
+    public Object set(int index, Object element) {
+        return null;
+    }
+
+    @Override
+    public void add(int index, Object element) {
+
+    }
+
+    @Override
+    public Object remove(int index) {
+        return null;
+    }
+
+    @Override
+    public int indexOf(Object o) {
+        return 0;
+    }
+
+    @Override
+    public int lastIndexOf(Object o) {
+        return 0;
+    }
+
+    @NotNull
+    @Override
+    public ListIterator listIterator() {
+        return null;
+    }
+
+    @NotNull
+    @Override
+    public ListIterator listIterator(int index) {
+        return null;
+    }
+
+    @NotNull
+    @Override
+    public List subList(int fromIndex, int toIndex) {
+        return List.of();
+    }
+
+    @Override
+    public boolean retainAll(@NotNull Collection c) {
+        return false;
+    }
+
+    @Override
+    public boolean removeAll(@NotNull Collection c) {
+        return false;
+    }
+
+    @Override
+    public boolean containsAll(@NotNull Collection c) {
+        return false;
+    }
+
+    @NotNull
+    @Override
+    public Object[] toArray(@NotNull Object[] a) {
+        return new Object[0];
+    }
+
+
+    public static boolean hasDuplicates(List<?> list) {
+        return list.stream().distinct().count() != list.size();
+    }
+
+
+}

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

@@ -1,5 +1,18 @@
 spring:
   cloud:
+    nacos:
+      server-addr: 192.168.0.250:8848
+      username: nacos
+      password: nacos
+      config:
+        import-check:
+          enabled: false
+        file-extension: yaml
+        namespace: ba488f58-c785-49b4-9c02-b5d9b8a965a5
+        group: DEFAULT_GROUP
+      discovery:
+        namespace: ba488f58-c785-49b4-9c02-b5d9b8a965a5
+
     gateway:
       routes:
         - id: auth_route
@@ -15,6 +28,7 @@ spring:
         - id: tenant_route
           uri: http://localhost:8084/
           predicates:
-            - Path=/tenant/**,/dept/**,/area/**,/dict/**,/userInfo/**,/sysOrganization/**,/activity/**,/message/**,/messageNotice/**,/poster/**,/agreement/**
+            - Path=/tenant/**,/dept/**,/area/**,/dict/**,/userInfo/**,/sysOrganization/**,/activity/**,/message/**,/messageNotice/**,/poster/**,/pltAgreement/**,/scheme/**
+
 
 

+ 3 - 14
gateway/src/main/resources/application.yml

@@ -7,17 +7,6 @@ spring:
     web-application-type: reactive
     allow-bean-definition-overriding: true
   application:
-    name: jzg-gataway
-  cloud:
-    nacos:
-      server-addr: 192.168.0.250:8848
-      username: nacos
-      password: nacos
-      config:
-        import-check:
-          enabled: false
-        file-extension: yaml
-        namespace: bfe09cf4-508a-4443-acfa-b354be6f4bac
-        group: DEFAULT_GROUP
-      discovery:
-        namespace: bfe09cf4-508a-4443-acfa-b354be6f4bac
+    name: jzg-gateway
+
+

+ 1 - 1
platform/src/main/java/com/jzg/controller/SysSystemController.java

@@ -57,7 +57,7 @@ public class SysSystemController {
     /**
      * 更新初始化配置
      * @param sysConfig
-     * @return
+     * @return 只传俩串json
      */
     @PostMapping("/updateConfig")
     @Operation(summary = "更新初始化配置")

+ 1 - 1
platform/src/main/java/com/jzg/service/SysSystemService.java

@@ -23,7 +23,7 @@ import java.util.List;
 public interface SysSystemService extends IService<SysSystem> {
 
     /**
-     * 更新初始化配置
+     * 更新初始化配置(更新总的平台配置)
      * @return
      */
     public boolean updateConfig(SysConfig config);

+ 0 - 2
platform/src/main/java/com/jzg/service/impl/SysSystemServiceImpl.java

@@ -249,8 +249,6 @@ public class SysSystemServiceImpl extends ServiceImpl<SysSystemMapper, SysSystem
                     sysSystem.setDivision(areaString.substring(0, areaString.length() - 1));
                 }
             });
-
-
         }
         return sysPage;
     }

+ 11 - 7
platform/src/main/resources/application.yml

@@ -1,9 +1,6 @@
 spring:
-#  zipkin:
-#    base-url: http://192.168.0.250:9411
-#  sleuth:
-#    sampler:
-#      probability: 1.0
+  application:
+    name: jzg-platform
   main:
     allow-circular-references: true
   profiles:
@@ -54,5 +51,12 @@ tenant:
     - /userInfo/getUser
 
 data-scope:
-  ignoreTables:
-
+  tables:
+    - sys_user
+    - esm_ins_company
+    - ins_business_insurance
+    - ins_business_insurance_option
+    - ptl_agreement_attribution
+    - ptl_agreement_url
+    - ptl_ins_attribution_template
+    - sys_config

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

@@ -130,8 +130,8 @@ public class AgreementController extends BaseController {
      */
     @GetMapping(value = { "/getUserByDeptId"})
     @Operation(summary = "根据机构获取后线人员列表")
-    public HttpResult getUserByDeptId(String deptId) {
-        return HttpResult.ok(agreementService.getUserByDeptId(deptId));
+    public HttpResult getUserByDeptId(String deptId, String searchValue) {
+        return HttpResult.ok(agreementService.getUserByDeptId(deptId,searchValue));
     }
 
     /**

+ 23 - 6
tenant/organization/src/main/java/com/jzg/organization/controller/PtlAgreementCostController.java

@@ -4,9 +4,12 @@ package com.jzg.organization.controller;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.CostAgreementParam;
 import com.jzg.commons.entity.dto.PtlAgreementCostAdd;
+import com.jzg.commons.entity.dto.PtlAgreementCostEnd;
 import com.jzg.organization.service.PtlAgreementCostService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotEmpty;
 import jakarta.validation.constraints.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
@@ -14,8 +17,8 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-@Validated
 @Tag(name="协议费用管理")
+@Validated
 @RestController
 @RequestMapping("/ptlAgreementCost")
 public class PtlAgreementCostController {
@@ -25,14 +28,22 @@ public class PtlAgreementCostController {
 
     @Operation(summary = "协议费用管理新增")
     @PostMapping("save")
-    public HttpResult add(@Validated @RequestBody List<PtlAgreementCostAdd> costAddList){
+    public HttpResult add(@RequestBody @Valid List<PtlAgreementCostAdd> costAddList){
         return ptlAgreementCostService.save(costAddList);
     }
 
-    @Operation(summary = "协议费用管理删除")
-    @PostMapping("deleteById")
-    public HttpResult deleteById(@NotNull(message = "id不能为空") Long id){
-        return ptlAgreementCostService.removeById(id) ? HttpResult.ok("删除成功") : HttpResult.error("删除失败");
+
+    @Operation(summary = "协议费用管理修改")
+    @PostMapping("update")
+    public HttpResult update(@RequestBody @Valid List<PtlAgreementCostEnd> costEndList){
+        return ptlAgreementCostService.update(costEndList);
+    }
+
+
+    @Operation(summary = "协议费用管理批量删除")
+    @PostMapping("deleteByIds")
+    public HttpResult deleteById(@RequestBody @NotEmpty(message = "id不能为空") List<String> ids){
+        return ptlAgreementCostService.removeBatchByIds(ids) ? HttpResult.ok("删除成功") : HttpResult.error("删除失败");
     }
 
     @Operation(summary = "协议费用管理查询")
@@ -42,6 +53,12 @@ public class PtlAgreementCostController {
     }
 
 
+    @Operation(summary = "协议费用管理批量禁用/启用")
+    @PostMapping("enableDisableByIds")
+    public HttpResult enableDisableByIds(@RequestBody @NotEmpty(message = "id不能为空") List<String> ids, @NotNull(message = "状态不能为空") Boolean isEnabled){
+        return ptlAgreementCostService.enableDisableByIds(ids,isEnabled);
+    }
+
     @Operation(summary = "通过协议ID与规则ID查询")
     @PostMapping("queryByAgreementId")
     public HttpResult queryByAgreementId(@RequestBody CostAgreementParam costAgreementParam){

+ 32 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/PtlAreaLicenseController.java

@@ -0,0 +1,32 @@
+package com.jzg.organization.controller;
+
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.PtlAreaLicense;
+import com.jzg.organization.service.PtlAreaLicenseService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Tag(name = "地区车牌")
+@RequestMapping("/plt/areaLicense")
+@RestController
+public class PtlAreaLicenseController {
+
+    @Autowired
+    private PtlAreaLicenseService ptlAreaLicenseService;
+
+    @GetMapping("/getAreaLicense")
+    @Operation(summary = "查询地区车牌")
+    public HttpResult<List<PtlAreaLicense>> getAreaLicense(@RequestParam(required = false) String parentNumber) {
+        List<PtlAreaLicense> ptlAreaLicenses = ptlAreaLicenseService.getByParentNumber(parentNumber);
+        return HttpResult.ok(ptlAreaLicenses);
+    }
+
+
+}

+ 15 - 6
tenant/organization/src/main/java/com/jzg/organization/controller/PtlNewAgreementController.java

@@ -2,14 +2,13 @@ package com.jzg.organization.controller;
 
 
 import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.RulesAttParam;
 import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesAttr;
 import com.jzg.organization.service.PtlAgreementUndwrtRulesAttrService;
-import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -18,7 +17,7 @@ import java.util.List;
  * @description: 协议controller
  * @create: 2024-2-22 15:44:29
  */
-@Tag(name = "协议controller")
+@Tag(name = "协议承保规则属性")
 @RequestMapping("/pltAgreement")
 @RestController
 public class PtlNewAgreementController {
@@ -26,11 +25,21 @@ public class PtlNewAgreementController {
     @Autowired
     private PtlAgreementUndwrtRulesAttrService ptlAgreementUndwrtRulesAttrService;
 
-    @Schema(defaultValue = "协议承保规则属性列表")
+    @Operation(summary = "协议承保规则属性列表")
     @GetMapping("/attr/list")
     public HttpResult<List<PtlAgreementUndwrtRulesAttr>> list() {
         List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
         return HttpResult.ok(undwrtRulesAttrList);
     }
 
+
+
+    @Operation(summary = "协议承保规则分组属性列表")
+    @PostMapping("/attr/attrGroup")
+    public HttpResult  listMap(@RequestBody RulesAttParam param) {
+        return HttpResult.ok(ptlAgreementUndwrtRulesAttrService.attrGroup(param));
+    }
+
+
+
 }

+ 4 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/PtlAgreementCostRuleMapper.java

@@ -2,8 +2,12 @@ package com.jzg.organization.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jzg.commons.entity.po.PtlAgreementCostRule;
+import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
 
 @Mapper
 public interface PtlAgreementCostRuleMapper extends BaseMapper<PtlAgreementCostRule> {
+
+    @Delete("delete from ptl_agreement_cost_rule where ptl_agreement_cost_id = #{id}")
+    void deleteByPtlAgreementCostId(Long id);
 }

+ 3 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/PtlAgreementCostTypeMapper.java

@@ -3,6 +3,7 @@ package com.jzg.organization.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jzg.commons.entity.po.PtlAgreementCostType;
+import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
 
 
@@ -10,4 +11,6 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface PtlAgreementCostTypeMapper extends BaseMapper<PtlAgreementCostType> {
 
+    @Delete("DELETE FROM ptl_agreement_cost_type WHERE ptl_agreement_cost_id = #{id}")
+    void deleteByPtlAgreementCostId(Long id);
 }

+ 9 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/PtlAreaLicenseMapper.java

@@ -0,0 +1,9 @@
+package com.jzg.organization.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.commons.entity.po.PtlAreaLicense;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface PtlAreaLicenseMapper extends BaseMapper<PtlAreaLicense> {
+}

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

@@ -29,8 +29,10 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 
     /**
      * 根据机构获取后线人员列表
+     *
      * @param deptId
+     * @param searchValue
      * @return
      */
-    List<AgreementUserVo> getUserByDeptId(@Param("deptId") String deptId);
+    List<AgreementUserVo> getUserByDeptId(@Param("deptId") String deptId, @Param("searchValue") String searchValue);
 }

+ 1 - 1
tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementCostRuleService.java

@@ -9,6 +9,6 @@ import java.util.List;
 public interface PtlAgreementCostRuleService extends IService<PtlAgreementCostRule> {
 
 
-    void saveOrUpdateCostRule(List<PtlAgreementCostAdd.RuleConditionDto> ruleConditions, Long id);
+    void saveOrUpdateCostRule(List<PtlAgreementCostRule> ruleConditions, Long id);
 
 }

+ 13 - 1
tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementCostService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.CostAgreementParam;
 import com.jzg.commons.entity.dto.PtlAgreementCostAdd;
+import com.jzg.commons.entity.dto.PtlAgreementCostEnd;
 import com.jzg.commons.entity.po.PtlAgreementCost;
 import com.jzg.commons.entity.vo.PtlAgreementCostVo;
 import jakarta.validation.constraints.NotNull;
@@ -15,8 +16,19 @@ public interface PtlAgreementCostService extends IService<PtlAgreementCost> {
 
     HttpResult save(List<PtlAgreementCostAdd> costAddList);
 
+
+    HttpResult update(List<PtlAgreementCostEnd> costEndList);
+
+
     HttpResult queryById(@NotNull(message = "id不能为空") Long id);
 
-    Map<String, List<PtlAgreementCostVo>> queryByAgreementId(CostAgreementParam costAgreementParam);
+    List<PtlAgreementCostVo> queryByAgreementId(CostAgreementParam costAgreementParam);
+
+    HttpResult enableDisableByIds(List<String> ids,Boolean isEnabled);
+
+
+    void updateAuditMethod(List<Long> ids);
+
+
 
 }

+ 1 - 1
tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementCostTypeService.java

@@ -12,6 +12,6 @@ public interface PtlAgreementCostTypeService extends IService<PtlAgreementCostTy
 
     List<PtlAgreementCostTypeVo> queryByCostId(Long costId);
 
-    void saveOrUpdateCostType(List<PtlAgreementCostAdd.PtlAgreementCostTypeDto> ptlAgreementCostTypeList, Long id);
+    void saveOrUpdateCostType(List<PtlAgreementCostType> ptlAgreementCostTypeList, Long id);
 
 }

+ 3 - 4
tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementService.java

@@ -2,7 +2,6 @@ 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;
@@ -11,8 +10,6 @@ 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;
 
@@ -66,10 +63,12 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
 
     /**
      * 根据机构获取后线人员列表
+     *
      * @param deptId
+     * @param searchValue
      * @return
      */
-    List<AgreementUserVo> getUserByDeptId(String deptId);
+    List<AgreementUserVo> getUserByDeptId(String deptId, String searchValue);
 
     /**
      * 批量删除协议

+ 5 - 0
tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementUndwrtRulesAttrService.java

@@ -1,9 +1,11 @@
 package com.jzg.organization.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.dto.RulesAttParam;
 import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesAttr;
 
 import java.util.List;
+import java.util.Map;
 
 public interface PtlAgreementUndwrtRulesAttrService extends IService<PtlAgreementUndwrtRulesAttr> {
 
@@ -13,4 +15,7 @@ public interface PtlAgreementUndwrtRulesAttrService extends IService<PtlAgreemen
      */
     List<PtlAgreementUndwrtRulesAttr> getUndwrtRulesAttrList();
 
+    Map<String, List<PtlAgreementUndwrtRulesAttr>> attrGroup(RulesAttParam param);
+
+
 }

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

@@ -20,5 +20,7 @@ public interface PtlAgreementUndwrtRulesDictService extends IService<PtlAgreemen
      */
     List<PtlAgreementUndwrtRulesDictLabal> getUndwrtRulesDictList();
 
+
+
 }
 

+ 18 - 0
tenant/organization/src/main/java/com/jzg/organization/service/PtlAreaLicenseService.java

@@ -0,0 +1,18 @@
+package com.jzg.organization.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.po.PtlAreaLicense;
+
+import java.util.List;
+
+public interface PtlAreaLicenseService extends IService<PtlAreaLicense> {
+
+    /**
+     * 通过父级编号查询地区车牌
+     *
+     * @param parentNumber 父级编号
+     * @return PtlAreaLicense
+     */
+    List<PtlAreaLicense> getByParentNumber(String parentNumber);
+
+}

+ 6 - 4
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostRuleServiceImpl.java

@@ -1,6 +1,7 @@
 package com.jzg.organization.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.entity.dto.PtlAgreementCostAdd;
 import com.jzg.commons.entity.po.PtlAgreementCostRule;
@@ -15,13 +16,14 @@ import java.util.List;
 public class PtlAgreementCostRuleServiceImpl extends ServiceImpl<PtlAgreementCostRuleMapper, PtlAgreementCostRule> implements PtlAgreementCostRuleService {
 
 
+
     @Override
-    public void saveOrUpdateCostRule(List<PtlAgreementCostAdd.RuleConditionDto> ruleConditions, Long id) {
-        List<PtlAgreementCostRule> ptlAgreementCostRules = BeanUtil.copyToList(ruleConditions, PtlAgreementCostRule.class);
-        for (PtlAgreementCostRule ptlAgreementCostRule : ptlAgreementCostRules) {
+    public void saveOrUpdateCostRule(List<PtlAgreementCostRule> ruleConditions, Long id) {
+        baseMapper.deleteByPtlAgreementCostId(id);
+        for (PtlAgreementCostRule ptlAgreementCostRule : ruleConditions) {
             ptlAgreementCostRule.setPtlAgreementCostId(id);
         }
-        this.saveBatch(ptlAgreementCostRules);
+        this.saveBatch(ruleConditions);
     }
 
 }

+ 84 - 30
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostServiceImpl.java

@@ -1,25 +1,30 @@
 package com.jzg.organization.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.constants.Constants;
 import com.jzg.commons.constants.ReturnInformation;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.CostAgreementParam;
 import com.jzg.commons.entity.dto.PtlAgreementCostAdd;
+import com.jzg.commons.entity.dto.PtlAgreementCostEnd;
 import com.jzg.commons.entity.po.PtlAgreementCost;
-import com.jzg.commons.entity.vo.PtlAgreementCostTypeVo;
+import com.jzg.commons.entity.po.PtlAgreementCostRule;
+import com.jzg.commons.entity.po.PtlAgreementCostType;
+import com.jzg.commons.entity.po.RuleConditionsVerify;
 import com.jzg.commons.entity.vo.PtlAgreementCostVo;
-
+import com.jzg.commons.util.ListUtils;
 import com.jzg.organization.mapper.PtlAgreementCostMapper;
 import com.jzg.organization.service.PtlAgreementCostRuleService;
 import com.jzg.organization.service.PtlAgreementCostService;
 import com.jzg.organization.service.PtlAgreementCostTypeService;
+import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
-
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -29,62 +34,92 @@ import java.util.stream.Collectors;
 @Service
 public class PtlAgreementCostServiceImpl extends ServiceImpl<PtlAgreementCostMapper, PtlAgreementCost> implements PtlAgreementCostService {
 
-    @Autowired
+    @Resource
     private PtlAgreementCostTypeService costTypeService;
 
-    @Autowired
+    @Resource
     private PtlAgreementCostRuleService costRuleService;
 
-    @Autowired
+    @Resource
     private PtlAgreementCostMapper ptlAgreementCostMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResult save(List<PtlAgreementCostAdd> costAddList) {
+        if (costAddList.isEmpty()) {
+            return HttpResult.error("保存数据不能为空");
+        }
         for (PtlAgreementCostAdd ptlAgreementCostAdd : costAddList){
+            if (ListUtils.hasDuplicates(ptlAgreementCostAdd.getRuleConditions())){
+                return HttpResult.error("存在相同费用规则,请检查");
+            }
+            boolean verify = verify(ptlAgreementCostAdd);
+            if (verify){
+                return HttpResult.error("已存在相同且有效的费用规则,请检查");
+            }
             PtlAgreementCost ptlAgreementCost = BeanUtil.copyProperties(ptlAgreementCostAdd, PtlAgreementCost.class);
+            ptlAgreementCost.setIsEnabled(Constants.ENABLE);
+            ptlAgreementCost.setIsValid(Constants.ENABLE);
             if (baseMapper.insert(ptlAgreementCost) <= 0) {
                 log.error("插入操作失败");
                 throw new RuntimeException(ReturnInformation.FAILURE_MESSAGE);
             }
             if (!CollectionUtils.isEmpty(ptlAgreementCostAdd.getPtlAgreementCostTypeList())) {
-                costTypeService.saveOrUpdateCostType(ptlAgreementCostAdd.getPtlAgreementCostTypeList(), ptlAgreementCost.getId());
+                costTypeService.saveOrUpdateCostType(BeanUtil.copyToList(ptlAgreementCostAdd.getPtlAgreementCostTypeList(), PtlAgreementCostType.class), ptlAgreementCost.getId());
             }
             if (!CollectionUtils.isEmpty(ptlAgreementCostAdd.getRuleConditions())) {
-                costRuleService.saveOrUpdateCostRule(ptlAgreementCostAdd.getRuleConditions(), ptlAgreementCost.getId());
+                costRuleService.saveOrUpdateCostRule(BeanUtil.copyToList(ptlAgreementCostAdd.getRuleConditions(), PtlAgreementCostRule.class), ptlAgreementCost.getId());
             }
             log.info("保存成功");
         }
         return HttpResult.ok(ReturnInformation.SUCCESS_MESSAGE);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult update(List<PtlAgreementCostEnd> costEndList) {
+        for (PtlAgreementCostEnd ptlAgreementCostEnd : costEndList) {
+            if (ListUtils.hasDuplicates(ptlAgreementCostEnd.getRuleConditions())){
+                return HttpResult.error("已存在相同且有效的费用规则,请检查");
+            }
+            PtlAgreementCost ptlAgreementCost = BeanUtil.copyProperties(ptlAgreementCostEnd, PtlAgreementCost.class);
+            if (baseMapper.updateById(ptlAgreementCost) <= 0) {
+                throw new RuntimeException(ReturnInformation.UPDATE_FAILED);
+            }
+            if (!CollectionUtils.isEmpty(ptlAgreementCostEnd.getPtlAgreementCostTypeList())) {
+                costTypeService.saveOrUpdateCostType(BeanUtil.copyToList(ptlAgreementCostEnd.getPtlAgreementCostTypeList(), PtlAgreementCostType.class), ptlAgreementCost.getId());
+            }
+            if (!CollectionUtils.isEmpty(ptlAgreementCostEnd.getRuleConditions())) {
+                costRuleService.saveOrUpdateCostRule(BeanUtil.copyToList(ptlAgreementCostEnd.getRuleConditions(), PtlAgreementCostRule.class), ptlAgreementCost.getId());
+            }
+        }
+        return HttpResult.ok(ReturnInformation.UPDATE_SUCCESS);
+    }
+
     public boolean verify(PtlAgreementCostAdd ptlAgreementCostAdd){
         CostAgreementParam costAgreementParam = new CostAgreementParam();
         costAgreementParam.setPtlAgreementId(ptlAgreementCostAdd.getPtlAgreementId());
         costAgreementParam.setCoverRuleId(ptlAgreementCostAdd.getCoverRuleId());
-        Map<String, List<PtlAgreementCostVo>> listMap = queryByAgreementId(costAgreementParam);
-        if (CollectionUtils.isEmpty(listMap)){
-            return true;
+        List<PtlAgreementCostVo> voList = queryByAgreementId(costAgreementParam);
+        if (CollectionUtils.isEmpty(voList)){
+            return false;
         }
         // 先比较规则是否相同
+        Map<String, List<PtlAgreementCostVo>> listMap = voList.stream().filter(v -> v.isEnabled() && v.isValid()).collect(Collectors.groupingBy(PtlAgreementCostVo::getProductId));
         List<PtlAgreementCostVo> ptlAgreementCostVos = listMap.get(ptlAgreementCostAdd.getProductId());
+        if (CollectionUtils.isEmpty(ptlAgreementCostVos)){
+            return false;
+        }
+        List<RuleConditionsVerify> ruleConditionsVerifies = BeanUtil.copyToList(ptlAgreementCostAdd.getRuleConditions(), RuleConditionsVerify.class);
+        if (CollectionUtils.isEmpty(ruleConditionsVerifies)){
+            return false;
+        }
         for (PtlAgreementCostVo ptlAgreementCostVo : ptlAgreementCostVos) {
-            List<PtlAgreementCostTypeVo> ptlAgreementCostTypeList = ptlAgreementCostVo.getPtlAgreementCostTypeList();
-            for (PtlAgreementCostAdd.PtlAgreementCostTypeDto dto : ptlAgreementCostAdd.getPtlAgreementCostTypeList()) {
-                for (PtlAgreementCostTypeVo ptlAgreementCostTypeVo : ptlAgreementCostTypeList) {
-                    if (dto.getCostType() == ptlAgreementCostTypeVo.getCostType()){
-                        if (dto.getInlet().compareTo(ptlAgreementCostTypeVo.getInlet()) != 0){
-                            return false;
-                        }
-                        if (dto.getExport().compareTo(ptlAgreementCostTypeVo.getExport()) != 0){                    }
-                    }
-                }
-            }
-
-
+            List<RuleConditionsVerify> verifies = BeanUtil.copyToList(ptlAgreementCostVo.getRuleConditions(), RuleConditionsVerify.class);
+            if (ObjectUtil.equals(verifies,ruleConditionsVerifies)){
+                return true;
+            };
         }
-
-
         return false;
     }
 
@@ -94,9 +129,28 @@ public class PtlAgreementCostServiceImpl extends ServiceImpl<PtlAgreementCostMap
     }
 
     @Override
-    public Map<String, List<PtlAgreementCostVo>> queryByAgreementId(CostAgreementParam costAgreementParam) {
-        return ptlAgreementCostMapper.queryByAgreementId(costAgreementParam)
-                .stream().collect(Collectors.groupingBy(PtlAgreementCostVo::getProductId));
+    public List<PtlAgreementCostVo> queryByAgreementId(CostAgreementParam costAgreementParam) {
+        return ptlAgreementCostMapper.queryByAgreementId(costAgreementParam);
+    }
+
+    @Override
+    public HttpResult enableDisableByIds(List<String> ids,Boolean isEnabled) {
+        if (CollectionUtils.isEmpty(ids)){
+            return HttpResult.error("参数不能为空");
+        }
+        PtlAgreementCost ptlAgreementCost = new PtlAgreementCost();
+        ptlAgreementCost.setIsEnabled(isEnabled);
+        ptlAgreementCost.setIsValid(isEnabled);
+        return baseMapper.update(ptlAgreementCost,new LambdaQueryWrapper<>(PtlAgreementCost.class)
+                .in(PtlAgreementCost::getId,ids)) > 0 ?
+                HttpResult.ok(isEnabled ? "启用成功" : "禁用成功") : HttpResult.error(isEnabled ? "启用失败" : "禁用失败");
+    }
+
+    @Override
+    public void updateAuditMethod(List<Long> ids) {
+        PtlAgreementCost ptlAgreementCost = new PtlAgreementCost();
+        ptlAgreementCost.setAuditMethod(0);
+        baseMapper.update(ptlAgreementCost,new LambdaQueryWrapper<>(PtlAgreementCost.class).in(PtlAgreementCost::getId,ids));
     }
 
 

+ 5 - 6
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostTypeServiceImpl.java

@@ -4,10 +4,8 @@ import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.constants.Constants;
-import com.jzg.commons.entity.dto.PtlAgreementCostAdd;
 import com.jzg.commons.entity.po.PtlAgreementCostType;
 import com.jzg.commons.entity.vo.PtlAgreementCostTypeVo;
-
 import com.jzg.organization.mapper.PtlAgreementCostTypeMapper;
 import com.jzg.organization.service.PtlAgreementCostTypeService;
 import org.springframework.stereotype.Service;
@@ -18,6 +16,7 @@ import java.util.List;
 @Service
 public class PtlAgreementCostTypeServiceImpl extends ServiceImpl<PtlAgreementCostTypeMapper, PtlAgreementCostType> implements PtlAgreementCostTypeService {
 
+
     @Override
     public List<PtlAgreementCostTypeVo> queryByCostId(Long costId) {
         return BeanUtil.copyToList(baseMapper.selectList(new LambdaQueryChainWrapper<>(PtlAgreementCostType.class)
@@ -26,11 +25,11 @@ public class PtlAgreementCostTypeServiceImpl extends ServiceImpl<PtlAgreementCos
     }
 
     @Override
-    public void saveOrUpdateCostType(List<PtlAgreementCostAdd.PtlAgreementCostTypeDto> ptlAgreementCostTypeList, Long id) {
-        List<PtlAgreementCostType> ptlAgreementCostTypes = BeanUtil.copyToList(ptlAgreementCostTypeList, PtlAgreementCostType.class);
-        for (PtlAgreementCostType ptlAgreementCostType : ptlAgreementCostTypes) {
+    public void saveOrUpdateCostType(List<PtlAgreementCostType> ptlAgreementCostTypeList, Long id) {
+        baseMapper.deleteByPtlAgreementCostId(id);
+        for (PtlAgreementCostType ptlAgreementCostType : ptlAgreementCostTypeList) {
             ptlAgreementCostType.setPtlAgreementCostId(id);
         }
-        this.saveBatch(ptlAgreementCostTypes);
+        this.saveBatch(ptlAgreementCostTypeList);
     }
 }

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

@@ -95,7 +95,7 @@ public class PtlAgreementDeptServiceImpl extends ServiceImpl<PtlAgreementDeptMap
     public void authSave(AgreementAuthParam param) {
         // 删除之前所有的授权id
         LambdaQueryWrapper<PtlAgreementDept> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(PtlAgreementDept::getAgreementId, param.getId());
+        wrapper.in(PtlAgreementDept::getAgreementId, param.getId());
         this.remove(wrapper);
 
         // 新增保存授权数据

+ 15 - 12
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementServiceImpl.java

@@ -8,14 +8,10 @@ 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.po.*;
 import com.jzg.commons.entity.vo.AgreementInfoVo;
 import com.jzg.commons.entity.vo.AgreementUserVo;
 import com.jzg.commons.entity.vo.AgreementVo;
@@ -23,14 +19,10 @@ 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 com.jzg.organization.service.*;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -68,6 +60,15 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
     @Autowired
     private SysUserMapper userMapper;
 
+    @Autowired
+    private PtlAgreementUndwrtRulesService agreementRulesService;
+
+    @Autowired
+    private PtlAgreementUndwrtRulesAttrService agreementUndwrtRulesAttrService;
+
+    @Autowired
+    private PtlAgreementUndwrtRulesAttrLinkService agreementUndwrtRulesAttrLinkService;
+
 
     @Override
     public Page<AgreementVo> queryPage(AgreementParam param) {
@@ -121,6 +122,7 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         long count = this.count(new LambdaQueryWrapper<PtlAgreement>()
                 .eq(PtlAgreement::getAgreementTitle, agreementTitle)
                 .ne(StringUtils.isNotNull(id),PtlAgreement::getId, id)
+                .eq(PtlAgreement::getIsDelete,0)
         );
         return count > 0;
     }
@@ -178,12 +180,13 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
     }
 
     @Override
-    public List<AgreementUserVo> getUserByDeptId(String deptId) {
-        List<AgreementUserVo> userVoList = userMapper.getUserByDeptId(deptId);
+    public List<AgreementUserVo> getUserByDeptId(String deptId, String searchValue) {
+        List<AgreementUserVo> userVoList = userMapper.getUserByDeptId(deptId,searchValue);
         return userVoList;
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean deleteByIds(List<String> ids) {
         return baseMapper.deleteByIds(ids) > 0;
     }

+ 56 - 26
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementUndwrtRulesAttrServiceImpl.java

@@ -1,60 +1,90 @@
 package com.jzg.organization.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.entity.dto.RulesAttParam;
 import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesAttr;
 import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesDictLabal;
+import com.jzg.commons.entity.po.SysDict;
+import com.jzg.commons.util.StringUtils;
 import com.jzg.organization.mapper.PtlAgreementUndwrtRulesAttrMapper;
 import com.jzg.organization.service.PtlAgreementUndwrtRulesAttrService;
 import com.jzg.organization.service.PtlAgreementUndwrtRulesDictService;
+import com.jzg.organization.service.PtlAreaLicenseService;
+import org.redisson.api.RList;
+import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
+import org.springframework.util.CollectionUtils;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+import static com.jzg.commons.constants.RedisKeyConstants.DICT_REDIS_KEY;
+
 @Service
 public class PtlAgreementUndwrtRulesAttrServiceImpl extends ServiceImpl<PtlAgreementUndwrtRulesAttrMapper, PtlAgreementUndwrtRulesAttr>
         implements PtlAgreementUndwrtRulesAttrService {
 
-
     @Autowired
     PtlAgreementUndwrtRulesDictService ptlAgreementUndwrtRulesDictService;
 
+    @Autowired
+    RedissonClient redissonClient;
 
     @Override
     public List<PtlAgreementUndwrtRulesAttr> getUndwrtRulesAttrList() {
-        // 获取字典列表
-        List<PtlAgreementUndwrtRulesDictLabal> undwrtRulesDictList = ptlAgreementUndwrtRulesDictService.getUndwrtRulesDictList();
-        // 检查是否为空
-        if (undwrtRulesDictList == null || undwrtRulesDictList.isEmpty()) {
-            return this.list();
+        try {
+
+            // 获取属性列表
+            List<PtlAgreementUndwrtRulesAttr> list = this.list();
+            if (CollectionUtils.isEmpty(list)) {
+                return Collections.emptyList();
+            }
+            // 获取字典列表
+            List<PtlAgreementUndwrtRulesDictLabal> undwrtRulesDictList = ptlAgreementUndwrtRulesDictService.getUndwrtRulesDictList();
+            Map<Integer, List<PtlAgreementUndwrtRulesDictLabal>> dictMap = undwrtRulesDictList.stream()
+                    .collect(Collectors.groupingBy(PtlAgreementUndwrtRulesDictLabal::getDictId));
+            initializeAttributes(list, dictMap);
+            return list;
+        } catch (Exception e) {
+            // 处理异常
+            throw new RuntimeException("Error occurred while processing getUndwrtRulesAttrList", e);
         }
-        Map<Integer, List<PtlAgreementUndwrtRulesDictLabal>> dictMap = undwrtRulesDictList.stream()
-                .collect(Collectors.groupingBy(PtlAgreementUndwrtRulesDictLabal::getDictId));
-        // 获取属性列表
-        List<PtlAgreementUndwrtRulesAttr> list = this.list();
+    }
+
+    private void initializeAttributes(List<PtlAgreementUndwrtRulesAttr> list, Map<Integer, List<PtlAgreementUndwrtRulesDictLabal>> dictMap) {
+        RList<SysDict> rules = redissonClient.getList(DICT_REDIS_KEY + "rule_operator");
         list.forEach(attr -> {
-            // 获取对应的字典标签列表
-            List<PtlAgreementUndwrtRulesDictLabal> dictLabalList = dictMap.getOrDefault(attr.getDictId(), Collections.emptyList());
-            // 初始化 minArray 和 dictLabal
-            if (attr.getMinArray() == null) {
-                attr.setMinArray(new String[]{});
-            }
-            if (attr.getDictLabal() == null) {
-                attr.setDictLabal(new ArrayList<>());
-            }
+            attr.setRulesDict(rules);
             // 设置字典标签列表
-            attr.setDictLabal(new ArrayList<>(dictLabalList));
+            List<PtlAgreementUndwrtRulesDictLabal> dictLabalList = dictMap.getOrDefault(attr.getDictId(), Collections.emptyList());
+            attr.setDictLabal(dictLabalList);
         });
-        return list;
     }
 
-
-
-
+    @Override
+    public Map<String, List<PtlAgreementUndwrtRulesAttr>> attrGroup(RulesAttParam param) {
+        try {
+            LambdaQueryWrapper<PtlAgreementUndwrtRulesAttr> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+            lambdaQueryWrapper.like(StringUtils.isNotEmpty(param.getAttrName()), PtlAgreementUndwrtRulesAttr::getAttrName, param.getAttrName());
+            lambdaQueryWrapper.orderByAsc(PtlAgreementUndwrtRulesAttr::getSort);
+            List<PtlAgreementUndwrtRulesAttr> list = this.list(lambdaQueryWrapper);
+            if (CollectionUtils.isEmpty(list)) {
+                return Collections.emptyMap();
+            }
+            // 获取字典列表
+            List<PtlAgreementUndwrtRulesDictLabal> undwrtRulesDictList = ptlAgreementUndwrtRulesDictService.getUndwrtRulesDictList();
+            Map<Integer, List<PtlAgreementUndwrtRulesDictLabal>> dictMap = undwrtRulesDictList.stream()
+                    .collect(Collectors.groupingBy(PtlAgreementUndwrtRulesDictLabal::getDictId));
+            initializeAttributes(list, dictMap);
+            return list.stream().collect(Collectors.groupingBy(PtlAgreementUndwrtRulesAttr::getAttrGroup));
+        } catch (Exception e) {
+            // 处理异常
+            throw new RuntimeException("Error occurred while processing attrGroup", e);
+        }
+    }
 
 
 }

+ 4 - 2
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementUndwrtRulesDictServiceImpl.java

@@ -1,5 +1,7 @@
 package com.jzg.organization.service.impl;
+import com.google.common.collect.Lists;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesDict;
@@ -10,6 +12,8 @@ import com.jzg.organization.service.PtlAgreementUndwrtRulesDictService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -38,6 +42,4 @@ public class PtlAgreementUndwrtRulesDictServiceImpl extends ServiceImpl<PtlAgree
     }
 
 
-
-
 }

+ 24 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAreaLicenseServiceImpl.java

@@ -0,0 +1,24 @@
+package com.jzg.organization.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.entity.po.PtlAreaLicense;
+import com.jzg.commons.util.StringUtils;
+import com.jzg.organization.mapper.PtlAreaLicenseMapper;
+import com.jzg.organization.service.PtlAreaLicenseService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class PtlAreaLicenseServiceImpl extends ServiceImpl<PtlAreaLicenseMapper, PtlAreaLicense>
+        implements PtlAreaLicenseService {
+
+
+    @Override
+    public List<PtlAreaLicense> getByParentNumber(String parentNumber) {
+        if (StringUtils.isEmpty(parentNumber)) {
+            parentNumber = "0";
+        }
+        return lambdaQuery().eq(PtlAreaLicense::getParentNumber, parentNumber).list();
+    }
+}

+ 44 - 22
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysActivityServiceImpl.java

@@ -16,10 +16,7 @@ import com.jzg.organization.mapper.SysActivityAwardMapper;
 import com.jzg.organization.mapper.SysActivityMapper;
 import com.jzg.organization.mapper.SysActivityRecordMapper;
 import com.jzg.organization.mapper.SysUploadFilesMapper;
-import com.jzg.organization.service.SysActivityAwardService;
-import com.jzg.organization.service.SysActivityDeptService;
-import com.jzg.organization.service.SysActivityService;
-import com.jzg.organization.service.SysDeptService;
+import com.jzg.organization.service.*;
 import io.minio.MinioClient;
 import io.minio.PutObjectArgs;
 import io.minio.errors.*;
@@ -43,6 +40,8 @@ import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 /**
  * @author quchen
@@ -69,6 +68,9 @@ public class SysActivityServiceImpl extends ServiceImpl<SysActivityMapper, SysAc
     @Resource
     private SysUploadFilesMapper sysUploadFilesMapper;
 
+    @Resource
+    private SysUserJzgInfoService sysUserJzgInfoService;
+
     @Resource
     private SysActivityRecordMapper sysActivityRecordMapper;
 
@@ -169,23 +171,7 @@ public class SysActivityServiceImpl extends ServiceImpl<SysActivityMapper, SysAc
             throw new RuntimeException("机构不存在");
         }
         BeanUtils.copyProperties(sysActivityVo, sysActivity);
-        // 更新活动状态
-        LocalDate now = LocalDate.now();
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        LocalDate startTime = LocalDate.parse(sysActivityVo.getActStartTime(), formatter);
-        LocalDate endTime = LocalDate.parse(sysActivityVo.getActEndTime(), formatter);
-        // 检查当前时间是否早于生效日期
-        if (now.isBefore(startTime)) {
-            sysActivity.setActStatus("1");
-        } else if (now.isAfter(startTime) && now.isBefore(endTime)) {
-            sysActivity.setActStatus("2");
-        } else if (now.isEqual(startTime)) {
-            sysActivity.setActStatus("2");
-        } else if (now.isAfter(endTime)) {
-            sysActivity.setActStatus("3");
-        } else if (now.isEqual(endTime)) {
-            sysActivity.setActStatus("3");
-        }
+        checkActivityStatus(sysActivityVo.getActStartTime(), sysActivityVo.getActEndTime(), sysActivity);
         sysActivityService.updateById(sysActivity);
         // 先删除活动下的机构数据
         List<SysActivityDept> isExistList = sysActivityDeptService.list(new LambdaQueryWrapper<SysActivityDept>()
@@ -221,6 +207,25 @@ public class SysActivityServiceImpl extends ServiceImpl<SysActivityMapper, SysAc
         return HttpResult.ok("修改活动成功");
     }
 
+    public void checkActivityStatus(String actStartTime, String actEndTime, SysActivity sysActivity) {
+        LocalDate now = LocalDate.now();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDate startTime = LocalDate.parse(actStartTime, formatter);
+        LocalDate endTime = LocalDate.parse(actEndTime, formatter);
+        // 检查当前时间是否早于生效日期
+        if (now.isBefore(startTime)) {
+            sysActivity.setActStatus("1");
+        } else if (now.isAfter(startTime) && now.isBefore(endTime)) {
+            sysActivity.setActStatus("2");
+        } else if (now.isEqual(startTime)) {
+            sysActivity.setActStatus("2");
+        } else if (now.isAfter(endTime)) {
+            sysActivity.setActStatus("3");
+        } else if (now.isEqual(endTime)) {
+            sysActivity.setActStatus("3");
+        }
+    }
+
     @Override
     public HttpResult deleteActivity(String id) {
         SysActivity sysActivity = sysActivityService.getById(id);
@@ -281,7 +286,24 @@ public class SysActivityServiceImpl extends ServiceImpl<SysActivityMapper, SysAc
 
     @Override
     public Page<SysActivity> getActivityList(Page page,SysActivityVo sysActivityVo) {
-        return baseMapper.getSysActivityList(page,sysActivityVo);
+    Page<SysActivity> pages =  baseMapper.getSysActivityList(page,sysActivityVo);
+    pages.getRecords().forEach(activity -> {
+        SysDept sysDept = sysDeptService.getById(activity.getActDept());
+        AtomicInteger count = new AtomicInteger();
+        List<SysActivityDept> sysActivityDeptList = sysActivityDeptService.list(new LambdaQueryWrapper<SysActivityDept>()
+                .eq(SysActivityDept::getActivityId, activity.getId()).eq(SysActivityDept::getIsEffective, 0));
+        sysActivityDeptList.forEach(sysActivityDept -> {
+            List<SysUserJzgInfo> sysUserJzgInfo = sysUserJzgInfoService.list(new LambdaQueryWrapper<SysUserJzgInfo>().eq(SysUserJzgInfo::getDeptId, sysActivityDept.getDeptId()));
+            count.set(count.get() + sysUserJzgInfo.size());
+        });
+        activity.setDeptIds(sysActivityDeptList.stream().map(SysActivityDept::getDeptId).collect(Collectors.toList()));
+        activity.setActDeptName(sysDept.getName());
+        activity.setDepts(activity.getDeptIds().stream().map(deptId -> sysDeptService.getById(deptId).getName()).collect(Collectors.joining(",")));
+        activity.setUserCount(count);
+        checkActivityStatus(activity.getActStartTime(), activity.getActEndTime(), activity);
+        updateById(activity);
+    });
+        return pages;
     }
 
     @Override

+ 27 - 2
tenant/organization/src/main/resources/application.yml

@@ -1,6 +1,9 @@
 spring:
+  application:
+    name: jzg-organization
   main:
     allow-circular-references: true
+    allow-bean-definition-overriding: true
   profiles:
     active: dev
 
@@ -40,11 +43,33 @@ tenant:
     - sys_message_template
     - sys_message_user
     - sys_notice_user
+    - ptl_scheme_info
+    - ptl_scheme_insurance
+    - ptl_scheme_insurance_driving_intention
+    - ins_business_insurance_option
+    - ins_business_insurance
     - ptl_agreement_attribution
+    - sys_dept
     - ptl_agreement_dept
+    - ptl_agreement_undwrt_rules_attr
+    - ptl_agreement_undwrt_rules_dict_labal
+    - ptl_area_license
   ignoreLoginNames:
 
 data-scope:
   tables:
-    - sys_user_jzg_info
-    - sys_dept
+    - sys_system
+    - sys_user
+    - sys_user_role
+    - sys_organization_user_link
+    - sys_area
+    - sys_poster
+    - sys_message_notice
+    - sys_upload_files
+    - sys_notice_user
+    - ins_business_insurance
+    - ins_business_insurance_option
+    - ptl_scheme_insurance_driving_intention
+    - ptl_scheme_info
+    - ptl_scheme
+    - sys_activity

+ 8 - 0
tenant/organization/src/main/resources/mapper/PtlAgreementCostMapper.xml

@@ -13,6 +13,10 @@
         <result column="failure_time" property="failureTime" jdbcType="TIMESTAMP"/>
         <result column="audit_method" property="auditMethod" jdbcType="VARCHAR"/>
         <result column="cost_describe" property="costDescribe" jdbcType="VARCHAR"/>
+        <result column="deadline_time" property="deadlineTime" jdbcType="VARCHAR"/>
+        <result column="approved" property="approved" jdbcType="VARCHAR"/>
+        <result column="is_valid" property="isValid" jdbcType="VARCHAR"/>
+        <result column="is_enabled" property="isEnabled" jdbcType="VARCHAR"/>
         <collection property="ptlAgreementCostTypeList" column="{costId=id}" ofType="com.jzg.commons.entity.vo.PtlAgreementCostTypeVo" select="selectCostType" />
         <collection property="ruleConditions" column="{costId=id}" ofType="com.jzg.commons.entity.vo.PtlAgreementCostRuleVo" select="selectCostRule" />
     </resultMap>
@@ -71,10 +75,14 @@
         t.product_id,
         t.cover_rule_id,
         t.effective_time,
+        t.deadline_time,
         t.failure_time,
         t.audit_method,
         t.cost_describe,
         t.is_delete,
+        t.approved,
+        t.is_valid,
+        t.is_enabled,
         t.create_by,
         t.create_time,
         t.update_by,

+ 15 - 3
tenant/organization/src/main/resources/mapper/SysActivityMapper.xml

@@ -2,15 +2,27 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.jzg.organization.mapper.SysActivityMapper">
     <select id="getSysActivityList" resultType="com.jzg.commons.entity.po.SysActivity">
-        select
-            *,
-            sd.name as actDept
+        select DISTINCT
+            sa.id as id,
+            sa.act_dept as actDept,
+            sa.act_name as actName,
+            sa.act_method as actMethod,
+            sa.act_start_time as actStartTime,
+            sa.act_end_time as actEndTime,
+            sa.create_time as createTime,
+            sa.create_by as createBy,
+            sa.act_status as actStatus,
+            sa.is_delete as isDelete,
+            sa.is_end as isEnd
         from
             sys_activity sa
         left join sys_dept sd on sa.act_dept = sd.id
+        left join sys_activity_dept sad ON sa.id = sad.activity_id
+        left join sys_dept sd2 ON sad.dept_id = sd2.id
         where
             1=1
           and sa.is_delete = '0'
+          and sa.is_end = '0'
         <if test="sysActivityVo.actName != null and sysActivityVo.actName != ''">
             and sa.act_name like concat('%',#{sysActivityVo.actName},'%')
         </if>

+ 5 - 1
tenant/organization/src/main/resources/mapper/SysUserMapper.xml

@@ -63,15 +63,19 @@
             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
+        SELECT suji.id, suji.user_id as userId, suji.name, su.mobile, suji.dept_id as deptId, sd.name as deptName
         FROM sys_user_jzg_info suji
         LEFT JOIN sys_user su on suji.user_id = su.id
+        LEFT JOIN sys_dept sd on sd.id = suji.dept_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>
+            <if test="searchValue != null and searchValue != ''">
+                AND (suji.name = #{searchValue} or suji.mobile = #{searchValue} or suji.work_number = #{searchValue})
+            </if>
         </where>
         group by suji.id
         order by suji.create_time desc