Bläddra i källkod

产品费用及承包规则历史记录详情

haoyu 2 år sedan
förälder
incheckning
3154b14667
14 ändrade filer med 399 tillägg och 46 borttagningar
  1. 12 0
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementProductQueryVo.java
  2. 1 0
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
  3. 31 8
      src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementHistoryController.java
  4. 1 1
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsAttrLinkHistory.java
  5. 1 1
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesAttrLinkHistory.java
  6. 3 3
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesNewHistory.java
  7. 11 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductQueryVo.java
  8. 13 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementUndwrtRulesQueryVo.java
  9. 7 5
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewHistoryService.java
  10. 8 6
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementUndwrtRulesNewHistoryService.java
  11. 149 4
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewHistoryServiceImpl.java
  12. 9 9
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java
  13. 146 3
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesNewHistoryServiceImpl.java
  14. 7 6
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesNewServiceImpl.java

+ 12 - 0
src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementProductQueryVo.java

@@ -1,9 +1,21 @@
 package com.ydtech.modules.protocol.entity.vo;
 
 import com.ydtech.core.page.PageRequest;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 @Data
 public class PtlAgreementProductQueryVo extends PageRequest {
+    @ApiModelProperty("协议ID")
     private String agreementId;
+
+    @ApiModelProperty("操作人")
+    private String operator;
+
+    @ApiModelProperty("操作类型")
+    private String operatorType;
+
+    @ApiModelProperty("操作时间")
+    private String operatorTime;
+
 }

+ 1 - 0
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java

@@ -31,6 +31,7 @@ import com.ydtech.utils.idgen.IdGenerate;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;

+ 31 - 8
src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementHistoryController.java

@@ -18,11 +18,9 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -62,20 +60,45 @@ public class PtlNewAgreementHistoryController extends BaseController {
     @PostMapping("agreementHistoryPage")
     @ApiOperation("分页查询产品费用历史记录")
     public HttpResult<PageResult> agreementHistoryPage(@RequestBody AgreementProductQueryVo agreementProductQueryVo) {
-        Page page = buildPageRequest(agreementProductQueryVo.getPageDto());
         List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
-        Page<PtlAgreementProductCostsNewHistory> ptlAgreementPage = ptlAgreementProductCostsNewHistoryService.pageHistory(page, agreementProductQueryVo.getAgreementId(),undwrtRulesAttrList);
+        Page<PtlAgreementProductCostsNewHistory> ptlAgreementPage = ptlAgreementProductCostsNewHistoryService.pageHistory(agreementProductQueryVo, undwrtRulesAttrList);
         return HttpResult.ok(buildPageResponse(ptlAgreementPage));
     }
 
+    @GetMapping("/getCostDetail/{batchNo}")
+    @ApiOperation("产品费用历史记录详情")
+    public HttpResult<HashMap<String, Object>> getCostDetail(@PathVariable String batchNo) {
+        HashMap<String, Object> costsNewHistory = ptlAgreementProductCostsNewHistoryService.getCostHistoryDetail(batchNo);
+        return HttpResult.ok(costsNewHistory);
+    }
+
+
+    @GetMapping("/costComparison/{batchNo}")
+    @ApiOperation("产品费用历史记录比对")
+    public HttpResult<HashMap<String, Object>> costComparison(@PathVariable String batchNo) {
+        HashMap<String, Object> costsNewHistory = ptlAgreementProductCostsNewHistoryService.costComparison(batchNo);
+        return HttpResult.ok(costsNewHistory);
+    }
+
     @PostMapping("rulesHistoryPage")
     @ApiOperation("分页查询承保规则历史记录")
     public HttpResult<PageResult> rulesHistoryPage(@RequestBody AgreementUndwrtRulesQueryVo agreementUndwrtRulesQueryVo) {
-        Page page = buildPageRequest(agreementUndwrtRulesQueryVo.getPageDto());
         List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
-        Page<PtlAgreementUndwrtRulesNewHistory> ptlAgreementUndwrtRulesPage = ptlAgreementUndwrtRulesNewHistoryService.pageHistory(page, agreementUndwrtRulesQueryVo.getAgreementId(),undwrtRulesAttrList);
+        Page<PtlAgreementUndwrtRulesNewHistory> ptlAgreementUndwrtRulesPage = ptlAgreementUndwrtRulesNewHistoryService.pageHistory(agreementUndwrtRulesQueryVo, undwrtRulesAttrList);
         return HttpResult.ok(buildPageResponse(ptlAgreementUndwrtRulesPage));
     }
 
+    @GetMapping("/getRulesDetail/{batchNo}")
+    @ApiOperation("承包规则历史记录详情")
+    public HttpResult<HashMap<String, Object>> getRulesDetail(@PathVariable String batchNo) {
+        HashMap<String, Object> rulesNewHistory = ptlAgreementUndwrtRulesNewHistoryService.getRulesHistoryDetail(batchNo);
+        return HttpResult.ok(rulesNewHistory);
+    }
 
+    @GetMapping("/rulesComparison/{batchNo}")
+    @ApiOperation("承包规则历史记录比对")
+    public HttpResult<HashMap<String, Object>> rulesComparison(@PathVariable String batchNo) {
+        HashMap<String, Object> rulesNewHistory = ptlAgreementUndwrtRulesNewHistoryService.rulesComparison(batchNo);
+        return HttpResult.ok(rulesNewHistory);
+    }
 }

+ 1 - 1
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsAttrLinkHistory.java

@@ -21,7 +21,7 @@ import java.time.LocalDateTime;
 public class PtlAgreementProductCostsAttrLinkHistory {
 
     @TableId(value = "id")
-    private String id;
+    private Integer id;
 
     @ApiModelProperty(value = "费用id")
     @TableField(value = "costs_id")

+ 1 - 1
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesAttrLinkHistory.java

@@ -20,7 +20,7 @@ import java.time.LocalDateTime;
 @AllArgsConstructor
 public class PtlAgreementUndwrtRulesAttrLinkHistory {
 
-    @TableId(value = "id", type = com.baomidou.mybatisplus.annotation.IdType.AUTO)
+    @TableId(value = "id")
     private Integer id;
 
     @ApiModelProperty(value = "承包规则id")

+ 3 - 3
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesNewHistory.java

@@ -15,14 +15,14 @@ import java.util.List;
 /**
  *
  */
-@TableName(value = "ptl_agreement_undwrt_rules_new_history", autoResultMap = true) //todo 添加数据库表
+@TableName(value = "ptl_agreement_undwrt_rules_new_history", autoResultMap = true)
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
 public class PtlAgreementUndwrtRulesNewHistory {
 
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
+    @TableId(value = "id")
+    private String id;
 
     @ApiModelProperty(value = "协议id")
     @TableField(value = "agreement_id")

+ 11 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductQueryVo.java

@@ -5,6 +5,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.time.LocalDate;
 @Data
 public class AgreementProductQueryVo extends PageRequest {
     @ApiModelProperty(value = "协议id")
@@ -27,4 +28,14 @@ public class AgreementProductQueryVo extends PageRequest {
 
     @ApiModelProperty(value = "创建时间止期")
     private String createEndTime;
+
+    @ApiModelProperty("操作人")
+    private String operator;
+
+    @ApiModelProperty("操作类型")
+    private String operatorType;
+
+    @ApiModelProperty("操作时间")
+    private LocalDate operatorTime;
+
 }

+ 13 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementUndwrtRulesQueryVo.java

@@ -1,9 +1,22 @@
 package com.ydtech.modules.protocols.entity.vo;
 
 import com.ydtech.core.page.PageRequest;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 @Data
 public class AgreementUndwrtRulesQueryVo extends PageRequest {
+
+    @ApiModelProperty("协议ID")
     private String agreementId;
+
+    @ApiModelProperty("操作人")
+    private String operator;
+
+    @ApiModelProperty("操作类型")
+    private String operatorType;
+
+    @ApiModelProperty("操作时间")
+    private String operatorTime;
+
 }

+ 7 - 5
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewHistoryService.java

@@ -2,13 +2,11 @@ package com.ydtech.modules.protocols.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ydtech.modules.protocol.entity.vo.PtlAgreementHistoryConvertQueryVo;
-import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNewHistory;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
-import com.ydtech.modules.protocols.entity.vo.AgreementProductCosts;
-import com.ydtech.modules.protocols.entity.vo.AgreementProductCostsSave;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductQueryVo;
 
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -18,7 +16,11 @@ import java.util.List;
  */
 public interface PtlAgreementProductCostsNewHistoryService extends IService<PtlAgreementProductCostsNewHistory> {
 
-    Page<PtlAgreementProductCostsNewHistory> pageHistory(Page page, String agreementId, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList);
+    Page<PtlAgreementProductCostsNewHistory> pageHistory(AgreementProductQueryVo agreementProductQueryVo, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList);
 
 
+    HashMap<String, Object> getCostHistoryDetail(String batchNo);
+
+
+    HashMap<String, Object> costComparison(String batchNo);
 }

+ 8 - 6
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementUndwrtRulesNewHistoryService.java

@@ -2,14 +2,11 @@ package com.ydtech.modules.protocols.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ydtech.modules.protocol.entity.dto.history.PtlAgreementUndwrtRulesHistory;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
-import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesNew;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesNewHistory;
-import com.ydtech.modules.protocols.entity.vo.AgreementUndwrtRules;
-import com.ydtech.modules.protocols.entity.vo.AgreementUndwrtRulesSave;
-import org.apache.ibatis.annotations.Param;
+import com.ydtech.modules.protocols.entity.vo.AgreementUndwrtRulesQueryVo;
 
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -20,5 +17,10 @@ import java.util.List;
 public interface PtlAgreementUndwrtRulesNewHistoryService extends IService<PtlAgreementUndwrtRulesNewHistory> {
 
 
-    Page<PtlAgreementUndwrtRulesNewHistory> pageHistory(Page page, String agreementId,List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList);
+    Page<PtlAgreementUndwrtRulesNewHistory> pageHistory(AgreementUndwrtRulesQueryVo agreementUndwrtRulesQueryVo, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList);
+
+
+    HashMap<String, Object> getRulesHistoryDetail(String batchNo);
+
+    HashMap<String, Object> rulesComparison(String batchNo);
 }

+ 149 - 4
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewHistoryServiceImpl.java

@@ -1,20 +1,25 @@
 package com.ydtech.modules.protocols.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.modules.protocol.entity.po.PtlAreaLicense;
 import com.ydtech.modules.protocol.service.PtlAreaLicenseService;
 import com.ydtech.modules.protocols.dao.PtlAgreementProductCostsNewHistoryMapper;
 import com.ydtech.modules.protocols.entity.po.*;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCostsSave;
+import com.ydtech.modules.protocols.entity.vo.AgreementProductQueryVo;
 import com.ydtech.modules.protocols.service.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.ydtech.modules.base.model.vo.PageVo.buildPageRequest;
+
 /**
  * @description
  * @createDate
@@ -32,15 +37,27 @@ public class PtlAgreementProductCostsNewHistoryServiceImpl extends ServiceImpl<P
     @Autowired
     PtlAgreementUndwrtRulesAttrService ptlAgreementUndwrtRulesAttrService;
 
+    @Autowired
+    PtlAgreementProductCostsNewService ptlAgreementProductCostsNewService;
+
     @Override
-    public Page<PtlAgreementProductCostsNewHistory> pageHistory(Page page, String agreementId, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
+    public Page<PtlAgreementProductCostsNewHistory> pageHistory(AgreementProductQueryVo agreementProductQueryVo, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
+        Page page = buildPageRequest(agreementProductQueryVo.getPageDto());
         Page<PtlAgreementProductCostsNewHistory> historyVoPage = new Page<>();
         //获取当前协议下的产品
-        LambdaQueryWrapper<PtlAgreementProductCostsNewHistory> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(PtlAgreementProductCostsNewHistory::getAgreementId, agreementId);
+
+        QueryWrapper<PtlAgreementProductCostsNewHistory> wrapper = new QueryWrapper<>();
+        wrapper
+                .eq("agreement_id", agreementProductQueryVo.getAgreementId())
+                .eq(!ObjectUtils.isEmpty(agreementProductQueryVo.getOperator()), "modifier", agreementProductQueryVo.getOperator())
+                .eq(!ObjectUtils.isEmpty(agreementProductQueryVo.getOperatorType()), "operator_type", agreementProductQueryVo.getOperatorType())
+                .eq(!ObjectUtils.isEmpty(agreementProductQueryVo.getOperatorTime()), "DATE(`operator_time`)", agreementProductQueryVo.getOperatorTime());
         Page selectPage = baseMapper.selectPage(page, wrapper);
         List<PtlAgreementProductCostsNewHistory> records = selectPage.getRecords();
 
+        if (records.size() == 0) {
+            return historyVoPage;
+        }
 
         //获取所有历史记录产品批次
         List<String> batch = new ArrayList<>();
@@ -69,6 +86,134 @@ public class PtlAgreementProductCostsNewHistoryServiceImpl extends ServiceImpl<P
         return historyVoPage;
     }
 
+    /**
+     * 获取产品历史详情
+     *
+     * @param batchNo 批次号
+     * @return 返回一个包含成本历史详细信息的HashMap,其中主要包含了一个经过处理的成本历史对象。
+     */
+    @Override
+    public HashMap<String, Object> getCostHistoryDetail(String batchNo) {
+
+        // 根据批次号查询产品历史出入口信息
+        LambdaQueryWrapper<PtlAgreementProductCostsNewHistory> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(PtlAgreementProductCostsNewHistory::getBatch, batchNo);
+        PtlAgreementProductCostsNewHistory agreementProductCostsNewHistory = getOne(lambdaQueryWrapper);
+
+        // 查询该批次号下的所有费用因子属性历史记录
+        LambdaQueryWrapper<PtlAgreementProductCostsAttrLinkHistory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PtlAgreementProductCostsAttrLinkHistory::getBatch, batchNo);
+        List<PtlAgreementProductCostsAttrLinkHistory> agreementProductCostsAttrLinkHistory = costsAttrLinkHistoryService.list(queryWrapper);
+
+        // 查询所有费用属性模型
+        List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
+
+        // 整合费用属性历史记录和属性模型,获取具体的属性列表
+        List<PtlAgreementUndwrtRulesAttr> rulesAttrs = manage(agreementProductCostsAttrLinkHistory, undwrtRulesAttrList);
+
+        // 设置产品费用因子对象的属性列表
+        agreementProductCostsNewHistory.setCostsAttrLinkList(rulesAttrs);
+
+        // 将产品历史对象放入HashMap中,以供返回
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put("agreementProductCostsNewHistory", agreementProductCostsNewHistory);
+
+        return hashMap;
+    }
+
+    /**
+     * 产品比较
+     *
+     * @param batchNo 批次号,用于查询特定批次的成本比较数据
+     * @return 返回一个包含协议产品成本新历史记录和新协议产品成本保存信息的HashMap
+     */
+    @Override
+    public HashMap<String, Object> costComparison(String batchNo) {
+
+        // 根据批次号查询协议产品成本历史记录
+        LambdaQueryWrapper<PtlAgreementProductCostsNewHistory> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(PtlAgreementProductCostsNewHistory::getBatch, batchNo);
+        PtlAgreementProductCostsNewHistory agreementProductCostsNewHistory = getOne(lambdaQueryWrapper);
+
+        // 根据批次号查询协议产品成本属性费用因子历史记录
+        LambdaQueryWrapper<PtlAgreementProductCostsAttrLinkHistory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PtlAgreementProductCostsAttrLinkHistory::getBatch, batchNo);
+        List<PtlAgreementProductCostsAttrLinkHistory> agreementProductCostsAttrLinkHistory = costsAttrLinkHistoryService.list(queryWrapper);
+
+        // 获取费用属性模型列表
+        List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
+
+        // 管理并处理成本属性因子列表
+        List<PtlAgreementUndwrtRulesAttr> costsAttrLinkList = manage(agreementProductCostsAttrLinkHistory, undwrtRulesAttrList);
+
+        // 设置产品属性因子列表到协议产品成本历史记录
+        agreementProductCostsNewHistory.setCostsAttrLinkList(costsAttrLinkList);
+
+        // 获取产品ID
+        String costsId = agreementProductCostsNewHistory.getCostsId();
+
+        // 根据产品ID和费用属性列表获取最新新协议产品信息
+        AgreementProductCostsSave newAgreementProductCostsSave = ptlAgreementProductCostsNewService.costsGet(costsId, undwrtRulesAttrList);
+
+        // 创建并填充HashMap,包含协议产品历史记录和最新协议产品信息
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put("agreementProductCostsNewHistory", agreementProductCostsNewHistory);
+        hashMap.put("newAgreementProductCostsSave", newAgreementProductCostsSave);
+
+        return hashMap;
+    }
+
+
+    /**
+     * 遍历处理车牌和地区ID
+     */
+    private List<PtlAgreementUndwrtRulesAttr> manage(List<PtlAgreementProductCostsAttrLinkHistory> agreementProductCostsAttrLinkHistory, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
+        List<PtlAgreementUndwrtRulesAttr> ptlAgreementUndwrtRulesAttrs = new ArrayList<>();
+
+        undwrtRulesAttrList.stream().forEach(x -> {
+            //处理多选和下拉
+            if ("checkbox".equals(x.getAttrType()) || "select".equals(x.getAttrType())) {
+                //处理车牌
+                if ("select".equals(x.getAttrType()) && "LicenseNo".equals(x.getAttrCode())) {
+                    PtlAgreementProductCostsAttrLinkHistory licenseNo = agreementProductCostsAttrLinkHistory.stream().filter(l -> l.getAttrCode().equals("LicenseNo")).findFirst().orElse(null);
+                    if (licenseNo != null) {
+                        //根据operator 获取车牌的地区id
+                        List<PtlAreaLicense> byParentNumber = ptlAreaLicenseService.getByParentNumber(licenseNo.getOperator());
+                        List<PtlAgreementUndwrtRulesDictLabal> dictLabal = byParentNumber.stream().map(y -> {
+                            PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = new PtlAgreementUndwrtRulesDictLabal();
+                            ptlAgreementUndwrtRulesDictLabal.setDictId(y.getId());
+                            ptlAgreementUndwrtRulesDictLabal.setCode(y.getAreaNumber());
+                            ptlAgreementUndwrtRulesDictLabal.setName(y.getLicense());
+                            return ptlAgreementUndwrtRulesDictLabal;
+                        }).collect(Collectors.toList());
+                        x.setDictLabal(dictLabal);
+                    }
+                }
+                x.setMinArray(new String[]{});
+                agreementProductCostsAttrLinkHistory.stream().filter(y -> y.getAttrCode().equals(x.getAttrCode())).findFirst().ifPresent(z -> {
+                    if (null != z.getMin()) {
+                        x.setId(z.getId());
+                        x.setMinArray(z.getMin().split(","));
+                        x.setMax(z.getMax());
+                        x.setOperator(z.getOperator());
+                    }
+                });
+            } else {
+                agreementProductCostsAttrLinkHistory.stream().filter(y -> y.getAttrCode().equals(x.getAttrCode())).findFirst().ifPresent(z -> {
+                    x.setId(z.getId());
+                    x.setMin(z.getMin());
+                    x.setMax(z.getMax());
+                    x.setOperator(z.getOperator());
+                });
+            }
+
+            ptlAgreementUndwrtRulesAttrs.add(x);
+        });
+
+        return ptlAgreementUndwrtRulesAttrs;
+    }
+
+
     /**
      * 遍历费用属性描述文字
      *

+ 9 - 9
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java

@@ -452,7 +452,7 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         ptlAgreementProductCostsNewHistory.setId(IdGenerate.nextId());
         ptlAgreementProductCostsNewHistory.setCostsId(ptlAgreementProductCostsNew.getId());
         //生成批次ID
-        String uuid = UUID.randomUUID().toString();
+        String uuid = IdGenerate.nextId();
         ptlAgreementProductCostsNewHistory.setBatch(uuid);
         ptlAgreementProductCostsNewHistory.setOperatorType("add");
         ptlAgreementProductCostsNewHistory.setModifier(BaseController.getUser().getId());
@@ -480,7 +480,7 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                 costsAttrLink.add(x);
                 BeanUtils.copyProperties(x, costsAttrLinkHistory);
                 //设置产品费用因子历史记录
-                costsAttrLinkHistory.setId(IdGenerate.nextId());
+                costsAttrLinkHistory.setId(null);
                 costsAttrLinkHistory.setBatch(uuid);
                 costsAttrLinkHistory.setOperatorType("add");
                 costsAttrLinkHistory.setModifier(BaseController.getUser().getId());
@@ -494,7 +494,7 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                     costsAttrLink.add(x);
                     BeanUtils.copyProperties(x, costsAttrLinkHistory);
                     //设置产品费用因子历史记录
-                    costsAttrLinkHistory.setId(IdGenerate.nextId());
+                    costsAttrLinkHistory.setId(null);
                     costsAttrLinkHistory.setBatch(uuid);
 
                     costsAttrLinkHistory.setOperatorType("add");
@@ -557,7 +557,7 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         ptlAgreementProductCostsNewHistory.setId(IdGenerate.nextId());
         ptlAgreementProductCostsNewHistory.setCostsId(ptlAgreementProductCostsNew.getId());
         //生成批次ID
-        String uuid = UUID.randomUUID().toString();
+        String uuid = IdGenerate.nextId();
         ptlAgreementProductCostsNewHistory.setBatch(uuid);
 
         ptlAgreementProductCostsNewHistory.setOperatorType("update");
@@ -596,7 +596,7 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                 //设置产品费用因子历史记录
                 PtlAgreementProductCostsAttrLinkHistory costsAttrLinkHistory = new PtlAgreementProductCostsAttrLinkHistory();
                 BeanUtils.copyProperties(x, costsAttrLinkHistory);
-                costsAttrLinkHistory.setId(IdGenerate.nextId());
+                costsAttrLinkHistory.setId(null);
                 costsAttrLinkHistory.setBatch(uuid);
 
                 costsAttrLinkHistory.setOperatorType("update");
@@ -614,7 +614,7 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                         //设置产品费用因子历史记录
                         PtlAgreementProductCostsAttrLinkHistory costsAttrLinkHistory = new PtlAgreementProductCostsAttrLinkHistory();
                         BeanUtils.copyProperties(x, costsAttrLinkHistory);
-                        costsAttrLinkHistory.setId(IdGenerate.nextId());
+                        costsAttrLinkHistory.setId(null);
                         costsAttrLinkHistory.setBatch(uuid);
 
                         costsAttrLinkHistory.setOperatorType("update");
@@ -631,7 +631,7 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                         //设置产品费用因子历史记录
                         PtlAgreementProductCostsAttrLinkHistory costsAttrLinkHistory = new PtlAgreementProductCostsAttrLinkHistory();
                         BeanUtils.copyProperties(x, costsAttrLinkHistory);
-                        costsAttrLinkHistory.setId(IdGenerate.nextId());
+                        costsAttrLinkHistory.setId(null);
                         costsAttrLinkHistory.setBatch(uuid);
 
                         costsAttrLinkHistory.setOperatorType("update");
@@ -665,7 +665,7 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         ptlAgreementProductCostsNewHistory.setId(IdGenerate.nextId());
         ptlAgreementProductCostsNewHistory.setCostsId(ptlAgreementProductCostsNew.getId());
         //生成批次ID
-        String uuid = UUID.randomUUID().toString();
+        String uuid = IdGenerate.nextId();
         ptlAgreementProductCostsNewHistory.setBatch(uuid);
 
         ptlAgreementProductCostsNewHistory.setOperatorType("delete");
@@ -684,7 +684,7 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
             PtlAgreementProductCostsAttrLinkHistory costsAttrLinkHistory = new PtlAgreementProductCostsAttrLinkHistory();
             BeanUtils.copyProperties(x, costsAttrLinkHistory);
             //设置产品费用因子历史记录
-            costsAttrLinkHistory.setId(IdGenerate.nextId());
+            costsAttrLinkHistory.setId(null);
             costsAttrLinkHistory.setBatch(uuid);
             costsAttrLinkHistory.setOperatorType("delete");
             costsAttrLinkHistory.setModifier(BaseController.getUser().getId());

+ 146 - 3
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesNewHistoryServiceImpl.java

@@ -10,11 +10,15 @@ import com.ydtech.modules.protocol.entity.po.PtlAreaLicense;
 import com.ydtech.modules.protocol.service.PtlAreaLicenseService;
 import com.ydtech.modules.protocols.dao.PtlAgreementUndwrtRulesNewHistoryMapper;
 import com.ydtech.modules.protocols.entity.po.*;
+import com.ydtech.modules.protocols.entity.vo.AgreementUndwrtRulesQueryVo;
+import com.ydtech.modules.protocols.entity.vo.AgreementUndwrtRulesSave;
 import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesAttrLinkHistoryService;
 import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesAttrService;
 import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesNewHistoryService;
+import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesNewService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -22,6 +26,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+import static com.ydtech.modules.base.model.vo.PageVo.buildPageRequest;
+
 
 /**
  * @description
@@ -42,15 +48,27 @@ public class PtlAgreementUndwrtRulesNewHistoryServiceImpl extends ServiceImpl<Pt
     @Autowired
     PtlAgreementUndwrtRulesAttrService ptlAgreementUndwrtRulesAttrService;
 
+    @Autowired
+    PtlAgreementUndwrtRulesNewService ptlAgreementUndwrtRulesNewService;
+
     @Override
-    public Page<PtlAgreementUndwrtRulesNewHistory> pageHistory(Page page, String agreementId, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
+    public Page<PtlAgreementUndwrtRulesNewHistory> pageHistory(AgreementUndwrtRulesQueryVo agreementUndwrtRulesQueryVo, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
+        Page page = buildPageRequest(agreementUndwrtRulesQueryVo.getPageDto());
         Page<PtlAgreementUndwrtRulesNewHistory> historyVoPage = new Page<>();
         //获取当前协议下的承包规则
-        LambdaQueryWrapper<PtlAgreementUndwrtRulesNewHistory> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(PtlAgreementUndwrtRulesNewHistory::getAgreementId, agreementId);
+        QueryWrapper<PtlAgreementUndwrtRulesNewHistory> wrapper = new QueryWrapper<>();
+        wrapper
+                .eq("agreement_id", agreementUndwrtRulesQueryVo.getAgreementId())
+                .eq(!ObjectUtils.isEmpty(agreementUndwrtRulesQueryVo.getOperator()), "modifier", agreementUndwrtRulesQueryVo.getOperator())
+                .eq(!ObjectUtils.isEmpty(agreementUndwrtRulesQueryVo.getOperatorType()), "operator_type", agreementUndwrtRulesQueryVo.getOperatorType())
+                .eq(!ObjectUtils.isEmpty(agreementUndwrtRulesQueryVo.getOperatorTime()), "DATE(`operator_time`)", agreementUndwrtRulesQueryVo.getOperatorTime());
         Page selectPage = baseMapper.selectPage(page, wrapper);
         List<PtlAgreementUndwrtRulesNewHistory> records = selectPage.getRecords();
 
+        if (records.size() == 0) {
+            return historyVoPage;
+        }
+
         //获取所有历史记录承包规则批次
         List<String> batch = new ArrayList<>();
         records.forEach(x -> {
@@ -78,6 +96,131 @@ public class PtlAgreementUndwrtRulesNewHistoryServiceImpl extends ServiceImpl<Pt
         return historyVoPage;
     }
 
+
+    /**
+     * 获取规则历史详情
+     *
+     * @param batchNo 批次号
+     * @return 返回一个包含规则历史详细信息的HashMap,其中key为"agreementUndwrtRulesNewHistory",value为PtlAgreementUndwrtRulesNewHistory对象
+     */
+    @Override
+    public HashMap<String, Object> getRulesHistoryDetail(String batchNo) {
+
+        // 根据批次号查询协议规则新历史记录
+        LambdaQueryWrapper<PtlAgreementUndwrtRulesNewHistory> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(PtlAgreementUndwrtRulesNewHistory::getBatch, batchNo);
+        PtlAgreementUndwrtRulesNewHistory agreementUndwrtRulesNewHistory = getOne(lambdaQueryWrapper);
+
+        // 根据批次号查询协议规则属性费用因子历史记录
+        LambdaQueryWrapper<PtlAgreementUndwrtRulesAttrLinkHistory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PtlAgreementUndwrtRulesAttrLinkHistory::getBatch, batchNo);
+        List<PtlAgreementUndwrtRulesAttrLinkHistory> agreementUndwrtRulesAttrLinkHistorie = undwrtRulesAttrLinkHistoryService.list(queryWrapper);
+
+        // 查询费用属性模型
+        List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
+
+        // 设置费用属性因子列表
+        agreementUndwrtRulesNewHistory.setCostsAttrLinkList(undwrtRulesAttrList);
+
+        // 构建返回的HashMap
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put("agreementUndwrtRulesNewHistory", agreementUndwrtRulesNewHistory);
+
+        return hashMap;
+    }
+
+
+    /**
+     * 比较规则的方法
+     *
+     * @param batchNo 批次号,用于查询特定批次的规则信息
+     * @return 返回一个包含协议未决规则新历史记录和新协议未决规则保存信息的HashMap
+     */
+    @Override
+    public HashMap<String, Object> rulesComparison(String batchNo) {
+
+        // 使用LambdaQueryWrapper查询特定批次号的协议规则历史记录
+        LambdaQueryWrapper<PtlAgreementUndwrtRulesNewHistory> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(PtlAgreementUndwrtRulesNewHistory::getBatch, batchNo);
+        PtlAgreementUndwrtRulesNewHistory agreementUndwrtRulesNewHistory = getOne(lambdaQueryWrapper);
+
+        // 使用LambdaQueryWrapper查询特定批次号的协议规则属性费用因子历史记录
+        LambdaQueryWrapper<PtlAgreementUndwrtRulesAttrLinkHistory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PtlAgreementUndwrtRulesAttrLinkHistory::getBatch, batchNo);
+        List<PtlAgreementUndwrtRulesAttrLinkHistory> agreementUndwrtRulesAttrLinkHistorie = undwrtRulesAttrLinkHistoryService.list(queryWrapper);
+
+        // 获取费用属性模型列表
+        List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
+
+        // 处理规则属性费用因子历史记录和费用属性模型,返回处理后的规则属性列表
+        List<PtlAgreementUndwrtRulesAttr> rulesAttrs = manage(agreementUndwrtRulesAttrLinkHistorie, undwrtRulesAttrList);
+
+        // 获取协议规则新历史记录对象的规则
+        agreementUndwrtRulesNewHistory.setCostsAttrLinkList(rulesAttrs);
+
+        String rulesId = agreementUndwrtRulesNewHistory.getRulesId();
+
+        // 使用规则ID和费用属性模型列表,获取最新新协议规则的信息
+        AgreementUndwrtRulesSave newAgreementUndwrtRulesSave = ptlAgreementUndwrtRulesNewService.rulesGet(rulesId, undwrtRulesAttrList);
+
+        // 创建并初始化HashMap,存放协议规则历史记录和最新新协议规则信息
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put("agreementUndwrtRulesNewHistory", agreementUndwrtRulesNewHistory);
+        hashMap.put("newAgreementUndwrtRulesSave", newAgreementUndwrtRulesSave);
+
+        return hashMap;
+    }
+
+
+    /**
+     * 遍历处理车牌和地区ID
+     */
+    private List<PtlAgreementUndwrtRulesAttr> manage(List<PtlAgreementUndwrtRulesAttrLinkHistory> undwrtRulesAttrLinkHistories, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
+        List<PtlAgreementUndwrtRulesAttr> ptlAgreementUndwrtRulesAttrs = new ArrayList<>();
+
+        undwrtRulesAttrList.stream().forEach(x -> {
+            //处理多选和下拉
+            if ("checkbox".equals(x.getAttrType()) || "select".equals(x.getAttrType())) {
+                //处理车牌
+                if ("select".equals(x.getAttrType()) && "LicenseNo".equals(x.getAttrCode())) {
+                    PtlAgreementUndwrtRulesAttrLinkHistory licenseNo = undwrtRulesAttrLinkHistories.stream().filter(l -> l.getAttrCode().equals("LicenseNo")).findFirst().orElse(null);
+                    if (licenseNo != null) {
+                        //根据operator 获取车牌的地区id
+                        List<PtlAreaLicense> byParentNumber = ptlAreaLicenseService.getByParentNumber(licenseNo.getOperator());
+                        List<PtlAgreementUndwrtRulesDictLabal> dictLabal = byParentNumber.stream().map(y -> {
+                            PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = new PtlAgreementUndwrtRulesDictLabal();
+                            ptlAgreementUndwrtRulesDictLabal.setDictId(y.getId());
+                            ptlAgreementUndwrtRulesDictLabal.setCode(y.getAreaNumber());
+                            ptlAgreementUndwrtRulesDictLabal.setName(y.getLicense());
+                            return ptlAgreementUndwrtRulesDictLabal;
+                        }).collect(Collectors.toList());
+                        x.setDictLabal(dictLabal);
+                    }
+                }
+                x.setMinArray(new String[]{});
+                undwrtRulesAttrLinkHistories.stream().filter(y -> y.getAttrCode().equals(x.getAttrCode())).findFirst().ifPresent(z -> {
+                    if (null != z.getMin()) {
+                        x.setId(z.getId());
+                        x.setMinArray(z.getMin().split(","));
+                        x.setMax(z.getMax());
+                        x.setOperator(z.getOperator());
+                    }
+                });
+            } else {
+                undwrtRulesAttrLinkHistories.stream().filter(y -> y.getAttrCode().equals(x.getAttrCode())).findFirst().ifPresent(z -> {
+                    x.setId(z.getId());
+                    x.setMin(z.getMin());
+                    x.setMax(z.getMax());
+                    x.setOperator(z.getOperator());
+                });
+            }
+
+            ptlAgreementUndwrtRulesAttrs.add(x);
+        });
+
+        return ptlAgreementUndwrtRulesAttrs;
+    }
+
     /**
      * 遍历费用属性描述文字
      *

+ 7 - 6
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesNewServiceImpl.java

@@ -16,6 +16,7 @@ import com.ydtech.modules.protocols.entity.vo.AgreementProductCostsSave;
 import com.ydtech.modules.protocols.entity.vo.AgreementUndwrtRules;
 import com.ydtech.modules.protocols.entity.vo.AgreementUndwrtRulesSave;
 import com.ydtech.modules.protocols.service.*;
+import com.ydtech.utils.idgen.IdGenerate;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -224,9 +225,9 @@ public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreem
         //添加承包规则ID
         ptlAgreementUndwrtRulesNewHistory.setRulesId(ptlAgreementUndwrtRulesNew.getId());
         //生成批次ID
-        String uuid = UUID.randomUUID().toString();
+        String uuid = IdGenerate.nextId();
         ptlAgreementUndwrtRulesNewHistory.setBatch(uuid);
-        ptlAgreementUndwrtRulesNewHistory.setId(null);
+        ptlAgreementUndwrtRulesNewHistory.setId(IdGenerate.nextId());
         ptlAgreementUndwrtRulesNewHistory.setOperatorType("add");
         ptlAgreementUndwrtRulesNewHistory.setModifier(BaseController.getUser().getId());
         ptlAgreementUndwrtRulesNewHistory.setOperatorTime(LocalDateTime.now());
@@ -290,9 +291,9 @@ public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreem
         //添加承包规则ID
         ptlAgreementUndwrtRulesNewHistory.setRulesId(ptlAgreementUndwrtRulesNew.getId());
         //生成批次ID
-        String uuid = UUID.randomUUID().toString();
+        String uuid = IdGenerate.nextId();
         ptlAgreementUndwrtRulesNewHistory.setBatch(uuid);
-        ptlAgreementUndwrtRulesNewHistory.setId(null);
+        ptlAgreementUndwrtRulesNewHistory.setId(IdGenerate.nextId());
         ptlAgreementUndwrtRulesNewHistory.setOperatorType("update");
         ptlAgreementUndwrtRulesNewHistory.setModifier(BaseController.getUser().getId());
         ptlAgreementUndwrtRulesNewHistory.setOperatorTime(LocalDateTime.now());
@@ -388,9 +389,9 @@ public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreem
         //添加费用ID
         ptlAgreementUndwrtRulesNewHistory.setRulesId(ptlAgreementUndwrtRulesNew.getId());
         //生成批次ID
-        String uuid = UUID.randomUUID().toString();
+        String uuid = IdGenerate.nextId();
         ptlAgreementUndwrtRulesNewHistory.setBatch(uuid);
-        ptlAgreementUndwrtRulesNewHistory.setId(null);
+        ptlAgreementUndwrtRulesNewHistory.setId(IdGenerate.nextId());
         ptlAgreementUndwrtRulesNewHistory.setOperatorType("delete");
         ptlAgreementUndwrtRulesNewHistory.setModifier(BaseController.getUser().getId());
         ptlAgreementUndwrtRulesNewHistory.setOperatorTime(LocalDateTime.now());