Browse Source

Merge remote-tracking branch 'origin/test' into test

haoyu 2 năm trước cách đây
mục cha
commit
18e82eec55
44 tập tin đã thay đổi với 774 bổ sung187 xóa
  1. 43 1
      sql/Online.sql
  2. 17 0
      src/main/java/com/ydtech/modules/admin/controller/SysUserController.java
  3. 2 2
      src/main/java/com/ydtech/modules/admin/controller/SysUserLinkPtlAgreementController.java
  4. 1 1
      src/main/java/com/ydtech/modules/admin/dao/SysUserLinkPtlAgreementMapper.java
  5. 12 3
      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. 1 1
      src/main/java/com/ydtech/modules/admin/service/SysUserLinkPtlAgreementService.java
  8. 7 0
      src/main/java/com/ydtech/modules/admin/service/SysUserService.java
  9. 1 1
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserLinkPtlAgreementServiceImpl.java
  10. 10 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java
  11. 8 1
      src/main/java/com/ydtech/modules/esm/dao/InsOrderSetUserHisMapper.java
  12. 27 8
      src/main/java/com/ydtech/modules/esm/model/po/InsOrderSetUserHis.java
  13. 7 0
      src/main/java/com/ydtech/modules/esm/service/InsOrderSetUserHisService.java
  14. 10 0
      src/main/java/com/ydtech/modules/esm/service/impl/InsOrderSetUserHisServiceImpl.java
  15. 6 6
      src/main/java/com/ydtech/modules/fee/service/impl/CostsCalServiceImpl.java
  16. 1 1
      src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceImpl.java
  17. 1 1
      src/main/java/com/ydtech/modules/order/controller/OrderTaskPoolsController.java
  18. 14 0
      src/main/java/com/ydtech/modules/order/dao/InsOrdersMapper.java
  19. 19 0
      src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java
  20. 3 0
      src/main/java/com/ydtech/modules/order/entity/InsOrders.java
  21. 11 2
      src/main/java/com/ydtech/modules/order/entity/filter/CarModelsFilterUtils.java
  22. 7 0
      src/main/java/com/ydtech/modules/order/entity/vo/OrderTaskPoolsVo.java
  23. 3 0
      src/main/java/com/ydtech/modules/order/entity/vo/TaskForwardingVo.java
  24. 7 0
      src/main/java/com/ydtech/modules/order/service/InsOrdersService.java
  25. 1 1
      src/main/java/com/ydtech/modules/order/service/OrderTaskPoolsService.java
  26. 60 49
      src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java
  27. 22 3
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  28. 39 58
      src/main/java/com/ydtech/modules/order/service/impl/OrderTaskPoolsServiceImpl.java
  29. 6 0
      src/main/java/com/ydtech/modules/protocol/controller/PtlAgreementController.java
  30. 6 6
      src/main/java/com/ydtech/modules/protocol/controller/TaxSourceController.java
  31. 2 0
      src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementSaveDto.java
  32. 1 1
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreement.java
  33. 7 3
      src/main/java/com/ydtech/modules/protocol/service/ITaxSourceService.java
  34. 7 0
      src/main/java/com/ydtech/modules/protocol/service/PtlAgreementService.java
  35. 22 0
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
  36. 37 2
      src/main/java/com/ydtech/modules/protocol/service/impl/TaxSourceServiceImpl.java
  37. 9 1
      src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementController.java
  38. 4 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCostsCopyVo.java
  39. 5 1
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewService.java
  40. 160 13
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java
  41. 17 0
      src/main/resources/mapper/modules/ins/InsOrderSetUserHisMapper.xml
  42. 1 1
      src/main/resources/mapper/modules/largescreen/AgreementDataMapper.xml
  43. 147 17
      src/main/resources/mapper/modules/order/InsOrdersMapper.xml
  44. 2 2
      src/main/resources/sql/sql.txt

+ 43 - 1
sql/Online.sql

@@ -51,4 +51,46 @@ 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;

+ 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() {
+        try{
+            List<SysUserBaseVO> userList = sysUserService.getCustomerUsers();
+            return HttpResult.ok(userList);
+        }catch (Exception e){
+            return HttpResult.error("查询失败"+e.getMessage());
+        }
+
+    }
 }

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

@@ -18,7 +18,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 +40,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不能为空");

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

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

+ 12 - 3
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -174,11 +174,11 @@ 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  " +
             " 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%'")
+             " WHERE t1.`status` = 1 AND t1.id not LIKE '%M%'")
 
     List<SysUserBaseVO> findQXUserList();
     /**
@@ -210,7 +210,16 @@ 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: 获取客服人员数据
+     */
+    @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  " +
+            " 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%'")
+    List<SysUserBaseVO> getCustomerUsers();
 }
 
 

+ 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

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

@@ -53,7 +53,7 @@ public interface SysUserLinkPtlAgreementService extends IService<SysUserLinkPtlA
      *  @version
      *  @author: hxl
      *  @Date: 2024/4/16 9:27
-     *  @Description: 查询线人员关联的协议列表
+     *  @Description: 查询线人员关联的协议列表
      */
     List<SysUserLinkPtlAgreementDto> findPtlAgreementListByUserId(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();
 }
 
 

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

@@ -91,7 +91,7 @@ public class SysUserLinkPtlAgreementServiceImpl extends ServiceImpl<SysUserLinkP
      *  @version
      *  @author: hxl
      *  @Date: 2024/4/15 17:52
-     *  @Description: 查询所有的线人员
+     *  @Description: 查询所有的线人员
      */
     @Override
     public List<SysUserBaseVO> findUserList() {

+ 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() {
+        return super.baseMapper.getCustomerUsers();
+    }
 
 }
 

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

+ 6 - 6
src/main/java/com/ydtech/modules/fee/service/impl/CostsCalServiceImpl.java

@@ -71,11 +71,11 @@ public class CostsCalServiceImpl implements CostsCalcService {
         entranceFee.setInsuranceType(insuranceType);
         entranceFee.setPremium(jqPremium);
         entranceFee.setTotalProportion(feeRadio.add(documentFeeRadio));
-        entranceFee.setTotalAmount(jqPremium.multiply(feeRadio.add(documentFeeRadio).divide(new BigDecimal(100),2)).setScale(2, BigDecimal.ROUND_DOWN));
         entranceFee.setSuperviseCosts(feeRadio);
-        entranceFee.setSySuperviseCostsPremiums(jqPremium.multiply(feeRadio.divide(new BigDecimal(100),2)).setScale(2, BigDecimal.ROUND_DOWN));
+        entranceFee.setSySuperviseCostsPremiums(jqPremium.multiply(feeRadio.divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_DOWN));
         entranceFee.setOtherCostsProportion(documentFeeRadio);
-        entranceFee.setOtherCostsPremiums(jqPremium.multiply(documentFeeRadio.divide(new BigDecimal(100),2)).setScale(2, BigDecimal.ROUND_DOWN));
+        entranceFee.setOtherCostsPremiums(jqPremium.multiply(documentFeeRadio.divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_DOWN));
+        entranceFee.setTotalAmount(entranceFee.getSySuperviseCostsPremiums().add(entranceFee.getOtherCostsPremiums()));
         entranceFee.setExportSuperviseCosts(BigDecimal.ZERO);
         return entranceFee;
     }
@@ -164,15 +164,15 @@ public class CostsCalServiceImpl implements CostsCalcService {
         BigDecimal jqExportRadio = entranceFee.getTotalProportion().subtract(deptManagerFee.getDeptManagerRadio()).subtract(retailStoreFee.getRetailStoreRadio());
         //出口费用
         exportFee.setSuperviseCosts(exportProceduresRadio);
-        exportFee.setSuperviseCostsPremiums(entranceFee.getPremium().multiply(exportProceduresRadio));
+        exportFee.setSuperviseCostsPremiums(entranceFee.getPremium().multiply(exportProceduresRadio.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
         //跟单比例
         exportFee.setOtherCostsProportion(entranceFee.getTotalProportion().subtract(exportProceduresRadio));
         //跟单费用
-        exportFee.setOtherCostsPremiums(entranceFee.getPremium().multiply(exportFee.getOtherCostsProportion()));
+        exportFee.setOtherCostsPremiums(entranceFee.getPremium().multiply(exportFee.getOtherCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
         //总比例
         exportFee.setTotalProportion(exportFee.getSuperviseCosts().add(exportFee.getOtherCostsProportion()));
         //总费用
-        exportFee.setTotalAmount(exportFee.getSuperviseCostsPremiums().add(exportFee.getOtherCostsPremiums()));
+        exportFee.setTotalAmount(exportFee.getSuperviseCostsPremiums().add(exportFee.getOtherCostsPremiums().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
         return exportFee;
     }
 }

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

@@ -2691,7 +2691,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         jqExportFee.setOtherCostsProportion(jqOtherCostsProportion);
         jqExportFee.setOtherCostsPremiums(insFeeOrderNew.getJqPremium().multiply(jqOtherCostsProportion.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
         jqExportFee.setTotalProportion(jqExportSuperviseCosts.add(jqOtherCostsProportion));
-        jqExportFee.setTotalAmount(jqExportSuperviseCosts.add(jqOtherCostsProportion));
+        jqExportFee.setTotalAmount(insFeeOrderNew.getJqPremium().multiply(jqExportFee.getTotalProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
         exportFeeList.add(jqExportFee);
 
 

+ 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

@@ -21,6 +21,7 @@ import lombok.NoArgsConstructor;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * 报价渠道
@@ -368,6 +369,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);

+ 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;
@@ -130,7 +131,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);
             }
         }
@@ -141,22 +142,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();
@@ -165,17 +176,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);
             }
         }
@@ -183,22 +197,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());
@@ -210,20 +229,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);
@@ -332,9 +351,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);
@@ -531,11 +549,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;
@@ -615,10 +631,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);
@@ -633,11 +647,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)));

+ 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("保存成功");
     }
 }

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

@@ -61,6 +61,12 @@ public class PtlAgreementController extends BaseController {
         return ptlAgreementService.pageAgreement(ptlAgreementPageVo);
     }
 
+    @PostMapping("/list")
+    @ApiOperation("根据保险公司查询协议列表")
+    public HttpResult<List<PtlAgreement>> list(@RequestBody PtlAgreementPageVo ptlAgreementPageVo) {
+        return ptlAgreementService.listAgreement(ptlAgreementPageVo);
+    }
+
     @PutMapping("/{agreementId}")
     @ApiOperation("修改协议")
     public HttpResult<Object> revise(@PathVariable String agreementId, @RequestBody PtlAgreementSaveVo agreement) {

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

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

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

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

@@ -199,7 +199,7 @@ public class PtlAgreement implements Serializable {
     /**
      * 审核类型
      */
-    @TableField(value = "audit_type")
+    @TableField(value = "audit_type1")
     private Integer auditType;
 
     @TableField(exist = false)

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

+ 7 - 0
src/main/java/com/ydtech/modules/protocol/service/PtlAgreementService.java

@@ -112,6 +112,13 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
      */
     HttpResult<PageResult<PtlAgreement>> pageAgreement(PtlAgreementPageVo ptlAgreementPageVo);
 
+    /**
+     * 根据保险公司查询协议
+     * @param ptlAgreementPageVo
+     * @return
+     */
+    HttpResult<List<PtlAgreement>> listAgreement(PtlAgreementPageVo ptlAgreementPageVo);
+
     /**
      * 通过协议id查询
      *

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

@@ -353,6 +353,26 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         return HttpResult.ok(ptlAgreementPageResult);
     }
 
+    @Override
+    public HttpResult<List<PtlAgreement>> listAgreement(PtlAgreementPageVo ptlAgreementPageVo){
+        LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
+        // 获取供应商本级id 及其 下级id
+        List<String> lowerId = esmInsCompanyService.getByLowerId(ptlAgreementPageVo.getPartnerCompaniesId());
+        // 审核状态
+        wrapper.eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAuditStatus()), PtlAgreement::getAuditStatus, ptlAgreementPageVo.getAuditStatus())
+                //是否有效
+                .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getValidStatus()), PtlAgreement::getValidStatus, ptlAgreementPageVo.getValidStatus())
+                // 供应商类型
+                .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getCompaniesType()), PtlAgreement::getCompaniesType, ptlAgreementPageVo.getCompaniesType())
+                // 合作公司
+                .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());
+
+        List<PtlAgreement> agreementPage = list(wrapper);
+        return HttpResult.ok(agreementPage);
+    }
+
     @Override
     public HttpResult<PtlAgreementQueryVo> getByAgreementId(String agreementId) {
         PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
@@ -609,6 +629,8 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         return list;
     }
 
+//    @Autowired
+//    private PtlAgreementProductCostsNewService ptlAgreementProductCostsNewService;
     public List<PtlAgreement> getCurrentAgreementList(String agreementId){
         PtlAgreement ptlAgreement = this.getById(agreementId);
         String insuranceCompanyId = ptlAgreement.getInsuranceCompanyId();

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

+ 9 - 1
src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementController.java

@@ -116,10 +116,18 @@ public class PtlNewAgreementController extends BaseController {
         return ptlAgreementProductCostsNewService.costsCopy(agreementProductCostsCopyVo) ? HttpResult.ok("复制协议费用成功") : HttpResult.error("复制协议费用失败");
     }
 
+    @ApiOperation(value = "批量复制协议费用")
+    @PostMapping("/costs/copyBatch")
+    public HttpResult costsCopyBatch(@RequestBody  AgreementProductCostsCopyVo agreementProductCostsCopyVo){
+        //orgCostsId:原协议费用id
+        //newAgreementId:新协议id
+        return ptlAgreementProductCostsNewService.costsCopyBatch(agreementProductCostsCopyVo) ? HttpResult.ok("复制协议费用成功") : HttpResult.error("复制协议费用失败");
+    }
+
     @ApiOperation(value = "调整费用")
     @PostMapping("/costs/adjust")
     public HttpResult costsAdjust(@RequestBody FeeOrderNewRecordVo feeOrderNewRecordVo){
-        return ptlAgreementProductCostsNewService.costsAdjust(feeOrderNewRecordVo) ? HttpResult.ok("调整费用成功") : HttpResult.error("调整费用失败");
+        return HttpResult.ok("调整费用成功", ptlAgreementProductCostsNewService.costsAdjust(feeOrderNewRecordVo));
     }
 
     @ApiOperation(value = "费用审核")

+ 4 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCostsCopyVo.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.protocols.entity.vo;
 
 import com.ydtech.core.page.PageRequest;
+import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -12,4 +13,7 @@ public class AgreementProductCostsCopyVo {
     @ApiModelProperty(value = "复制到的协议id")
     private String newAgreementId;
 
+    @ApiModelProperty(value = "原始的费用ids")
+    private String[] orgCostsIds;
+
 }

+ 5 - 1
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewService.java

@@ -26,6 +26,8 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
      */
     Page<PtlAgreementProductCostsNew> getByAgreementId(Page page, AgreementProductQueryVo agreementProductQueryVo);
 
+    List<PtlAgreementProductCostsNew> getByAgreementId(AgreementProductQueryVo agreementProductQueryVo);
+
     /**
      * 获取协议费用
      * @param costsId
@@ -66,6 +68,8 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
      */
     boolean costsCopy(AgreementProductCostsCopyVo agreementProductCostsCopyVo);
 
+    boolean costsCopyBatch(AgreementProductCostsCopyVo agreementProductCostsCopyVo);
+
     /**
      * 费用审核
      * @param costsAuditVo
@@ -78,7 +82,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
      * @param feeOrderNewRecordVo
      * @return
      */
-    boolean costsAdjust(FeeOrderNewRecordVo feeOrderNewRecordVo);
+    FeeOrderNewVo costsAdjust(FeeOrderNewRecordVo feeOrderNewRecordVo);
 
     Page<PtlAgreementProductCostsNew> getCostsAuditList(Page page, AgreementProductQueryVo agreementProductQueryVo);
 }

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

@@ -34,6 +34,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -149,6 +150,81 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         return pages;
     }
 
+    @Override
+    public List<PtlAgreementProductCostsNew> getByAgreementId(AgreementProductQueryVo agreementProductQueryVo) {
+        LambdaQueryWrapper<PtlAgreementProductCostsNew> ptlAgreementProductCostsNewLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getAgreementId, agreementProductQueryVo.getAgreementId());
+        //审核条件
+        if(agreementProductQueryVo.getIsAudit() != null){
+            ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getIsAudit, agreementProductQueryVo.getIsAudit());
+        }
+
+        //产品code
+        if(agreementProductQueryVo.getProductCode() != null){
+            ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getProductId, agreementProductQueryVo.getProductCode());
+        }
+
+        //费用时间
+        if(agreementProductQueryVo.getCostStartDate() != null)
+        {
+            ptlAgreementProductCostsNewLambdaQueryWrapper.or().gt(PtlAgreementProductCostsNew::getCostsStartDate, agreementProductQueryVo.getCostStartDate())
+                    .lt(PtlAgreementProductCostsNew::getCostsEndDate, agreementProductQueryVo.getCostsEndDate());
+        }
+
+        List<PtlAgreementProductCostsNew> pages = baseMapper.selectList(ptlAgreementProductCostsNewLambdaQueryWrapper);
+
+//                .lt(PtlAgreementProductCostsNew::getCostsStartDate, formattedDateTime)
+//                .gt(PtlAgreementProductCostsNew::getCostsEndDate, formattedDateTime));
+        //遍历费用列表
+        List<String> ids = new ArrayList<>();
+        pages.forEach(x -> {
+            ids.add(x.getId());
+        });
+        if(ids.isEmpty()){
+            return pages;
+        }
+        //获取出口比例
+        List<PtlAgreementProductCostsExport> ptlAgreementProductCostsExports = ptlAgreementProductCostsExportService.list(new LambdaQueryWrapper<PtlAgreementProductCostsExport>()
+                .in(PtlAgreementProductCostsExport::getCostsId, ids));
+        //获取费用属性
+        List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
+        List<PtlAgreementProductCostsAttrLink> list = ptlAgreementProductCostsAttrLinkService.list(new LambdaQueryWrapper<PtlAgreementProductCostsAttrLink>()
+                .in(PtlAgreementProductCostsAttrLink::getCostsId, ids));
+        Map<String, List<PtlAgreementProductCostsAttrLink>> groupedByCostsId = list.stream()
+                .collect(Collectors.groupingBy(PtlAgreementProductCostsAttrLink::getCostsId));
+        groupedByCostsId.forEach((k, v) -> {
+            pages.stream().filter(x -> x.getId().equals(k)).findFirst().ifPresent(x -> x.setDesc(buildDesc(v,undwrtRulesAttrList)));
+        });
+        //赋值出口比例
+        List<PtlAgreementProductCostsNew> records = pages;
+        for(int i=0;i<records.size();i++)
+        {
+            int finalI = i;
+            PtlAgreementProductCostsExport ptlAgreementProductCostsExport = ptlAgreementProductCostsExports.stream().filter(y -> y.getCostsId().equals(records.get(finalI).getId())).findFirst().orElse(null);
+            if(!Objects.isNull(ptlAgreementProductCostsExport)) {
+                records.get(i).setJqExportRadioLevel1(ptlAgreementProductCostsExport.getJqExportRadioLevel1().toString());
+                records.get(i).setJqExportRadioLevel2(ptlAgreementProductCostsExport.getJqExportRadioLevel2().toString());
+                records.get(i).setJqExportRadioLevel3(ptlAgreementProductCostsExport.getJqExportRadioLevel3().toString());
+                records.get(i).setJqExportRadioLevel4(ptlAgreementProductCostsExport.getJqExportRadioLevel4().toString());
+                records.get(i).setJqExportRadioLevel5(ptlAgreementProductCostsExport.getJqExportRadioLevel5().toString());
+                records.get(i).setJqExportInvestmentRadio(ptlAgreementProductCostsExport.getJqExportInvestmentRadio().toString());
+                records.get(i).setSyExportRadioLevel1(ptlAgreementProductCostsExport.getSyExportRadioLevel1().toString());
+                records.get(i).setSyExportRadioLevel2(ptlAgreementProductCostsExport.getSyExportRadioLevel2().toString());
+                records.get(i).setSyExportRadioLevel3(ptlAgreementProductCostsExport.getSyExportRadioLevel3().toString());
+                records.get(i).setSyExportRadioLevel4(ptlAgreementProductCostsExport.getSyExportRadioLevel4().toString());
+                records.get(i).setSyExportRadioLevel5(ptlAgreementProductCostsExport.getSyExportRadioLevel5().toString());
+                records.get(i).setSyExportInvestmentRadio(ptlAgreementProductCostsExport.getSyExportInvestmentRadio().toString());
+                records.get(i).setNoCarExportRadioLevel1(ptlAgreementProductCostsExport.getNoCarExportRadioLevel1().toString());
+                records.get(i).setNoCarExportRadioLevel2(ptlAgreementProductCostsExport.getNoCarExportRadioLevel2().toString());
+                records.get(i).setNoCarExportRadioLevel3(ptlAgreementProductCostsExport.getNoCarExportRadioLevel3().toString());
+                records.get(i).setNoCarExportRadioLevel4(ptlAgreementProductCostsExport.getNoCarExportRadioLevel4().toString());
+                records.get(i).setNoCarExportRadioLevel5(ptlAgreementProductCostsExport.getNoCarExportRadioLevel5().toString());
+            }
+        }
+
+        return pages;
+    }
+
     /**
      * 遍历费用属性描述文字
      *
@@ -397,7 +473,8 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
 
             //单独处理车牌号
             if ("LicenseNo".equals(x.getAttrCode()) && (x.getMin() != null && !x.getMin().equals(""))) {
-                x.setOperator(x.getDictLabal().getJSONObject(0).getString("parentNumber"));
+//                x.setOperator(x.getDictLabal().getJSONObject(0).getString("parentNumber"));
+                x.setOperator("0");
                 x.setCostsId(ptlAgreementProductCostsNew.getId());
                 x.setId(0);
                 costsAttrLink.add(x);
@@ -656,6 +733,43 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
     }
 
 
+    @Transactional
+    @Override
+    public boolean costsCopyBatch(AgreementProductCostsCopyVo agreementProductCostsCopyVos){
+        for(int i=0;i<agreementProductCostsCopyVos.getOrgCostsIds().length; i++)
+        {
+            AgreementProductCostsCopyVo agreementProductCostsCopyVo = new AgreementProductCostsCopyVo();
+            agreementProductCostsCopyVo.setOrgCostsId(agreementProductCostsCopyVos.getOrgCostsIds()[i]);
+            agreementProductCostsCopyVo.setNewAgreementId(agreementProductCostsCopyVos.getNewAgreementId());
+            AgreementProductCosts agreementProductCosts = new AgreementProductCosts();
+            //设置主表信息
+            PtlAgreementProductCostsNew ptlAgreementProductCostsNew = baseMapper.selectById(agreementProductCostsCopyVo.getOrgCostsId());
+            ptlAgreementProductCostsNew.setAgreementId(agreementProductCostsCopyVo.getNewAgreementId());
+            BeanUtils.copyProperties(ptlAgreementProductCostsNew, agreementProductCosts);
+
+
+            //设置管理比例信息
+            PtlAgreementProductCostsExport ptlAgreementProductCostsExport = ptlAgreementProductCostsExportService.getOne(new LambdaQueryWrapper<PtlAgreementProductCostsExport>().eq(PtlAgreementProductCostsExport::getCostsId, agreementProductCostsCopyVo.getOrgCostsId()));
+            if(ptlAgreementProductCostsExport != null) {
+                BeanUtils.copyProperties(ptlAgreementProductCostsExport, agreementProductCosts);
+            }else{
+                ptlAgreementProductCostsExport = new PtlAgreementProductCostsExport();
+                ptlAgreementProductCostsExport.setCostsId(ptlAgreementProductCostsNew.getId());
+                ptlAgreementProductCostsExport.blank();
+            }
+            ptlAgreementProductCostsExport.setId("0");
+
+            //设置费用因子信息
+            List<PtlAgreementProductCostsAttrLink> ptlAgreementProductCostsAttrLink = ptlAgreementProductCostsAttrLinkService.list(new LambdaQueryWrapper<PtlAgreementProductCostsAttrLink>().eq(PtlAgreementProductCostsAttrLink::getCostsId, agreementProductCostsCopyVo.getOrgCostsId()));
+            agreementProductCosts.setCostsAttrLinks(ptlAgreementProductCostsAttrLink);
+            agreementProductCosts.setId("0");
+
+            this.costsAdd(agreementProductCosts);
+        }
+
+        return true;
+    }
+
     @Override
     public boolean costsAudit(CostsAuditVo costsAuditVo){
         PtlAgreementProductCostsNew ptlAgreementProductCostsNew = this.getById(costsAuditVo.getCostsId());
@@ -685,7 +799,7 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
 
     @Transactional
     @Override
-    public boolean costsAdjust(FeeOrderNewRecordVo feeOrderNewRecordVo) {
+    public FeeOrderNewVo costsAdjust(FeeOrderNewRecordVo feeOrderNewRecordVo) {
         String feeId = feeOrderNewRecordVo.getFeeId();
         InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getById(feeId);
         //查询协议是否包含税
@@ -700,29 +814,32 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         FeeOrderNewVo feeOrderNewVo = feeOrderNewRecordVo.getFeeOrderNewVoNew();
 
         //交强入口费用
-        EntranceFee jqEntranceFee = costsCalcService.getEntranceFee("交强险", feeOrderNewVo.getEntranceFee().get(0).getPremium().divide(taxRadio,2),
+        EntranceFee jqEntranceFee = costsCalcService.getEntranceFee("交强险", feeOrderNewVo.getEntranceFee().get(0).getPremium().divide(taxRadio,10, RoundingMode.UP),
                 feeOrderNewVo.getEntranceFee().get(0).getSuperviseCosts(), feeOrderNewVo.getEntranceFee().get(0).getOtherCostsProportion());
 
         //商业入口费用
-        EntranceFee syEntranceFee = costsCalcService.getEntranceFee("商业险", feeOrderNewVo.getEntranceFee().get(1).getPremium().divide(taxRadio,2),
+        EntranceFee syEntranceFee = costsCalcService.getEntranceFee("商业险", feeOrderNewVo.getEntranceFee().get(1).getPremium().divide(taxRadio,10, RoundingMode.UP),
                 feeOrderNewVo.getEntranceFee().get(1).getSuperviseCosts(), feeOrderNewVo.getEntranceFee().get(1).getOtherCostsProportion());
 
         //非车入口费用
-        EntranceFee noEntranceFee = costsCalcService.getEntranceFee("非车险", feeOrderNewVo.getEntranceFee().get(2).getPremium().divide(taxRadio,2),
+        EntranceFee noEntranceFee = costsCalcService.getEntranceFee("非车险", feeOrderNewVo.getEntranceFee().get(2).getPremium().divide(taxRadio,10, RoundingMode.UP),
                 feeOrderNewVo.getEntranceFee().get(2).getSuperviseCosts(), feeOrderNewVo.getEntranceFee().get(2).getOtherCostsProportion());
 
         //交强部门管理费用
-        DeptManagerFee jqDeptManagerFee = costsCalcService.getDeptManagerFee("交强险", insFeeOrderNew.getJqPremium().divide(taxRadio,2),
-                insFeeOrderNew.getJqDeptProportionLevel1(), insFeeOrderNew.getJqDeptProportionLevel2(), insFeeOrderNew.getJqDeptProportionLevel3(),
-                insFeeOrderNew.getJqDeptProportionLevel4(), insFeeOrderNew.getJqDeptProportionLevel5());
+        DeptManagerFee jqDeptManagerFee = costsCalcService.getDeptManagerFee("交强险", insFeeOrderNew.getJqPremium().divide(taxRadio,10, RoundingMode.UP),
+                feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelOne(),
+                feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelTwo(),
+                feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelThree(),
+                feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelFoure(),
+                feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelFive());
 
         //商业部门管理费用
-        DeptManagerFee syDeptManagerFee = costsCalcService.getDeptManagerFee("商业险", insFeeOrderNew.getSyPremium().divide(taxRadio,2),
+        DeptManagerFee syDeptManagerFee = costsCalcService.getDeptManagerFee("商业险", insFeeOrderNew.getSyPremium().divide(taxRadio,10, RoundingMode.UP),
                 insFeeOrderNew.getSyDeptProportionLevel1(), insFeeOrderNew.getSyDeptProportionLevel2(), insFeeOrderNew.getSyDeptProportionLevel3(),
                 insFeeOrderNew.getSyDeptProportionLevel4(), insFeeOrderNew.getSyDeptProportionLevel5());
 
         //非车部门管理费用
-        DeptManagerFee noDeptManagerFee = costsCalcService.getDeptManagerFee("非车险", insFeeOrderNew.getNoPremium().divide(taxRadio,2),
+        DeptManagerFee noDeptManagerFee = costsCalcService.getDeptManagerFee("非车险", insFeeOrderNew.getNoPremium().divide(taxRadio,10, RoundingMode.UP),
                 insFeeOrderNew.getNoDeptProportionLevel1(), insFeeOrderNew.getNoDeptProportionLevel2(), insFeeOrderNew.getNoDeptProportionLevel3(),
                 insFeeOrderNew.getNoDeptProportionLevel4(), insFeeOrderNew.getNoDeptProportionLevel5());
 
@@ -885,24 +1002,36 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
 
         insFeeOrderNew.setJqCostsProportion(jqEntranceFee.getTotalProportion());
         insFeeOrderNew.setJqCostsPremiums(jqEntranceFee.getTotalAmount());
+        feeOrderNewVo.getEntranceFee().get(0).setPremium(insFeeOrderNew.getJqPremium());
+        feeOrderNewVo.getEntranceFee().get(0).setTotalAmount(jqEntranceFee.getTotalAmount());
         insFeeOrderNew.setSyCostsProportion(syEntranceFee.getTotalProportion());
         insFeeOrderNew.setSyCostsPremiums(syEntranceFee.getTotalAmount());
+        feeOrderNewVo.getEntranceFee().get(1).setPremium(insFeeOrderNew.getSyPremium());
+        feeOrderNewVo.getEntranceFee().get(1).setTotalAmount(syEntranceFee.getTotalAmount());
         insFeeOrderNew.setNoCostsProportion(noEntranceFee.getTotalProportion());
         insFeeOrderNew.setNoCostsPremiums(noEntranceFee.getTotalAmount());
+        feeOrderNewVo.getEntranceFee().get(2).setPremium(insFeeOrderNew.getNoPremium());
+        feeOrderNewVo.getEntranceFee().get(1).setTotalAmount(noEntranceFee.getTotalAmount());
 
         insFeeOrderNew.setJqSuperviseCostsProportion(jqEntranceFee.getSuperviseCosts());
         insFeeOrderNew.setJqSuperviseCostsPremiums(jqEntranceFee.getSySuperviseCostsPremiums());
+        feeOrderNewVo.getEntranceFee().get(0).setSySuperviseCostsPremiums(jqEntranceFee.getSySuperviseCostsPremiums());
         insFeeOrderNew.setSySuperviseCostsProportion(syEntranceFee.getSuperviseCosts());
         insFeeOrderNew.setSySuperviseCostsPremiums(syEntranceFee.getSySuperviseCostsPremiums());
+        feeOrderNewVo.getEntranceFee().get(1).setSySuperviseCostsPremiums(syEntranceFee.getSySuperviseCostsPremiums());
         insFeeOrderNew.setNoSuperviseCostsProportion(noEntranceFee.getSuperviseCosts());
         insFeeOrderNew.setNoSuperviseCostsPremiums(noEntranceFee.getSySuperviseCostsPremiums());
+        feeOrderNewVo.getEntranceFee().get(2).setSySuperviseCostsPremiums(noEntranceFee.getSySuperviseCostsPremiums());
 
         insFeeOrderNew.setJqOtherCostsProportion(jqEntranceFee.getOtherCostsProportion());
         insFeeOrderNew.setJqOtherCostsPremiums(jqEntranceFee.getOtherCostsPremiums());
+        feeOrderNewVo.getEntranceFee().get(0).setOtherCostsPremiums(jqEntranceFee.getOtherCostsPremiums());
         insFeeOrderNew.setSyOtherCostsProportion(syEntranceFee.getOtherCostsProportion());
         insFeeOrderNew.setSyOtherCostsPremiums(syEntranceFee.getOtherCostsPremiums());
+        feeOrderNewVo.getEntranceFee().get(1).setOtherCostsPremiums(syEntranceFee.getOtherCostsPremiums());
         insFeeOrderNew.setNoOtherCostsProportion(noEntranceFee.getOtherCostsProportion());
         insFeeOrderNew.setNoOtherCostsPremiums(noEntranceFee.getOtherCostsPremiums());
+        feeOrderNewVo.getEntranceFee().get(2).setOtherCostsPremiums(noEntranceFee.getOtherCostsPremiums());
 
         insFeeOrderNew.setJqDeptProportionLevel1(jqDeptManagerFee.getDeptManagerRadioLevel1());
         insFeeOrderNew.setJqDeptProportionLevel2(jqDeptManagerFee.getDeptManagerRadioLevel2());
@@ -914,6 +1043,11 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         insFeeOrderNew.setJqDeptPremiumsLevel3(jqDeptManagerFee.getDeptManagerFeeLevel3());
         insFeeOrderNew.setJqDeptPremiumsLevel4(jqDeptManagerFee.getDeptManagerFeeLevel4());
         insFeeOrderNew.setJqDeptPremiumsLevel5(jqDeptManagerFee.getDeptManagerFeeLevel5());
+        feeOrderNewVo.getDeptManagerFee().get(0).setDeptPremiumsLevelOne(jqDeptManagerFee.getDeptManagerFeeLevel1());
+        feeOrderNewVo.getDeptManagerFee().get(0).setDeptPremiumsLevelTwo(jqDeptManagerFee.getDeptManagerFeeLevel2());
+        feeOrderNewVo.getDeptManagerFee().get(0).setDeptPremiumsLevelThree(jqDeptManagerFee.getDeptManagerFeeLevel3());
+        feeOrderNewVo.getDeptManagerFee().get(0).setDeptPremiumsLevelFoure(jqDeptManagerFee.getDeptManagerFeeLevel4());
+        feeOrderNewVo.getDeptManagerFee().get(0).setDeptPremiumsLevelFive(jqDeptManagerFee.getDeptManagerFeeLevel5());
 
         insFeeOrderNew.setSyDeptProportionLevel1(syDeptManagerFee.getDeptManagerRadioLevel1());
         insFeeOrderNew.setSyDeptProportionLevel2(syDeptManagerFee.getDeptManagerRadioLevel2());
@@ -925,6 +1059,11 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         insFeeOrderNew.setSyDeptPremiumsLevel3(syDeptManagerFee.getDeptManagerFeeLevel3());
         insFeeOrderNew.setSyDeptPremiumsLevel4(syDeptManagerFee.getDeptManagerFeeLevel4());
         insFeeOrderNew.setSyDeptPremiumsLevel5(syDeptManagerFee.getDeptManagerFeeLevel5());
+        feeOrderNewVo.getDeptManagerFee().get(1).setDeptPremiumsLevelOne(syDeptManagerFee.getDeptManagerFeeLevel1());
+        feeOrderNewVo.getDeptManagerFee().get(1).setDeptPremiumsLevelTwo(syDeptManagerFee.getDeptManagerFeeLevel2());
+        feeOrderNewVo.getDeptManagerFee().get(1).setDeptPremiumsLevelThree(syDeptManagerFee.getDeptManagerFeeLevel3());
+        feeOrderNewVo.getDeptManagerFee().get(1).setDeptPremiumsLevelFoure(syDeptManagerFee.getDeptManagerFeeLevel4());
+        feeOrderNewVo.getDeptManagerFee().get(1).setDeptPremiumsLevelFive(syDeptManagerFee.getDeptManagerFeeLevel5());
 
         insFeeOrderNew.setNoDeptProportionLevel1(noDeptManagerFee.getDeptManagerRadioLevel1());
         insFeeOrderNew.setNoDeptProportionLevel2(noDeptManagerFee.getDeptManagerRadioLevel2());
@@ -936,24 +1075,32 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         insFeeOrderNew.setNoDeptPremiumsLevel3(noDeptManagerFee.getDeptManagerFeeLevel3());
         insFeeOrderNew.setNoDeptPremiumsLevel4(noDeptManagerFee.getDeptManagerFeeLevel4());
         insFeeOrderNew.setNoDeptPremiumsLevel5(noDeptManagerFee.getDeptManagerFeeLevel5());
+        feeOrderNewVo.getDeptManagerFee().get(2).setDeptPremiumsLevelOne(noDeptManagerFee.getDeptManagerFeeLevel1());
+        feeOrderNewVo.getDeptManagerFee().get(2).setDeptPremiumsLevelTwo(noDeptManagerFee.getDeptManagerFeeLevel2());
+        feeOrderNewVo.getDeptManagerFee().get(2).setDeptPremiumsLevelThree(noDeptManagerFee.getDeptManagerFeeLevel3());
+        feeOrderNewVo.getDeptManagerFee().get(2).setDeptPremiumsLevelFoure(noDeptManagerFee.getDeptManagerFeeLevel4());
+        feeOrderNewVo.getDeptManagerFee().get(2).setDeptPremiumsLevelFive(noDeptManagerFee.getDeptManagerFeeLevel5());
+
 
         //保存新的比例
         insFeeOrderNewService.updateById(insFeeOrderNew);
-        return true;
+        return feeOrderNewVo;
 
     }
 
     public Page<PtlAgreementProductCostsNew> getCostsAuditList(Page page, AgreementProductQueryVo agreementProductQueryVo){
         LambdaQueryWrapper<PtlAgreementProductCostsNew> ptlAgreementProductCostsNewLambdaQueryWrapper = new LambdaQueryWrapper<>();
 //        ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getAgreementId, agreementProductQueryVo.getAgreementId());
-        ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getIsAudit,"0");
+
         //协议id
         if(agreementProductQueryVo.getAgreementId() != null){
             ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getAgreementId,agreementProductQueryVo.getAgreementId());
         }
         //审核条件
         if(agreementProductQueryVo.getIsAudit() != null){
-            ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getIsAudit, agreementProductQueryVo.getIsAudit());
+            ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getIsAudit, Integer.parseInt(agreementProductQueryVo.getIsAudit()));
+        }else{
+            ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getIsAudit,"0");
         }
 
         //产品code

+ 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 != ''">

+ 147 - 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"/>
@@ -699,7 +700,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 != ''">
@@ -745,7 +746,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 != ''">
@@ -777,19 +778,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 != ''">
@@ -822,26 +822,29 @@
                     #{item}
                 </foreach>
             </if>
+            <if test="orderQueryVo.userId != null and orderQueryVo.userId != ''">
+                and io.userid = #{orderQueryVo.userId}
+            </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 != ''">
@@ -874,8 +877,135 @@
                     #{item}
                 </foreach>
             </if>
+            <if test="orderQueryVo.userId != null and orderQueryVo.userId != ''">
+                and io.userid = #{orderQueryVo.userId}
+            </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>

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