Bläddra i källkod

Merge branch 'test' into test-dismantle

785834757 2 år sedan
förälder
incheckning
fb00a9cfbb
73 ändrade filer med 1528 tillägg och 313 borttagningar
  1. 59 1
      sql/Online.sql
  2. 17 0
      src/main/java/com/ydtech/modules/admin/controller/SysUserController.java
  3. 13 11
      src/main/java/com/ydtech/modules/admin/controller/SysUserLinkPtlAgreementController.java
  4. 9 1
      src/main/java/com/ydtech/modules/admin/dao/SysUserLinkPtlAgreementMapper.java
  5. 15 6
      src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java
  6. 1 1
      src/main/java/com/ydtech/modules/admin/model/po/SysUserLinkPtlAgreement.java
  7. 24 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysUserLinkPtlAgreementIdsVo.java
  8. 9 2
      src/main/java/com/ydtech/modules/admin/service/SysUserLinkPtlAgreementService.java
  9. 7 0
      src/main/java/com/ydtech/modules/admin/service/SysUserService.java
  10. 42 8
      src/main/java/com/ydtech/modules/admin/service/impl/SysDeptServiceImpl.java
  11. 19 3
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserLinkPtlAgreementServiceImpl.java
  12. 10 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java
  13. 8 1
      src/main/java/com/ydtech/modules/esm/dao/InsOrderSetUserHisMapper.java
  14. 27 8
      src/main/java/com/ydtech/modules/esm/model/po/InsOrderSetUserHis.java
  15. 7 0
      src/main/java/com/ydtech/modules/esm/service/InsOrderSetUserHisService.java
  16. 10 0
      src/main/java/com/ydtech/modules/esm/service/impl/InsOrderSetUserHisServiceImpl.java
  17. 3 3
      src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceImpl.java
  18. 21 10
      src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java
  19. 1 1
      src/main/java/com/ydtech/modules/fnc/controller/CarSettleController.java
  20. 1 1
      src/main/java/com/ydtech/modules/order/controller/OrderTaskPoolsController.java
  21. 14 0
      src/main/java/com/ydtech/modules/order/dao/InsOrdersMapper.java
  22. 19 0
      src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java
  23. 3 0
      src/main/java/com/ydtech/modules/order/entity/InsOrders.java
  24. 11 2
      src/main/java/com/ydtech/modules/order/entity/filter/CarModelsFilterUtils.java
  25. 4 0
      src/main/java/com/ydtech/modules/order/entity/vo/OrderQueryVo.java
  26. 7 0
      src/main/java/com/ydtech/modules/order/entity/vo/OrderTaskPoolsVo.java
  27. 3 0
      src/main/java/com/ydtech/modules/order/entity/vo/TaskForwardingVo.java
  28. 7 0
      src/main/java/com/ydtech/modules/order/service/InsOrdersService.java
  29. 1 1
      src/main/java/com/ydtech/modules/order/service/OrderTaskPoolsService.java
  30. 60 49
      src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java
  31. 8 0
      src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java
  32. 22 3
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  33. 39 58
      src/main/java/com/ydtech/modules/order/service/impl/OrderTaskPoolsServiceImpl.java
  34. 19 1
      src/main/java/com/ydtech/modules/protocol/controller/PtlAgreementHistoryController.java
  35. 6 6
      src/main/java/com/ydtech/modules/protocol/controller/TaxSourceController.java
  36. 9 0
      src/main/java/com/ydtech/modules/protocol/dao/PtlAgreementDeptHistoryMapper.java
  37. 2 1
      src/main/java/com/ydtech/modules/protocol/dao/PtlAgreementHistoryMapper.java
  38. 8 0
      src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementDto.java
  39. 3 0
      src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementSaveDto.java
  40. 12 0
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreement.java
  41. 42 0
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreementDeptHistory.java
  42. 27 0
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementPageVo.java
  43. 12 0
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementProductQueryVo.java
  44. 7 3
      src/main/java/com/ydtech/modules/protocol/service/ITaxSourceService.java
  45. 8 0
      src/main/java/com/ydtech/modules/protocol/service/PtlAgreementDeptHistoryService.java
  46. 6 10
      src/main/java/com/ydtech/modules/protocol/service/PtlAgreementHistoryService.java
  47. 12 0
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementDeptHistoryImpl.java
  48. 68 31
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementHistoryServiceImpl.java
  49. 111 14
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
  50. 37 2
      src/main/java/com/ydtech/modules/protocol/service/impl/TaxSourceServiceImpl.java
  51. 31 8
      src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementHistoryController.java
  52. 12 0
      src/main/java/com/ydtech/modules/protocols/entity/po/InsFeeOrderNew.java
  53. 1 1
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsAttrLinkHistory.java
  54. 6 2
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsNewHistory.java
  55. 1 1
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesAttrLinkHistory.java
  56. 8 3
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementUndwrtRulesNewHistory.java
  57. 11 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductQueryVo.java
  58. 13 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementUndwrtRulesQueryVo.java
  59. 7 5
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewHistoryService.java
  60. 8 6
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementUndwrtRulesNewHistoryService.java
  61. 149 4
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewHistoryServiceImpl.java
  62. 9 9
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java
  63. 146 3
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesNewHistoryServiceImpl.java
  64. 7 6
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesNewServiceImpl.java
  65. 19 1
      src/main/resources/mapper/modules/admin/SysUserLinkPtlAgreementMapper.xml
  66. 33 0
      src/main/resources/mapper/modules/admin/SysUserMapper.xml
  67. 17 0
      src/main/resources/mapper/modules/ins/InsOrderSetUserHisMapper.xml
  68. 1 1
      src/main/resources/mapper/modules/largescreen/AgreementDataMapper.xml
  69. 4 4
      src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml
  70. 141 17
      src/main/resources/mapper/modules/order/InsOrdersMapper.xml
  71. 10 1
      src/main/resources/mapper/modules/protocol/PtlAgreementHistoryMapper.xml
  72. 2 1
      src/main/resources/mapper/modules/protocol/PtlAgreementMapper.xml
  73. 2 2
      src/main/resources/sql/sql.txt

+ 59 - 1
sql/Online.sql

@@ -51,4 +51,62 @@ INSERT INTO `sys_menu`(`id`, `name`, `parent_id`, `url`, `perms`, `type`, `icon`
 
 --  inv_source表 新增修改人名字 修改人id  前端还没联调  正式库先不加字段
 ALTER TABLE `inv_source` ADD COLUMN `update_name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '修改人名字' AFTER `revenue_userid`;
-ALTER TABLE `inv_source` ADD COLUMN `update_userid` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '修改人id' AFTER `update_name`;
+ALTER TABLE `inv_source` ADD COLUMN `update_userid` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '修改人id' AFTER `update_name`;
+
+
+
+--  add by hxl   2024-04-18 添加后线人员关联协议表
+DROP TABLE IF EXISTS `sys_user_link_pl_agreement`;
+CREATE TABLE `sys_user_link_pl_agreement`  (
+                                               `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键/自增',
+                                               `user_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '前线用户ID',
+                                               `ptl_agreement_id` bigint(20) NULL DEFAULT NULL COMMENT '协议ID',
+                                               `create_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人ID',
+                                               `create_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人名称',
+                                               `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+                                               `update_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人ID',
+                                               `update_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人名称',
+                                               `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
+                                               `type` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '协议类型  0 车险 1 非车',
+                                               PRIMARY KEY (`id`) USING BTREE,
+                                               INDEX `user_id_index`(`user_id`) USING BTREE,
+                                               INDEX `ptl_agreement_id_index`(`ptl_agreement_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '后线人员关联协议表' ROW_FORMAT = DYNAMIC;
+
+--  add by hxl   2024-04-18 添加子订单表操作人和操作时间和操作人名称
+ALTER TABLE ins_area_company ADD COLUMN operator_id VARCHAR(30) COMMENT '操作人';
+ALTER TABLE ins_area_company ADD COLUMN operator_name VARCHAR(30) COMMENT '操作人名称';
+ALTER TABLE ins_area_company ADD COLUMN operator_time datetime COMMENT '操作时间';
+
+--  add  by  hxl  2024-04-18 添加子订单转发收回记录表
+DROP TABLE IF EXISTS `ins_order_set_user_his`;
+CREATE TABLE `ins_order_set_user_his`  (
+                                           `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键/自增',
+                                           `orderno` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '订单号',
+                                           `quoteno` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '报价单号',
+                                           `old_operator_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '原操作人',
+                                           `new_operator_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '现操作人',
+                                           `create_time` datetime NULL DEFAULT NULL COMMENT '操作时间',
+                                           `create_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人',
+                                           `suborder_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '子订单id',
+                                           `old_operator_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '原操作人名称',
+                                           `new_operator_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '现操作人名称',
+                                           `remark` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
+                                           PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '子订单转发收回记录表' ROW_FORMAT = DYNAMIC;
+
+
+--  add  by  hy  2024-04-19 添加协议授权表
+DROP TABLE IF EXISTS `ptl_agreement_dept_history`;
+CREATE TABLE `ptl_agreement_dept_history`  (
+                                               `agreement_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '协议ID',
+                                               `dept_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '部门ID',
+                                               `batch` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '批次'
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
+
+--  add by hy   2024-04-19 添加协议表产品类型字段
+ALTER TABLE ptl_agreement ADD COLUMN products_code VARCHAR(30) COMMENT '产品类型';
+
+-- add by hxl  2024-04-19  添加后线人员协议配置菜单
+INSERT INTO `sys_menu` (`name`, `parent_id`, `url`, `perms`, `type`, `icon`, `order_num`, `create_by`, `create_time`, `last_update_by`, `last_update_time`, `del_flag`) VALUES ('后线人员协议配置', '232', '/agreementManage/carInsurance/backlineAllocation', NULL, 1, NULL, 0, NULL, NULL, NULL, NULL, 0);
+

+ 17 - 0
src/main/java/com/ydtech/modules/admin/controller/SysUserController.java

@@ -742,4 +742,21 @@ public class SysUserController extends BaseController {
         }
 
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/18 16:12
+     *  @Description: 查询客服人员列表数据
+     */
+    @ApiOperation(value = "获取客服人员列表数据")
+    @PostMapping(value = "/getCustomerUsers")
+    public HttpResult getCustomerUsers(@RequestBody SysUserVOExt sysUserVOExt) {
+        try{
+            List<SysUserBaseVO> userList = sysUserService.getCustomerUsers(sysUserVOExt);
+            return HttpResult.ok(userList);
+        }catch (Exception e){
+            return HttpResult.error("查询失败"+e.getMessage());
+        }
+
+    }
 }

+ 13 - 11
src/main/java/com/ydtech/modules/admin/controller/SysUserLinkPtlAgreementController.java

@@ -5,6 +5,7 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto;
 import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
 import com.ydtech.modules.admin.model.vo.SysUserLinkPtlAgreementAddVo;
+import com.ydtech.modules.admin.model.vo.SysUserLinkPtlAgreementIdsVo;
 import com.ydtech.modules.admin.model.vo.SysUserLinkPtlAgreementVo;
 import com.ydtech.modules.admin.service.SysUserLinkPtlAgreementService;
 import com.ydtech.modules.base.controller.BaseController;
@@ -18,7 +19,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-@Api(tags = "线人员关联协议")
+@Api(tags = "线人员关联协议")
 @RequestMapping("/sysUserLinkPtlAgreement")
 @RestController
 public class SysUserLinkPtlAgreementController extends BaseController {
@@ -40,7 +41,7 @@ public class SysUserLinkPtlAgreementController extends BaseController {
     }
 
     @PostMapping("addOrUpdate")
-    @ApiOperation("线人员关联协议添加修改")
+    @ApiOperation("线人员关联协议添加修改")
     public HttpResult<Object> addOrUpdate(@RequestBody SysUserLinkPtlAgreementAddVo sysUserLinkPtlAgreementAddVo) {
         if(sysUserLinkPtlAgreementAddVo.getUserId()==null || "".equals(sysUserLinkPtlAgreementAddVo.getUserId())) {
             return HttpResult.error("后线人员id不能为空");
@@ -59,13 +60,12 @@ public class SysUserLinkPtlAgreementController extends BaseController {
 
     @PostMapping("delete")
     @ApiOperation("后线人员关联协议删除")
-    @ApiImplicitParam(name = "ids", value = "关联协议ids数组", required = true)
-    public HttpResult<Object> delete(@RequestParam("ids")  List<Long> ids) {
-        if(ids==null || ids.size()==0){
+    public HttpResult<Object> delete(@RequestBody SysUserLinkPtlAgreementIdsVo idsVo) {
+        if(idsVo.getIds()==null || idsVo.getIds().size()==0){
             return HttpResult.error("后线人员关联ids不能为空");
         }
         try{
-            sysUserLinkPtlAgreementService.deleteByIds(ids);
+            sysUserLinkPtlAgreementService.deleteByIds(idsVo.getIds());
             return HttpResult.ok("删除成功");
         }catch (Exception e){
             return HttpResult.error("删除失败"+e.getMessage());
@@ -74,9 +74,10 @@ public class SysUserLinkPtlAgreementController extends BaseController {
 
     @GetMapping("findUserList")
     @ApiOperation("查询所有的后线人员列表")
-    public HttpResult<Object> findUserList() {
+    @ApiImplicitParam(name = "userId", value = "后线人员工号", required = false)
+    public HttpResult<Object> findUserList(String userId) {
         try{
-            List<SysUserBaseVO> list= sysUserLinkPtlAgreementService.findUserList();
+            List<SysUserBaseVO> list= sysUserLinkPtlAgreementService.findUserList(userId);
             return HttpResult.ok(list);
         }catch (Exception e){
             return HttpResult.error("操作失败"+e.getMessage());
@@ -102,13 +103,14 @@ public class SysUserLinkPtlAgreementController extends BaseController {
     @GetMapping("/findPtlAgreementListByUserId/{userId}")
     @ApiOperation(value = "后线人员关联协议列表")
     @ApiImplicitParam(name = "userId", value = "后线人员id", required = true)
-    public HttpResult<List<SysUserLinkPtlAgreementDto>> findPtlAgreementListByUserId(@PathVariable("userId") String userId) {
+    public HttpResult<List<PtlAgreement>> findPtlAgreementListByUserId(@PathVariable("userId") String userId) {
         if(userId==null || "".equals(userId)) {
             return HttpResult.error("后线人员id不能为空");
         }
         try{
-            List<SysUserLinkPtlAgreementDto> result = sysUserLinkPtlAgreementService.findPtlAgreementListByUserId(userId);
-            return HttpResult.ok(result);
+            //List<SysUserLinkPtlAgreementDto> result = sysUserLinkPtlAgreementService.findPtlAgreementListByUserId(userId);
+            List<PtlAgreement> list= sysUserLinkPtlAgreementService.findAllPtlAgreementListByUserId(userId);
+            return HttpResult.ok(list);
         }catch (Exception e){
             return HttpResult.error("查询失败"+e.getMessage());
         }

+ 9 - 1
src/main/java/com/ydtech/modules/admin/dao/SysUserLinkPtlAgreementMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto;
 import com.ydtech.modules.admin.model.po.SysUserLinkPtlAgreement;
 import com.ydtech.modules.admin.model.vo.SysUserLinkPtlAgreementVo;
+import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -37,7 +38,14 @@ public interface SysUserLinkPtlAgreementMapper extends BaseMapper<SysUserLinkPtl
      *  @version
      *  @author: hxl
      *  @Date: 2024/4/16 9:32
-     *  @Description: 通过线人员id查询关联的协议列表
+     *  @Description: 通过线人员id查询关联的协议列表
      */
     List<SysUserLinkPtlAgreementDto> findPtlAgreementListByUserId(@Param("userId") String userId);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/19 9:56
+     *  @Description:创建后线人员绑定的协议回显
+     */
+    List<PtlAgreement> findAllPtlAgreementListByUserId(@Param("userId") String userId);
 }

+ 15 - 6
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -174,13 +174,16 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      *  @version
      *  @author: hxl
      *  @Date: 2024/4/15 17:51
-     *  @Description: 添加查询线人员
+     *  @Description: 添加查询线人员
      */
-    @Select(" SELECT  t1.id AS userId,t1.NAME AS NAME,t1.mobile AS mobile,t1.`status` AS `status`,t2.id AS deptId,t2.`name` AS deptName,sd2.id AS pDeptId,sd2.`name` AS pDeptName  " +
+    String findQXUserSql=" SELECT  t1.id AS userId,t1.NAME AS NAME,t1.mobile AS mobile,t1.`status` AS `status`,t2.id AS deptId,t2.`name` AS deptName,sd2.id AS pDeptId,sd2.`name` AS pDeptName  " +
             " FROM sys_user t1 LEFT JOIN sys_dept t2 ON t1.dept_id = t2.id LEFT JOIN sys_dept sd2 ON sd2.id = t2.parent_id " +
-             " WHERE t1.`status` = 1 AND t1.id LIKE '%M%'")
-
-    List<SysUserBaseVO> findQXUserList();
+             " WHERE t1.`status` = 1 AND t1.id not LIKE '%M%' "+
+              "<if test='userId!=\"\" and userId!=null '>" +
+                      "   AND t1.id=#{userId} " +
+               "</if> ";
+    @Select({"<script>",findQXUserSql,"</script>"})
+    List<SysUserBaseVO> findQXUserList(@Param("userId") String userId);
     /**
      *  @version
      *  @author: hxl
@@ -210,7 +213,13 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
             " AND sd.del_flag = '0'  and su.status = 1 " +
             " WHERE  su.dept_id LIKE concat( '%', 9, '%' )    AND t3.role_id IN ( 20 )  AND sd.management_source = 2")
     List<String> getAgentUserIds();
-
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/18 16:15
+     *  @Description: 获取客服人员数据
+     */
+    List<SysUserBaseVO> getCustomerUsers(@Param("user") SysUserVOExt sysUserVOExt);
 }
 
 

+ 1 - 1
src/main/java/com/ydtech/modules/admin/model/po/SysUserLinkPtlAgreement.java

@@ -15,7 +15,7 @@ import java.util.Date;
  *  @version
  *  @author: hxl
  *  @Date: 2024/4/15 14:32
- *  @Description: 线人员关联协议表
+ *  @Description: 线人员关联协议表
  */
 @TableName(value = "sys_user_link_pl_agreement")
 @Data

+ 24 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysUserLinkPtlAgreementIdsVo.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/4/15 14:55
+ *  @Description: 通过ids查询数据
+ */
+@Data
+@ApiModel
+public class SysUserLinkPtlAgreementIdsVo implements Serializable {
+    /***
+     * 用户ID
+     */
+    @ApiModelProperty("关联协议ids")
+    private List<Long> ids;
+}

+ 9 - 2
src/main/java/com/ydtech/modules/admin/service/SysUserLinkPtlAgreementService.java

@@ -41,7 +41,7 @@ public interface SysUserLinkPtlAgreementService extends IService<SysUserLinkPtlA
      *  @Date: 2024/4/15 17:27
      *  @Description: 查询所有的后线人员表
      */
-    List<SysUserBaseVO> findUserList();
+    List<SysUserBaseVO> findUserList(String userId);
     /**
      *  @version
      *  @author: hxl
@@ -53,7 +53,14 @@ public interface SysUserLinkPtlAgreementService extends IService<SysUserLinkPtlA
      *  @version
      *  @author: hxl
      *  @Date: 2024/4/16 9:27
-     *  @Description: 查询线人员关联的协议列表
+     *  @Description: 查询线人员关联的协议列表
      */
     List<SysUserLinkPtlAgreementDto> findPtlAgreementListByUserId(String userId);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/19 9:55
+     *  @Description: 创建后线人员绑定的协议数据
+     */
+    List<PtlAgreement> findAllPtlAgreementListByUserId(String userId);
 }

+ 7 - 0
src/main/java/com/ydtech/modules/admin/service/SysUserService.java

@@ -140,6 +140,13 @@ public interface SysUserService extends IService<SysUser> {
      *  @Description: 获取待客录入的可选业务员
      */
     List<SysUserBaseVO> getAllUsersByHospitality(SysUserVOExt sysUserVOExt);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/18 16:14
+     *  @Description: 获取客服人员列表数据
+     */
+    List<SysUserBaseVO> getCustomerUsers(SysUserVOExt sysUserVOExt);
 }
 
 

+ 42 - 8
src/main/java/com/ydtech/modules/admin/service/impl/SysDeptServiceImpl.java

@@ -187,26 +187,60 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
     @Override
     @Transactional
     public HttpResult updateDept(SysDept record) {
-        // 查询当前部门序号是否存在
+        // 查询修改的序号是否存在
         LambdaQueryWrapper<SysDept> qw = new LambdaQueryWrapper<>();
         qw.eq(SysDept::getDelFlag, 0);  // 删除标志为未删除
         qw.eq(SysDept::getParentId, record.getParentId()); // 父级部门ID相同
         qw.eq(SysDept::getOrderNum, record.getOrderNum());  // 排序号相同
         boolean exists = baseMapper.exists(qw);
+        //不存在则直接修改
+        if (!exists) {
+            baseMapper.updateById(record);
+            return HttpResult.ok();
+        }
 
-        if (exists){
-            // 如果存在,查询该父级部门下排序号大于当前部门的部门列表
+        //查询机构
+        SysDept sysDept = getById(record.getId());
+        //原本的序号
+        Integer orderNum = sysDept.getOrderNum();
+        //本次修改的序号
+        Integer newOrderNum = record.getOrderNum();
+        // 向上换位
+        if (newOrderNum < orderNum) {
+            // 查询该父级部门下排序号大于当前部门的部门列表
             LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
             lqw.eq(SysDept::getDelFlag, 0); // 删除标志为未删除
             lqw.eq(SysDept::getParentId, record.getParentId()); // 父级部门ID相同
             lqw.ge(SysDept::getOrderNum, record.getOrderNum());  // 排序号大于等于当前部门
             List<SysDept> sysDeptList = list(lqw);
-            sysDeptList.forEach(i -> {
-                i.setOrderNum(i.getOrderNum() + 1);
-                updateById(i);
-            });
+            sysDeptList.sort(Comparator.comparing(SysDept::getOrderNum));
+            for (SysDept dept : sysDeptList) {
+                dept.setOrderNum(dept.getOrderNum() + 1);
+                updateById(dept);
+                if (dept.getOrderNum().equals(orderNum)) {
+                    break;
+                }
+            }
+           baseMapper.updateById(record);
+        }
+        //向下换位
+        if (newOrderNum > orderNum) {
+            // 查询该父级部门下排序号小于当前部门的部门列表
+            LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
+            lqw.eq(SysDept::getDelFlag, 0); // 删除标志为未删除
+            lqw.eq(SysDept::getParentId, record.getParentId()); // 父级部门ID相同
+            lqw.le(SysDept::getOrderNum, record.getOrderNum());  // 排序号大于等于当前部门
+            List<SysDept> sysDeptList = list(lqw);
+            sysDeptList.sort(Comparator.comparing(SysDept::getOrderNum).reversed());
+            for (SysDept dept : sysDeptList) {
+                dept.setOrderNum(dept.getOrderNum() - 1);
+                updateById(dept);
+                if (dept.getOrderNum().equals(orderNum)) {
+                    break;
+                }
+            }
+            baseMapper.updateById(record);
         }
-        baseMapper.updateById(record);
         return HttpResult.ok();
     }
 

+ 19 - 3
src/main/java/com/ydtech/modules/admin/service/impl/SysUserLinkPtlAgreementServiceImpl.java

@@ -87,15 +87,16 @@ public class SysUserLinkPtlAgreementServiceImpl extends ServiceImpl<SysUserLinkP
     public void deleteByIds(List<Long> ids) {
         sysUserLinkPtlAgreementMapper.deleteBatchIds(ids);
     }
+
     /**
      *  @version
      *  @author: hxl
      *  @Date: 2024/4/15 17:52
-     *  @Description: 查询所有的线人员
+     *  @Description: 查询所有的线人员
      */
     @Override
-    public List<SysUserBaseVO> findUserList() {
-        return sysUserMapper.findQXUserList();
+    public List<SysUserBaseVO> findUserList(String userId) {
+        return sysUserMapper.findQXUserList(userId);
     }
     /**
      *  @version
@@ -119,4 +120,19 @@ public class SysUserLinkPtlAgreementServiceImpl extends ServiceImpl<SysUserLinkP
     public List<SysUserLinkPtlAgreementDto> findPtlAgreementListByUserId(String userId) {
         return  sysUserLinkPtlAgreementMapper.findPtlAgreementListByUserId(userId);
     }
+
+    @Override
+    public List<PtlAgreement> findAllPtlAgreementListByUserId(String userId) {
+        List<PtlAgreement> list = sysUserLinkPtlAgreementMapper.findAllPtlAgreementListByUserId(userId);
+        if(list!=null && list.size()>0){
+            for (PtlAgreement ptlAgreement : list) {
+                if("1".equals(ptlAgreement.getFlag())){
+                    ptlAgreement.setFlag("true");
+                }else{
+                    ptlAgreement.setFlag("false");
+                }
+            }
+        }
+        return  list;
+    }
 }

+ 10 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -991,6 +991,16 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     public List<SysUserBaseVO> getAllUsersByHospitality(SysUserVOExt sysUserVOExt) {
         return super.baseMapper.getAllUsersByHospitality(sysUserVOExt);
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/18 16:14
+     *  @Description: 获取客服人员列表数据
+     */
+    @Override
+    public List<SysUserBaseVO> getCustomerUsers(SysUserVOExt sysUserVOExt) {
+        return super.baseMapper.getCustomerUsers(sysUserVOExt);
+    }
 
 }
 

+ 8 - 1
src/main/java/com/ydtech/modules/esm/dao/InsOrderSetUserHisMapper.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.esm.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ydtech.modules.esm.model.po.InsOrderSetUserHis;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  *  @version
@@ -13,5 +14,11 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface InsOrderSetUserHisMapper extends BaseMapper<InsOrderSetUserHis> {
 
-
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/18 14:56
+     *  @Description: 通过子订单id查询最新的历史记录数据
+     */
+    InsOrderSetUserHis getOneBySubOrderId(@Param("subOrderId") String subOrderId);
 }

+ 27 - 8
src/main/java/com/ydtech/modules/esm/model/po/InsOrderSetUserHis.java

@@ -37,15 +37,26 @@ public class InsOrderSetUserHis implements Serializable {
     @TableField(value = "quoteno")
     private String quoteno;
     /***
-     * 创建
+     * 旧操作
      */
     @TableField(value = "old_operator_id")
     private String oldOperatorId;
     /***
-     * 创建人名称
+     * 新操作人
      */
     @TableField(value = "new_operator_id")
     private String newOperatorId;
+
+    /***
+     *  旧操作人名称
+     */
+    @TableField(value = "old_operator_name")
+    private String oldOperatorName;
+    /***
+     * 新操作人名称
+     */
+    @TableField(value = "new_operator_name")
+    private String newOperatorName;
     /***
      * 创建时间
      */
@@ -53,24 +64,32 @@ public class InsOrderSetUserHis implements Serializable {
     @TableField(value = "create_time")
     private Date createTime;
     /***
-     * 修改人名称
+     * 创建人人
      */
     @TableField(value = "create_id")
     private String createId;
+    /***
+     * 子订单id
+     */
+    @TableField(value = "suborder_id")
+    private String subOrderId;
 
     /***
-     * 状态  1.转发  2. 回退
+     * 备注
      */
-    @TableField(value = "status")
-    private String status;
+    @TableField(value = "remark")
+    private String remark;
 
-    public InsOrderSetUserHis(String orderno, String quoteno, String oldOperatorId, String newOperatorId, Date createTime, String createId,String status) {
+    public InsOrderSetUserHis(String orderno, String quoteno, String oldOperatorId, String newOperatorId, Date createTime, String createId,String subOrderId,String  oldOperatorName,String newOperatorName ,String remark) {
         this.orderno = orderno;
         this.quoteno = quoteno;
         this.oldOperatorId = oldOperatorId;
         this.newOperatorId = newOperatorId;
         this.createTime = createTime;
         this.createId = createId;
-        this.status = status;
+        this.subOrderId = subOrderId;
+        this.oldOperatorName = oldOperatorName;
+        this.newOperatorName = newOperatorName;
+        this.remark = remark;
     }
 }

+ 7 - 0
src/main/java/com/ydtech/modules/esm/service/InsOrderSetUserHisService.java

@@ -11,4 +11,11 @@ public interface InsOrderSetUserHisService extends IService<InsOrderSetUserHis>
      *  @Description: 修改
      */
     void addOrUpdate(InsOrderSetUserHis insOrderSetUserHis);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/18 14:55
+     *  @Description: 通过子订单id和状态查询最新一条转发的数据
+     */
+    InsOrderSetUserHis getOneBySubOrderId(String subOrderId);
 }

+ 10 - 0
src/main/java/com/ydtech/modules/esm/service/impl/InsOrderSetUserHisServiceImpl.java

@@ -33,5 +33,15 @@ public class InsOrderSetUserHisServiceImpl extends ServiceImpl<InsOrderSetUserHi
             insOrderSetUserHisMapper.insert(insOrderSetUserHis);
         }
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/18 15:47
+     *  @Description: 查询子订单id查询最新的数据
+     */
+    @Override
+    public InsOrderSetUserHis getOneBySubOrderId(String subOrderId) {
+        return insOrderSetUserHisMapper.getOneBySubOrderId(subOrderId);
+    }
 
 }

+ 3 - 3
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceImpl.java

@@ -2637,7 +2637,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         jqEntranceFee.setOtherCostsProportion(insFeeOrderNew.getJqOtherCostsProportion());   // 跟单比例
         jqEntranceFee.setOtherCostsPremiums(insFeeOrderNew.getJqOtherCostsPremiums());      // 跟单费
         jqEntranceFee.setSuperviseCosts(insFeeOrderNew.getJqSuperviseCostsProportion());  // 手续费比例
-        jqEntranceFee.setExportSuperviseCosts(new BigDecimal(ptlAgreementProductCostsNew.getJqCostsExportProportion()));  // 出口费比例
+        jqEntranceFee.setExportSuperviseCosts(insFeeOrderNew.getJqCostsExportProportion());  // 出口费比例
         entranceFeeList.add(jqEntranceFee);
 
 
@@ -2706,7 +2706,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         syEntranceFee.setOtherCostsProportion(insFeeOrderNew.getSyOtherCostsProportion());   // 跟单比例
         syEntranceFee.setOtherCostsPremiums(insFeeOrderNew.getSyOtherCostsPremiums());      // 跟单费
         syEntranceFee.setSuperviseCosts(insFeeOrderNew.getSySuperviseCostsProportion());  // 手续费比例
-        syEntranceFee.setExportSuperviseCosts(new BigDecimal(ptlAgreementProductCostsNew.getSyCostsExportProportion()));  // 出口费比例
+        syEntranceFee.setExportSuperviseCosts(insFeeOrderNew.getSyCostsExportProportion());  // 出口费比例
         entranceFeeList.add(syEntranceFee);
 
         // 商业管理费
@@ -2765,7 +2765,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         nonEntranceFee.setOtherCostsProportion(insFeeOrderNew.getNoOtherCostsProportion());   // 跟单比例
         nonEntranceFee.setOtherCostsPremiums(insFeeOrderNew.getNoOtherCostsPremiums());      // 跟单费
         nonEntranceFee.setSuperviseCosts(insFeeOrderNew.getNoSuperviseCostsProportion());  // 手续费比例
-        nonEntranceFee.setExportSuperviseCosts(new BigDecimal(ptlAgreementProductCostsNew.getNoCostsExportProportion()));  // 出口费比例
+        nonEntranceFee.setExportSuperviseCosts(insFeeOrderNew.getNoCostsExportProportion());  // 出口费比例
         entranceFeeList.add(nonEntranceFee);
 
         // 五级管理费

+ 21 - 10
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java

@@ -164,6 +164,9 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         insFeeOrderNew.setId(IdGenerate.nextId());
         insFeeOrderNew.setCostsId(costsId);
         insFeeOrderNew.setAgreementId(ptlAgreementProductCostsNew.getAgreementId());
+        insFeeOrderNew.setJqCostsExportProportion(new BigDecimal(ptlAgreementProductCostsNew.getJqCostsExportProportion()));
+        insFeeOrderNew.setSyCostsExportProportion(new BigDecimal(ptlAgreementProductCostsNew.getSyCostsExportProportion()));
+        insFeeOrderNew.setNoCostsExportProportion(new BigDecimal(ptlAgreementProductCostsNew.getNoCostsExportProportion()));
         //存储部门id与用户id
         InsOrders order = insOrdersService.getById(insAreaCompany.getOrderno());
         InsFeeOrderNew insFeeOrderNewByCompanyId = insFeeOrderNewService.getInsFeeOrderNewByCompanyId(insAreaCompany.getId());
@@ -593,7 +596,8 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
             if(ruleAttrMappingVo == null) {
                 System.out.printf("规则匹配失败:" + ptlAgreementUndwrtRulesAttrLinks.get(i).getAttrCode() + "\n");
                 System.out.printf("传入的值找不到该属性:" + ptlAgreementUndwrtRulesAttrLinks.get(finalI).getAttrCode() + "\n");
-                continue;
+                //找不到属性则直接跳过该条承保规则
+                return true;
             }
             //查找 费用因子规则
             PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr = rulesAttrs.stream().filter(x -> x.getAttrCode().equals(ptlAgreementUndwrtRulesAttrLinks.get(finalI).getAttrCode())).findFirst().get();
@@ -614,14 +618,17 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                 }
             }
             useFlag = attrEqual(ptlAgreementUndwrtRulesAttrLinks.get(i), ptlAgreementUndwrtRulesAttr, ruleAttrMappingVo.getValue());
-            if(!useFlag)
-            {
-                System.out.printf("规则匹配失败:" + ptlAgreementUndwrtRulesAttrLinks.get(i).getAttrCode() + "\n");
-                System.out.printf("检验的值:" + ptlAgreementUndwrtRulesAttrLinks.get(i).getMin() + "\n");
-                System.out.printf("传入的值:" + ruleAttrMappingVo.getValue() + "\n");
-                return false;
-
+            if(useFlag){
+                return true;
             }
+//            if(!useFlag)
+//            {
+//                System.out.printf("规则匹配失败:" + ptlAgreementUndwrtRulesAttrLinks.get(i).getAttrCode() + "\n");
+//                System.out.printf("检验的值:" + ptlAgreementUndwrtRulesAttrLinks.get(i).getMin() + "\n");
+//                System.out.printf("传入的值:" + ruleAttrMappingVo.getValue() + "\n");
+//                return false;
+//
+//            }
         }
         return useFlag;
     }
@@ -852,10 +859,14 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
      * @return
      */
     private boolean selectEqual(PtlAgreementUndwrtRulesAttrLink ptlAgreementUndwrtRulesAttrLink, String value){
-        if(ptlAgreementUndwrtRulesAttrLink.getMin() != null && ptlAgreementUndwrtRulesAttrLink.getMin().contains(value)){
+        if(ptlAgreementUndwrtRulesAttrLink.getMin() == null)
+        {
             return false;
         }
-        return true;
+        if(ptlAgreementUndwrtRulesAttrLink.getMin().contains(value)){
+            return true;
+        }
+        return false;
     }
 
     /**

+ 1 - 1
src/main/java/com/ydtech/modules/fnc/controller/CarSettleController.java

@@ -63,7 +63,7 @@ public class CarSettleController extends BaseController {
         //查询已承保的子订单号
         List<InsAreaCompany> areaList =insAreaCompanyService.query()
                 .eq(StringUtils.isNotEmpty(orderNo),"orderno",orderNo)
-                .eq("orderstatus","2").list();//3已承保
+                .eq("orderstatus","3").list();//3已承保
 
 //        List<InsAreaCompany> areaList = insAreaCompanyService.query()
 //                .eq("orderno", orderNo)

+ 1 - 1
src/main/java/com/ydtech/modules/order/controller/OrderTaskPoolsController.java

@@ -83,6 +83,6 @@ public class OrderTaskPoolsController {
     @PostMapping(value = "/recover")
     @ApiOperation(value = "子订单任务收回")
     public HttpResult recover(@RequestBody TaskForwardingVo taskForwardingVo) {
-        return orderTaskPoolsService.recover(taskForwardingVo);
+        return orderTaskPoolsService.recover(taskForwardingVo,getUser());
     }
 }

+ 14 - 0
src/main/java/com/ydtech/modules/order/dao/InsOrdersMapper.java

@@ -64,4 +64,18 @@ public interface InsOrdersMapper extends BaseMapper<InsOrders> {
      *  @Description: 通过用户id查询订单、渠道、代理人、保险公司条数
      */
     Long queryPageOrderByLinkTypeCount(@Param("orderQueryVo") OrderQueryVo orderQueryVo, @Param("agentUserIds")  List<String> agentUserIds, @Param("agreeIds")  List<String> agreeIds);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/18 10:51
+     *  @Description: 查询子订单的数据
+     */
+    Page<InsOrders> queryPageSubOrders(@Param("page") Page<InsOrders> page, @Param("orderQueryVo") OrderTaskPoolsVo orderTaskPoolsVo);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/18 11:13
+     *  @Description: 查询子订单的数据条数
+     */
+    Long queryPageSubOrdersCount(@Param("orderQueryVo") OrderTaskPoolsVo orderTaskPoolsVo);
 }

+ 19 - 0
src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java

@@ -22,6 +22,7 @@ import lombok.NoArgsConstructor;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * 报价渠道
@@ -385,6 +386,24 @@ public class InsAreaCompany implements Serializable {
     @TableField(value = "ubi_predicted_info_score")
     private String ubiPredictedInfoScore;
 
+    /**
+     *  添加操作人
+     */
+    @TableField(value = "operator_id")
+    private String operatorId;
+
+    /**
+     *  操作时间
+     */
+    @TableField(value = "operator_time")
+    private Date operatorTime;
+
+    /**
+     *  添加操作人
+     */
+    @TableField(value = "operator_name")
+    private String operatorName;
+
     public InsAreaCompany(QuoteRespVo quoteRespVo, PtlAgreementAttribution ptlAgreementAttribution) {
         this.id = IdGenerate.nextId();
         this.orderno = quoteRespVo.getOrderno();

+ 3 - 0
src/main/java/com/ydtech/modules/order/entity/InsOrders.java

@@ -213,6 +213,9 @@ public class InsOrders implements Serializable {
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 
+    @TableField(exist = false)
+    private String subOrderId; //子订单id
+
 
     public InsOrders(SysUser user, SysDept dept, BaseQuoteInfoVo quoteInfoVo) {
         // 2. 组装订单

+ 11 - 2
src/main/java/com/ydtech/modules/order/entity/filter/CarModelsFilterUtils.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.order.entity.filter;
 
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.ins.model.vo.CarInfoVo;
 import org.apache.commons.lang3.StringUtils;
 
@@ -15,9 +16,15 @@ import java.util.stream.Collectors;
 public class CarModelsFilterUtils<T extends CarModelsFilter> {
 
     public T to(List<T> carModelsFilterList, CarInfoVo carInfo) {
+        if (carModelsFilterList.isEmpty()) {
+            throw new SystemException("核心查询车型失败 请联系业务人员处理");
+        }
+
         List<T> stadarCarDTOS = new ArrayList<>();
         if (!StringUtils.isEmpty(carInfo.getCaryear())) {
-            stadarCarDTOS = carModelsFilterList.stream().filter(car -> carInfo.getCaryear().equals(car.getCarYear())).collect(Collectors.toList());
+            stadarCarDTOS = carModelsFilterList.stream()
+                    .filter(car -> carInfo.getCaryear().equals(car.getCarYear()))
+                    .collect(Collectors.toList());
         }
 
         if (!stadarCarDTOS.isEmpty()) {
@@ -26,7 +33,9 @@ public class CarModelsFilterUtils<T extends CarModelsFilter> {
             stadarCarDTOS = carModelsFilterList;
         }
 
-        carModelsFilterList = carModelsFilterList.stream().filter(car -> carInfo.getPurchasePrice().equals(String.valueOf(car.getPurchasePrice()))).collect(Collectors.toList());
+        carModelsFilterList = carModelsFilterList.stream()
+                .filter(car -> carInfo.getPurchasePrice().equals(String.valueOf(car.getPurchasePrice())))
+                .collect(Collectors.toList());
 
         if (carModelsFilterList.isEmpty()) {
             return stadarCarDTOS.get(0);

+ 4 - 0
src/main/java/com/ydtech/modules/order/entity/vo/OrderQueryVo.java

@@ -62,6 +62,9 @@ public class OrderQueryVo {
     @Min(value = 1, message = "页数最小为1")
     private int pageNum;
 
+    private String startDateStr;
+    private String endDateStr;
+
 
     public LocalDate getEndDatePlusOneDay() {
         if(ObjectUtils.isEmpty(endDate)){
@@ -76,4 +79,5 @@ public class OrderQueryVo {
         pageRequest.setPageSize(pageSize);
         return pageRequest;
     }
+
 }

+ 7 - 0
src/main/java/com/ydtech/modules/order/entity/vo/OrderTaskPoolsVo.java

@@ -73,4 +73,11 @@ public class OrderTaskPoolsVo {
 
     @ApiModelProperty(value = "类型 1.任务池总 2.任务池分 ")
     private String type;
+
+    @ApiModelProperty(value = "投保人姓名")
+    private String insuredName;
+
+    @ApiModelProperty(value = "保险公司id")
+    private String companyId;
+
 }

+ 3 - 0
src/main/java/com/ydtech/modules/order/entity/vo/TaskForwardingVo.java

@@ -23,4 +23,7 @@ public class TaskForwardingVo {
     @ApiModelProperty(value = "任务操作者")
     private String operatorId;
 
+    @ApiModelProperty(value = "子订单id")
+    private String subOrderId;
+
 }

+ 7 - 0
src/main/java/com/ydtech/modules/order/service/InsOrdersService.java

@@ -144,4 +144,11 @@ public interface InsOrdersService extends IService<InsOrders> {
      *  @Description:  通过待客用户id查询渠道、代理人、保险公司的相关的订单表
      */
     BasePageResult<InsOrders> queryPageOrderByLinkType(OrderQueryVo orderQueryVo, int type);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/18 10:49
+     *  @Description: 查询子订单的数据列表
+     */
+    BasePageResult<InsOrders> queryPageSubOrders(OrderTaskPoolsVo orderTaskPoolsVo);
 }

+ 1 - 1
src/main/java/com/ydtech/modules/order/service/OrderTaskPoolsService.java

@@ -38,7 +38,7 @@ public interface OrderTaskPoolsService {
      *  @Date: 2024/4/16 15:42
      *  @Description: 子订单的收回
      */
-    HttpResult recover(TaskForwardingVo taskForwardingVo);
+    HttpResult recover(TaskForwardingVo taskForwardingVo,SysUser sysUser);
     /**
      *  @version
      *  @author: hxl

+ 60 - 49
src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java

@@ -2,6 +2,7 @@ package com.ydtech.modules.order.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+import com.ydtech.constants.enums.InsuranceRisk;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
@@ -140,7 +141,7 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
                         vehicleTypeQueryRequest);
                 vehicleModelsDTO = (VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO) map_two.get("vehicleModelsDTO");
                 vehicleConfirmationResponse = (VehicleConfirmationResponse) map_two.get("vehicleConfirmationResponse");
-            }else{
+            } else {
                 throw new SystemException(responseMsg);
             }
         }
@@ -151,22 +152,32 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         QuotationRequest quotationRequest = new QuotationRequest(parameters, quoteInfoVo.getRiskList(), quoteInfoVo.getKindList(),
                 currentValue, orderNo, carInfo, quoteVo.getAccidentalDrivingVo());
         QuotationResponse response = boHaiRequestApiComponent.quotation(quotationRequest, parameters.getSysSourceCode());
-        //商业险重复投保  重复投保保单信息 :保单号:314042303060007485车牌号:晋A881SR车架号:LMGAC1381K1535834发动机号:F699317保险公司代码:YAIC签单日期:20230414起保日期:202305030000终保日期:202405030000险别:机动车第三者责任保险,附加医保外用药责任险(机动车第三者责任保险)
-        response = getQuotationResponse(response,quotationRequest,parameters.getSysSourceCode());
+        //商业险重复投保  重复投保保单信息 :保单号:314042303060007485车牌号:晋A881SR车架号:LMGAC1381K1535834发动机号:F699317保险公司代码:YAIC签单日期:20230414起保日期:202305030000
+        // 终保日期:202405030000险别:机动车第三者责任保险,附加医保外用药责任险(机动车第三者责任保险)
+
+        List<RiskInfoVo> collect =
+                quoteInfoVo.getRiskList().stream().filter(x -> InsuranceRisk.BUSINESS.getCode().equals(x.getRiskCode())).collect(Collectors.toList());
+
+        if (!collect.isEmpty()) {
+            response = getQuotationResponse(response, quotationRequest, parameters.getSysSourceCode());
+        }
 
         //response = getQuotationResponseNew(quoteInfoVo, quoteVo, parameters, orderNo, carInfo, currentValue, response);
         //add by  2024-04-03  会发生重复投保   算费微服务返回报错信息_保信返回错误信息:
-        // 平台返回错误信息号牌号码“晋J60L55”的保单发生重复投保,与其重复投保的其它公司的保单信息如下:投保确认码 02PAIC140023031919549498257741;保单号 13312993901973801278;起保日期 2023-04-11 00:00;终保日期 2024-04-11 00:00;号牌号码 晋J60L55;号牌种类 02;车架号 LZWADAGA5LG477030;发动机号 8LB1921291;地区 山西。
+        // 平台返回错误信息号牌号码“晋J60L55”的保单发生重复投保,与其重复投保的其它公司的保单信息如下:投保确认码 02PAIC140023031919549498257741;保单号 13312993901973801278;起保日期
+        // 2023-04-11 00:00;终保日期 2024-04-11 00:00;号牌号码 晋J60L55;号牌种类 02;车架号 LZWADAGA5LG477030;发动机号 8LB1921291;地区 山西。
         //重新赋值交强的投保开始日期
         if (ResponseCode.R_Z00004.getCode().equals(response.getResponseCode())) {
             String responseMsg = response.getResponseMsg();
-            if(responseMsg.contains("发生重复投保")){
+            if (responseMsg.contains("发生重复投保")) {
                 //交强重复投保
-                String trafficPolicyDTOBenginDateStr = StringSubStringUtils.subjectStringContentByTrafficPolicyDTOBenginDate(responseMsg,":","起保日期");
-                String trafficPolicyDTOEndDateStr = StringSubStringUtils.subjectStringContentByTrafficPolicyDTOBenginDate(responseMsg,":","终保日期");
-                if(!"".equals(trafficPolicyDTOBenginDateStr) && !"".equals(trafficPolicyDTOEndDateStr)){
+                String trafficPolicyDTOBenginDateStr = StringSubStringUtils.subjectStringContentByTrafficPolicyDTOBenginDate(responseMsg,
+                        ":", "起保日期");
+                String trafficPolicyDTOEndDateStr = StringSubStringUtils.subjectStringContentByTrafficPolicyDTOBenginDate(responseMsg,
+                        ":", "终保日期");
+                if (!StringUtils.isEmpty(trafficPolicyDTOBenginDateStr) && !StringUtils.isEmpty(trafficPolicyDTOEndDateStr)) {
                     //结束投保日期为开始日期,结束日期为结束投保日期后一年的日期
-                    trafficPolicyDTOEndDateStr=trafficPolicyDTOEndDateStr+":00";
+                    trafficPolicyDTOEndDateStr = trafficPolicyDTOEndDateStr + ":00";
                     // 结束日期为59:59:59
                     String endDateStr = DateUtil_N.getNextYearDateStr(trafficPolicyDTOEndDateStr);
                     QuotationRequest.TrafficPolicyDTO trafficPolicy = quotationRequest.getTrafficPolicy();
@@ -175,17 +186,20 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
                     quotationRequest.setTrafficPolicy(trafficPolicy);
                     response = boHaiRequestApiComponent.quotation(quotationRequest, parameters.getSysSourceCode());
                     // 判断是否商业险重复投保
-                    response = getQuotationResponse(response,quotationRequest,parameters.getSysSourceCode());
-
+                    if (!collect.isEmpty()) {
+                        response = getQuotationResponse(response, quotationRequest, parameters.getSysSourceCode());
+                    }
                     if (!ResponseCode.R_Z00001.getCode().equals(response.getResponseCode())) {
                         throw new SystemException(response.getResponseMsg());
                     }
+                } else {
+                    throw new SystemException(responseMsg);
                 }
                 // add by hxl  2024-04-07  报价接口报错  算费微服务返回报错信息_保信返回错误信息:录入的校验码有误
                 // 需要调用 获取交管查询校验码接口   传入到报价参数中  暂未复现不处理 注释掉
-            }else if(responseMsg.contains("录入的校验码有误")){
+            } else if (responseMsg.contains("录入的校验码有误")) {
                 //response = getQuotationResponseNew(quoteInfoVo, quoteVo, parameters, orderNo, carInfo, currentValue, response);
-            }else{
+            } else {
                 throw new SystemException(responseMsg);
             }
         }
@@ -193,22 +207,27 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
 
         return getQuoteRespVo(response, quoteInfoVo, vehicleModelsDTO, ptlAgreementAttribution, orderNo, accidentalDrivingVo);
     }
+
     /**
-     *  @version  报价传递获取交管查询校验码 报错  未知异常,请联系管理员
-     *  @author: hxl
-     *  @Date: 2024/4/7 16:50
-     *  @Description:
+     * @version 报价传递获取交管查询校验码 报错  未知异常,请联系管理员
+     * @author: hxl
+     * @Date: 2024/4/7 16:50
+     * @Description:
      */
-    private QuotationResponse getQuotationResponseNew(BaseQuoteInfoVo quoteInfoVo, BaseQuoteVo<List<BoHaiQuoteAccidentVo>> quoteVo, BoHaiConfigureParameters parameters, String orderNo, CarInfoVo carInfo, String currentValue, QuotationResponse response) throws Exception {
-        VehicleCheckCodeRequest vehicleCheckCodeRequest = new VehicleCheckCodeRequest(parameters, orderNo, carInfo.getVinNo(), carInfo.getEngineNo(), carInfo.getLicenseNo());
-        VehicleCheckCodeResponse vehicleCheckCodeResponse = boHaiRequestApiComponent.getVehicleCheckCode(vehicleCheckCodeRequest, parameters.getSysSourceCode());
-        if(ResponseCode.R_Z00001.getCode().equals(vehicleCheckCodeResponse.getResponseCode())){
+    private QuotationResponse getQuotationResponseNew(BaseQuoteInfoVo quoteInfoVo, BaseQuoteVo<List<BoHaiQuoteAccidentVo>> quoteVo,
+                                                      BoHaiConfigureParameters parameters, String orderNo, CarInfoVo carInfo,
+                                                      String currentValue, QuotationResponse response) throws Exception {
+        VehicleCheckCodeRequest vehicleCheckCodeRequest = new VehicleCheckCodeRequest(parameters, orderNo, carInfo.getVinNo(),
+                carInfo.getEngineNo(), carInfo.getLicenseNo());
+        VehicleCheckCodeResponse vehicleCheckCodeResponse = boHaiRequestApiComponent.getVehicleCheckCode(vehicleCheckCodeRequest,
+                parameters.getSysSourceCode());
+        if (ResponseCode.R_Z00001.getCode().equals(vehicleCheckCodeResponse.getResponseCode())) {
             String checkCode = vehicleCheckCodeResponse.getData().getCheckCode();
             //重新报价
             QuotationRequest quotationRequestNew = new QuotationRequest(parameters, quoteInfoVo.getRiskList(), quoteInfoVo.getKindList(),
                     currentValue, orderNo, carInfo, quoteVo.getAccidentalDrivingVo());
-            List<QuotationRequest.CheckInfoDTO> checkInfoList=new ArrayList<QuotationRequest.CheckInfoDTO>();
-            QuotationRequest.CheckInfoDTO  checkInfo=new QuotationRequest.CheckInfoDTO("2",checkCode,"N");
+            List<QuotationRequest.CheckInfoDTO> checkInfoList = new ArrayList<QuotationRequest.CheckInfoDTO>();
+            QuotationRequest.CheckInfoDTO checkInfo = new QuotationRequest.CheckInfoDTO("2", checkCode, "N");
             checkInfoList.add(checkInfo);
             //quotationRequestNew.setCheckInfoList(checkInfoList);
             response = boHaiRequestApiComponent.quotation(quotationRequestNew, parameters.getSysSourceCode());
@@ -220,20 +239,20 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
     }
 
     /**
-     *  @version  商业险发生重复投保
-     *  @author: hxl
-     *  @Date: 2024/4/7 16:07
-     *  @Description:
+     * @version 商业险发生重复投保
+     * @author: hxl
+     * @Date: 2024/4/7 16:07
+     * @Description:
      */
-    private QuotationResponse getQuotationResponse(QuotationResponse response, QuotationRequest quotationRequest,String sysSourCode) throws Exception {
-        if(ResponseCode.R_Z00001.getCode().equals(response.getResponseCode()) && response.getData().getBusinessPolicy().getErrorMsg()!=null){
+    private QuotationResponse getQuotationResponse(QuotationResponse response, QuotationRequest quotationRequest, String sysSourCode) throws Exception {
+        if (ResponseCode.R_Z00001.getCode().equals(response.getResponseCode()) && response.getData().getBusinessPolicy().getErrorMsg() != null) {
             String errorMsg = response.getData().getBusinessPolicy().getErrorMsg();
-            if(errorMsg.contains("重复投保")){
+            if (errorMsg.contains("重复投保")) {
                 //重新给商业险的开始和结束时间赋值赋值重新填报
-                String businessPolicyEndDateStr = StringSubStringUtils.subjectStringContentByBusinessPolicyEndDate(errorMsg,"终保日期:");
-                if(!"".equals(businessPolicyEndDateStr) && !"".equals(businessPolicyEndDateStr)){
+                String businessPolicyEndDateStr = StringSubStringUtils.subjectStringContentByBusinessPolicyEndDate(errorMsg, "终保日期:");
+                if (!StringUtils.isEmpty(businessPolicyEndDateStr) && !StringUtils.isEmpty((businessPolicyEndDateStr))) {
                     //结束投保日期为开始日期,结束日期为结束投保日期后一年的日期
-                    businessPolicyEndDateStr=businessPolicyEndDateStr+"00";
+                    businessPolicyEndDateStr = businessPolicyEndDateStr + "00";
                     String beginDateStr = DateUtil_N.strAllToDateToStr(businessPolicyEndDateStr, "yyyyMMddHHmmss", "yyyy-MM-dd HH:mm:ss");
                     // 结束日期为59:59:59
                     String endDateStr = DateUtil_N.getNextYearDateStrTranfer(businessPolicyEndDateStr);
@@ -342,9 +361,8 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         List<UnderwritingResponse.DataDTO.UnAutoPolicyDTO> propertyPolicies = data.getPropertyPolicies();
         policyDTOS.addAll(propertyPolicies);
 
-        List<DrivingInsuranceDto> collect = policyDTOS.stream()
-                .map(UnderwritingResponse.DataDTO.UnAutoPolicyDTO::toDrivingInsuranceDto)
-                .collect(Collectors.toList());
+        List<DrivingInsuranceDto> collect =
+                policyDTOS.stream().map(UnderwritingResponse.DataDTO.UnAutoPolicyDTO::toDrivingInsuranceDto).collect(Collectors.toList());
 
         JSONArray objects = JSON.parseArray(JSON.toJSONString(collect));
         insAreaCompany.setCrossInsurance(objects);
@@ -541,11 +559,9 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         return response.getData().getDocumentList();
     }
 
-    public HttpResult<QuoteRespVo> getQuoteRespVo(QuotationResponse response,
-                                                  BaseQuoteInfoVo yaQuoteInfoVo,
+    public HttpResult<QuoteRespVo> getQuoteRespVo(QuotationResponse response, BaseQuoteInfoVo yaQuoteInfoVo,
                                                   VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO vehicleModelsDTO,
-                                                  PtlAgreementAttribution ptlAgreementAttribution,
-                                                  String orderNo,
+                                                  PtlAgreementAttribution ptlAgreementAttribution, String orderNo,
                                                   List<BoHaiQuoteAccidentVo> accidentalDrivingVo) {
 
         double sumPayTax = 0;
@@ -625,10 +641,8 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         return responseOrder(response, quoteRespVo, ptlAgreementAttribution, orderNo, accidentalDrivingVo);
     }
 
-    public HttpResult<QuoteRespVo> responseOrder(QuotationResponse response,
-                                                 QuoteRespVo quoteRespVo,
-                                                 PtlAgreementAttribution ptlAgreementAttribution,
-                                                 String orderId,
+    public HttpResult<QuoteRespVo> responseOrder(QuotationResponse response, QuoteRespVo quoteRespVo,
+                                                 PtlAgreementAttribution ptlAgreementAttribution, String orderId,
                                                  List<BoHaiQuoteAccidentVo> accidentalDrivingVo) {
         // 保存订单信息
         InsAreaCompany insAreaCompany = new InsAreaCompany(quoteRespVo, ptlAgreementAttribution);
@@ -643,11 +657,8 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         insAreaCompany.setAccidentInfo(JSON.parseArray(JSON.toJSONString(accidentalDrivingVo)));
 
         // 车船税
-        TaxArrears taxArrears = Optional.ofNullable(response.getData().getTrafficPolicy())
-                .map(QuotationResponse.DataDTO.TrafficPolicyDTO::getVehicleTax)
-                .map(x -> new TaxArrears("往年欠税", Double.parseDouble(x.getOverdueTaxAmount()),
-                        Double.parseDouble(x.getLateFee())))
-                .orElse(new TaxArrears());
+        TaxArrears taxArrears =
+                Optional.ofNullable(response.getData().getTrafficPolicy()).map(QuotationResponse.DataDTO.TrafficPolicyDTO::getVehicleTax).map(x -> new TaxArrears("往年欠税", Double.parseDouble(x.getOverdueTaxAmount()), Double.parseDouble(x.getLateFee()))).orElse(new TaxArrears());
 
         List<TaxArrears> taxArrearsList = Collections.singletonList(taxArrears);
         insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(taxArrearsList)));

+ 8 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java

@@ -104,11 +104,19 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
 
     @Override
     public Page<InsOrders> getPendingAuditOrders(Page page, OrderQueryVo orderQueryVo) {
+        if(orderQueryVo.getStartDate() != null && orderQueryVo.getEndDate() != null){
+            orderQueryVo.setStartDateStr(orderQueryVo.getStartDate().toString());
+            orderQueryVo.setEndDateStr(orderQueryVo.getEndDate().toString());
+        }
         return baseMapper.getPendingAuditOrders(page,orderQueryVo);
     }
 
     @Override
     public Page<InsOrders> getAlreadyAuditOrders(Page page, OrderQueryVo orderQueryVo) {
+        if(orderQueryVo.getStartDate() != null && orderQueryVo.getEndDate() != null){
+            orderQueryVo.setStartDateStr(orderQueryVo.getStartDate().toString());
+            orderQueryVo.setEndDateStr(orderQueryVo.getEndDate().toString());
+        }
         return baseMapper.getAlreadyAuditOrders(page,orderQueryVo);
     }
 

+ 22 - 3
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -812,14 +812,33 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 }
             }
         }
+        Long total=0l;
         Page<InsOrders> orderVoPage=new Page<>();
-        if(agentUserIds!=null || agentUserIds.size()==0){
+        //注释逻辑给前台返回数据
+        //if((agentUserIds!=null && agentUserIds.size()>0) || (agreeIds!=null && agreeIds.size()>0)){
             orderVoPage= baseMapper.queryPageOrderByLinkType(page, orderQueryVo,agentUserIds,agreeIds);
-        }
-        Long total = baseMapper.queryPageOrderByLinkTypeCount(orderQueryVo,agentUserIds,agreeIds);
+            total = baseMapper.queryPageOrderByLinkTypeCount(orderQueryVo,agentUserIds,agreeIds);
+        //}
         orderVoPage.setTotal(total);
         return new BasePageResult<>(orderQueryVo.getPageNum(), orderQueryVo.getPageSize(), orderVoPage.getTotal(),
                 orderVoPage.getPages()
                 , orderVoPage.getRecords());
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/18 10:51
+     *  @Description: 查询子订单的数据
+     */
+    @Override
+    public BasePageResult<InsOrders> queryPageSubOrders(OrderTaskPoolsVo orderTaskPoolsVo) {
+        Page<InsOrders> page = new Page<>(orderTaskPoolsVo.getPageNum(), orderTaskPoolsVo.getPageSize());
+        page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
+        Page<InsOrders> orderVoPage = baseMapper.queryPageSubOrders(page, orderTaskPoolsVo);
+        Long total = baseMapper.queryPageSubOrdersCount(orderTaskPoolsVo);
+        orderVoPage.setTotal(total);
+        return new BasePageResult<>(orderTaskPoolsVo.getPageNum(), orderTaskPoolsVo.getPageSize(), orderVoPage.getTotal(),
+                orderVoPage.getPages()
+                , orderVoPage.getRecords());
+    }
 }

+ 39 - 58
src/main/java/com/ydtech/modules/order/service/impl/OrderTaskPoolsServiceImpl.java

@@ -3,7 +3,9 @@ package com.ydtech.modules.order.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.base.controller.BaseController;
@@ -49,7 +51,7 @@ public class OrderTaskPoolsServiceImpl extends BaseController implements OrderTa
     public HttpResult query(OrderTaskPoolsVo orderTaskPoolsVo) {
         //后线可以查所有,非后线只能查自己代客的
         String userId = getUserId();
-        userId="9914D17002";
+        //userId="9914D17002";
         //查询当前工号是否为后线人员
         boolean isBachUser = false;
         List<SysUser> userList = sysUserService.findAllAgentRoleUser(userId,"22");
@@ -140,87 +142,66 @@ public class OrderTaskPoolsServiceImpl extends BaseController implements OrderTa
      */
     @Override
     public HttpResult querySubOrders(OrderTaskPoolsVo orderTaskPoolsVo) {
-        //后线可以查所有,非后线只能查自己代客的
-        String userId = getUserId();
-        //查询当前工号是否为后线人员
-        boolean isBachUser = false;
-        List<SysUser> userList = sysUserService.findAllAgentRoleUser(userId,"22");
-        if(userList!=null && userList.size()>0){
-            isBachUser = true;
-        }
-        BaseMapper<InsOrders> baseMapper = insOrdersService.getBaseMapper();
-        LambdaQueryWrapper<InsOrders> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(!StringUtils.isEmpty(orderTaskPoolsVo.getOrderNo()), InsOrders::getOrderno, orderTaskPoolsVo.getOrderNo())
-                .eq(!StringUtils.isEmpty(orderTaskPoolsVo.getQuoteNo()), InsOrders::getQuoteno, orderTaskPoolsVo.getQuoteNo())
-                .eq(!StringUtils.isEmpty(orderTaskPoolsVo.getOrderStatus()), InsOrders::getOrderstatus, orderTaskPoolsVo.getOrderStatus())
-                .like(!StringUtils.isEmpty(orderTaskPoolsVo.getLicenseNo()), InsOrders::getLicenseno, orderTaskPoolsVo.getLicenseNo())
-                .like(!StringUtils.isEmpty(orderTaskPoolsVo.getFrameNo()), InsOrders::getFrameno, orderTaskPoolsVo.getFrameNo())
-                .like(!StringUtils.isEmpty(orderTaskPoolsVo.getEngineNo()), InsOrders::getCarinfo, orderTaskPoolsVo.getEngineNo())
-                .eq(!StringUtils.isEmpty(orderTaskPoolsVo.getRiskCode()), InsOrders::getProduct, orderTaskPoolsVo.getRiskCode())
-                .eq(!StringUtils.isEmpty(orderTaskPoolsVo.getUserid()), InsOrders::getUserid, orderTaskPoolsVo.getUserid())
-                .eq(!StringUtils.isEmpty(orderTaskPoolsVo.getUsername()), InsOrders::getUsername, orderTaskPoolsVo.getUsername())
-                .eq(!StringUtils.isEmpty(orderTaskPoolsVo.getInsureName()), InsOrders::getInsuredname, orderTaskPoolsVo.getInsureName())
-                .eq(!StringUtils.isEmpty(orderTaskPoolsVo.getAuditId()), InsOrders::getAgreeid, orderTaskPoolsVo.getAuditId())
-                //.eq(!StringUtils.isEmpty(userId), InsOrders::getOperatorid, userId)
-                .likeRight(!StringUtils.isEmpty(orderTaskPoolsVo.getDeptId()), InsOrders::getDeptid, orderTaskPoolsVo.getDeptId())
-                .between(!StringUtils.isEmpty(orderTaskPoolsVo.getStartDate()) && !StringUtils.isEmpty(orderTaskPoolsVo.getEndDate()), InsOrders::getCreatetime, orderTaskPoolsVo.getStartDate(), orderTaskPoolsVo.getEndDate())
-                .between(!StringUtils.isEmpty(orderTaskPoolsVo.getPolicyStartDate()) && !StringUtils.isEmpty(orderTaskPoolsVo.getPolicyEndDate()), InsOrders::getJqstartdate, orderTaskPoolsVo.getPolicyStartDate(), orderTaskPoolsVo.getPolicyEndDate())
-                .between(!StringUtils.isEmpty(orderTaskPoolsVo.getPolicyStartDate()) && !StringUtils.isEmpty(orderTaskPoolsVo.getPolicyEndDate()), InsOrders::getSystartdate, orderTaskPoolsVo.getPolicyStartDate(), orderTaskPoolsVo.getPolicyEndDate());
-        if(!isBachUser){//若非后线角色,只能查自己代客录单的单子
-            wrapper.eq(!StringUtils.isEmpty(userId), InsOrders::getOperatorid, userId);
-        }
-        //保司条件不为空时,拼接保司条件
-        if (org.apache.commons.lang3.StringUtils.isNotEmpty(orderTaskPoolsVo.getInsCompany())) {
-            List<InsAreaCompany> list = insAreaCompanyService.query()
-                    .select("DISTINCT orderno")
-                    .eq("company_id", orderTaskPoolsVo.getInsCompany())
-                    .list();
-            List<String> collect =
-                    list.stream().map(InsAreaCompany::getOrderno).distinct().collect(Collectors.toList());
-            wrapper.in(InsOrders::getOrderno, collect);
-        }
-        Page<InsOrders> page = baseMapper.selectPage(new Page<>(orderTaskPoolsVo.getPageNum(), orderTaskPoolsVo.getPageSize()), wrapper);
-        BasePageResult<InsOrders> insOrders = new BasePageResult<>(orderTaskPoolsVo.getPageNum(), page.getSize(), page.getTotal(), page.getPages(), page.getRecords());
-        return HttpResult.ok(insOrders);
+        BasePageResult<InsOrders> insOrdersBasePageResult = insOrdersService.queryPageSubOrders(orderTaskPoolsVo);
+        return HttpResult.ok(insOrdersBasePageResult);
     }
     /**
      *  @version
      *  @author: hxl
      *  @Date: 2024/4/16 18:51
      *  @Description: 转发
+     *   将页面设置的人设置为当前操作人,将登陆人设置为旧的操作人
      */
     @Override
     @Transactional
     public HttpResult forwardingSubOrders(TaskForwardingVo taskForwardingVo,SysUser sysUser) {
         SysUser sysUserNew = sysUserService.getById(taskForwardingVo.getAuditId());
         InsOrders insOrders = insOrdersService.existOrder(taskForwardingVo.getOrderNo());
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getById(taskForwardingVo.getSubOrderId());
+        if(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insAreaCompany.getOrderstatus()) ){
+            throw  new SystemException("已承保的订单不能操作!!");
+        }
+        //查询最新数据的
+        InsOrderSetUserHis one = insOrderSetUserHisService.getOneBySubOrderId(taskForwardingVo.getSubOrderId());
+        if(one!=null && !one.getNewOperatorId().equals(sysUser.getId())){
+            throw  new SystemException("该订单已经转发给"+one.getNewOperatorName());
+        }
         //插入轨迹表
-        InsOrderSetUserHis  his=new InsOrderSetUserHis(insOrders.getOrderno(), insOrders.getQuoteno(), insOrders.getOperatorid(), taskForwardingVo.getAuditId(), new Date(), sysUser.getId(),"1");
+        InsOrderSetUserHis  his=new InsOrderSetUserHis(insOrders.getOrderno(), insOrders.getQuoteno(), sysUser.getId(), taskForwardingVo.getAuditId(), new Date(), sysUser.getId(),taskForwardingVo.getSubOrderId(),sysUserNew.getName()+"转发给"+sysUser.getName()+"的任务",sysUser.getName(),sysUserNew.getName());
         insOrderSetUserHisService.addOrUpdate(his);
-        insOrders.setOperatorid(sysUserNew.getId());
-        insOrdersService.updateById(insOrders);
+        insAreaCompany.setOperatorId(taskForwardingVo.getAuditId());
+        insAreaCompany.setOperatorTime(new Date());
+        insAreaCompany.setOperatorName(sysUserNew.getName());
+        insAreaCompanyService.updateById(insAreaCompany);
         return HttpResult.ok("保存成功");
     }
     /**
      *  @version
      *  @author: hxl
      *  @Date: 2024/4/16 18:51
-     *  @Description: 收回
+     *  @Description: 收回   查询最新一条数据,将原先旧的操作人设置为新的操作人,就原先新的操作人设置为旧的
+     *  插入一条信息数据
      */
     @Override
     @Transactional
-    public HttpResult recover(TaskForwardingVo taskForwardingVo) {
+    public HttpResult recover(TaskForwardingVo taskForwardingVo,SysUser sysUser) {
         InsOrders insOrders = insOrdersService.existOrder(taskForwardingVo.getOrderNo());
-
-        LambdaQueryWrapper<InsOrderSetUserHis> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(InsOrderSetUserHis::getOrderno,insOrders.getOrderno());
-        wrapper.eq(InsOrderSetUserHis::getStatus,"1");
-        InsOrderSetUserHis one = insOrderSetUserHisService.getOne(wrapper);
-        //设置为已回退
-        one.setStatus("2");
-        insOrderSetUserHisService.addOrUpdate(one);
-        insOrders.setOperatorid(one.getOldOperatorId());
-        insOrdersService.updateById(insOrders);
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getById(taskForwardingVo.getSubOrderId());
+        if(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insAreaCompany.getOrderstatus()) ){
+            throw  new SystemException("已承保的订单不能操作!!");
+        }
+        //查询最新数据的
+        InsOrderSetUserHis one = insOrderSetUserHisService.getOneBySubOrderId(taskForwardingVo.getSubOrderId());
+        if(one!=null && !one.getOldOperatorId().equals(sysUser.getId())){
+            throw  new SystemException("该订单的回收人为"+one.getOldOperatorName());
+        }
+        //插入轨迹表
+        InsOrderSetUserHis  his=new InsOrderSetUserHis(insOrders.getOrderno(), insOrders.getQuoteno(), one.getNewOperatorId(), one.getOldOperatorId(), new Date(), sysUser.getId(),taskForwardingVo.getSubOrderId(),one.getOldOperatorName()+"回收"+one.getNewOperatorName()+"任务",one.getOldOperatorName(),one.getNewOperatorName());
+        insOrderSetUserHisService.addOrUpdate(his);
+        insAreaCompany.setOperatorId(null);
+        insAreaCompany.setOperatorTime(new Date());
+        insAreaCompany.setOperatorName(null);
+        insAreaCompanyService.updateById(insAreaCompany);
         return HttpResult.ok("保存成功");
     }
 }

+ 19 - 1
src/main/java/com/ydtech/modules/protocol/controller/PtlAgreementHistoryController.java

@@ -20,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -48,11 +49,28 @@ public class PtlAgreementHistoryController extends BaseController {
     @ApiOperation("分页查询协议历史")
     public HttpResult<PageResult> agreementHistoryPage(@RequestBody PtlAgreementProductQueryVo ptlAgreementProductQueryVo) {
         Page page = buildPageRequest(ptlAgreementProductQueryVo.getPageDto());
-        Page<PtlAgreementHistoryConvertQueryVo> ptlAgreementPage = ptlAgreementHistoryService.pageHistory(page,ptlAgreementProductQueryVo.getAgreementId());
+        Page<PtlAgreementHistoryConvertQueryVo> ptlAgreementPage = ptlAgreementHistoryService.pageHistory(page, ptlAgreementProductQueryVo);
 
         return HttpResult.ok(buildPageResponse(ptlAgreementPage));
     }
 
+
+    @GetMapping("/getDetail/{batchNo}")
+    @ApiOperation("协议历史记录详情")
+    public HttpResult<HashMap<String, Object>> getAgreementHistoryDetail(@PathVariable String batchNo) {
+        HashMap<String, Object> historyDetail = ptlAgreementHistoryService.getHistoryDetail(batchNo);
+        return HttpResult.ok(historyDetail);
+    }
+
+
+//    @GetMapping("/agreementHistoryComparison/{batchNo}")
+//    @ApiOperation("协议历史记录比对")
+//    public HttpResult<HashMap<String, Object>> agreementHistoryComparison(@PathVariable String batchNo) {
+//        HashMap<String, Object> newHistory = ptlAgreementHistoryService.agreementComparison(batchNo);
+//        return HttpResult.ok(newHistory);
+//    }
+
+
     @PostMapping("costsHistoryPage")
     @ApiOperation("查询费用历史记录")
     public HttpResult<PageResult> costsHistoryPage(@RequestBody PtlAgreementProductQueryVo ptlAgreementProductCostsHistory) {

+ 6 - 6
src/main/java/com/ydtech/modules/protocol/controller/TaxSourceController.java

@@ -5,21 +5,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageRequest;
 import com.ydtech.core.page.PageResult;
-import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.esm.model.EsmInsCompany;
-import com.ydtech.modules.protocol.entity.po.PtlNonCarInsuranceProduct;
 import com.ydtech.modules.protocol.entity.vo.TaxSourceVo;
-import com.ydtech.modules.protocol.service.PtlAreaLicenseService;
 import com.ydtech.modules.protocol.service.ITaxSourceService;
+import com.ydtech.modules.protocol.service.PtlAreaLicenseService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.awt.print.Pageable;
-import java.util.List;
-
 @Api(tags = "税源管理")
 @RequestMapping("/tax/manager")
 @RestController
@@ -80,4 +75,9 @@ public class TaxSourceController extends BaseController {
         return result? HttpResult.ok("保存税源成功"):HttpResult.error("保存税源失败");
     }
 
+    @GetMapping("/getAllAgreementByUserId")
+    @ApiOperation("通过用户id获取所有协议")
+    public HttpResult getAllAgreementByUserId(String userId){
+        return HttpResult.ok(taxSourceService.getAllAgreementByUserId(userId));
+    }
 }

+ 9 - 0
src/main/java/com/ydtech/modules/protocol/dao/PtlAgreementDeptHistoryMapper.java

@@ -0,0 +1,9 @@
+package com.ydtech.modules.protocol.dao;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementDeptHistory;
+
+public interface PtlAgreementDeptHistoryMapper extends BaseMapper<PtlAgreementDeptHistory> {
+
+}

+ 2 - 1
src/main/java/com/ydtech/modules/protocol/dao/PtlAgreementHistoryMapper.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.protocol.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementHistory;
+import com.ydtech.modules.protocol.entity.vo.PtlAgreementProductQueryVo;
 
 import java.util.HashMap;
 import java.util.List;
@@ -15,7 +16,7 @@ import java.util.List;
  * @Entity com.ydtech.modules.protocol.entity.po.PtlAgreement
  */
 public interface PtlAgreementHistoryMapper extends BaseMapper<PtlAgreementHistory> {
-    Page<HashMap> pageHistory(Page page, String agreementId);
+    Page<HashMap> pageHistory(Page page, PtlAgreementProductQueryVo vo);
 
 }
 

+ 8 - 0
src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementDto.java

@@ -34,4 +34,12 @@ public class PtlAgreementDto implements Serializable {
     @ApiModelProperty("是否分配")
     private String isAllocation;
 
+    @ApiModelProperty("产品类型")
+    private String productsCode;
+
+    @ApiModelProperty("产品类型数组")
+    private String[] productsCodes;
+
+
+
 }

+ 3 - 0
src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementSaveDto.java

@@ -68,6 +68,9 @@ public class PtlAgreementSaveDto implements Serializable {
     @ApiModelProperty("承保描述")
     private String underwritingDescription;
 
+    @ApiModelProperty("产品类型")
+    private String productsCode;
+
     @ApiModelProperty("审核方式")
     private Integer auditType;
 }

+ 12 - 0
src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreement.java

@@ -166,6 +166,12 @@ public class PtlAgreement implements Serializable {
     @TableField(value = "audit_status")
     private Integer auditStatus;
 
+    /**
+     * 产品类型
+     */
+    @TableField(value = "products_code")
+    private String productsCode;
+
     /**
      * 序号
      */
@@ -205,6 +211,12 @@ public class PtlAgreement implements Serializable {
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 
+    /***
+     * 添加是否回显的标志
+     */
+    @TableField(exist = false)
+    private String flag;
+
     public void generateTheProtocolCode() {
         AssertionUtils.isFail(StringUtils.isNullOrEmpty(this.getPartnerCompaniesId()), "请检查合作保险公司是否选择");
         String string = LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE);

+ 42 - 0
src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreementDeptHistory.java

@@ -0,0 +1,42 @@
+package com.ydtech.modules.protocol.entity.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+@TableName(value = "ptl_agreement_dept_history")
+@Data
+@ToString
+@EqualsAndHashCode
+@NoArgsConstructor
+@AllArgsConstructor
+public class PtlAgreementDeptHistory {
+
+
+    /**
+     * 协议id
+     */
+    @TableField(value = "agreement_id")
+    private String agreementId;
+
+    /**
+     * 部门ID
+     */
+    @TableField(value = "dept_id")
+    private String deptId;
+
+    /**
+     * 批次ID
+     */
+    @TableField(value = "batch")
+    private String batch;
+
+    public static List<PtlAgreementDeptHistory> toPtlAgreementDeptHistoryList(String agreementId, List<String> deptIdList, String batch) {
+        return deptIdList.stream().map(d -> new PtlAgreementDeptHistory(agreementId, d, batch)).collect(Collectors.toList());
+    }
+
+}

+ 27 - 0
src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementPageVo.java

@@ -16,12 +16,36 @@ public class PtlAgreementPageVo extends BasePageVO {
 
     private static final long serialVersionUID = 2575020753576017621L;
 
+    @ApiModelProperty("协议时间 开始")
+    private LocalDate agreementStartDate;
+
+    @ApiModelProperty("协议时间 结束")
+    private LocalDate agreementEndDate;
+
     @ApiModelProperty("录入时间 开始")
     private LocalDate startDate;
 
     @ApiModelProperty("录入时间 结束")
     private LocalDate endDate;
 
+    @ApiModelProperty("录入用户")
+    private String creator;
+
+    @ApiModelProperty("修改时间 开始")
+    private LocalDate updateStarTime;
+
+    @ApiModelProperty("修改时间 结束")
+    private LocalDate updateEndTime;
+
+    @ApiModelProperty("修改人")
+    private String modifiedBy;
+
+    @ApiModelProperty("省市区")
+    private String areaCode;
+
+    @ApiModelProperty("省市区等级")
+    private String level;
+
     @ApiModelProperty("合作公司id")
     private String partnerCompaniesId;
 
@@ -34,4 +58,7 @@ public class PtlAgreementPageVo extends BasePageVO {
     @ApiModelProperty("供应商类型")
     private Integer companiesType;
 
+    @ApiModelProperty("协议类型 1 平台 2 私有 3 网销")
+    private Integer agreementType;
+
 }

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

+ 7 - 3
src/main/java/com/ydtech/modules/protocol/service/ITaxSourceService.java

@@ -3,14 +3,11 @@ package com.ydtech.modules.protocol.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ydtech.core.page.PageRequest;
 import com.ydtech.modules.esm.model.EsmInsCompany;
-import com.ydtech.modules.protocol.entity.dto.PtlAgreementDto;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
 import com.ydtech.modules.protocol.entity.dto.TaxSourceDto;
 import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.entity.vo.TaxSourceVo;
-import org.springframework.stereotype.Service;
 
 import java.util.List;
 
@@ -28,4 +25,11 @@ public interface ITaxSourceService extends IService<TaxSourceDto> {
     List<PtlAgreementInsCompanyDto> getAllAgreement(String deptId, String userId);
 
     String getAgreementId(String deptId, String userId, String companyId, String license, String volume, String productid);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/18 10:17
+     *  @Description: 通过用户id查询关联的协议
+     */
+    List<PtlAgreementInsCompanyDto> getAllAgreementByUserId(String userId);
 }

+ 8 - 0
src/main/java/com/ydtech/modules/protocol/service/PtlAgreementDeptHistoryService.java

@@ -0,0 +1,8 @@
+package com.ydtech.modules.protocol.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementDeptHistory;
+
+
+public interface PtlAgreementDeptHistoryService extends IService<PtlAgreementDeptHistory> {
+}

+ 6 - 10
src/main/java/com/ydtech/modules/protocol/service/PtlAgreementHistoryService.java

@@ -2,18 +2,10 @@ package com.ydtech.modules.protocol.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ydtech.core.page.HttpResult;
-import com.ydtech.core.page.PageResult;
-import com.ydtech.modules.esm.model.EsmInsCompany;
-import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
-import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
-import com.ydtech.modules.protocol.entity.dto.PtlAgreementSaveDto;
-import com.ydtech.modules.protocol.entity.dto.history.PtlAgreementHistorySaveDto;
-import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementHistory;
 import com.ydtech.modules.protocol.entity.vo.*;
 
-import java.util.List;
+import java.util.HashMap;
 
 /**
  * @author wenks
@@ -24,5 +16,9 @@ public interface PtlAgreementHistoryService extends IService<PtlAgreementHistory
 
     boolean saveAgreementHistory(PtlAgreementHistory ptlAgreementHistory);
 
-    Page<PtlAgreementHistoryConvertQueryVo> pageHistory(Page page, String agreementId);
+    Page<PtlAgreementHistoryConvertQueryVo> pageHistory(Page page, PtlAgreementProductQueryVo ptlAgreementProductQueryVo);
+
+    HashMap<String, Object> getHistoryDetail(String batchNo);
+
+//    HashMap<String, Object> agreementComparison(String batchNo);
 }

+ 12 - 0
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementDeptHistoryImpl.java

@@ -0,0 +1,12 @@
+package com.ydtech.modules.protocol.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.protocol.dao.PtlAgreementDeptHistoryMapper;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementDeptHistory;
+import com.ydtech.modules.protocol.service.PtlAgreementDeptHistoryService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class PtlAgreementDeptHistoryImpl extends ServiceImpl<PtlAgreementDeptHistoryMapper, PtlAgreementDeptHistory>
+        implements PtlAgreementDeptHistoryService {
+}

+ 68 - 31
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementHistoryServiceImpl.java

@@ -5,45 +5,17 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ydtech.config.DictEnumConfig;
-import com.ydtech.constants.enums.dict.DictionaryData;
-import com.ydtech.constants.enums.dict.DictionaryManagement;
-import com.ydtech.constants.enums.dict.agreement.AgreementType;
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.core.page.PageResult;
-import com.ydtech.exception.SystemException;
-import com.ydtech.modules.esm.model.EsmInsCompany;
-import com.ydtech.modules.esm.service.EsmInsCompanyService;
-import com.ydtech.modules.order.service.InsCrawlerOrderService;
-import com.ydtech.modules.protocol.constants.HistoryStatusConstants;
 import com.ydtech.modules.protocol.dao.PtlAgreementHistoryMapper;
-import com.ydtech.modules.protocol.dao.PtlAgreementMapper;
-import com.ydtech.modules.protocol.entity.constants.PtlApiType;
-import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
-import com.ydtech.modules.protocol.entity.dto.PtlAgreementDto;
-import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
-import com.ydtech.modules.protocol.entity.dto.PtlAgreementSaveDto;
-import com.ydtech.modules.protocol.entity.dto.history.PtlAgreementHistorySaveDto;
 import com.ydtech.modules.protocol.entity.po.*;
 import com.ydtech.modules.protocol.entity.vo.*;
 import com.ydtech.modules.protocol.service.*;
-import com.ydtech.modules.protocol.utils.AssertionUtils;
-import com.ydtech.utils.idgen.IdGenerate;
-import org.apache.commons.lang3.ObjectUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.jsoup.helper.DataUtil;
-import org.springframework.beans.BeanUtils;
-import org.springframework.context.annotation.Lazy;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
-import java.time.LocalDate;
-import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 
 
 /**
@@ -55,6 +27,15 @@ import java.util.stream.Collectors;
 public class PtlAgreementHistoryServiceImpl extends ServiceImpl<PtlAgreementHistoryMapper, PtlAgreementHistory> implements PtlAgreementHistoryService {
 
 
+    @Autowired
+    private PtlAgreementAttributionHistoryService ptlAgreementAttributionHistoryService;
+
+    @Autowired
+    private  PtlAgreementDeptHistoryService ptlAgreementDeptHistoryService;
+
+//    @Autowired
+//    private PtlAgreementService ptlAgreementService;
+
 
     @Override
     public boolean saveAgreementHistory(PtlAgreementHistory ptlAgreementHistory) {
@@ -62,9 +43,11 @@ public class PtlAgreementHistoryServiceImpl extends ServiceImpl<PtlAgreementHist
         return true;
     }
 
+
     @Override
-    public Page<PtlAgreementHistoryConvertQueryVo> pageHistory(Page page, String agreementId) {
-        Page<HashMap> hashMaps = baseMapper.pageHistory(page, agreementId);
+    public Page<PtlAgreementHistoryConvertQueryVo> pageHistory(Page page, PtlAgreementProductQueryVo ptlAgreementProductQueryVo) {
+
+        Page<HashMap> hashMaps = baseMapper.pageHistory(page, ptlAgreementProductQueryVo);
         Page<PtlAgreementHistoryConvertQueryVo> ptlAgreementHistoryQueryVos = new Page();
         List<PtlAgreementHistoryConvertQueryVo> ptlAgreementHistoryQueryList = new ArrayList<>();
         for (HashMap hashMap : hashMaps.getRecords()) {
@@ -121,4 +104,58 @@ public class PtlAgreementHistoryServiceImpl extends ServiceImpl<PtlAgreementHist
         return ptlAgreementHistoryQueryVos;
     }
 
+    @Override
+    public HashMap<String, Object> getHistoryDetail(String batchNo) {
+        LambdaQueryWrapper<PtlAgreementHistory> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(PtlAgreementHistory::getBatch, batchNo);
+        PtlAgreementHistory ptlAgreementHistory = getOne(lambdaQueryWrapper);
+
+        LambdaQueryWrapper<PtlAgreementDeptHistory> deptQueryWrapper = new LambdaQueryWrapper<>();
+        deptQueryWrapper.eq(PtlAgreementDeptHistory::getBatch, batchNo);
+        List<PtlAgreementDeptHistory> deptHistories = ptlAgreementDeptHistoryService.list(deptQueryWrapper);
+
+        LambdaQueryWrapper<PtlAgreementAttributionHistory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PtlAgreementAttributionHistory::getBatch, batchNo);
+        PtlAgreementAttributionHistory ptlAgreementAttributionHistory = ptlAgreementAttributionHistoryService.getOne(queryWrapper);
+
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put("ptlAgreementHistory", ptlAgreementHistory);
+        hashMap.put("deptHistories", deptHistories);
+        hashMap.put("ptlAgreementAttributionHistory", ptlAgreementAttributionHistory);
+
+        return hashMap;
+    }
+
+//    @Override
+//    public HashMap<String, Object> agreementComparison(String batchNo) {
+//
+//        LambdaQueryWrapper<PtlAgreementHistory> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+//        lambdaQueryWrapper.eq(PtlAgreementHistory::getBatch, batchNo);
+//        PtlAgreementHistory ptlAgreementHistory = getOne(lambdaQueryWrapper);
+//
+//        LambdaQueryWrapper<PtlAgreementDeptHistory> deptQueryWrapper = new LambdaQueryWrapper<>();
+//        deptQueryWrapper.eq(PtlAgreementDeptHistory::getBatch, batchNo);
+//        List<PtlAgreementDeptHistory> deptHistories = ptlAgreementDeptHistoryService.list(deptQueryWrapper);
+//
+//        LambdaQueryWrapper<PtlAgreementAttributionHistory> queryWrapper = new LambdaQueryWrapper<>();
+//        queryWrapper.eq(PtlAgreementAttributionHistory::getBatch, batchNo);
+//        PtlAgreementAttributionHistory ptlAgreementAttributionHistory = ptlAgreementAttributionHistoryService.getOne(queryWrapper);
+//
+//        HashMap<String, Object> historyDetail = new HashMap<>();
+//        historyDetail.put("ptlAgreementHistory", ptlAgreementHistory);
+//        historyDetail.put("deptHistories", deptHistories);
+//        historyDetail.put("ptlAgreementAttributionHistory", ptlAgreementAttributionHistory);
+//
+//
+//
+////        HashMap<String, Object> historyDetail = getHistoryDetail(batchNo);
+//
+//        HttpResult<PtlAgreementQueryVo> newAgreementDetail = ptlAgreementService.getByAgreementId(ptlAgreementHistory.getAgreementId());
+//
+//        HashMap<String, Object> hashMap = new HashMap<>();
+//        hashMap.put("historyDetail", historyDetail);
+//        hashMap.put("newAgreementDetail", newAgreementDetail);
+//        return hashMap;
+//    }
+
 }

+ 111 - 14
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java

@@ -27,8 +27,6 @@ import com.ydtech.modules.protocol.entity.po.*;
 import com.ydtech.modules.protocol.entity.vo.*;
 import com.ydtech.modules.protocol.service.*;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
-import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
-import com.ydtech.modules.protocols.service.PtlAgreementProductCostsNewService;
 import com.ydtech.utils.idgen.IdGenerate;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -41,10 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -82,6 +77,9 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
 
     private final PtlAgreementAttributionHistoryService ptlAgreementAttributionHistoryService;
 
+    @Autowired
+    private  PtlAgreementDeptHistoryService ptlAgreementDeptHistoryService;
+
 
     public PtlAgreementServiceImpl(PtlAgreementProductCostsService ptlAgreementProductCostsService,
                                    PtlAgreementAttributionService ptlAgreementAttributionService, PtlAgreementDeptService ptlAgreementDeptService,
@@ -110,6 +108,16 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         LocalDate localDate = LocalDate.now();
         List<PtlAgreementInsCompanyDto> agreementCompany = baseMapper.getAgreementCompany(localDate, deptId);
 
+        for (PtlAgreementInsCompanyDto ptlAgreementInsCompanyDto : agreementCompany) {
+            List<PtlAgreementDto> agreement = ptlAgreementInsCompanyDto.getAgreement();
+            for (PtlAgreementDto ptlAgreementDto : agreement) {
+                if (ptlAgreementDto.getProductsCode() != null && !ptlAgreementDto.getProductsCode().equals("")) {
+                    String[] split = ptlAgreementDto.getProductsCode().split(",");
+                    ptlAgreementDto.setProductsCodes(split);
+                }
+            }
+        }
+
         List<String> agreementIdList = agreementCompany.stream()
                 .flatMap(x -> x.getAgreement().stream().map(PtlAgreementDto::getId))
                 .collect(Collectors.toList());
@@ -149,6 +157,7 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
 
         EsmInsCompany esmInsCompany = proxyObject.verifyLogin(ptlAgreement, agreementSaveDto, attribution);
 //        ptlAgreement.setId(IdGenerate.nextId());
+        ptlAgreement.setProductsCode(agreementSaveDto.getProductsCode());
         ptlAgreement.setCreator(userName);
         ptlAgreement.setCreateTime(LocalDateTime.now());
         save(ptlAgreement);
@@ -157,7 +166,11 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         // 添加 历史记录表
         //生成批次号
         String batchNo = IdGenerate.nextId();
-        PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo,userName, HistoryStatusConstants.HISTORY_TYPE_ADD, ptlAgreement);
+        //添加授权部门历史信息
+        List<String> dept = agreement.getDept();
+        List<PtlAgreementDeptHistory> ptlAgreementDeptList = PtlAgreementDeptHistory.toPtlAgreementDeptHistoryList(ptlAgreement.getId(), dept, batchNo);
+        ptlAgreementDeptHistoryService.saveBatch(ptlAgreementDeptList);
+        PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo, userName, HistoryStatusConstants.HISTORY_TYPE_ADD, ptlAgreement);
         ptlAgreementHistory.setStartDate(ptlAgreement.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         ptlAgreementHistory.setEndDate(ptlAgreement.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         ptlAgreementHistory.setAgreementId(ptlAgreement.getId());
@@ -343,13 +356,64 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
                 .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getValidStatus()), PtlAgreement::getValidStatus, ptlAgreementPageVo.getValidStatus())
                 // 供应商类型
                 .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getCompaniesType()), PtlAgreement::getCompaniesType, ptlAgreementPageVo.getCompaniesType())
+                // 协议类型
+                .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAgreementType()), PtlAgreement::getAgreementType, ptlAgreementPageVo.getAgreementType())
+                // 录入人
+                .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getCreator()), PtlAgreement::getCreator, ptlAgreementPageVo.getCreator())
+                // 修改人
+                .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getModifiedBy()), PtlAgreement::getModifiedBy, ptlAgreementPageVo.getModifiedBy())
                 // 合作公司
                 .in(!StringUtils.isEmpty(ptlAgreementPageVo.getPartnerCompaniesId()) && !lowerId.isEmpty(), PtlAgreement::getPartnerCompaniesId, lowerId)
                 // 录入时间
-                .between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate()), PtlAgreement::getCreateTime, ptlAgreementPageVo.getStartDate(), ptlAgreementPageVo.getEndDate());
-        Page<PtlAgreement> ptlAgreementPage = new Page<>(pageNum, pageSize);
-        Page<PtlAgreement> agreementPage = page(ptlAgreementPage, wrapper);
-        PageResult<PtlAgreement> ptlAgreementPageResult = new PageResult<>(pageNum, pageSize, (int) agreementPage.getTotal(), agreementPage.getRecords());
+                .between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate()), PtlAgreement::getCreateTime, ptlAgreementPageVo.getStartDate(), ptlAgreementPageVo.getEndDate())
+                // 修改时间
+                .between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getUpdateStarTime()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getUpdateEndTime()), PtlAgreement::getUpdateTime, ptlAgreementPageVo.getUpdateStarTime(), ptlAgreementPageVo.getUpdateEndTime())
+                // 协议起期
+                .ge(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAgreementStartDate()), PtlAgreement::getStartDate, ptlAgreementPageVo.getAgreementStartDate())
+                // 协议止期
+                .le(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAgreementEndDate()), PtlAgreement::getEndDate, ptlAgreementPageVo.getAgreementEndDate());
+
+//        Page<PtlAgreement> ptlAgreementPage = new Page<>(pageNum, pageSize);
+        List<PtlAgreement> records = list(wrapper);
+//        Page<PtlAgreement> agreementPage = page(ptlAgreementPage, wrapper);
+//        List<PtlAgreement> records = agreementPage.getRecords();
+        if (ptlAgreementPageVo.getAreaCode() != null && !"".equals(ptlAgreementPageVo.getAreaCode()) && ptlAgreementPageVo.getLevel() != null) {
+            String area = ptlAgreementPageVo.getAreaCode();
+            String prefix = null;
+            Integer sign = 0;
+            switch (ptlAgreementPageVo.getLevel()) {
+                case "1": { // 省级查询逻辑
+                    sign = 7;
+                    prefix = area.substring(0, 2);
+                    break;
+                }
+                case "2": {  // 市级查询逻辑
+                    sign = 9;
+                    prefix = area.substring(0, 4);
+                    break;
+                }
+                case "3": {  // 区县级查询逻辑
+                    sign = 11;
+                    prefix = area.substring(0, 6);
+                    break;
+                }
+            }
+
+            if (records.size() != 0) {
+                List<PtlAgreement> ptlAgreements = new ArrayList<>();
+                for (PtlAgreement record : records) {
+                    String substring = record.getPartnerCompaniesId().substring(5, sign);
+                    if (substring.equals(prefix)) {
+                        ptlAgreements.add(record);
+                    }
+                }
+                records.clear();
+                records.addAll(ptlAgreements);
+            }
+        }
+        List<PtlAgreement> paginate = paginate(records, pageNum, pageSize);
+
+        PageResult<PtlAgreement> ptlAgreementPageResult = new PageResult<>(pageNum, pageSize, records.size(), paginate);
         return HttpResult.ok(ptlAgreementPageResult);
     }
 
@@ -416,7 +480,16 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         // 添加 历史记录表
         //生成批次号
         String batchNo = IdGenerate.nextId();
-        PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo,userName, HistoryStatusConstants.HISTORY_TYPE_ADD, byAgreementId.getData().getAgreement());
+        List<PtlAgreementDept> dept = byAgreementId.getData().getDept();
+        ArrayList<PtlAgreementDeptHistory> histories = new ArrayList<>();
+        for (PtlAgreementDept ptlAgreementDept : dept) {
+            PtlAgreementDeptHistory deptHistory = new PtlAgreementDeptHistory();
+            deptHistory.setAgreementId(ptlAgreementDept.getAgreementId());
+            deptHistory.setDeptId(ptlAgreementDept.getDeptId());
+            deptHistory.setBatch(batchNo);
+        }
+        ptlAgreementDeptHistoryService.saveBatch(histories);
+        PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo, userName, HistoryStatusConstants.HISTORY_TYPE_ADD, byAgreementId.getData().getAgreement());
         ptlAgreementHistory.setStartDate(byAgreementId.getData().getAgreement().getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         ptlAgreementHistory.setEndDate(byAgreementId.getData().getAgreement().getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         ptlAgreementHistory.setAgreementId(ptlAgreementHistory.getId());
@@ -445,6 +518,7 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
 
         EsmInsCompany esmInsCompany = proxyObject.verifyLogin(ptlAgreement, agreementSaveDto, attribution);
 
+        ptlAgreement.setProductsCode(agreementSaveDto.getProductsCode());
         ptlAgreement.setModifiedBy(userName);
         ptlAgreement.setUpdateTime(LocalDateTime.now());
         HttpResult<PtlAgreementQueryVo> byAgreementId = this.getByAgreementId(agreementId);
@@ -459,7 +533,11 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         // 添加 历史记录表
         //生成批次号
         String batchNo = IdGenerate.nextId();
-        PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo,userName, HistoryStatusConstants.HISTORY_TYPE_ADD, ptlAgreement);
+        //添加授权部门历史信息
+        List<String> dept = agreement.getDept();
+        List<PtlAgreementDeptHistory> ptlAgreementDeptList = PtlAgreementDeptHistory.toPtlAgreementDeptHistoryList(ptlAgreement.getId(), dept, batchNo);
+        ptlAgreementDeptHistoryService.saveBatch(ptlAgreementDeptList);
+        PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo, userName, HistoryStatusConstants.HISTORY_TYPE_ADD, ptlAgreement);
         ptlAgreementHistory.setStartDate(ptlAgreement.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         ptlAgreementHistory.setEndDate(ptlAgreement.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         ptlAgreementHistory.setAgreementId(ptlAgreement.getId());
@@ -624,7 +702,7 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
      */
     public List<PtlAgreement> findCheckAgreementList(PtlAgreement ptlAgreement){
         LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(PtlAgreement::getValidStatus,"1");
+        wrapper.eq(PtlAgreement::getAuditStatus,"1");
         List<PtlAgreement> list = proxyObject.list(wrapper);
         return list;
     }
@@ -638,4 +716,23 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         return ptlAgreements;
     }
 
+    /**
+     * 手动对 QuUserNum 列表进行分页
+     *
+     * @param ptlAgreements 原始 QuUserNum 数据列表
+     * @param pageNum       期望获取的页码(从 1 开始)
+     * @param pageSize      每页包含的 QuUserNum 数量
+     * @return 对应页码的 QuUserNum 子列表,若输入参数无效则返回空列表
+     */
+    public List<PtlAgreement> paginate(List<PtlAgreement> ptlAgreements, int pageNum, int pageSize) {
+        if (ptlAgreements == null || ptlAgreements.isEmpty() || pageNum < 1 || pageSize < 1) {
+            return Collections.emptyList();
+        }
+
+        int startIndex = (pageNum - 1) * pageSize;
+        int endIndex = Math.min(startIndex + pageSize, ptlAgreements.size());
+
+        return ptlAgreements.subList(startIndex, endIndex);
+    }
+
 }

+ 37 - 2
src/main/java/com/ydtech/modules/protocol/service/impl/TaxSourceServiceImpl.java

@@ -7,8 +7,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.constants.sys.SystemConstant;
 import com.ydtech.modules.admin.constants.RoleConstants;
+import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.SysUserRole;
 import com.ydtech.modules.admin.service.SysUserRoleService;
+import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.esm.model.EsmInsCompany;
 import com.ydtech.modules.esm.service.EsmInsCompanyService;
 import com.ydtech.modules.order.service.InsOrdersService;
@@ -26,7 +28,6 @@ import com.ydtech.modules.protocol.service.PtlAgreementService;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.utils.idgen.IdGenerate;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -34,7 +35,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.Objects;
 import java.util.stream.Collectors;
 
 @Service
@@ -55,6 +55,9 @@ public class TaxSourceServiceImpl extends ServiceImpl<TaxSourceMapper, TaxSource
     @Autowired
     EsmInsCompanyService esmInsCompanyService;
 
+    @Autowired
+    SysUserService sysUserService;
+
 
     @Override
     public IPage<EsmInsCompany> getInsureCompany(Page page) {
@@ -391,6 +394,38 @@ public class TaxSourceServiceImpl extends ServiceImpl<TaxSourceMapper, TaxSource
 
         return resultId;
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/18 10:18
+     *  @Description: 通过用户id查询关联的协议
+     */
+    @Override
+    public List<PtlAgreementInsCompanyDto> getAllAgreementByUserId(String userId) {
+        SysUser user = sysUserService.getById(userId);
+        //查出当前用户管理所有协议
+        List<PtlAgreementInsCompanyDto> agreementInsCompany = this.getAgreementInsCompany(user.getDeptId(), userId);
+        //查找是否配置税源
+        List<TaxSourceDto> taxSourceDtos =
+                baseMapper.selectList(new LambdaQueryWrapper<TaxSourceDto>().eq(TaxSourceDto::getIsTaxSource, "1"));
+        //设置税源参数
+        agreementInsCompany.forEach(item -> {
+            if (!TaxSourceStatusConstants.TAX_SOURCE_START.equals(item.getIsExclude())) {
+                taxSourceDtos.forEach(taxSourceDto -> {
+                    if (item.getId().equals(taxSourceDto.getInsCompanyId())) {
+                        item.getAgreement().forEach(agreement -> {
+                            if (agreement.getId().equals(taxSourceDto.getAgreementId())) {
+                                agreement.setIsTaxSource(TaxSourceStatusConstants.TAX_SOURCE_START);
+                                item.setIsTaxSource(TaxSourceStatusConstants.TAX_SOURCE_START);
+                                item.setTaxSourceAgreementId(taxSourceDto.getAgreementId());
+                            }
+                        });
+                    }
+                });
+            }
+        });
+        return agreementInsCompany;
+    }
 
 
 }

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

+ 12 - 0
src/main/java/com/ydtech/modules/protocols/entity/po/InsFeeOrderNew.java

@@ -296,6 +296,18 @@ public class InsFeeOrderNew {
     @TableField(value = "no_dept_premiums_level_5")
     private BigDecimal noDeptPremiumsLevel5;
 
+    @ApiModelProperty(value = "交强出口手续费比例")
+    @TableField(value = "jq_costs_export_proportion")
+    private BigDecimal jqCostsExportProportion;
+
+    @ApiModelProperty(value = "商业出口手续费比例")
+    @TableField(value = "sy_costs_export_proportion")
+    private BigDecimal syCostsExportProportion;
+
+    @ApiModelProperty(value = "非车出口手续费比例")
+    @TableField(value = "no_costs_export_proportion")
+    private BigDecimal noCostsExportProportion;
+
     @ApiModelProperty(value = "一级分销比例")
     @TableField(value = "first_detail_proportion")
     private BigDecimal firstDetailProportion;

+ 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")

+ 6 - 2
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsNewHistory.java

@@ -1,6 +1,6 @@
 package com.ydtech.modules.protocols.entity.po;
 
-import com.baomidou.mybatisplus.annotation.IdType;
+
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -178,10 +178,14 @@ public class PtlAgreementProductCostsNewHistory {
     @TableField(value = "no_car_export_investment_radio")
     private BigDecimal noCarExportInvestmentRadio;
 
-    @ApiModelProperty(value = "费用因子属性")
+    @ApiModelProperty(value = "费用因子属性字符串")
     @TableField(exist = false)
     private String costsAttrLinks;
 
+    @ApiModelProperty(value = "费用属性集合")
+    @TableField(exist = false)
+    private List<PtlAgreementUndwrtRulesAttr> costsAttrLinkList;
+
     @ApiModelProperty(value = "批次")
     @TableField(value = "batch")
     private String batch;

+ 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")

+ 8 - 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")
@@ -51,6 +51,11 @@ public class PtlAgreementUndwrtRulesNewHistory {
     @ApiModelProperty(value = "费用因子属性")
     @TableField(exist = false)
     private String costsAttrLinks;
+
+    @ApiModelProperty(value = "费用因子属性")
+    @TableField(exist = false)
+    private  List<PtlAgreementUndwrtRulesAttr>  costsAttrLinkList;
+
     @ApiModelProperty(value = "批次")
     @TableField(value = "batch")
     private String batch;

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

+ 19 - 1
src/main/resources/mapper/modules/admin/SysUserLinkPtlAgreementMapper.xml

@@ -7,7 +7,7 @@
             link.id as id,
             user.id as "sysUser.id",
             user.name as "sysUser.name",
-            agree.companies_type as  "ptlAgreement.id",
+            agree.id as  "ptlAgreement.id",
             agree.companies_type as  "ptlAgreement.companiesType",
             agree.agreement_type as  "ptlAgreement.agreementType",
             agree.agreement_code as  "ptlAgreement.agreementCode",
@@ -68,4 +68,22 @@
             </if>
         </where>
     </select>
+
+    <select id="findAllPtlAgreementListByUserId"  resultType="com.ydtech.modules.protocol.entity.po.PtlAgreement">
+        SELECT
+            pl.*,
+            (
+                SELECT
+                    count(0)
+                FROM
+                    sys_user_link_pl_agreement link
+                WHERE
+                    link.user_id = #{userId}
+                  AND link.ptl_agreement_id = pl.id
+            )  as flag
+        FROM
+            ptl_agreement pl
+        WHERE
+            audit_type =1
+    </select>
 </mapper>

+ 33 - 0
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -475,4 +475,37 @@
             </if>
         </if>
     </select>
+
+    <select id="getCustomerUsers" resultType="com.ydtech.modules.admin.model.vo.SysUserBaseVO">
+        SELECT
+        t1.id AS userId,
+        t1.NAME AS NAME,
+        t1.mobile AS mobile,
+        t1.`status` AS `status`,
+        t2.id AS deptId,
+        t2.`name` AS deptName,
+        sd2.id AS pDeptId,
+        sd2.`name` AS pDeptName
+        FROM
+        sys_user t1
+        LEFT JOIN sys_dept t2 ON t1.dept_id = t2.id
+        LEFT JOIN sys_dept sd2 ON sd2.id = t2.parent_id
+        WHERE
+        t1.`status` = 1
+        AND t1.id NOT LIKE '%M%'
+        <if test='user !=null  '>
+            <if test='user.name !=null and user.name!="" '>
+                and t1.name = #{user.name}
+            </if>
+            <if test='user.userId !=null and user.userId!="" '>
+                and t1.id = #{user.userId}
+            </if>
+            <if test='user.mobile !=null and user.mobile!=""  '>
+                and t1.mobile = #{user.mobile}
+            </if>
+            <if test='user.identity !=null and user.identity!=""  '>
+                and t1.identity = #{user.identity}
+            </if>
+        </if>
+    </select>
 </mapper>

+ 17 - 0
src/main/resources/mapper/modules/ins/InsOrderSetUserHisMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.esm.dao.InsOrderSetUserHisMapper">
+
+
+   <select id="getOneBySubOrderId"  resultType="com.ydtech.modules.esm.model.po.InsOrderSetUserHis">
+       SELECT
+           *
+       FROM
+           ins_order_set_user_his
+       WHERE
+          suborder_id = #{subOrderId}
+       ORDER BY
+           create_time DESC
+           LIMIT 1;
+   </select>
+</mapper>

+ 1 - 1
src/main/resources/mapper/modules/largescreen/AgreementDataMapper.xml

@@ -89,7 +89,7 @@
         SELECT
             count( orderno )
         FROM
-            ins_area_company
+        ins_orders
         WHERE
             1=1
         <if test="startDate != null and startDate != ''">

+ 4 - 4
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -161,8 +161,8 @@
         <if test="params.insuredname != null and params.insuredname != ''">
             AND insuredname = #{params.insuredname}
         </if>
-        <if test="params.startDate != null and params.startDate != ''">
-            BETWEEN createtime = #{params.startDate} and #{params.endDate}
+        <if test="params.startDateStr != null and params.startDateStr != ''">
+            AND createtime BETWEEN #{params.startDateStr} and #{params.endDateStr}
         </if>
     </select>
 
@@ -194,8 +194,8 @@
         <if test="params.insuredname != null and params.insuredname != ''">
             AND insuredname = #{params.insuredname}
         </if>
-        <if test="params.startDate != null and params.startDate != ''">
-            BETWEEN createtime = #{params.startDate} and #{params.endDate}
+        <if test="params.startDateStr != null and params.startDateStr != ''">
+            AND createtime BETWEEN #{params.startDateStr} and #{params.endDateStr}
         </if>
     </select>
 </mapper>

+ 141 - 17
src/main/resources/mapper/modules/order/InsOrdersMapper.xml

@@ -41,6 +41,7 @@
         <result property="vehicleAndVesselTax" column="vehicle_and_vessel_tax"
                 javaType="com.alibaba.fastjson.JSONObject"
                 typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+        <result property="subOrderId" column="subOrderId" jdbcType="VARCHAR"/>
     </resultMap>
     <resultMap id="OrderResultMap" type="com.ydtech.modules.order.entity.vo.OrderVo">
         <id property="orderno" column="orderno" jdbcType="VARCHAR"/>
@@ -695,7 +696,7 @@
             <if test="orderQueryVo.orderNo != null and orderQueryVo.orderNo != ''">
                 and io.orderno = #{orderQueryVo.orderNo}
             </if>
-            <if test="orderQueryVo.deptId != null and orderQueryVo.deptId != '' and isTeamLeader">
+            <if test="orderQueryVo.deptId != null and orderQueryVo.deptId != '' ">
                 and io.deptid like "${orderQueryVo.deptId}%"
             </if>
             <if test="orderQueryVo.orderStatus != null and orderQueryVo.orderStatus != ''">
@@ -741,7 +742,7 @@
             <if test="orderQueryVo.orderNo != null and orderQueryVo.orderNo != ''">
                 and io.orderno = #{orderQueryVo.orderNo}
             </if>
-            <if test="orderQueryVo.deptId != null and orderQueryVo.deptId != '' and isTeamLeader">
+            <if test="orderQueryVo.deptId != null and orderQueryVo.deptId != ''">
                 and io.deptid like "${orderQueryVo.deptId}%"
             </if>
             <if test="orderQueryVo.orderStatus != null and orderQueryVo.orderStatus != ''">
@@ -773,19 +774,18 @@
 
     <select id="queryPageOrderByLinkType" resultMap="BaseResultMap">
         select
-        io.*
+            io.*,
+            iac.id as subOrderId
         from
-        ins_orders io
-        <!--如果存在 公司查询则进行连表 -->
-        <if test="orderQueryVo.companyId != null and orderQueryVo.companyId != ''">
-            left JOIN
-            ins_area_company iac on iac.orderno = io.orderno
-        </if>
+            ins_area_company iac
+        left JOIN
+             ins_orders io  on iac.orderno = io.orderno
         <where>
+             (iac.operator_id is null or  iac.operator_id =#{orderQueryVo.userId})
             <if test="orderQueryVo.orderNo != null and orderQueryVo.orderNo != ''">
                 and io.orderno = #{orderQueryVo.orderNo}
             </if>
-            <if test="orderQueryVo.deptId != null and orderQueryVo.deptId != '' and isTeamLeader">
+            <if test="orderQueryVo.deptId != null and orderQueryVo.deptId != ''">
                 and io.deptid like "${orderQueryVo.deptId}%"
             </if>
             <if test="orderQueryVo.orderStatus != null and orderQueryVo.orderStatus != ''">
@@ -819,25 +819,25 @@
                 </foreach>
             </if>
         </where>
-        group by orderno
         order by io.createtime desc
     </select>
 
     <select id="queryPageOrderByLinkTypeCount" resultType="Long">
         select
-        count(1)
+         count(1)
         from (
         select
-        io.orderno
+         (0)
         from
-        ins_orders io
+          ins_area_company iac
             left JOIN
-            ins_area_company iac on iac.orderno = io.orderno
+        ins_orders io  on iac.orderno = io.orderno
         <where>
+            (iac.operator_id is null or  iac.operator_id =#{orderQueryVo.userId})
             <if test="orderQueryVo.orderNo != null and orderQueryVo.orderNo != ''">
                 and io.orderno = #{orderQueryVo.orderNo}
             </if>
-            <if test="orderQueryVo.deptId != null and orderQueryVo.deptId != '' and isTeamLeader">
+            <if test="orderQueryVo.deptId != null and orderQueryVo.deptId != ''">
                 and io.deptid like "${orderQueryVo.deptId}%"
             </if>
             <if test="orderQueryVo.orderStatus != null and orderQueryVo.orderStatus != ''">
@@ -871,7 +871,131 @@
                 </foreach>
             </if>
         </where>
-        group by io.orderno
+        ) as s
+    </select>
+
+
+    <select id="queryPageSubOrders" resultMap="BaseResultMap">
+        select
+        io.*,
+        iac.id as subOrderId
+        from
+        ins_area_company iac
+         left JOIN
+        ins_orders io  on iac.orderno = io.orderno
+        <where>
+            <if test="orderQueryVo.userId != null and orderQueryVo.userId != ''">
+                and io.userid = #{orderQueryVo.userid}
+            </if>
+            <if test="orderQueryVo.orderNo != null and orderQueryVo.orderNo != ''">
+                and io.orderno = #{orderQueryVo.orderNo}
+            </if>
+            <if test="orderQueryVo.quoteNo != null and orderQueryVo.quoteNo != ''">
+                and io.quoteno  = #{orderQueryVo.quoteNo}
+            </if>
+            <if test="orderQueryVo.deptId != null and orderQueryVo.deptId != ''">
+                and io.deptid like "${orderQueryVo.deptId}%"
+            </if>
+            <if test="orderQueryVo.orderStatus != null and orderQueryVo.orderStatus != ''">
+                and iac.orderstatus = #{orderQueryVo.orderStatus}
+            </if>
+            <if test="orderQueryVo.frameNo != null and orderQueryVo.frameNo != ''">
+                and io.frameno = #{orderQueryVo.frameNo}
+            </if>
+            <if test="orderQueryVo.licenseNo != null and orderQueryVo.licenseNo != ''">
+                and io.licenseno = #{orderQueryVo.licenseNo}
+            </if>
+            <if test="orderQueryVo.engineNo != null and orderQueryVo.engineNo != ''">
+                and JSON_EXTRACT( io.carinfo, '$.engineNo' )  = #{orderQueryVo.engineNo}
+            </if>
+            <if test="orderQueryVo.insuredName != null and orderQueryVo.insuredName != ''">
+                and io.insuredname = #{orderQueryVo.insuredName}
+            </if>
+            <if test="orderQueryVo.startDate != null and orderQueryVo.endDate != null">
+                and io.createtime between #{orderQueryVo.startDate} AND #{orderQueryVo.endDate}
+            </if>
+            <if test="orderQueryVo.companyId != null and orderQueryVo.companyId != ''">
+                and iac.company_id = #{orderQueryVo.companyId}
+            </if>
+            <if test="orderQueryVo.riskCode != null and orderQueryVo.riskCode != ''">
+                and iac.product = #{orderQueryVo.riskCode}
+            </if>
+            <if test="orderQueryVo.auditId != null and orderQueryVo.auditId != ''">
+                and IFNULL( io.agreeid, '' ) = #{orderQueryVo.auditId}
+            </if>
+            <if test="orderQueryVo.policyStartDate != null and orderQueryVo.policyEndDate != ''">
+               and  ((
+                io.jqstartdate BETWEEN #{orderQueryVo.policyStartDate}
+                AND #{orderQueryVo.policyEndDate}
+                )
+                OR ( io.systartdate BETWEEN #{orderQueryVo.policyStartDate} AND #{orderQueryVo.policyEndDate} )
+                )
+            </if>
+        </where>
+        group by iac.id
+        order by io.createtime desc
+    </select>
+
+    <select id="queryPageSubOrdersCount" resultType="Long">
+        select
+        count(1)
+        from (
+        select
+        io.*
+        from
+        ins_area_company iac
+        left JOIN
+        ins_orders io  on iac.orderno = io.orderno
+        <where>
+            <if test="orderQueryVo.userId != null and orderQueryVo.userId != ''">
+                and io.userid = #{orderQueryVo.userid}
+            </if>
+            <if test="orderQueryVo.orderNo != null and orderQueryVo.orderNo != ''">
+                and io.orderno = #{orderQueryVo.orderNo}
+            </if>
+            <if test="orderQueryVo.quoteNo != null and orderQueryVo.quoteNo != ''">
+                and io.quoteno  = #{orderQueryVo.quoteNo}
+            </if>
+            <if test="orderQueryVo.deptId != null and orderQueryVo.deptId != ''">
+                and io.deptid like "${orderQueryVo.deptId}%"
+            </if>
+            <if test="orderQueryVo.orderStatus != null and orderQueryVo.orderStatus != ''">
+                and iac.orderstatus = #{orderQueryVo.orderStatus}
+            </if>
+            <if test="orderQueryVo.frameNo != null and orderQueryVo.frameNo != ''">
+                and io.frameno = #{orderQueryVo.frameNo}
+            </if>
+            <if test="orderQueryVo.licenseNo != null and orderQueryVo.licenseNo != ''">
+                and io.licenseno = #{orderQueryVo.licenseNo}
+            </if>
+            <if test="orderQueryVo.engineNo != null and orderQueryVo.engineNo != ''">
+                and JSON_EXTRACT( io.carinfo, '$.engineNo' )  = #{orderQueryVo.engineNo}
+            </if>
+            <if test="orderQueryVo.insuredName != null and orderQueryVo.insuredName != ''">
+                and io.insuredname = #{orderQueryVo.insuredName}
+            </if>
+            <if test="orderQueryVo.startDate != null and orderQueryVo.endDate != null">
+                and io.createtime between #{orderQueryVo.startDate} AND #{orderQueryVo.endDate}
+            </if>
+            <if test="orderQueryVo.companyId != null and orderQueryVo.companyId != ''">
+                and iac.company_id = #{orderQueryVo.companyId}
+            </if>
+            <if test="orderQueryVo.riskCode != null and orderQueryVo.riskCode != ''">
+                and iac.product = #{orderQueryVo.riskCode}
+            </if>
+            <if test="orderQueryVo.auditId != null and orderQueryVo.auditId != ''">
+                and IFNULL( io.agreeid, '' ) = #{orderQueryVo.auditId}
+            </if>
+            <if test="orderQueryVo.policyStartDate != null and orderQueryVo.policyEndDate != ''">
+                and  ((
+                io.jqstartdate BETWEEN #{orderQueryVo.policyStartDate}
+                AND #{orderQueryVo.policyEndDate}
+                )
+                OR ( io.systartdate BETWEEN #{orderQueryVo.policyStartDate} AND #{orderQueryVo.policyEndDate} )
+                )
+            </if>
+        </where>
+        group by iac.id
         ) as s
     </select>
 </mapper>

+ 10 - 1
src/main/resources/mapper/modules/protocol/PtlAgreementHistoryMapper.xml

@@ -52,7 +52,16 @@
             ptl_agreement_history iah
                 LEFT JOIN ptl_agreement_attribution_history iaah ON iah.batch = iaah.batch
         WHERE
-            iah.agreement_id = #{agreementId}
+            iah.agreement_id = #{vo.agreementId}
+        <if test="vo.operatorType != null and vo.operatorType != ''">
+            AND iah.operator_type = #{vo.operatorType}
+        </if>
+        <if test="vo.operator != null and vo.operator != ''">
+            AND iah.operator = #{vo.operator}
+        </if>
+        <if test="vo.operatorTime != null and vo.operatorTime != ''">
+            AND DATE(iah.operator_time) = #{vo.operatorTime}
+        </if>
     </select>
 
 </mapper>

+ 2 - 1
src/main/resources/mapper/modules/protocol/PtlAgreementMapper.xml

@@ -51,6 +51,7 @@
             <result property="agreementName" column="agreement_name"/>
             <result property="underwritingDescription" column="underwriting_description"/>
             <result property="apiType" column="api_type"/>
+            <result property="productsCode" column="products_code"/>
         </collection>
 
     </resultMap>
@@ -67,7 +68,7 @@
     </sql>
 
     <select id="getAgreementCompany" resultMap="AgreementCompanyResultMap">
-        select eic.*, pa.id as agreement_id, pa.agreement_name, paa.api_type, pa.underwriting_description
+        select eic.*, pa.id as agreement_id, pa.agreement_name,pa.products_code, paa.api_type, pa.underwriting_description
         from esm_ins_company as eic
                  left join ptl_agreement as pa on pa.insurance_company_id = eic.id
                  left join ptl_agreement_attribution as paa on paa.id = pa.id

+ 2 - 2
src/main/resources/sql/sql.txt

@@ -1,5 +1,5 @@
 
-添加 线人员关联协议表    hxl  add by 2024-04-16
+添加 线人员关联协议表    hxl  add by 2024-04-16
 /*
  Navicat Premium Data Transfer
 
@@ -37,6 +37,6 @@ CREATE TABLE `sys_user_link_pl_agreement`  (
   PRIMARY KEY (`id`) USING BTREE,
   INDEX `user_id_index`(`user_id`) USING BTREE,
   INDEX `ptl_agreement_id_index`(`ptl_agreement_id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '线人员关联协议表' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '线人员关联协议表' ROW_FORMAT = DYNAMIC;
 
 SET FOREIGN_KEY_CHECKS = 1;