Explorar o código

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

Qchen %!s(int64=2) %!d(string=hai) anos
pai
achega
30d191022b
Modificáronse 56 ficheiros con 2403 adicións e 76 borrados
  1. 50 0
      sql/Online.sql
  2. 1 2
      src/main/java/com/ydtech/modules/admin/controller/SysAmountAuditingController.java
  3. 2 1
      src/main/java/com/ydtech/modules/admin/controller/SysDeptController.java
  4. 117 0
      src/main/java/com/ydtech/modules/admin/controller/SysUserLinkPtlAgreementController.java
  5. 4 0
      src/main/java/com/ydtech/modules/admin/dao/SysAmountAuditingMapper.java
  6. 43 0
      src/main/java/com/ydtech/modules/admin/dao/SysUserLinkPtlAgreementMapper.java
  7. 13 2
      src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java
  8. 28 0
      src/main/java/com/ydtech/modules/admin/model/dto/SysUserLinkPtlAgreementDto.java
  9. 88 0
      src/main/java/com/ydtech/modules/admin/model/po/SysUserLinkPtlAgreement.java
  10. 4 2
      src/main/java/com/ydtech/modules/admin/model/vo/SysAmountAuditingVo.java
  11. 31 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysUserLinkPtlAgreementAddVo.java
  12. 32 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysUserLinkPtlAgreementVo.java
  13. 2 1
      src/main/java/com/ydtech/modules/admin/service/SysAmountAuditingService.java
  14. 9 0
      src/main/java/com/ydtech/modules/admin/service/SysDeptService.java
  15. 59 0
      src/main/java/com/ydtech/modules/admin/service/SysUserLinkPtlAgreementService.java
  16. 39 6
      src/main/java/com/ydtech/modules/admin/service/impl/SysAmountAuditingServiceImpl.java
  17. 49 10
      src/main/java/com/ydtech/modules/admin/service/impl/SysDeptServiceImpl.java
  18. 122 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserLinkPtlAgreementServiceImpl.java
  19. 55 0
      src/main/java/com/ydtech/modules/fee/dto/vo/DeptManagerFee.java
  20. 31 0
      src/main/java/com/ydtech/modules/fee/dto/vo/EntranceFee.java
  21. 27 0
      src/main/java/com/ydtech/modules/fee/dto/vo/ExportFee.java
  22. 46 0
      src/main/java/com/ydtech/modules/fee/dto/vo/RetailStoreFee.java
  23. 60 0
      src/main/java/com/ydtech/modules/fee/service/CostsCalcService.java
  24. 178 0
      src/main/java/com/ydtech/modules/fee/service/impl/CostsCalServiceImpl.java
  25. 2 2
      src/main/java/com/ydtech/modules/fnc/controller/InsPlyIncomeController.java
  26. 8 6
      src/main/java/com/ydtech/modules/fnc/controller/SettlementDocumentaryFeesController.java
  27. 4 1
      src/main/java/com/ydtech/modules/fnc/dao/SettlementDocumentaryFeesMapper.java
  28. 5 0
      src/main/java/com/ydtech/modules/fnc/entity/SettlementDocumentaryLogEntity.java
  29. 8 0
      src/main/java/com/ydtech/modules/fnc/service/InsFeeAuditService.java
  30. 1 1
      src/main/java/com/ydtech/modules/fnc/service/InsPlyIncomeService.java
  31. 4 2
      src/main/java/com/ydtech/modules/fnc/service/SettlementDocumentaryFeesService.java
  32. 242 0
      src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java
  33. 22 6
      src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyIncomeServiceImpl.java
  34. 72 12
      src/main/java/com/ydtech/modules/fnc/service/impl/SettlementDocumentaryFeesServiceImpl.java
  35. 4 0
      src/main/java/com/ydtech/modules/fnc/vo/InsPlyIncomeVo.java
  36. 6 1
      src/main/java/com/ydtech/modules/order/entity/crawler/response/CrawlerVerifyPaymentResponse.java
  37. 28 0
      src/main/java/com/ydtech/modules/order/entity/vo/FeeOrderNewRecordVo.java
  38. 6 0
      src/main/java/com/ydtech/modules/order/entity/vo/FeeOrderNewVo.java
  39. 16 4
      src/main/java/com/ydtech/modules/order/service/impl/DaJiaOrderServiceImpl.java
  40. 2 1
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  41. 6 0
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreement.java
  42. 9 2
      src/main/java/com/ydtech/modules/protocol/service/PtlAgreementService.java
  43. 17 3
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
  44. 8 0
      src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementController.java
  45. 19 0
      src/main/java/com/ydtech/modules/protocols/dao/InsFeeOrderNewRecordMapper.java
  46. 324 0
      src/main/java/com/ydtech/modules/protocols/entity/po/InsFeeOrderNewRecord.java
  47. 15 0
      src/main/java/com/ydtech/modules/protocols/service/InsFeeOrderNewRecordService.java
  48. 9 0
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewService.java
  49. 22 0
      src/main/java/com/ydtech/modules/protocols/service/impl/InsFeeOrderNewRecordServiceImpl.java
  50. 298 0
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java
  51. 11 9
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesNewServiceImpl.java
  52. 49 0
      src/main/resources/mapper/modules/admin/SysAmountAuditingMapper.xml
  53. 71 0
      src/main/resources/mapper/modules/admin/SysUserLinkPtlAgreementMapper.xml
  54. 9 1
      src/main/resources/mapper/modules/fnc/InsPlyIncomeMapper.xml
  55. 15 1
      src/main/resources/mapper/modules/fnc/SettlementDocumentaryFeesMapper.xml
  56. 1 0
      src/main/resources/mapper/modules/fnc/SettlementDocumentaryLogMapper.xml

+ 50 - 0
sql/Online.sql

@@ -1 +1,51 @@
+--  2024-04-15    武鸿鹏  结算需求
+ALTER TABLE `ins_ply_income`  ADD COLUMN `voucher_number` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '凭证号' AFTER `create_time`;
+ALTER TABLE `ins_ply_income`  ADD COLUMN `contract_id` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '合同号' AFTER `voucher_number`;
+ALTER TABLE `ins_ply_income`  ADD COLUMN `contract_file_id` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '合同附件id' AFTER `contract_id`;
+ALTER TABLE `ins_ply_income`  ADD COLUMN `handling_fees_status` varchar(5) NULL COMMENT '手续费结算状态  1 为已结算' AFTER `contract_file_id`;
+ALTER TABLE `ins_ply_income` ADD COLUMN `documentary_fees_status` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '跟单费结算状态  1 为已结算' AFTER `handling_fees_status`;
+ALTER TABLE `ins_ply_income` ADD COLUMN `is_not_car` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '跟单费结算状态  1 为已结算' AFTER `documentary_fees_status`;
+ALTER TABLE `ins_ply_income` ADD COLUMN `no_policyno` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '非车保单号' AFTER `is_not_car`;
+ALTER TABLE `ins_ply_income` ADD COLUMN `sy_policyno` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '商业保单号' AFTER `no_policyno`;
+
+
+DROP TABLE IF EXISTS `settlement_documentary_fees`;
+CREATE TABLE `settlement_documentary_fees`  (
+                                                `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'id',
+                                                `total_orders` varchar(5) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '结算单数',
+                                                `time_frame` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '时间范围',
+                                                `total_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '结算总金额',
+                                                `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+                                                `start_time` datetime(0) NULL DEFAULT NULL COMMENT '开始时间',
+                                                `end_time` datetime(0) NULL DEFAULT NULL COMMENT '结束时间',
+                                                `settlement_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '结算金额',
+                                                `unsettled_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '未结算金额',
+                                                PRIMARY KEY (`id`) USING BTREE,
+                                                UNIQUE INDEX `id`(`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '跟单费结算' ROW_FORMAT = Dynamic;
+
+SET FOREIGN_KEY_CHECKS = 1;
+
+
+DROP TABLE IF EXISTS `settlement_documentary_log`;
+CREATE TABLE `settlement_documentary_log`  (
+                                               `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'id',
+                                               `amount_type` varchar(5) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '金额类型 1 手续费结算 2 跟单费结算',
+                                               `amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '金额',
+                                               `settlement_documentary_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '关联跟单费id',
+                                               `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+                                               `handing_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '手续费结算金额',
+                                               PRIMARY KEY (`id`) USING BTREE,
+                                               UNIQUE INDEX `id`(`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '跟单费结算日志' ROW_FORMAT = Dynamic;
+
+SET FOREIGN_KEY_CHECKS = 1;
+
+--     菜单sql   结算菜单   提现菜单
+INSERT INTO `sys_menu`(`id`, `name`, `parent_id`, `url`, `perms`, `type`, `icon`, `order_num`, `create_by`, `create_time`, `last_update_by`, `last_update_time`, `del_flag`) VALUES (645, '非跟单待提现', '201', '/financialManagement/withdrawalManagement/nonDocumentaryPending', NULL, 1, NULL, 0, NULL, NULL, NULL, NULL, 0);
+INSERT INTO `sys_menu`(`id`, `name`, `parent_id`, `url`, `perms`, `type`, `icon`, `order_num`, `create_by`, `create_time`, `last_update_by`, `last_update_time`, `del_flag`) VALUES (646, '推广待提现', '201', '/financialManagement/withdrawalManagement/generalizationPending', NULL, 1, NULL, 0, NULL, NULL, NULL, NULL, 0);
+INSERT INTO `sys_menu`(`id`, `name`, `parent_id`, `url`, `perms`, `type`, `icon`, `order_num`, `create_by`, `create_time`, `last_update_by`, `last_update_time`, `del_flag`) VALUES (647, '手续费已提现', '201', '/financialManagement/withdrawalManagement/withdrawalProceduresEnd', NULL, 1, NULL, 0, NULL, NULL, NULL, NULL, 0);
+INSERT INTO `sys_menu`(`id`, `name`, `parent_id`, `url`, `perms`, `type`, `icon`, `order_num`, `create_by`, `create_time`, `last_update_by`, `last_update_time`, `del_flag`) VALUES (648, '非跟单已提现', '201', '/financialManagement/withdrawalManagement/nonDocumentaryEnd', NULL, 1, NULL, 0, NULL, NULL, NULL, NULL, 0);
+INSERT INTO `sys_menu`(`id`, `name`, `parent_id`, `url`, `perms`, `type`, `icon`, `order_num`, `create_by`, `create_time`, `last_update_by`, `last_update_time`, `del_flag`) VALUES (649, '推广已提现', '201', '/financialManagement/withdrawalManagement/generalizationEnd', NULL, 1, NULL, 0, NULL, NULL, NULL, NULL, 0);
+INSERT INTO `sys_menu`(`id`, `name`, `parent_id`, `url`, `perms`, `type`, `icon`, `order_num`, `create_by`, `create_time`, `last_update_by`, `last_update_time`, `del_flag`) VALUES (643, '手续费待提现', '201', '/financialManagement/withdrawalManagement/withdrawalProceduresPending', NULL, 1, NULL, 0, NULL, NULL, NULL, NULL, 0);
 

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

@@ -26,8 +26,7 @@ public class SysAmountAuditingController extends BaseController {
     @PostMapping("/queryPage")
     @ApiOperation(value = "提现审核分页")
     public HttpResult<BasePageResult<SysAmountAuditingEntity>> queryPageOrder(@RequestBody @Valid SysAmountAuditingVo sysAmountAuditingVo) {
-        BasePageResult<SysAmountAuditingEntity> result = sysAmountAuditingService.queryByVo(sysAmountAuditingVo);
-        return HttpResult.ok("success", result);
+        return  sysAmountAuditingService.queryByVo(sysAmountAuditingVo);
     }
 
     @PutMapping("AmountReview")

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

@@ -70,7 +70,8 @@ public class SysDeptController extends BaseController {
         if (record.getComlevel() == null && record.getWithdrawUser() != null) {
             return HttpResult.error("机构级别为空,无法设置提现人员");
         }
-        return HttpResult.ok(sysDeptService.updateById(record));
+        sysDeptService.updateDept(record);
+        return HttpResult.ok();
     }
 
     //    @PreAuthorize("hasAuthority('sys:dept:delete')")

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

@@ -0,0 +1,117 @@
+package com.ydtech.modules.admin.controller;
+
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto;
+import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
+import com.ydtech.modules.admin.model.vo.SysUserLinkPtlAgreementAddVo;
+import com.ydtech.modules.admin.model.vo.SysUserLinkPtlAgreementVo;
+import com.ydtech.modules.admin.service.SysUserLinkPtlAgreementService;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.modules.protocol.entity.po.PtlAgreement;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Api(tags = "前线人员关联协议")
+@RequestMapping("/sysUserLinkPtlAgreement")
+@RestController
+public class SysUserLinkPtlAgreementController extends BaseController {
+
+
+    @Autowired
+    private SysUserLinkPtlAgreementService sysUserLinkPtlAgreementService;
+
+    @PostMapping("queryPage")
+    @ApiOperation(value = "前线人员关联协议分页")
+    public HttpResult<BasePageResult<SysUserLinkPtlAgreementDto>> queryPage(@RequestBody  SysUserLinkPtlAgreementVo sysUserLinkPtlAgreementVo) {
+
+        try{
+            BasePageResult<SysUserLinkPtlAgreementDto> result = sysUserLinkPtlAgreementService.queryPage(sysUserLinkPtlAgreementVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
+    @PostMapping("addOrUpdate")
+    @ApiOperation("前线人员关联协议添加修改")
+    public HttpResult<Object> addOrUpdate(@RequestBody SysUserLinkPtlAgreementAddVo sysUserLinkPtlAgreementAddVo) {
+        if(sysUserLinkPtlAgreementAddVo.getUserId()==null || "".equals(sysUserLinkPtlAgreementAddVo.getUserId())) {
+            return HttpResult.error("前线人员id不能为空");
+        }
+        if(sysUserLinkPtlAgreementAddVo.getPtlAgreementIds()==null || sysUserLinkPtlAgreementAddVo.getPtlAgreementIds().size()==0) {
+            return HttpResult.error("协议ids不能为空");
+        }
+        try{
+            sysUserLinkPtlAgreementService.addOrUpdate(sysUserLinkPtlAgreementAddVo,getUser());
+            return HttpResult.ok("操作成功");
+        }catch (Exception e){
+            return HttpResult.error("操作失败"+e.getMessage());
+        }
+
+    }
+
+    @PostMapping("delete")
+    @ApiOperation("前线人员关联协议删除")
+    @ApiImplicitParam(name = "ids", value = "关联协议ids数组", required = true)
+    public HttpResult<Object> delete(@RequestParam("ids")  List<Long> ids) {
+        if(ids==null || ids.size()==0){
+            return HttpResult.error("前线人员关联ids不能为空");
+        }
+        try{
+            sysUserLinkPtlAgreementService.deleteByIds(ids);
+            return HttpResult.ok("删除成功");
+        }catch (Exception e){
+            return HttpResult.error("删除失败"+e.getMessage());
+        }
+    }
+
+    @GetMapping("findUserList")
+    @ApiOperation("查询所有的前线人员列表")
+    public HttpResult<Object> findUserList() {
+        try{
+            List<SysUserBaseVO> list= sysUserLinkPtlAgreementService.findUserList();
+            return HttpResult.ok(list);
+        }catch (Exception e){
+            return HttpResult.error("操作失败"+e.getMessage());
+        }
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 17:54
+     *  @Description: 查询审核的所有协议
+     */
+    @GetMapping("findPtlAgreementList")
+    @ApiOperation("查询所有审核协议列表")
+    public HttpResult<Object> findPtlAgreementList() {
+        try{
+            List<PtlAgreement> list= sysUserLinkPtlAgreementService.findPtlAgreementList();
+            return HttpResult.ok(list);
+        }catch (Exception e){
+            return HttpResult.error("操作失败"+e.getMessage());
+        }
+    }
+
+    @GetMapping("/findPtlAgreementListByUserId/{userId}")
+    @ApiOperation(value = "前线人员关联协议列表")
+    @ApiImplicitParam(name = "userId", value = "前线人员id", required = true)
+    public HttpResult<List<SysUserLinkPtlAgreementDto>> findPtlAgreementListByUserId(@PathVariable("userId") String userId) {
+        if(userId==null || "".equals(userId)) {
+            return HttpResult.error("前线人员id不能为空");
+        }
+        try{
+            List<SysUserLinkPtlAgreementDto> result = sysUserLinkPtlAgreementService.findPtlAgreementListByUserId(userId);
+            return HttpResult.ok(result);
+        }catch (Exception e){
+            return HttpResult.error("查询失败"+e.getMessage());
+        }
+
+    }
+}

+ 4 - 0
src/main/java/com/ydtech/modules/admin/dao/SysAmountAuditingMapper.java

@@ -7,10 +7,14 @@ import com.ydtech.modules.admin.model.vo.SysAmountAuditingVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.HashMap;
+import java.util.List;
+
 @Mapper
 public interface SysAmountAuditingMapper extends BaseMapper<SysAmountAuditingEntity> {
     SysAmountAuditingEntity getByUserId(String userId);
 
     Page<SysAmountAuditingEntity> queryPageOrder(@Param("sysAmountAuditingVo") SysAmountAuditingVo sysAmountAuditingVo, Page<SysAmountAuditingEntity> page);
 
+    List<SysAmountAuditingEntity> queryPageOrderNew(HashMap<String, Object> params);
 }

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

@@ -0,0 +1,43 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto;
+import com.ydtech.modules.admin.model.po.SysUserLinkPtlAgreement;
+import com.ydtech.modules.admin.model.vo.SysUserLinkPtlAgreementVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/4/15 14:47
+ *  @Description: 用户关联协议表Dao
+ */
+@Mapper
+public interface SysUserLinkPtlAgreementMapper extends BaseMapper<SysUserLinkPtlAgreement> {
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 15:32
+     *  @Description: 分页
+     */
+    Page<SysUserLinkPtlAgreementDto> queryPage(@Param("page") Page<SysUserLinkPtlAgreementDto> page, @Param("vo") SysUserLinkPtlAgreementVo sysUserLinkPtlAgreementVo);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 17:08
+     *  @Description: 通过用户id删除旧数据
+     */
+    void deleteByUserId(@Param("userId") String userId);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/16 9:32
+     *  @Description: 通过前线人员id查询关联的协议列表
+     */
+    List<SysUserLinkPtlAgreementDto> findPtlAgreementListByUserId(@Param("userId") String userId);
+}

+ 13 - 2
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -3,8 +3,9 @@ package com.ydtech.modules.admin.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ydtech.core.page.PageResult;
-import com.ydtech.modules.admin.model.*;
+import com.ydtech.modules.admin.model.QuTeamNum;
+import com.ydtech.modules.admin.model.QuUserNum;
+import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
 import com.ydtech.modules.admin.model.dto.QuUserNumDto;
 import com.ydtech.modules.admin.model.dto.SysUserDto;
@@ -168,7 +169,17 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
     List<QuUserNum> getUserNum(@Param("quUserNumDto") QuUserNumDto quUserNumDto);
 
     List<QuUserNum> getUserByCompany(@Param("quUserNumDto") QuUserNumDto quUserNumDto);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 17:51
+     *  @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%'")
 
+    List<SysUserBaseVO> findQXUserList();
 }
 
 

+ 28 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysUserLinkPtlAgreementDto.java

@@ -0,0 +1,28 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.ydtech.core.page.PageRequest;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.protocol.entity.po.PtlAgreement;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/4/15 14:57
+ *  @Description: 人员关联协议返回前台对象
+ */
+@Data
+@ApiModel
+public class SysUserLinkPtlAgreementDto extends PageRequest {
+
+    @ApiModelProperty("前线人员关联协议id")
+    private Long id;
+
+    @ApiModelProperty("前线人员用户")
+    private SysUser sysUser;
+
+    @ApiModelProperty("协议信息")
+    private PtlAgreement ptlAgreement;
+}

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

@@ -0,0 +1,88 @@
+package com.ydtech.modules.admin.model.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/4/15 14:32
+ *  @Description: 前线人员关联协议表
+ */
+@TableName(value = "sys_user_link_pl_agreement")
+@Data
+@NoArgsConstructor
+public class SysUserLinkPtlAgreement implements Serializable {
+    /***
+     * 主键自增
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+    /***
+     * 前线用户ID
+     */
+    @TableField(value = "user_id")
+    private  String userId;
+    /***
+     * 协议ID
+     */
+    @TableField(value = "ptl_agreement_id")
+    private Long ptlAgreementId;
+    /***
+     * 创建人
+     */
+    @TableField(value = "create_id")
+    private String createId;
+    /***
+     * 创建人名称
+     */
+    @TableField(value = "create_name")
+    private String createName;
+    /***
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @TableField(value = "create_time")
+    private Date createTime;
+    /***
+     * 修改人名称
+     */
+    @TableField(value = "update_id")
+    private String updateId;
+    /***
+     * 修改人名称
+     */
+    @TableField(value = "update_name")
+    private String updateName;
+    /***
+     * 修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @TableField(value = "update_time")
+    private Date updateTime;
+
+    /***
+     * 协议类型  0 车险  1 非车
+     */
+    @TableField(value = "type")
+    private String type;
+
+    public SysUserLinkPtlAgreement(String userId, Long ptlAgreementId, String createId, String createName, Date createTime, String updateId, String updateName, Date updateTime) {
+        this.userId = userId;
+        this.ptlAgreementId = ptlAgreementId;
+        this.createId = createId;
+        this.createName = createName;
+        this.createTime = createTime;
+        this.updateId = updateId;
+        this.updateName = updateName;
+        this.updateTime = updateTime;
+    }
+}

+ 4 - 2
src/main/java/com/ydtech/modules/admin/model/vo/SysAmountAuditingVo.java

@@ -12,6 +12,8 @@ import org.springframework.format.annotation.DateTimeFormat;
 import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
 import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.Date;
 
 @Data
@@ -77,11 +79,11 @@ public class SysAmountAuditingVo {
 
     @ApiModelProperty("开始时间")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-    private Date startTime;
+    private LocalDate startTime;
 
     @ApiModelProperty("结束时间")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-    private Date endTime;
+    private LocalDate endTime;
 
     @ApiModelProperty("审批时间")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")

+ 31 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysUserLinkPtlAgreementAddVo.java

@@ -0,0 +1,31 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/4/15 15:08
+ *  @Description: 前线人员添加
+ */
+@Data
+@ApiModel
+public class SysUserLinkPtlAgreementAddVo {
+
+    /***
+     * 用户ID
+     */
+    @ApiModelProperty("前线用户ID")
+    private String userId;
+
+    /***
+     * 协议IDs
+     */
+    @ApiModelProperty("协议IDs")
+    private List<Long> ptlAgreementIds = new ArrayList<Long>();
+}

+ 32 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysUserLinkPtlAgreementVo.java

@@ -0,0 +1,32 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.ydtech.core.page.BasePageVO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/4/15 14:55
+ *  @Description: 前台分页查询对象
+ */
+@Data
+@ApiModel
+public class SysUserLinkPtlAgreementVo extends BasePageVO {
+
+    /***
+     * 用户ID
+     */
+    @ApiModelProperty("前线用户ID")
+    private String userId;
+
+    /***
+     * 协议ID
+     */
+    @ApiModelProperty("协议ID")
+    private Long ptlAgreementId;
+
+    @ApiModelProperty("ID")
+    private Long  id;
+}

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

@@ -1,6 +1,7 @@
 package com.ydtech.modules.admin.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.po.SysAmountAuditingEntity;
 import com.ydtech.modules.admin.model.vo.SysAmountAuditingVo;
 import com.ydtech.modules.order.entity.BasePageResult;
@@ -10,7 +11,7 @@ public interface SysAmountAuditingService extends IService<SysAmountAuditingEnti
 
     SysAmountAuditingEntity getByUserId(String userId);
 
-    BasePageResult<SysAmountAuditingEntity> queryByVo(SysAmountAuditingVo sysAmountAuditingVo);
+    HttpResult<BasePageResult<SysAmountAuditingEntity>> queryByVo(SysAmountAuditingVo sysAmountAuditingVo);
 
     BasePageResult<SysAmountAuditingEntity> queryAppPage(SysAmountAuditingVo sysAmountAuditingVo);
 

+ 9 - 0
src/main/java/com/ydtech/modules/admin/service/SysDeptService.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.admin.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageRequest;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.modules.admin.model.SysDept;
@@ -41,6 +42,14 @@ public interface SysDeptService extends IService<SysDept> {
     void addDept(SysDeptVo sysDeptVo);
 
 
+    /**
+     * 修改机构
+     *
+     * @param record 机构信息
+     */
+    HttpResult updateDept(SysDept record);
+
+
     /**
      * 删除机构
      *

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

@@ -0,0 +1,59 @@
+package com.ydtech.modules.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto;
+import com.ydtech.modules.admin.model.po.SysUserLinkPtlAgreement;
+import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
+import com.ydtech.modules.admin.model.vo.SysUserLinkPtlAgreementAddVo;
+import com.ydtech.modules.admin.model.vo.SysUserLinkPtlAgreementVo;
+import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.modules.protocol.entity.po.PtlAgreement;
+
+import java.util.List;
+
+public interface SysUserLinkPtlAgreementService extends IService<SysUserLinkPtlAgreement> {
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 15:11
+     *  @Description: 分页
+     */
+    BasePageResult<SysUserLinkPtlAgreementDto> queryPage(SysUserLinkPtlAgreementVo sysUserLinkPtlAgreementVo);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 15:12
+     *  @Description: 修改
+     */
+    void addOrUpdate(SysUserLinkPtlAgreementAddVo sysUserLinkPtlAgreementAddVo, SysUser user);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 17:23
+     *  @Description: 更具id删除数据
+     */
+    void deleteByIds(List<Long> ids);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 17:27
+     *  @Description: 查询所有的后线人员表
+     */
+    List<SysUserBaseVO> findUserList();
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 17:56
+     *  @Description:  查询所有审核的协议列表
+     */
+    List<PtlAgreement> findPtlAgreementList();
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/16 9:27
+     *  @Description: 查询前线人员关联的协议列表
+     */
+    List<SysUserLinkPtlAgreementDto> findPtlAgreementListByUserId(String userId);
+}

+ 39 - 6
src/main/java/com/ydtech/modules/admin/service/impl/SysAmountAuditingServiceImpl.java

@@ -3,6 +3,9 @@ package com.ydtech.modules.admin.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.dao.SysAmountAuditingMapper;
 import com.ydtech.modules.admin.model.po.SysAmountAuditingEntity;
 import com.ydtech.modules.admin.model.po.SysUserAccount;
@@ -10,6 +13,7 @@ import com.ydtech.modules.admin.model.vo.SysAmountAuditingVo;
 import com.ydtech.modules.admin.service.SysAmountAuditingService;
 import com.ydtech.modules.admin.service.SysUserAccountService;
 import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.fnc.entity.InsPlyIncome;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.utils.StringUtils;
 import org.apache.commons.lang3.ObjectUtils;
@@ -20,6 +24,8 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
 
 @Service
 public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingMapper, SysAmountAuditingEntity> implements SysAmountAuditingService {
@@ -74,13 +80,40 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
     }
 
     @Override
-    public BasePageResult<SysAmountAuditingEntity> queryByVo(SysAmountAuditingVo sysAmountAuditingVo) {
-        Page<SysAmountAuditingEntity> page = new Page<>(sysAmountAuditingVo.getPageNum(), sysAmountAuditingVo.getPageSize());
-        QueryWrapper<SysAmountAuditingEntity> wrapper = new QueryWrapper<>();
+    public HttpResult<BasePageResult<SysAmountAuditingEntity>> queryByVo(SysAmountAuditingVo sysAmountAuditingVo) {
+        try{
+            HashMap<String, Object> params = new HashMap<>();
+            PageInfo<List<InsPlyIncome>> pageHelper = null;
+            PageHelper.startPage(sysAmountAuditingVo.getPageNum(),sysAmountAuditingVo.getPageSize());
+            params.put("pageNum",sysAmountAuditingVo.getPageNum());
+            params.put("pageSize",sysAmountAuditingVo.getPageSize());
+            if(ObjectUtils.isNotEmpty(sysAmountAuditingVo.getStartTime())){
+                params.put("startDate",sysAmountAuditingVo.getStartTime().toString());
+            }
+            if(ObjectUtils.isNotEmpty(sysAmountAuditingVo.getEndTime())){
+                params.put("endDate",sysAmountAuditingVo.getEndTime().toString());
+            }
+            if(StringUtils.isNotEmpty(sysAmountAuditingVo.getAuditingStatus())){
+                params.put("auditingStatus",sysAmountAuditingVo.getAuditingStatus());
+            }
+            if(StringUtils.isNotEmpty(sysAmountAuditingVo.getUserId())){
+                params.put("userId",sysAmountAuditingVo.getUserId());
+            }
+            if(StringUtils.isNotEmpty(sysAmountAuditingVo.getId())){
+                params.put("id",sysAmountAuditingVo.getId());
+            }
 
-        Page<SysAmountAuditingEntity> sysUserAccountHistoryPage = baseMapper.queryPageOrder(sysAmountAuditingVo, page);
-        return new BasePageResult<>(sysAmountAuditingVo.getPageNum(), page.getSize(), sysUserAccountHistoryPage.getTotal(), page.getPages(),
-                sysUserAccountHistoryPage.getRecords());
+            if(StringUtils.isNotEmpty(sysAmountAuditingVo.getAmountStatus())){
+                params.put("amountStatus",sysAmountAuditingVo.getAmountStatus());
+            }
+            List<SysAmountAuditingEntity> list = baseMapper.queryPageOrderNew(params);
+            pageHelper=new PageInfo(list);
+            BasePageResult<SysAmountAuditingEntity> pageResult=new BasePageResult<SysAmountAuditingEntity>(sysAmountAuditingVo.getPageNum(), sysAmountAuditingVo.getPageSize(), pageHelper.getTotal(), pageHelper.getPages(), list);
+            return HttpResult.ok(pageResult);
+        }catch (Exception e){
+            e.printStackTrace();
+            return HttpResult.error("查询异常");
+        }
     }
 
     @Override

+ 49 - 10
src/main/java/com/ydtech/modules/admin/service/impl/SysDeptServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageRequest;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.exception.SystemException;
@@ -20,6 +21,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -40,11 +42,11 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
         LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
         lqw.eq(SysDept::getDelFlag, 0);
         lqw.likeRight(SysDept::getId, deptId);
-        lqw.orderByDesc(SysDept::getOrderNum);
+        lqw.orderByAsc(SysDept::getOrderNum);
         List<SysDept> sysDeptList = list(lqw);
         //判断机构来源条件 进行遍历
-        if(null != managementSource && !"undefined".equals(managementSource) && !"".equals(managementSource)){
-            lqw.eq(SysDept::getManagementSource,managementSource);
+        if (null != managementSource && !"undefined".equals(managementSource) && !"".equals(managementSource)) {
+            lqw.eq(SysDept::getManagementSource, managementSource);
             //条件
             List<SysDept> conditionList = list(lqw);
             Map<String, List<SysDept>> conditionMap = conditionList.stream().collect(Collectors.groupingBy(SysDept::getParentId));
@@ -56,11 +58,11 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
             List<SysDept> result = new ArrayList<>();
             //再查前4层
             int level = 5;
-            while(level > 0){
+            while (level > 0) {
                 List<SysDept> resultTmp = recursion(sysDeptList, conditionMap);
-                if(resultTmp.size() == 0){
+                if (resultTmp.size() == 0) {
                     break;
-                }else{
+                } else {
                     result.clear();
                     result.addAll(resultTmp);
                 }
@@ -68,7 +70,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
                 level--;
             }
             sysDeptList = result;
-        }else{
+        } else {
             Map<String, List<SysDept>> map = sysDeptList.stream().collect(Collectors.groupingBy(SysDept::getParentId));
             sysDeptList.forEach(i -> i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>())));
             sysDeptList = map.get(sysDept.getParentId());
@@ -79,9 +81,9 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
     private List<SysDept> recursion(List<SysDept> sysDeptList, Map<String, List<SysDept>> conditionMap) {
         List<SysDept> result = new ArrayList<>();
         sysDeptList.forEach(i ->
-                conditionMap.forEach((key,value) -> {
+                conditionMap.forEach((key, value) -> {
                     if (i.getId().equals(key)) {
-                        if(i.getChildren() == null){
+                        if (i.getChildren() == null) {
                             i.setChildren(new ArrayList<>());
                         }
                         i.getChildren().addAll(value);
@@ -89,6 +91,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
                     }
                 })
         );
+        result.sort(Comparator.comparing(SysDept::getOrderNum));
         return result;
     }
 
@@ -154,10 +157,47 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
             sysDept.setManagementSource(parentDept.getManagementSource());
         }
 
+        // 查询当前部门序号是否存在
+        LambdaQueryWrapper<SysDept> qw = new LambdaQueryWrapper<>();
+        qw.eq(SysDept::getDelFlag, 0);  // 删除标志为未删除
+        qw.eq(SysDept::getParentId, sysDept.getParentId()); // 父级部门ID相同
+        qw.eq(SysDept::getOrderNum, sysDept.getOrderNum());  // 排序号相同
+        boolean exists = baseMapper.exists(qw);
+
+        if (exists) {
+            // 如果存在,查询该父级部门下排序号大于当前部门的部门列表
+            LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
+            lqw.eq(SysDept::getDelFlag, 0); // 删除标志为未删除
+            lqw.eq(SysDept::getParentId, sysDept.getParentId()); // 父级部门ID相同
+            lqw.ge(SysDept::getOrderNum, sysDept.getOrderNum());  // 排序号大于当前部门
+            List<SysDept> sysDeptList = list(lqw);
+            // 更新这些部门的排序号
+            sysDeptList.forEach(i -> {
+                i.setOrderNum(i.getOrderNum() + 1);
+                updateById(i);
+            });
+        }
+
         boolean b = save(sysDept);
         AssertionUtils.isSucceed(b, "删除失败");
     }
 
+    @Override
+    public HttpResult updateDept(SysDept record) {
+        // 查询当前部门序号是否存在
+        LambdaQueryWrapper<SysDept> qw = new LambdaQueryWrapper<>();
+        qw.eq(SysDept::getDelFlag, 0);  // 删除标志为未删除
+        qw.eq(SysDept::getParentId, record.getParentId()); // 父级部门ID相同
+        qw.eq(SysDept::getOrderNum, record.getOrderNum());  // 排序号相同
+        SysDept sysDept = baseMapper.selectOne(qw);
+        if (sysDept != null) {
+            sysDept.setOrderNum(sysDept.getOrderNum() + 1);
+            baseMapper.updateById(sysDept);
+        }
+        baseMapper.updateById(record);
+        return HttpResult.ok();
+    }
+
 
     @Override
     public void deleteDept(String deptId) {
@@ -186,7 +226,6 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
     }
 
 
-
     public String findMaxDeptId(String deptId) {
         if (deptId == null) return "";
         String result = "00";

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

@@ -0,0 +1,122 @@
+package com.ydtech.modules.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysUserLinkPtlAgreementMapper;
+import com.ydtech.modules.admin.dao.SysUserMapper;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto;
+import com.ydtech.modules.admin.model.po.SysUserLinkPtlAgreement;
+import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
+import com.ydtech.modules.admin.model.vo.SysUserLinkPtlAgreementAddVo;
+import com.ydtech.modules.admin.model.vo.SysUserLinkPtlAgreementVo;
+import com.ydtech.modules.admin.service.SysUserLinkPtlAgreementService;
+import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.modules.protocol.entity.po.PtlAgreement;
+import com.ydtech.modules.protocol.service.PtlAgreementService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/4/15 14:52
+ *  @Description: 用户关联协议表
+ */
+@Service
+public class SysUserLinkPtlAgreementServiceImpl extends ServiceImpl<SysUserLinkPtlAgreementMapper, SysUserLinkPtlAgreement> implements SysUserLinkPtlAgreementService {
+
+
+    @Autowired
+    private SysUserLinkPtlAgreementMapper sysUserLinkPtlAgreementMapper;
+
+    @Autowired
+    private SysUserMapper sysUserMapper;
+
+    @Autowired
+    private PtlAgreementService ptlAgreementService;
+
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 15:13
+     *  @Description:  分页
+     */
+    @Override
+    public BasePageResult<SysUserLinkPtlAgreementDto> queryPage(SysUserLinkPtlAgreementVo sysUserLinkPtlAgreementVo) {
+        Page<SysUserLinkPtlAgreementDto> page = new Page<>(sysUserLinkPtlAgreementVo.getPageNum(),
+                sysUserLinkPtlAgreementVo.getPageSize());
+        Page<SysUserLinkPtlAgreementDto> sysUserLinkPtlAgreementDtoBasePageResult = sysUserLinkPtlAgreementMapper.queryPage(page, sysUserLinkPtlAgreementVo);
+        return  new BasePageResult<>(sysUserLinkPtlAgreementVo.getPageNum(), page.getSize(), sysUserLinkPtlAgreementDtoBasePageResult.getTotal(), page.getPages(),
+                sysUserLinkPtlAgreementDtoBasePageResult.getRecords());
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 15:13
+     *  @Description: 添加修改
+     */
+    @Override
+    public void addOrUpdate(SysUserLinkPtlAgreementAddVo sysUserLinkPtlAgreementAddVo, SysUser user) {
+        String userId = sysUserLinkPtlAgreementAddVo.getUserId();
+        List<Long> ptlAgreementIds = sysUserLinkPtlAgreementAddVo.getPtlAgreementIds();
+        //删除数据重新添加
+        sysUserLinkPtlAgreementMapper.deleteByUserId(userId);
+        List<SysUserLinkPtlAgreement> addList=new ArrayList<SysUserLinkPtlAgreement>();
+        //重新添加
+        if(ptlAgreementIds!=null && ptlAgreementIds.size()>0){
+            for (Long ptlAgreementId : ptlAgreementIds) {
+                SysUserLinkPtlAgreement add=new SysUserLinkPtlAgreement(userId,ptlAgreementId,user.getId(),user.getName(),new Date(),user.getId(),user.getName(),new Date());
+                addList.add(add);
+            }
+        }
+        this.saveBatch(addList);
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 17:53
+     *  @Description:  通过id删除数据
+     */
+    @Override
+    public void deleteByIds(List<Long> ids) {
+        sysUserLinkPtlAgreementMapper.deleteBatchIds(ids);
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 17:52
+     *  @Description: 查询所有的前线人员
+     */
+    @Override
+    public List<SysUserBaseVO> findUserList() {
+        return sysUserMapper.findQXUserList();
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 18:05
+     *  @Description: 查询所有审核的协议信息
+     */
+    @Override
+    public List<PtlAgreement> findPtlAgreementList() {
+        //预留查询条件后期添加
+        PtlAgreement param =new PtlAgreement();
+        return ptlAgreementService.findCheckAgreementList(param);
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/16 9:31
+     *  @Description: 通过用户id查询关联的协议列表
+     */
+    @Override
+    public List<SysUserLinkPtlAgreementDto> findPtlAgreementListByUserId(String userId) {
+        return  sysUserLinkPtlAgreementMapper.findPtlAgreementListByUserId(userId);
+    }
+}

+ 55 - 0
src/main/java/com/ydtech/modules/fee/dto/vo/DeptManagerFee.java

@@ -0,0 +1,55 @@
+package com.ydtech.modules.fee.dto.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 部门管理费用
+ */
+@Data
+public class DeptManagerFee {
+    @ApiModelProperty("险种")
+    private String insuranceType;
+
+    @ApiModelProperty("总管理比例")
+    private BigDecimal deptManagerRadio;
+
+    @ApiModelProperty("总管理费")
+    private BigDecimal deptManagerFee;
+
+    @ApiModelProperty("一级管理费比例")
+    private BigDecimal deptManagerRadioLevel1;
+
+    @ApiModelProperty("二级管理费比例")
+    private BigDecimal deptManagerRadioLevel2;
+
+    @ApiModelProperty("三级管理费比例")
+    private BigDecimal deptManagerRadioLevel3;
+
+    @ApiModelProperty("四级管理费比例")
+    private BigDecimal deptManagerRadioLevel4;
+
+    @ApiModelProperty("五级管理费比例")
+    private BigDecimal deptManagerRadioLevel5;
+
+    @ApiModelProperty("一级管理费")
+    private BigDecimal deptManagerFeeLevel1;
+
+    @ApiModelProperty("二级管理费")
+    private BigDecimal deptManagerFeeLevel2;
+
+    @ApiModelProperty("三级管理费")
+    private BigDecimal deptManagerFeeLevel3;
+
+    @ApiModelProperty("四级管理费")
+    private BigDecimal deptManagerFeeLevel4;
+
+    @ApiModelProperty("五级管理费")
+    private BigDecimal deptManagerFeeLevel5;
+
+
+
+}

+ 31 - 0
src/main/java/com/ydtech/modules/fee/dto/vo/EntranceFee.java

@@ -0,0 +1,31 @@
+package com.ydtech.modules.fee.dto.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 入口费用
+ */
+@Data
+public class EntranceFee {
+    @ApiModelProperty("险种")
+    private String insuranceType;
+    @ApiModelProperty("保费")
+    private BigDecimal premium;
+    @ApiModelProperty("总比例")
+    private BigDecimal totalProportion;
+    @ApiModelProperty("总费用")
+    private BigDecimal totalAmount;
+    @ApiModelProperty("手续费比例")
+    private BigDecimal superviseCosts;
+    @ApiModelProperty("手续费")
+    private BigDecimal sySuperviseCostsPremiums;
+    @ApiModelProperty("跟单比例")
+    private BigDecimal otherCostsProportion;
+    @ApiModelProperty("跟单费")
+    private BigDecimal otherCostsPremiums;
+    @ApiModelProperty("出口手续费比例")
+    private BigDecimal exportSuperviseCosts;
+}

+ 27 - 0
src/main/java/com/ydtech/modules/fee/dto/vo/ExportFee.java

@@ -0,0 +1,27 @@
+package com.ydtech.modules.fee.dto.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 出口费用
+ */
+@Data
+public class ExportFee {
+    @ApiModelProperty("险种")
+    private String insuranceType;
+    @ApiModelProperty("总比例")
+    private BigDecimal totalProportion;
+    @ApiModelProperty("总费用")
+    private BigDecimal totalAmount;
+    @ApiModelProperty("手续费比例")
+    private BigDecimal superviseCosts;
+    @ApiModelProperty("手续费")
+    private BigDecimal superviseCostsPremiums;
+    @ApiModelProperty("跟单比例")
+    private BigDecimal otherCostsProportion;
+    @ApiModelProperty("跟单费")
+    private BigDecimal otherCostsPremiums;
+}

+ 46 - 0
src/main/java/com/ydtech/modules/fee/dto/vo/RetailStoreFee.java

@@ -0,0 +1,46 @@
+package com.ydtech.modules.fee.dto.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 分销费用
+ */
+@Data
+public class RetailStoreFee {
+    @ApiModelProperty("总分销比例")
+    private BigDecimal retailStoreRadio;
+
+    @ApiModelProperty("总分销费用")
+    private BigDecimal retailStoreFee;
+
+    @ApiModelProperty("一级分销比例")
+    private BigDecimal retailStoreRadioLevel1;
+
+    @ApiModelProperty("二级分销比例")
+    private BigDecimal retailStoreRadioLevel2;
+
+    @ApiModelProperty("三级分销比例")
+    private BigDecimal retailStoreRadioLevel3;
+
+    @ApiModelProperty("一级分销费")
+    private BigDecimal retailStoreFeeLevel1;
+
+    @ApiModelProperty("二级分销费")
+    private BigDecimal retailStoreFeeLevel2;
+
+    @ApiModelProperty("三级分销费")
+    private BigDecimal retailStoreFeeLevel3;
+
+    @ApiModelProperty("一级分销用户id")
+    private String retailStoreUserIdLevel1;
+
+    @ApiModelProperty("二级分销用户id")
+    private String retailStoreUserIdLevel2;
+
+    @ApiModelProperty("三级分销用户id")
+    private String retailStoreUserIdLevel3;
+
+}

+ 60 - 0
src/main/java/com/ydtech/modules/fee/service/CostsCalcService.java

@@ -0,0 +1,60 @@
+package com.ydtech.modules.fee.service;
+
+
+import com.ydtech.modules.fee.dto.vo.DeptManagerFee;
+import com.ydtech.modules.fee.dto.vo.EntranceFee;
+import com.ydtech.modules.fee.dto.vo.ExportFee;
+import com.ydtech.modules.fee.dto.vo.RetailStoreFee;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
+import com.ydtech.modules.order.entity.vo.QueryOrderFeeVo;
+
+import java.math.BigDecimal;
+
+/**
+ * 该类中只要包含费用的一些相关接口
+ * 跟单费用的获取、跟单费用的拆分等
+ */
+public interface CostsCalcService {
+
+    /**
+     * 计算交强入口费用
+     * @param insuranceType  险种
+     * @param jqPremium  总交强保费  去税保费
+     * @param feeRadio  手续费比例
+     * @Param documentFeeRadio 跟单比例
+     * @return
+     */
+    EntranceFee getEntranceFee(String insuranceType, BigDecimal jqPremium, BigDecimal feeRadio, BigDecimal documentFeeRadio);
+
+    /**
+     * 获取机构管理费
+     * @param insuranceType  险种
+     * @param premium   保险费用
+     * @param deptRadioLevel1 一级机构管理费比例
+     * @param deptRadioLevel2 二级机构管理费比例
+     * @param deptRadioLevel3 三级机构管理费比例
+     * @param deptRadioLevel4 四级机构管理费比例
+     * @param deptRadioLevel5 五级机构管理费比例
+     * @return
+     */
+    DeptManagerFee getDeptManagerFee(String insuranceType, BigDecimal premium, BigDecimal deptRadioLevel1, BigDecimal deptRadioLevel2, BigDecimal deptRadioLevel3, BigDecimal deptRadioLevel4, BigDecimal deptRadioLevel5);
+
+    /**
+     * 分销费用计算
+     * @param userId   出单用户id
+     * @param sumPremium   总保费
+     * @return
+     */
+    RetailStoreFee getRetailStoreFee(String userId,BigDecimal sumPremium);
+
+    /**
+     * 获取出口费用
+     * @param insuranceType 险种
+     * @param entranceFee 入口费用
+     * @param deptManagerFee 部门管理费用
+     * @param retailStoreFee 分销费用
+     * @param exportProceduresRadio 出口手续费比例
+     * @return
+     */
+    ExportFee getExportFee(String insuranceType,EntranceFee entranceFee,DeptManagerFee deptManagerFee, RetailStoreFee retailStoreFee,BigDecimal exportProceduresRadio);
+}

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

@@ -0,0 +1,178 @@
+package com.ydtech.modules.fee.service.impl;
+
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.service.SysDeptService;
+import com.ydtech.modules.admin.service.SysUserService;
+import com.ydtech.modules.esm.model.EsmRetail;
+import com.ydtech.modules.esm.model.EsmUserReferrer;
+import com.ydtech.modules.esm.service.EsmRetailService;
+import com.ydtech.modules.esm.service.EsmUserReferrerService;
+import com.ydtech.modules.fee.dto.FeeFactorInfoDto;
+import com.ydtech.modules.fee.dto.FeeSchemeReqDto;
+import com.ydtech.modules.fee.dto.FeeSchemeResDto;
+import com.ydtech.modules.fee.dto.vo.DeptManagerFee;
+import com.ydtech.modules.fee.dto.vo.EntranceFee;
+import com.ydtech.modules.fee.dto.vo.ExportFee;
+import com.ydtech.modules.fee.dto.vo.RetailStoreFee;
+import com.ydtech.modules.fee.service.CostsCalcService;
+import com.ydtech.modules.fee.service.FeeRuleSchemeService;
+import com.ydtech.modules.ins.model.vo.CarInfoVo;
+import com.ydtech.modules.ins.model.vo.KindInfoVo;
+import com.ydtech.modules.ins.model.vo.QuoteRespVo;
+import com.ydtech.modules.order.entity.InsCopyFeeOrder;
+import com.ydtech.modules.order.entity.InsFeeOrder;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.vo.*;
+import com.ydtech.modules.order.service.InsAreaCompanyService;
+import com.ydtech.modules.order.service.InsCopyFeeOrderService;
+import com.ydtech.modules.order.service.InsFeeOrderService;
+import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRules;
+import com.ydtech.modules.protocol.entity.po.PtlNewCarJudgeRules;
+import com.ydtech.modules.protocol.service.*;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.math.NumberUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 费用接口中相关功能的实现类
+ */
+@Service
+public class CostsCalServiceImpl implements CostsCalcService {
+
+    @Autowired
+    private SysUserService sysUserService;
+
+    @Autowired
+    private EsmRetailService esmRetailService;
+
+    @Autowired
+    private EsmUserReferrerService esmUserReferrerService;
+
+    @Override
+    public EntranceFee getEntranceFee(String insuranceType, BigDecimal jqPremium, BigDecimal feeRadio, BigDecimal documentFeeRadio) {
+        EntranceFee entranceFee = new EntranceFee();
+        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.setOtherCostsProportion(documentFeeRadio);
+        entranceFee.setOtherCostsPremiums(jqPremium.multiply(documentFeeRadio.divide(new BigDecimal(100),2)).setScale(2, BigDecimal.ROUND_DOWN));
+        entranceFee.setExportSuperviseCosts(BigDecimal.ZERO);
+        return entranceFee;
+    }
+
+    @Override
+    public DeptManagerFee getDeptManagerFee(String insuranceType, BigDecimal premium, BigDecimal deptRadioLevel1, BigDecimal deptRadioLevel2, BigDecimal deptRadioLevel3, BigDecimal deptRadioLevel4, BigDecimal deptRadioLevel5) {
+        DeptManagerFee deptManagerFee = new DeptManagerFee();
+        deptManagerFee.setInsuranceType(insuranceType);
+        deptManagerFee.setDeptManagerRadioLevel1(deptRadioLevel1);
+        deptManagerFee.setDeptManagerRadioLevel2(deptRadioLevel2);
+        deptManagerFee.setDeptManagerRadioLevel3(deptRadioLevel3);
+        deptManagerFee.setDeptManagerRadioLevel4(deptRadioLevel4);
+        deptManagerFee.setDeptManagerRadioLevel5(deptRadioLevel5);
+        deptManagerFee.setDeptManagerRadio(deptRadioLevel1.add(deptRadioLevel2).add(deptRadioLevel3).add(deptRadioLevel4).add(deptRadioLevel5));
+
+        deptManagerFee.setDeptManagerFeeLevel1(premium.multiply(deptRadioLevel1.divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_DOWN));
+        deptManagerFee.setDeptManagerFeeLevel2(premium.multiply(deptRadioLevel2.divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_DOWN));
+        deptManagerFee.setDeptManagerFeeLevel3(premium.multiply(deptRadioLevel3.divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_DOWN));
+        deptManagerFee.setDeptManagerFeeLevel4(premium.multiply(deptRadioLevel4.divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_DOWN));
+        deptManagerFee.setDeptManagerFeeLevel5(premium.multiply(deptRadioLevel5.divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_DOWN));
+        deptManagerFee.setDeptManagerFee(premium.multiply(deptManagerFee.getDeptManagerRadio().divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_DOWN));
+        return deptManagerFee;
+    }
+
+    @Override
+    public RetailStoreFee getRetailStoreFee(String userId,BigDecimal sumPremium) {
+
+        RetailStoreFee retailStoreFee = new RetailStoreFee();
+        //计算分销费用
+        SysUser sysUser = sysUserService.findByUserId(userId);
+
+        //获取分销比例
+        List<EsmRetail> esmRetailList = esmRetailService.selectList(" where t.deptid=? and t.status = '1' ",
+                new Object[]{sysUser.getDeptId()});
+
+
+        if (esmRetailList != null && !esmRetailList.isEmpty()) {
+            EsmRetail esmRetail = esmRetailList.get(0);
+            //用户分销人员id
+            List<EsmUserReferrer> parents = esmUserReferrerService.findParents(sysUser.getId());
+            if (esmRetail != null) {
+//                BigDecimal sumPremium = insFeeOrderNew.getJqPremium().add(insFeeOrderNew.getSyPremium()).add(insFeeOrderNew.getNoPremium());
+                if (Integer.parseInt(esmRetail.getRetailtype()) >= 3) {
+                    retailStoreFee.setRetailStoreRadioLevel1(new BigDecimal(esmRetail.getDisrate1()));
+                    retailStoreFee.setRetailStoreFeeLevel1(sumPremium.multiply(new BigDecimal(esmRetail.getDisrate1())).divide(new BigDecimal("100")));
+                    if (parents != null && parents.size() > 2) {
+                        retailStoreFee.setRetailStoreUserIdLevel3(parents.get(2).getId());
+                    }
+                }
+                if (Integer.parseInt(esmRetail.getRetailtype()) >= 2) {
+                    retailStoreFee.setRetailStoreRadioLevel2(new BigDecimal(esmRetail.getDisrate2()));
+                    retailStoreFee.setRetailStoreFeeLevel2(sumPremium.multiply(new BigDecimal(esmRetail.getDisrate2())).divide(new BigDecimal("100")));
+                    if (parents != null && parents.size() > 1) {
+                        retailStoreFee.setRetailStoreUserIdLevel2(parents.get(1).getId());
+                    }
+                }
+                if (Integer.parseInt(esmRetail.getRetailtype()) >= 1) {
+                    retailStoreFee.setRetailStoreRadioLevel1(new BigDecimal(esmRetail.getDisrate1()));
+                    retailStoreFee.setRetailStoreFeeLevel1(sumPremium.multiply(new BigDecimal(esmRetail.getDisrate1())).divide(new BigDecimal("100")));
+                    if (parents != null && parents.size() > 0) {
+                        retailStoreFee.setRetailStoreUserIdLevel1(parents.get(0).getId());
+                    }
+                }
+            }
+        }else{
+            retailStoreFee.setRetailStoreFee(BigDecimal.ZERO);
+            retailStoreFee.setRetailStoreRadio(BigDecimal.ZERO);
+            retailStoreFee.setRetailStoreRadioLevel1(BigDecimal.ZERO);
+            retailStoreFee.setRetailStoreRadioLevel2(BigDecimal.ZERO);
+            retailStoreFee.setRetailStoreRadioLevel3(BigDecimal.ZERO);
+            retailStoreFee.setRetailStoreFeeLevel1(BigDecimal.ZERO);
+            retailStoreFee.setRetailStoreFeeLevel2(BigDecimal.ZERO);
+            retailStoreFee.setRetailStoreFeeLevel3(BigDecimal.ZERO);
+            retailStoreFee.setRetailStoreUserIdLevel1("");
+            retailStoreFee.setRetailStoreUserIdLevel2("");
+            retailStoreFee.setRetailStoreUserIdLevel3("");
+        }
+        return retailStoreFee;
+    }
+
+    @Override
+    public ExportFee getExportFee(String insuranceType,EntranceFee entranceFee,DeptManagerFee deptManagerFee, RetailStoreFee retailStoreFee,BigDecimal exportProceduresRadio) {
+        ExportFee exportFee = new ExportFee();
+        //计算出口费用
+        //出口比例
+        BigDecimal jqExportRadio = entranceFee.getTotalProportion().subtract(deptManagerFee.getDeptManagerRadio()).subtract(retailStoreFee.getRetailStoreRadio());
+        //出口费用
+        exportFee.setSuperviseCosts(exportProceduresRadio);
+        exportFee.setSuperviseCostsPremiums(entranceFee.getPremium().multiply(exportProceduresRadio));
+        //跟单比例
+        exportFee.setOtherCostsProportion(entranceFee.getTotalProportion().subtract(exportProceduresRadio));
+        //跟单费用
+        exportFee.setOtherCostsPremiums(entranceFee.getPremium().multiply(exportFee.getOtherCostsProportion()));
+        //总比例
+        exportFee.setTotalProportion(exportFee.getSuperviseCosts().add(exportFee.getOtherCostsProportion()));
+        //总费用
+        exportFee.setTotalAmount(exportFee.getSuperviseCostsPremiums().add(exportFee.getOtherCostsPremiums()));
+        return exportFee;
+    }
+}

+ 2 - 2
src/main/java/com/ydtech/modules/fnc/controller/InsPlyIncomeController.java

@@ -90,8 +90,8 @@ public class InsPlyIncomeController extends BaseController {
     @PutMapping("/batchBalance")
     @ApiModelProperty(value = "批量跟单费")
     public HttpResult<Object> batchBalance(@RequestBody InsPlyIncomeVo insPlyIncomeVo) {
-        insPlyIncomeService.batchBalance(insPlyIncomeVo);
-        return HttpResult.ok("批量跟单费结算成功");
+
+        return   insPlyIncomeService.batchBalance(insPlyIncomeVo);
     }
 
 

+ 8 - 6
src/main/java/com/ydtech/modules/fnc/controller/SettlementDocumentaryFeesController.java

@@ -10,10 +10,7 @@ import com.ydtech.modules.order.entity.BasePageResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 
@@ -26,8 +23,8 @@ public class SettlementDocumentaryFeesController extends BaseController {
 
     @PostMapping("/query")
     @ApiOperation(value = "查询")
-    public BasePageResult<SettlementDocumentaryFeesEntity> query(@RequestBody @Valid SettlementDocumentaryFeesVo settlementDocumentaryFeesVo) {
-        BasePageResult<SettlementDocumentaryFeesEntity> result=settlementDocumentaryFeesService.querySettle(settlementDocumentaryFeesVo);
+    public HttpResult<BasePageResult<SettlementDocumentaryFeesEntity>>query(@RequestBody @Valid SettlementDocumentaryFeesVo settlementDocumentaryFeesVo) {
+        HttpResult<  BasePageResult<SettlementDocumentaryFeesEntity>> result=settlementDocumentaryFeesService.querySettle(settlementDocumentaryFeesVo);
         return result;
     }
 
@@ -36,5 +33,10 @@ public class SettlementDocumentaryFeesController extends BaseController {
     public void submit(@RequestBody SettlementDocumentaryFeesVo settlementDocumentaryFeesVo) {
        settlementDocumentaryFeesService.inertSettle(settlementDocumentaryFeesVo);
     }
+    @PutMapping("/documentarySettle")
+    @ApiOperation("跟单费结算")
+    public HttpResult documentarySettle (@RequestBody SettlementDocumentaryFeesVo settlementDocumentaryFeesVo){
+      return   settlementDocumentaryFeesService.documentarySettle(settlementDocumentaryFeesVo);
+    }
 
 }

+ 4 - 1
src/main/java/com/ydtech/modules/fnc/dao/SettlementDocumentaryFeesMapper.java

@@ -13,7 +13,10 @@ import java.util.List;
 @Mapper
 public interface SettlementDocumentaryFeesMapper  extends BaseMapper<SettlementDocumentaryFeesEntity> {
 
-    Page<SettlementDocumentaryFeesEntity> querySettle(SettlementDocumentaryFeesVo settlementDocumentaryFeesVo, Page<SettlementDocumentaryFeesEntity> page);
+    List<SettlementDocumentaryFeesEntity> querySettle(HashMap<String, Object> params);
 
     List<SettlementDocumentaryFeesEntity> checkDate(HashMap<String, Object> params);
+
+    List<SettlementDocumentaryFeesEntity> selectAll(HashMap<String, Object> params);
+
 }

+ 5 - 0
src/main/java/com/ydtech/modules/fnc/entity/SettlementDocumentaryLogEntity.java

@@ -37,4 +37,9 @@ public class SettlementDocumentaryLogEntity implements Serializable {
     @ApiModelProperty("创建时间")
     @TableField("create_time")
     private Date createTime;
+
+    @ApiModelProperty("手续费结算金额")
+    @TableField("handing_amount")
+    private BigDecimal handingAmount;
+
 }

+ 8 - 0
src/main/java/com/ydtech/modules/fnc/service/InsFeeAuditService.java

@@ -15,4 +15,12 @@ public interface InsFeeAuditService extends IService<InsFeeAudit> {
 
      void feeAudit(String orderNo,String insOrderNo) throws Exception;
 
+     /**
+      * 自动审核
+      * @param orderNo
+      * @param insOrderNo
+      * @return
+      */
+     boolean autoFeeAudit(String orderNo,String insOrderNo) throws Exception;
+
 }

+ 1 - 1
src/main/java/com/ydtech/modules/fnc/service/InsPlyIncomeService.java

@@ -28,7 +28,7 @@ public interface InsPlyIncomeService extends IService<InsPlyIncome> {
 
     HttpResult<BasePageResult<InsPlyIncome>> totalQuery(InsPlyIncomeVo insPlyIncomeVo);
 
-    void batchBalance(InsPlyIncomeVo insPlyIncomeVo);
+    HttpResult batchBalance(InsPlyIncomeVo insPlyIncomeVo);
 
     HttpResult<BasePageResult<InsPlyIncome>> queryNew(InsPlyIncomeVo insPlyIncomeVo);
 }

+ 4 - 2
src/main/java/com/ydtech/modules/fnc/service/SettlementDocumentaryFeesService.java

@@ -9,10 +9,12 @@ import com.ydtech.modules.order.entity.BasePageResult;
 import java.util.HashMap;
 
 public interface SettlementDocumentaryFeesService extends IService<SettlementDocumentaryFeesEntity> {
-    BasePageResult<SettlementDocumentaryFeesEntity> querySettle(SettlementDocumentaryFeesVo settlementDocumentaryFeesVo);
+    HttpResult<BasePageResult<SettlementDocumentaryFeesEntity>>  querySettle(SettlementDocumentaryFeesVo settlementDocumentaryFeesVo);
 
-    void inertSettle(SettlementDocumentaryFeesVo settlementDocumentaryFeesVo);
+    HttpResult inertSettle(SettlementDocumentaryFeesVo settlementDocumentaryFeesVo);
 
     String checkDate(HashMap<String, Object> params);
 
+    HttpResult documentarySettle(SettlementDocumentaryFeesVo settlementDocumentaryFeesVo);
+
 }

+ 242 - 0
src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java

@@ -338,6 +338,248 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         }
     }
 
+    @Override
+    public boolean autoFeeAudit(String orderNo, String insOrderNo) throws Exception {
+        //保存审核表
+        InsFeeAudit insFeeAudit=new InsFeeAudit();
+        insFeeAudit.setOrderno(orderNo);
+        insFeeAudit.setInsOrderNo(insOrderNo);
+        insFeeAudit.setAuditstatus("1");
+        insFeeAudit.setAudittime(LocalDateTime.now());
+        insFeeAudit.setAudituser("自动审核");
+        this.save(insFeeAudit);
+
+
+        InsOrders order=insOrdersMapper.selectById(orderNo);
+        InsFeeOrderNew insFeeOrder=insFeeOrderNewService.getInsFeeOrderNewByCompanyId(insFeeAudit.getInsOrderNo());
+        InsAreaCompany insAreaCompany=insAreaCompanyMapper.selectById(insFeeAudit.getInsOrderNo());
+
+        //获取该订单的费用
+        InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getOne(new LambdaQueryWrapper<InsFeeOrderNew>()
+                .eq(InsFeeOrderNew::getInsOrderNo, insFeeAudit.getInsOrderNo()));
+
+
+        //获取操作人员的机构来源
+        String deptId=order.getDeptid();
+
+        List<SysDept> teamList = sysDeptService.findTeamList(deptId);
+        teamList.forEach(sysDept -> {
+
+            if(StringUtils.isNotEmpty(sysDept.getComlevel()) &&  sysDept.getComlevel().equals("1")){
+                BigDecimal jqDeptPremiumsLevel1 = insFeeOrderNew.getJqDeptPremiumsLevel1();
+            }
+        });
+
+
+        //bigdecimal为null时设置为0
+//        handleBigdecimal(insFeeOrder);
+        //生成保司费用(应收费用)
+        gene_orderIncome( order, insFeeOrderNew,insAreaCompany);
+        //生成机构费用
+        gene_deptfee( order, insFeeOrderNew,insAreaCompany);
+        //生成分销费用
+//        saveRetail(order,insFeeOrderNew,insAreaCompany);
+        //个代费用生成
+//        saveInsCompanyFee(order,insFeeOrderNew,insAreaCompany);
+
+
+//      生成  用户账户表  数据
+        if(StringUtils.isNotEmpty(order.getUserid())){
+//            用戶賬戶表
+            SysUserAccount sysUserAccount = new SysUserAccount();
+
+            sysUserAccount.setUserId(order.getUserid());
+            if (ObjectUtils.isNotEmpty(insFeeOrderNew) ) {
+//                手续非佣金  =  交强监管费用 + 商业监管费用 + 非车监管费用
+//                非跟单费用  = 交强非跟单费用 + 商业非跟单费用 + 非车非跟单费用
+                //手续费入口费用
+//                BigDecimal jqPremiumAmount = this.zeroBigdecimal(insFeeOrderNew.getJqSuperviseCostsPremiums());//交强监管费
+//                BigDecimal syPremiumAmount = this.zeroBigdecimal(insFeeOrderNew.getSySuperviseCostsPremiums());//商业监管费
+//                BigDecimal noPremiumAmount = this.zeroBigdecimal(insFeeOrderNew.getNoSuperviseCostsPremiums());//非车监管费用
+//                BigDecimal totalPremiumAmount = jqPremiumAmount.add(syPremiumAmount).add(noPremiumAmount);    // 手续非佣金
+//                //其他费用入口费用
+//                BigDecimal jqOtherCostsPremiums  =this.zeroBigdecimal(insFeeOrderNew.getJqOtherCostsPremiums());//交强其他费用
+//                BigDecimal syOtherCostsPremiums  =this.zeroBigdecimal(insFeeOrderNew.getSyOtherCostsPremiums()); //商业其他费用
+//                BigDecimal noOtherCostsProportion = this.zeroBigdecimal(insFeeOrderNew.getNoOtherCostsPremiums());//非车其他费用
+//                BigDecimal totalOtherPremiumAmount = jqOtherCostsPremiums.add(syOtherCostsPremiums).add(noOtherCostsProportion);  //非跟单费用
+
+                //总机构 交强管理比例
+                BigDecimal sumJqDeptProportion = insFeeOrderNew.getJqDeptProportionLevel1()
+                        .add(insFeeOrderNew.getJqDeptProportionLevel2())
+                        .add(insFeeOrderNew.getJqDeptProportionLevel3())
+                        .add(insFeeOrderNew.getJqDeptProportionLevel4())
+                        .add(insFeeOrderNew.getJqDeptProportionLevel5());
+
+                //总机构 商业管理比例
+                BigDecimal sumSyDeptProportion = insFeeOrderNew.getSyDeptProportionLevel1()
+                        .add(insFeeOrderNew.getSyDeptProportionLevel2())
+                        .add(insFeeOrderNew.getSyDeptProportionLevel3())
+                        .add(insFeeOrderNew.getSyDeptProportionLevel4())
+                        .add(insFeeOrderNew.getSyDeptProportionLevel5());
+
+                //总机构 非车管理比例
+                BigDecimal sumNoDeptProportion = insFeeOrderNew.getNoDeptProportionLevel1()
+                        .add(insFeeOrderNew.getNoDeptProportionLevel2())
+                        .add(insFeeOrderNew.getNoDeptProportionLevel3())
+                        .add(insFeeOrderNew.getNoDeptProportionLevel4())
+                        .add(insFeeOrderNew.getNoDeptProportionLevel5());
+
+                //总分销比例
+                BigDecimal sumRetail = insFeeOrderNew.getFirstDetailProportion().add(insFeeOrderNew.getSecondDetailProportion()).add(insFeeOrderNew.getThirdDetailProportion());
+
+                //交强出口比例
+                BigDecimal jqExportProceduresProportion = new BigDecimal(0);
+                if(insFeeOrderNew.getJqCostsProportion().compareTo(sumJqDeptProportion.add(sumRetail))>0){
+                    jqExportProceduresProportion = insFeeOrderNew.getJqCostsProportion().subtract(sumJqDeptProportion).subtract(sumRetail);
+                }
+                //商业出口比例
+                BigDecimal syExportProceduresProportion = new BigDecimal(0);
+                if(insFeeOrderNew.getSyCostsProportion().compareTo(sumSyDeptProportion.add(sumRetail))>0){
+                    syExportProceduresProportion = insFeeOrderNew.getSyCostsProportion().subtract(sumSyDeptProportion).subtract(sumRetail);
+                }
+                //非车出口比例
+                BigDecimal noExportProceduresProportion = new BigDecimal(0);
+                if(insFeeOrderNew.getNoCostsProportion().compareTo(sumNoDeptProportion.add(sumRetail))>0){
+                    noExportProceduresProportion = insFeeOrderNew.getNoCostsProportion().subtract(sumNoDeptProportion).subtract(sumRetail);
+                }
+
+                //交强手续费出口比例
+                BigDecimal jqExportProceduresFee = insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqSuperviseCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
+                //交强跟单出口费用
+                BigDecimal jqExportOtherFee = insFeeOrderNew.getJqPremium()
+                        .multiply(jqExportProceduresProportion
+                                .subtract(insFeeOrderNew.getJqSuperviseCostsProportion()).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
+
+                //商业手续费出口比例
+                BigDecimal syExportProceduresFee = insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSySuperviseCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
+                //商业跟单出口比例
+                BigDecimal syExportOtherFee = insFeeOrderNew.getSyPremium()
+                        .multiply(syExportProceduresProportion
+                                .subtract(insFeeOrderNew.getSySuperviseCostsProportion()).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
+
+                //非车手续费出口比例
+                BigDecimal noExportProceduresFee = insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoSuperviseCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
+                //非车跟单出口比例
+                BigDecimal noExportOtherFee = insFeeOrderNew.getNoPremium()
+                        .multiply(noExportProceduresProportion
+                                .subtract(insFeeOrderNew.getNoSuperviseCostsProportion()).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
+
+                //用户出口手续费
+                BigDecimal totalPremiumAmount = new BigDecimal(0);
+                totalPremiumAmount = totalPremiumAmount.add(jqExportProceduresFee).add(syExportProceduresFee).add(noExportProceduresFee);
+
+                //用户出口跟单费
+                BigDecimal totalOtherPremiumAmount = new BigDecimal(0);
+                totalOtherPremiumAmount = totalOtherPremiumAmount.add(jqExportOtherFee).add(syExportOtherFee).add(noExportOtherFee);
+
+
+//              用戶
+                sysUserAccount.setHandlingFee(totalPremiumAmount);
+                sysUserAccount.setDocumentary(totalOtherPremiumAmount);
+//              算佣金
+                this.countUserAmount(insFeeOrderNew,orderNo);
+                sysUserAccount.setDocumentaryStatus("2");  // 收入
+                sysUserAccount.setSuborderId(orderNo);  // 订单Id
+                sysUserAccountService.addOrUpdate(sysUserAccount);
+
+
+                String deptid = insFeeOrderNew.getDeptId();
+                String distributionStatus = insFeeOrderNew.getDistributionStatus();
+                // 定义一个数组来存储各级机构的管理费
+                BigDecimal[] jqDeptPremiumsLevels = {insFeeOrderNew.getJqDeptPremiumsLevel1(), insFeeOrderNew.getJqDeptPremiumsLevel2(),
+                        insFeeOrderNew.getJqDeptPremiumsLevel3(), insFeeOrderNew.getJqDeptPremiumsLevel4(),
+                        insFeeOrderNew.getJqDeptPremiumsLevel5()};
+                BigDecimal[] syDeptPremiumsLevels = {insFeeOrderNew.getSyDeptPremiumsLevel1(), insFeeOrderNew.getSyDeptPremiumsLevel2(),
+                        insFeeOrderNew.getSyDeptPremiumsLevel3(), insFeeOrderNew.getSyDeptPremiumsLevel4(),
+                        insFeeOrderNew.getSyDeptPremiumsLevel5()};
+                BigDecimal[] noDeptPremiumsLevels = {insFeeOrderNew.getNoDeptPremiumsLevel1(), insFeeOrderNew.getNoDeptPremiumsLevel2(),
+                        insFeeOrderNew.getNoDeptPremiumsLevel3(), insFeeOrderNew.getNoDeptPremiumsLevel4(),
+                        insFeeOrderNew.getNoDeptPremiumsLevel5()};
+
+                for (int i = 1; i <= 5; i++) {
+                    // 根据循环次数确定机构ID的长度,第五级为11
+                    String levelDeptId = deptid.substring(0, (i == 5) ? 11 : i * 2);
+                    // 获取对应级别的机构信息
+                    SysDeptAccount levelSysDeptAccount = sysDeptAccountService.getOne(new LambdaQueryWrapper<SysDeptAccount>()
+                            .eq(SysDeptAccount::getDeptId, levelDeptId));
+
+                    // 初始化管理费总额为0
+                    BigDecimal sumManagementFee = BigDecimal.ZERO;
+
+                    // 根据分销等级和分销用户情况计算分销费用
+                    BigDecimal distributionFee = BigDecimal.ZERO;
+                    if (i == 5) {
+                        if (InsFeeAuditDistributionStatusEnum.DS_2.getCode().equals(distributionStatus) && insFeeOrderNew.getTwoLevelUserId() == null) {
+                            distributionFee = insFeeOrderNew.getSecondDetailPremiums();
+                        } else if (InsFeeAuditDistributionStatusEnum.DS_3.getCode().equals(distributionStatus) && insFeeOrderNew.getThreeLevelUserId() == null) {
+                            distributionFee = insFeeOrderNew.getThirdDetailPremiums();
+                        }
+                    }
+
+                    // 根据分销等级计算管理费总额
+                    if (i == 5) {
+                        sumManagementFee = sumManagementFee.add(jqDeptPremiumsLevels[i - 1])
+                                .add(syDeptPremiumsLevels[i - 1])
+                                .add(noDeptPremiumsLevels[i - 1])
+                                .add(distributionFee);
+                    } else {
+                        sumManagementFee = sumManagementFee.add(jqDeptPremiumsLevels[i - 1])
+                                .add(syDeptPremiumsLevels[i - 1])
+                                .add(noDeptPremiumsLevels[i - 1]);
+                    }
+
+                    // 如果机构信息不为空,更新管理费并记录历史
+                    if (levelSysDeptAccount != null) {
+                        levelSysDeptAccount.setManagementFee(levelSysDeptAccount.getManagementFee().add(sumManagementFee));
+                        sysDeptAccountService.updateById(levelSysDeptAccount);
+                        // 记录历史信息
+                        SysDeptAccountHistory sysDeptAccountHistory = new SysDeptAccountHistory();
+                        sysDeptAccountHistory.setId(IdGenerate.nextId());
+                        sysDeptAccountHistory.setDeptId(levelDeptId);
+                        sysDeptAccountHistory.setAmount(sumManagementFee);
+                        sysDeptAccountHistory.setSurplusAmount(levelSysDeptAccount.getManagementFee());
+                        sysDeptAccountHistory.setDocumentary("2"); //收入
+                        sysDeptAccountHistory.setSuborder(orderNo);
+                        sysDeptAccountHistory.setFromBankCard(null);
+                        sysDeptAccountHistory.setToBankCard(null);
+                        sysDeptAccountHistory.setUserId(BaseController.getUser().getId());
+                        sysDeptAccountHistory.setCreateTime(new Date());
+                        sysDeptAccountHistory.setRemark("交强" + i + "级机构管理费:" + jqDeptPremiumsLevels[i - 1] +
+                                ",商业" + i + "级机构管理费:" + syDeptPremiumsLevels[i - 1] +
+                                ",非车" + i + "级机构管理费:" + noDeptPremiumsLevels[i - 1] +
+                                ",分销费:" + distributionFee);
+                        sysDeptAccountHistoryService.save(sysDeptAccountHistory);
+                    } else {
+                        // 如果机构信息为空,新建机构信息并记录历史
+                        SysDeptAccount sysDeptAccount = new SysDeptAccount();
+                        sysDeptAccount.setDeptId(levelDeptId);
+                        sysDeptAccount.setManagementFee(sumManagementFee);
+                        sysDeptAccount.setCreateTime(new Date());
+                        sysDeptAccountService.save(sysDeptAccount);
+                        // 记录历史信息
+                        SysDeptAccountHistory sysDeptAccountHistory = new SysDeptAccountHistory();
+                        sysDeptAccountHistory.setId(IdGenerate.nextId());
+                        sysDeptAccountHistory.setDeptId(levelDeptId);
+                        sysDeptAccountHistory.setAmount(sumManagementFee);
+                        sysDeptAccountHistory.setSurplusAmount(sumManagementFee);
+                        sysDeptAccountHistory.setDocumentary("2"); //收入
+                        sysDeptAccountHistory.setSuborder(orderNo);
+                        sysDeptAccountHistory.setFromBankCard(null);
+                        sysDeptAccountHistory.setToBankCard(null);
+                        sysDeptAccountHistory.setUserId(BaseController.getUser().getId());
+                        sysDeptAccountHistory.setCreateTime(new Date());
+                        sysDeptAccountHistory.setRemark("交强" + i + "级机构管理费:" + jqDeptPremiumsLevels[i - 1] +
+                                ",商业" + i + "级机构管理费:" + syDeptPremiumsLevels[i - 1] +
+                                ",非车" + i + "级机构管理费:" + noDeptPremiumsLevels[i - 1] +
+                                ",分销费:" + distributionFee);
+                        sysDeptAccountHistoryService.save(sysDeptAccountHistory);
+                    }
+                }
+            }
+        }
+        return true;
+    }
+
     private void countUserAmount(InsFeeOrderNew insFeeOrderNew ,String orderNo) {
         String distributionStatus = insFeeOrderNew.getDistributionStatus();
         if(StringUtils.isNotEmpty(distributionStatus)){

+ 22 - 6
src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyIncomeServiceImpl.java

@@ -186,8 +186,20 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
             PageHelper.startPage(insPlyIncomeVo.getPageNum(),insPlyIncomeVo.getPageSize());
             params.put("pageNum",insPlyIncomeVo.getPageNum());
             params.put("pageSize",insPlyIncomeVo.getPageSize());
-            params.put("startDate",insPlyIncomeVo.getStartDate().toString());
-            params.put("endDate",insPlyIncomeVo.getEndDate().toString());
+            if(ObjectUtils.isNotEmpty(insPlyIncomeVo.getStartDate())){
+                params.put("startDate",insPlyIncomeVo.getStartDate().toString());
+
+            }
+            if(ObjectUtils.isNotEmpty(insPlyIncomeVo.getEndDate())){
+                params.put("endDate",insPlyIncomeVo.getEndDate().toString());
+            }
+            if(StringUtils.isNotEmpty(insPlyIncomeVo.getOrderno())){
+                params.put("orderno",insPlyIncomeVo.getOrderno());
+            }
+            if(StringUtils.isNotEmpty(insPlyIncomeVo.getPolicyno())){
+                params.put("policyno",insPlyIncomeVo.getPolicyno());
+            }
+
             List<InsPlyIncome> list= this.baseMapper.queryNew(params);
             pageHelper=new PageInfo(list);
             BasePageResult<InsPlyIncome> pageResult=new BasePageResult<InsPlyIncome>(insPlyIncomeVo.getPageNum(), insPlyIncomeVo.getPageSize(), pageHelper.getTotal(), pageHelper.getPages(), list);
@@ -202,12 +214,17 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
     @Transactional
     public void uodateBalance(InsPlyIncomeVo insPlyIncomeVo) {
         InsPlyIncome insPlyIncome = new InsPlyIncome();
+        insPlyIncomeVo.setHandlingFeesStatus("1");
         BeanUtils.copyProperties(insPlyIncomeVo, insPlyIncome);
         baseMapper.uopdateByOrderno(insPlyIncome);
 
 //        生成记录
         SettlementDocumentaryLogEntity settlementDocumentaryLogEntity = new SettlementDocumentaryLogEntity();
-        settlementDocumentaryLogEntity.setAmount(insPlyIncomeVo.getCommissionFeevalue());  // 手续费金额
+        if(StringUtils.isNotEmpty(insPlyIncomeVo.getAgreementType()) &&  "1".equals(insPlyIncomeVo.getAgreementType())){
+//         只有平台协议 才会跟单费一笔结算
+            settlementDocumentaryLogEntity.setAmount(insPlyIncomeVo.getOtherFeevalue());  // 跟单费金额
+        }
+        settlementDocumentaryLogEntity.setHandingAmount(insPlyIncomeVo.getCommissionFeevalue());  // 手续费金额
         settlementDocumentaryLogEntity.setSettlementDocumentaryId(insPlyIncomeVo.getOrderno()); // 关联id
         settlementDocumentaryLogEntity.setAmountType("1");  //手续费结算
         settlementDocumentaryLogEntity.setCreateTime(new Date());
@@ -248,7 +265,7 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
 
     @Override
     @Transactional
-    public void batchBalance(InsPlyIncomeVo insPlyIncomeVo) {
+    public HttpResult batchBalance(InsPlyIncomeVo insPlyIncomeVo) {
 //      生成新数据
         SettlementDocumentaryFeesVo settlementDocumentaryFeesVo = new SettlementDocumentaryFeesVo();
         settlementDocumentaryFeesVo.setTotalAmount(insPlyIncomeVo.getTotAmount());
@@ -260,8 +277,7 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
         settlementDocumentaryFeesVo.setSettlementAmount(insPlyIncomeVo.getSettlementAmount());//  结算金额
         settlementDocumentaryFeesVo.setUnsettledAmount(insPlyIncomeVo.getTotAmount().subtract(insPlyIncomeVo.getSettlementAmount()));  //未结算金额
 
-        settlementDocumentaryFeesService.inertSettle(settlementDocumentaryFeesVo);
-
+        return  settlementDocumentaryFeesService.inertSettle(settlementDocumentaryFeesVo);
 
 //
     }

+ 72 - 12
src/main/java/com/ydtech/modules/fnc/service/impl/SettlementDocumentaryFeesServiceImpl.java

@@ -2,19 +2,27 @@ package com.ydtech.modules.fnc.service.impl;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.fnc.dao.SettlementDocumentaryFeesMapper;
+import com.ydtech.modules.fnc.entity.InsPlyIncome;
 import com.ydtech.modules.fnc.entity.SettlementDocumentaryFeesEntity;
 import com.ydtech.modules.fnc.entity.SettlementDocumentaryLogEntity;
 import com.ydtech.modules.fnc.service.SettlementDocumentaryFeesService;
 import com.ydtech.modules.fnc.service.SettlementDocumentaryLogService;
 import com.ydtech.modules.fnc.vo.SettlementDocumentaryFeesVo;
 import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.modules.order.entity.InsOrders;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -22,21 +30,36 @@ import java.util.List;
 @Service
 public class SettlementDocumentaryFeesServiceImpl extends ServiceImpl<SettlementDocumentaryFeesMapper, SettlementDocumentaryFeesEntity> implements SettlementDocumentaryFeesService {
 
-        @Autowired
-        private SettlementDocumentaryLogService settlementDocumentaryLogService;
-    @Override
-    public BasePageResult<SettlementDocumentaryFeesEntity> querySettle(SettlementDocumentaryFeesVo settlementDocumentaryFeesVo) {
-
-        Page<SettlementDocumentaryFeesEntity> page = new Page<>(settlementDocumentaryFeesVo.getPageNum(), settlementDocumentaryFeesVo.getPageSize());
+    @Autowired
+    private SettlementDocumentaryLogService settlementDocumentaryLogService;
 
-        Page<SettlementDocumentaryFeesEntity> resultPage  = baseMapper.querySettle(settlementDocumentaryFeesVo,page);
 
-        return new BasePageResult<>(settlementDocumentaryFeesVo.getPageNum(),page.getSize(),resultPage.getTotal(),page.getPages(),resultPage.getRecords());
+    @Override
+    public HttpResult<BasePageResult<SettlementDocumentaryFeesEntity>> querySettle(SettlementDocumentaryFeesVo settlementDocumentaryFeesVo) {
+        try {
+            HashMap<String, Object> params = new HashMap<>();
+            params.put("pageNum", settlementDocumentaryFeesVo.getPageNum());
+            params.put("pageSize", settlementDocumentaryFeesVo.getPageSize());
+            PageInfo<List<SettlementDocumentaryFeesEntity>> pageHelper = null;
+            List<SettlementDocumentaryFeesEntity> list = this.baseMapper.querySettle(params);
+            pageHelper = new PageInfo(list);
+            BasePageResult<SettlementDocumentaryFeesEntity> pageResult = new BasePageResult<SettlementDocumentaryFeesEntity>(settlementDocumentaryFeesVo.getPageNum(), settlementDocumentaryFeesVo.getPageSize(), pageHelper.getTotal(), pageHelper.getPages(), list);
+            return HttpResult.ok(pageResult);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return HttpResult.error("查询异常");
+        }
     }
 
     @Override
     @Transactional
-    public void inertSettle(SettlementDocumentaryFeesVo settlementDocumentaryFeesVo) {
+    public HttpResult inertSettle(SettlementDocumentaryFeesVo settlementDocumentaryFeesVo) {
+
+
+        int i = this.compareAmount(settlementDocumentaryFeesVo.getTotalAmount(), settlementDocumentaryFeesVo.getSettlementAmount());
+        if (i < 0) {
+            return HttpResult.error("结算金额大于总金额,请重新结算");
+        }
         SettlementDocumentaryFeesEntity settlementDocumentaryFeesEntity = new SettlementDocumentaryFeesEntity();
         BeanUtils.copyProperties(settlementDocumentaryFeesVo, settlementDocumentaryFeesEntity);
         baseMapper.insert(settlementDocumentaryFeesEntity);
@@ -48,15 +71,52 @@ public class SettlementDocumentaryFeesServiceImpl extends ServiceImpl<Settlement
         settlementDocumentaryLogEntity.setAmountType("2");  //跟单费结算
         settlementDocumentaryLogEntity.setCreateTime(new Date());
         settlementDocumentaryLogService.save(settlementDocumentaryLogEntity);
+        return HttpResult.ok("结算成功");
     }
 
     @Override
-    public String  checkDate(HashMap<String, Object> params) {
+    public String checkDate(HashMap<String, Object> params) {
 
-        List<SettlementDocumentaryFeesEntity> startList=  baseMapper.checkDate(params);
-        if(startList.size()>0 ){
+        List<SettlementDocumentaryFeesEntity> startList = baseMapper.checkDate(params);
+        if (startList.size() > 0) {
             return "有重复";
         }
         return null;
     }
+
+    @Override
+    @Transactional
+    public HttpResult documentarySettle(SettlementDocumentaryFeesVo settlementDocumentaryFeesVo) {
+        SettlementDocumentaryFeesEntity settlementDocumentaryFeesEntity = baseMapper.selectById(settlementDocumentaryFeesVo.getId());
+
+
+        if (settlementDocumentaryFeesVo.getSettlementAmount() != null && ObjectUtils.isNotEmpty(settlementDocumentaryFeesEntity)) {
+
+            int i = this.compareAmount(settlementDocumentaryFeesEntity.getUnsettledAmount(), settlementDocumentaryFeesVo.getSettlementAmount());
+            if (i < 0) {
+                return HttpResult.error("结算金额大于未结算金额,请重新结算");
+            }
+            settlementDocumentaryFeesEntity.setSettlementAmount(settlementDocumentaryFeesEntity.getSettlementAmount().add(settlementDocumentaryFeesVo.getSettlementAmount()));
+            settlementDocumentaryFeesEntity.setUnsettledAmount(settlementDocumentaryFeesEntity.getTotalAmount().subtract(settlementDocumentaryFeesEntity.getSettlementAmount()));  //未结算金额
+            baseMapper.updateById(settlementDocumentaryFeesEntity);
+
+//          记录
+//          生成跟单费结算记录
+            SettlementDocumentaryLogEntity settlementDocumentaryLogEntity = new SettlementDocumentaryLogEntity();
+            settlementDocumentaryLogEntity.setAmount(settlementDocumentaryFeesVo.getSettlementAmount());  // 结算金额
+            settlementDocumentaryLogEntity.setSettlementDocumentaryId(settlementDocumentaryFeesEntity.getId()); // 关联id
+            settlementDocumentaryLogEntity.setAmountType("2");  //跟单费结算
+            settlementDocumentaryLogEntity.setCreateTime(new Date());
+            settlementDocumentaryLogService.save(settlementDocumentaryLogEntity);
+            return HttpResult.ok("修改成功");
+
+        }
+        return null;
+    }
+
+    private int compareAmount(BigDecimal settlementAmount, BigDecimal settlementAmount1) {
+
+        return settlementAmount.compareTo(settlementAmount1);
+
+    }
 }

+ 4 - 0
src/main/java/com/ydtech/modules/fnc/vo/InsPlyIncomeVo.java

@@ -122,4 +122,8 @@ public class InsPlyIncomeVo implements Serializable {
     @ApiModelProperty("是否非车")
     private String isNotCar;
 
+
+    @ApiModelProperty("手续费结算金额")
+    private BigDecimal handingAmount;
+
 }

+ 6 - 1
src/main/java/com/ydtech/modules/order/entity/crawler/response/CrawlerVerifyPaymentResponse.java

@@ -56,9 +56,14 @@ public class CrawlerVerifyPaymentResponse extends CrawlerBaseResponse {
 
         private static final long serialVersionUID = 8095703638414191277L;
 
+        /**
+         * 非车险投保单号
+         */
         @JsonProperty("policy")
         private String policy;
-
+        /**
+         * 非车险保单号
+         */
         @JsonProperty("application")
         private String application;
 

+ 28 - 0
src/main/java/com/ydtech/modules/order/entity/vo/FeeOrderNewRecordVo.java

@@ -0,0 +1,28 @@
+package com.ydtech.modules.order.entity.vo;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+@ApiModel(description = "费用明细调整费用")
+@Data
+public class FeeOrderNewRecordVo implements Serializable {
+
+    @ApiModelProperty("费用id")
+    private String costsId;
+
+    @ApiModelProperty("feeId")
+    private String feeId;
+
+    @ApiModelProperty("修改前的费用")
+    private FeeOrderNewVo feeOrderNewVoOld;
+
+    @ApiModelProperty("修改后的费用")
+    private FeeOrderNewVo feeOrderNewVoNew;
+
+}

+ 6 - 0
src/main/java/com/ydtech/modules/order/entity/vo/FeeOrderNewVo.java

@@ -15,6 +15,11 @@ import java.util.List;
 @Data
 public class FeeOrderNewVo implements Serializable {
 
+    @ApiModelProperty("费用id")
+    private String costsId;
+
+    @ApiModelProperty("feeId")
+    private String feeId;
 
     @ApiModelProperty("入口费用")
     private List<EntranceFee> entranceFee;
@@ -49,6 +54,7 @@ public class FeeOrderNewVo implements Serializable {
         private BigDecimal otherCostsPremiums;
         @ApiModelProperty("出口手续费比例")
         private BigDecimal exportSuperviseCosts;
+
     }
 
     /**

+ 16 - 4
src/main/java/com/ydtech/modules/order/service/impl/DaJiaOrderServiceImpl.java

@@ -11,6 +11,8 @@ import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.vo.PersonAreaVo;
 import com.ydtech.modules.admin.service.SysAreaService;
 import com.ydtech.modules.fee.service.FeeRuleSchemeService;
+import com.ydtech.modules.fnc.entity.InsFeeAudit;
+import com.ydtech.modules.fnc.service.InsFeeAuditService;
 import com.ydtech.modules.fnc.service.InsPlyIncomeService;
 import com.ydtech.modules.ins.model.vo.*;
 import com.ydtech.modules.order.components.ConfigureParametersComponents;
@@ -34,6 +36,7 @@ import com.ydtech.modules.order.entity.vo.dajia.AccidentalInsuranceQueryVo;
 import com.ydtech.modules.order.entity.vo.dajia.InsAccidentalDrivingDajia;
 import com.ydtech.modules.order.entity.vo.dajia.InsAccidentalDrivingSubDajia;
 import com.ydtech.modules.order.service.*;
+import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.modules.protocol.service.PtlAgreementService;
@@ -48,12 +51,10 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static com.ydtech.modules.order.components.gouren.GuorenDuplicateInsuranceComponent.*;
@@ -98,6 +99,9 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
     @Autowired
     private InsImagesUploadCacheComponents insImagesUploadCacheComponents;
 
+    @Autowired
+    private InsFeeAuditService insFeeAuditService;
+
     @Autowired
     private InsPlyIncomeService insPlyIncomeService;
 
@@ -720,6 +724,7 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
         return !collect.isEmpty();
     }
 
+
     /**
      * 查询订单状态
      *
@@ -798,6 +803,13 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
                     insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
                     insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
 //                    生成结算
+                    //判断协议是否为人工还是自动审核
+                    PtlAgreement ptlAgreement = ptlAgreementService.getById(insAreaCompany.getAgreementId());
+                    if(ptlAgreement.getAuditType() == 2)
+                    {
+                        //如果为自动审核 则自动进行审核
+                        insFeeAuditService.autoFeeAudit( insAreaCompany.getOrderno(),insAreaCompany.getId());
+                    }
                     insPlyIncomeService.saveBalance(companyId,insAreaCompany.getOrderno());
                 }
             }

+ 2 - 1
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -527,7 +527,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                     List<CrawlerVerifyPaymentResponse.DrivingInsurancesDTO> drivingInsurancesDTOS =
                             insOrdersExcel.getCrossInsurance().toJavaList(CrawlerVerifyPaymentResponse.DrivingInsurancesDTO.class);
                     if (!drivingInsurancesDTOS.isEmpty()) {
-                        String policyNumber = drivingInsurancesDTOS.get(0).getPolicy();
+                        String policyNumber = drivingInsurancesDTOS.get(0).getApplication();
                         insOrdersExcel.setJyPolicyno(policyNumber);
                     }
                 } else {
@@ -657,6 +657,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 //            List<FeeOrderNewVo> feeOrderNewVoList = feeRuleSchemeService.newConvertOrderFeeVoData(insFeeOrderNew);
 //            orderAndAreaCompany.setFeeOrderNewVoList(feeOrderNewVoList);
             FeeOrderNewVo  feeOrderNewVo =   feeRuleSchemeService.newConvertOrderFeeVoData(insFeeOrderNew,ptlAgreementProductCostsNew);
+            feeOrderNewVo.setFeeId(insFeeOrderNew.getId());
             orderAndAreaCompany.setFeeOrderNewVo(feeOrderNewVo);
             List<DistributionLevelVo> distributionLevelVoList = feeRuleSchemeService.converDistrbutionData(insFeeOrderNew);
             orderAndAreaCompany.setDistributionLevelVoList(distributionLevelVoList);

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

@@ -196,6 +196,12 @@ public class PtlAgreement implements Serializable {
     @TableField(value = "update_time")
     private LocalDateTime updateTime;
 
+    /**
+     * 审核类型
+     */
+    @TableField(value = "audit_type")
+    private Integer auditType;
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 

+ 9 - 2
src/main/java/com/ydtech/modules/protocol/service/PtlAgreementService.java

@@ -7,9 +7,7 @@ import com.ydtech.modules.esm.model.EsmInsCompany;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementSaveDto;
-import com.ydtech.modules.protocol.entity.dto.PtlAgreementUndwrtRulesSaveDto;
 import com.ydtech.modules.protocol.entity.po.PtlAgreement;
-import com.ydtech.modules.protocol.entity.po.PtlAgreementNonCarProductCosts;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRules;
 import com.ydtech.modules.protocol.entity.vo.*;
@@ -192,4 +190,13 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
      * @return
      */
     HttpResult<List<PtlAgreement>> findRelationAgreement(String associationCompaniesId);
+
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 18:04
+     *  @Description: 查询所有审核的协议
+     */
+    List<PtlAgreement> findCheckAgreementList(PtlAgreement ptlAgreement);
 }

+ 17 - 3
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java

@@ -2,7 +2,6 @@ package com.ydtech.modules.protocol.service.impl;
 
 import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -10,7 +9,6 @@ import com.ydtech.config.DictEnumConfig;
 import com.ydtech.constants.enums.dict.DictionaryData;
 import com.ydtech.constants.enums.dict.DictionaryManagement;
 import com.ydtech.constants.enums.dict.agreement.AgreementType;
-import com.ydtech.constants.enums.dict.agreement.ProductsType;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.exception.SystemException;
@@ -20,7 +18,10 @@ import com.ydtech.modules.order.service.InsCrawlerOrderService;
 import com.ydtech.modules.protocol.constants.HistoryStatusConstants;
 import com.ydtech.modules.protocol.dao.PtlAgreementMapper;
 import com.ydtech.modules.protocol.entity.constants.PtlApiType;
-import com.ydtech.modules.protocol.entity.dto.*;
+import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
+import com.ydtech.modules.protocol.entity.dto.PtlAgreementDto;
+import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
+import com.ydtech.modules.protocol.entity.dto.PtlAgreementSaveDto;
 import com.ydtech.modules.protocol.entity.dto.history.PtlAgreementUndwrtRulesHistory;
 import com.ydtech.modules.protocol.entity.po.*;
 import com.ydtech.modules.protocol.entity.vo.*;
@@ -591,4 +592,17 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         }
         return HttpResult.ok(resultList);
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 18:02
+     *  @Description: 查询审核的协议
+     */
+    public List<PtlAgreement> findCheckAgreementList(PtlAgreement ptlAgreement){
+        LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(PtlAgreement::getValidStatus,"1");
+        List<PtlAgreement> list = proxyObject.list(wrapper);
+        return list;
+    }
+
 }

+ 8 - 0
src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementController.java

@@ -7,6 +7,8 @@ import com.ydtech.core.page.PageRequest;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.fee.service.FeeRuleSchemeNewService;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewRecordVo;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
 import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
 import com.ydtech.modules.protocol.entity.vo.PtlAgreementPageVo;
@@ -94,6 +96,12 @@ public class PtlNewAgreementController extends BaseController {
         return ptlAgreementProductCostsNewService.costsCopy(orgCostsId,newAgreementId) ? HttpResult.ok("复制协议费用成功") : HttpResult.error("复制协议费用失败");
     }
 
+    @ApiOperation(value = "调整费用")
+    @PostMapping("/costs/adjust")
+    public HttpResult costsAdjust(@RequestBody FeeOrderNewRecordVo feeOrderNewRecordVo){
+        return ptlAgreementProductCostsNewService.costsAdjust(feeOrderNewRecordVo) ? HttpResult.ok("调整费用成功") : HttpResult.error("调整费用失败");
+    }
+
     @ApiOperation(value = "费用审核")
     @PostMapping("/costs/audit")
     public HttpResult costsAudit(@RequestBody CostsAuditVo costsAuditVo){

+ 19 - 0
src/main/java/com/ydtech/modules/protocols/dao/InsFeeOrderNewRecordMapper.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.protocols.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNewRecord;
+
+
+/**
+ * @author tz
+ * @description 费用结算的数据库操作Mapper
+ * @createDate 2024-2-22 15:44:29
+ */
+public interface InsFeeOrderNewRecordMapper extends BaseMapper<InsFeeOrderNewRecord> {
+
+}
+
+
+
+

+ 324 - 0
src/main/java/com/ydtech/modules/protocols/entity/po/InsFeeOrderNewRecord.java

@@ -0,0 +1,324 @@
+package com.ydtech.modules.protocols.entity.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+*@author: tz
+*@description: 新的费用订单表历史记录
+*@create: 2024-2-29 08:36:53
+*/
+
+@TableName(value = "ins_fee_order_new_record", autoResultMap = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class InsFeeOrderNewRecord {
+    @TableId(value = "id")
+    private String id;
+
+    @ApiModelProperty(value = "子订单id")
+    @TableField(value = "ins_order_no")
+    private String insOrderNo;
+
+    @ApiModelProperty(value = "费用id")
+    @TableField(value = "costs_id")
+    private String costsId;
+
+    @ApiModelProperty(value = "feeid")
+    @TableField(value = "fee_order_id")
+    private String feeOrderId;
+
+    @ApiModelProperty(value = "交强险费用比例历史")
+    @TableField(value = "jq_costs_proportion_old")
+    private BigDecimal jqCostsProportionOld;
+
+    @ApiModelProperty(value = "交强险费用比例")
+    @TableField(value = "jq_costs_proportion")
+    private BigDecimal jqCostsProportion;
+
+    @ApiModelProperty(value = "商业险费用比例历史")
+    @TableField(value = "sy_costs_proportion_old")
+    private BigDecimal syCostsProportionOld;
+
+    @ApiModelProperty(value = "商业险费用比例")
+    @TableField(value = "sy_costs_proportion")
+    private BigDecimal syCostsProportion;
+
+    @ApiModelProperty(value = "非车险费用比例历史")
+    @TableField(value = "no_costs_proportion_old")
+    private BigDecimal noCostsProportionOld;
+
+    @ApiModelProperty(value = "非车险费用比例")
+    @TableField(value = "no_costs_proportion")
+    private BigDecimal noCostsProportion;
+
+    @ApiModelProperty(value = "交强监管费比例历史")
+    @TableField(value = "jq_supervise_costs_proportion_old")
+    private BigDecimal jqSuperviseCostsProportionOld;
+
+    @ApiModelProperty(value = "交强监管费比例")
+    @TableField(value = "jq_supervise_costs_proportion")
+    private BigDecimal jqSuperviseCostsProportion;
+
+    @ApiModelProperty(value = "商业监管费比例")
+    @TableField(value = "sy_supervise_costs_proportion_old")
+    private BigDecimal sySuperviseCostsProportionOld;
+
+    @ApiModelProperty(value = "商业监管费比例")
+    @TableField(value = "sy_supervise_costs_proportion")
+    private BigDecimal sySuperviseCostsProportion;
+
+    @ApiModelProperty(value = "非车监管费比例")
+    @TableField(value = "no_supervise_costs_proportion_old")
+    private BigDecimal noSuperviseCostsProportionOld;
+
+    @ApiModelProperty(value = "非车监管费比例")
+    @TableField(value = "no_supervise_costs_proportion")
+    private BigDecimal noSuperviseCostsProportion;
+
+    @ApiModelProperty(value = "交强其他费用比例")
+    @TableField(value = "jq_other_costs_proportion_old")
+    private BigDecimal jqOtherCostsProportionOld;
+
+
+    @ApiModelProperty(value = "交强其他费用比例")
+    @TableField(value = "jq_other_costs_proportion")
+    private BigDecimal jqOtherCostsProportion;
+
+    @ApiModelProperty(value = "商业其他费用比例")
+    @TableField(value = "sy_other_costs_proportion_old")
+    private BigDecimal syOtherCostsProportionOld;
+
+    @ApiModelProperty(value = "商业其他费用比例")
+    @TableField(value = "sy_other_costs_proportion")
+    private BigDecimal syOtherCostsProportion;
+
+    @ApiModelProperty(value = "非车其他费用比例")
+    @TableField(value = "no_other_costs_proportion_old")
+    private BigDecimal noOtherCostsProportionOld;
+
+    @ApiModelProperty(value = "非车其他费用比例")
+    @TableField(value = "no_other_costs_proportion")
+    private BigDecimal noOtherCostsProportion;
+
+
+    @ApiModelProperty(value = "交强一级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_1_old")
+    private BigDecimal jqDeptProportionLevel1Old;
+
+    @ApiModelProperty(value = "交强二级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_2_old")
+    private BigDecimal jqDeptProportionLevel2Old;
+
+    @ApiModelProperty(value = "交强三级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_3_old")
+    private BigDecimal jqDeptProportionLevel3Old;
+
+    @ApiModelProperty(value = "交强四级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_4_old")
+    private BigDecimal jqDeptProportionLevel4Old;
+
+    @ApiModelProperty(value = "交强五级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_5_old")
+    private BigDecimal jqDeptProportionLevel5Old;
+
+    @ApiModelProperty(value = "商业一级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_1_old")
+    private BigDecimal syDeptProportionLevel1Old;
+
+    @ApiModelProperty(value = "商业二级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_2_old")
+    private BigDecimal syDeptProportionLevel2Old;
+
+    @ApiModelProperty(value = "商业三级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_3_old")
+    private BigDecimal syDeptProportionLevel3Old;
+
+    @ApiModelProperty(value = "商业四级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_4_old")
+    private BigDecimal syDeptProportionLevel4Old;
+
+    @ApiModelProperty(value = "商业五级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_5_old")
+    private BigDecimal syDeptProportionLevel5Old;
+
+    @ApiModelProperty(value = "非车一级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_1_old")
+    private BigDecimal noDeptProportionLevel1Old;
+
+    @ApiModelProperty(value = "非车二级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_2_old")
+    private BigDecimal noDeptProportionLevel2Old;
+
+    @ApiModelProperty(value = "非车三级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_3_old")
+    private BigDecimal noDeptProportionLevel3Old;
+
+    @ApiModelProperty(value = "非车四级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_4_old")
+    private BigDecimal noDeptProportionLevel4Old;
+
+    @ApiModelProperty(value = "非车五级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_5_old")
+    private BigDecimal noDeptProportionLevel5Old;
+
+
+
+
+
+    @ApiModelProperty(value = "交强一级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_1")
+    private BigDecimal jqDeptProportionLevel1;
+
+    @ApiModelProperty(value = "交强二级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_2")
+    private BigDecimal jqDeptProportionLevel2;
+
+    @ApiModelProperty(value = "交强三级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_3")
+    private BigDecimal jqDeptProportionLevel3;
+
+    @ApiModelProperty(value = "交强四级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_4")
+    private BigDecimal jqDeptProportionLevel4;
+
+    @ApiModelProperty(value = "交强五级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_5")
+    private BigDecimal jqDeptProportionLevel5;
+
+    @ApiModelProperty(value = "商业一级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_1")
+    private BigDecimal syDeptProportionLevel1;
+
+    @ApiModelProperty(value = "商业二级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_2")
+    private BigDecimal syDeptProportionLevel2;
+
+    @ApiModelProperty(value = "商业三级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_3")
+    private BigDecimal syDeptProportionLevel3;
+
+    @ApiModelProperty(value = "商业四级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_4")
+    private BigDecimal syDeptProportionLevel4;
+
+    @ApiModelProperty(value = "商业五级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_5")
+    private BigDecimal syDeptProportionLevel5;
+
+    @ApiModelProperty(value = "非车一级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_1")
+    private BigDecimal noDeptProportionLevel1;
+
+    @ApiModelProperty(value = "非车二级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_2")
+    private BigDecimal noDeptProportionLevel2;
+
+    @ApiModelProperty(value = "非车三级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_3")
+    private BigDecimal noDeptProportionLevel3;
+
+    @ApiModelProperty(value = "非车四级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_4")
+    private BigDecimal noDeptProportionLevel4;
+
+    @ApiModelProperty(value = "非车五级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_5")
+    private BigDecimal noDeptProportionLevel5;
+
+
+    @ApiModelProperty(value = "出口手续费比例")
+    @TableField(exist = false)
+    private BigDecimal jqCostsExportProportionOld;
+
+    @ApiModelProperty(value = "出口商业手续费比例")
+    @TableField(exist = false)
+    private BigDecimal syCostsExportProportionOld;
+
+    @ApiModelProperty(value = "出口非车手续费比例")
+    @TableField(exist = false)
+    private BigDecimal noCostsExportProportionOld;
+
+    @ApiModelProperty(value = "出口手续费比例")
+    @TableField(exist = false)
+    private BigDecimal jqCostsExportProportion;
+
+    @ApiModelProperty(value = "出口商业手续费比例")
+    @TableField(exist = false)
+    private BigDecimal syCostsExportProportion;
+
+    @ApiModelProperty(value = "出口非车手续费比例")
+    @TableField(exist = false)
+    private BigDecimal noCostsExportProportion;
+
+
+
+    @ApiModelProperty(value = "一级分销比例")
+    @TableField(value = "first_detail_proportion")
+    private BigDecimal firstDetailProportion;
+
+    @ApiModelProperty(value = "一级分销费用")
+    @TableField(value = "first_detail_premiums")
+    private BigDecimal firstDetailPremiums;
+
+    @ApiModelProperty(value = "二级分销比例")
+    @TableField(value = "second_detail_proportion")
+    private BigDecimal secondDetailProportion;
+
+    @ApiModelProperty(value = "二级分销费用")
+    @TableField(value = "second_detail_premiums")
+    private BigDecimal secondDetailPremiums;
+
+    @ApiModelProperty(value = "三级分销比例")
+    @TableField(value = "third_detail_proportion")
+    private BigDecimal thirdDetailProportion;
+
+    @ApiModelProperty(value = "三级分销费用")
+    @TableField(value = "third_detail_premiums")
+    private BigDecimal thirdDetailPremiums;
+
+    @ApiModelProperty(value = "一级分销用户id")
+    @TableField(value = "first_level_user_id")
+    private String firstLevelUserId;
+
+    @ApiModelProperty(value = "一级分销用户信息")
+    @TableField(exist = false)
+    private String firstLevelUserInfo;
+
+    @ApiModelProperty(value = "二级分销用户id")
+    @TableField(value = "two_level_user_id")
+    private String twoLevelUserId;
+
+    @ApiModelProperty(value = "二级分销用户信息")
+    @TableField(exist = false)
+    private String twoLevelUserInfo;
+
+    @ApiModelProperty(value = "三级分销用户id")
+    @TableField(value = "three_level_user_id")
+    private String threeLevelUserId;
+
+    @ApiModelProperty(value = "三级分销用户信息")
+    @TableField(exist = false)
+    private String threeLevelUserInfo;
+
+    @ApiModelProperty(value = "分销等级")
+    @TableField(value = "distribution_status")
+    private String distributionStatus;
+
+
+    @ApiModelProperty(value = "机构分销费用")
+    @TableField(value = "dept_distribution")
+    private BigDecimal deptDistribution;
+
+
+
+
+}

+ 15 - 0
src/main/java/com/ydtech/modules/protocols/service/InsFeeOrderNewRecordService.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.protocols.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNewRecord;
+
+/**
+*@author: tz
+*@description: 费用计算表 service
+*@create: 2024-2-22 15:44:29
+*/
+public interface InsFeeOrderNewRecordService extends IService<InsFeeOrderNewRecord> {
+
+
+}

+ 9 - 0
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewService.java

@@ -2,6 +2,8 @@ package com.ydtech.modules.protocols.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewRecordVo;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
 import com.ydtech.modules.protocols.entity.vo.AgreementProductCosts;
@@ -74,4 +76,11 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
      * @return
      */
     boolean costsAudit(CostsAuditVo costsAuditVo);
+
+    /**
+     * 调整费用
+     * @param feeOrderNewRecordVo
+     * @return
+     */
+    boolean costsAdjust(FeeOrderNewRecordVo feeOrderNewRecordVo);
 }

+ 22 - 0
src/main/java/com/ydtech/modules/protocols/service/impl/InsFeeOrderNewRecordServiceImpl.java

@@ -0,0 +1,22 @@
+package com.ydtech.modules.protocols.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.protocols.dao.InsFeeOrderNewMapper;
+import com.ydtech.modules.protocols.dao.InsFeeOrderNewRecordMapper;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNewRecord;
+import com.ydtech.modules.protocols.service.InsFeeOrderNewRecordService;
+import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @description 费用结算表 service实现类
+ * @createDate 2024-2-22 15:44:29
+ * @Entity com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRulesAttrMapper
+ */
+@Service
+public class InsFeeOrderNewRecordServiceImpl extends ServiceImpl<InsFeeOrderNewRecordMapper, InsFeeOrderNewRecord>
+        implements InsFeeOrderNewRecordService {
+
+}

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

@@ -4,8 +4,23 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.fee.dto.vo.DeptManagerFee;
+import com.ydtech.modules.fee.dto.vo.EntranceFee;
+import com.ydtech.modules.fee.dto.vo.ExportFee;
+import com.ydtech.modules.fee.dto.vo.RetailStoreFee;
+import com.ydtech.modules.fee.service.CostsCalcService;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewRecordVo;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
+import com.ydtech.modules.order.service.InsAreaCompanyService;
+import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.entity.po.PtlAreaLicense;
+import com.ydtech.modules.protocol.service.PtlAgreementService;
 import com.ydtech.modules.protocol.service.PtlAreaLicenseService;
 import com.ydtech.modules.protocols.dao.PtlAgreementProductCostsNewMapper;
 import com.ydtech.modules.protocols.entity.po.*;
@@ -15,11 +30,13 @@ import com.ydtech.modules.protocols.entity.vo.AgreementProductQueryVo;
 import com.ydtech.modules.protocols.entity.vo.CostsAuditVo;
 import com.ydtech.modules.protocols.service.*;
 import com.ydtech.utils.idgen.IdGenerate;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -52,6 +69,12 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
     @Autowired
     PtlAgreementProductCostsAttrLinkHistoryService ptlAgreementProductCostsAttrLinkHistoryService;
 
+    @Autowired
+    InsFeeOrderNewRecordService insFeeOrderNewRecordService;
+
+    @Autowired
+    InsFeeOrderNewService insFeeOrderNewService;
+
     @Override
     public Page<PtlAgreementProductCostsNew> getByAgreementId(Page page, AgreementProductQueryVo agreementProductQueryVo) {
         LambdaQueryWrapper<PtlAgreementProductCostsNew> ptlAgreementProductCostsNewLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -636,4 +659,279 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         ptlAgreementProductCostsNew.setAuditTime(LocalDateTime.now());
         return baseMapper.updateById(ptlAgreementProductCostsNew) > 0 ? true : false;
     }
+
+    @Autowired
+    PtlAgreementService ptlAgreementService;
+
+    @Autowired
+    CostsCalcService costsCalcService;
+
+    @Autowired
+    InsOrdersService insOrdersService;
+
+    @Autowired
+    SysUserService sysUserService;
+
+    @Autowired
+    InsAreaCompanyService insAreaCompanyService;
+
+    @Transactional
+    @Override
+    public boolean costsAdjust(FeeOrderNewRecordVo feeOrderNewRecordVo) {
+        String feeId = feeOrderNewRecordVo.getFeeId();
+        InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getById(feeId);
+        //查询协议是否包含税
+        PtlAgreement ptlAgreement = ptlAgreementService.getById(insFeeOrderNew.getAgreementId());
+        BigDecimal taxRadio = new BigDecimal("1.00");
+        if(ptlAgreement.getWithTax().equals("是")){
+            taxRadio = new BigDecimal("1.06");
+        }
+
+        InsFeeOrderNewRecord record = new InsFeeOrderNewRecord();
+        FeeOrderNewVo feeOrderNewVoOld = feeOrderNewRecordVo.getFeeOrderNewVoOld();
+        FeeOrderNewVo feeOrderNewVo = feeOrderNewRecordVo.getFeeOrderNewVoNew();
+
+        //交强入口费用
+        EntranceFee jqEntranceFee = costsCalcService.getEntranceFee("交强险", feeOrderNewVo.getEntranceFee().get(0).getPremium().divide(taxRadio,2),
+                feeOrderNewVo.getEntranceFee().get(0).getSuperviseCosts(), feeOrderNewVo.getEntranceFee().get(0).getOtherCostsProportion());
+
+        //商业入口费用
+        EntranceFee syEntranceFee = costsCalcService.getEntranceFee("商业险", feeOrderNewVo.getEntranceFee().get(1).getPremium().divide(taxRadio,2),
+                feeOrderNewVo.getEntranceFee().get(1).getSuperviseCosts(), feeOrderNewVo.getEntranceFee().get(1).getOtherCostsProportion());
+
+        //非车入口费用
+        EntranceFee noEntranceFee = costsCalcService.getEntranceFee("非车险", feeOrderNewVo.getEntranceFee().get(2).getPremium().divide(taxRadio,2),
+                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 syDeptManagerFee = costsCalcService.getDeptManagerFee("商业险", insFeeOrderNew.getSyPremium().divide(taxRadio,2),
+                insFeeOrderNew.getSyDeptProportionLevel1(), insFeeOrderNew.getSyDeptProportionLevel2(), insFeeOrderNew.getSyDeptProportionLevel3(),
+                insFeeOrderNew.getSyDeptProportionLevel4(), insFeeOrderNew.getSyDeptProportionLevel5());
+
+        //非车部门管理费用
+        DeptManagerFee noDeptManagerFee = costsCalcService.getDeptManagerFee("非车险", insFeeOrderNew.getNoPremium().divide(taxRadio,2),
+                insFeeOrderNew.getNoDeptProportionLevel1(), insFeeOrderNew.getNoDeptProportionLevel2(), insFeeOrderNew.getNoDeptProportionLevel3(),
+                insFeeOrderNew.getNoDeptProportionLevel4(), insFeeOrderNew.getNoDeptProportionLevel5());
+
+
+        //分销费用
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getById(insFeeOrderNew.getInsOrderNo());
+        InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
+        SysUser sysUser = sysUserService.findByUserId(insOrders.getUserid());
+        RetailStoreFee retailStoreFee = costsCalcService.getRetailStoreFee(sysUser.getId(),
+                insFeeOrderNew.getJqPremium().add(insFeeOrderNew.getSyPremium()).add(insFeeOrderNew.getNoPremium()));
+
+        //出口
+        ExportFee jqExportFee = costsCalcService.getExportFee("交强险",jqEntranceFee,jqDeptManagerFee,retailStoreFee,
+                feeOrderNewRecordVo.getFeeOrderNewVoNew().getExportFee().get(0).getSuperviseCosts());
+
+        ExportFee syExportFee = costsCalcService.getExportFee("商业险",syEntranceFee,syDeptManagerFee,retailStoreFee,
+                feeOrderNewRecordVo.getFeeOrderNewVoNew().getExportFee().get(1).getSuperviseCosts());
+
+        ExportFee noExportFee = costsCalcService.getExportFee("非车险",noEntranceFee,noDeptManagerFee,retailStoreFee,
+                feeOrderNewRecordVo.getFeeOrderNewVoNew().getExportFee().get(0).getSuperviseCosts());
+
+        //转换输出的格式
+        FeeOrderNewVo resultFeeOrderNewVo = new FeeOrderNewVo();
+        List<FeeOrderNewVo.EntranceFee> entranceFeeList = new ArrayList<>();
+        List<FeeOrderNewVo.DeptManagerFee> deptManagerFeeList = new ArrayList<>();
+        List<FeeOrderNewVo.ExportFee> exportFeeList = new ArrayList<>();
+
+
+        FeeOrderNewVo.EntranceFee jqEntranceFeeConv = new FeeOrderNewVo.EntranceFee();
+        BeanUtils.copyProperties(jqEntranceFee,jqEntranceFeeConv);
+        entranceFeeList.add(jqEntranceFeeConv);
+
+        FeeOrderNewVo.EntranceFee syEntranceFeeConv = new FeeOrderNewVo.EntranceFee();
+        BeanUtils.copyProperties(syEntranceFee,syEntranceFeeConv);
+        entranceFeeList.add(syEntranceFeeConv);
+
+        FeeOrderNewVo.EntranceFee noEntranceFeeConv = new FeeOrderNewVo.EntranceFee();
+        BeanUtils.copyProperties(noEntranceFee,noEntranceFeeConv);
+        entranceFeeList.add(noEntranceFeeConv);
+
+        resultFeeOrderNewVo.setEntranceFee(entranceFeeList);
+
+
+
+        FeeOrderNewVo.DeptManagerFee jqDeptManagerFeeConv = new FeeOrderNewVo.DeptManagerFee();
+        BeanUtils.copyProperties(jqDeptManagerFee,jqDeptManagerFeeConv);
+        deptManagerFeeList.add(jqDeptManagerFeeConv);
+
+        FeeOrderNewVo.DeptManagerFee syDeptManagerFeeConv = new FeeOrderNewVo.DeptManagerFee();
+        BeanUtils.copyProperties(syDeptManagerFee,syDeptManagerFeeConv);
+        deptManagerFeeList.add(syDeptManagerFeeConv);
+
+        FeeOrderNewVo.DeptManagerFee noDeptManagerFeeConv = new FeeOrderNewVo.DeptManagerFee();
+        BeanUtils.copyProperties(noDeptManagerFee,noDeptManagerFeeConv);
+        deptManagerFeeList.add(noDeptManagerFeeConv);
+
+        resultFeeOrderNewVo.setDeptManagerFee(deptManagerFeeList);
+
+
+
+        FeeOrderNewVo.ExportFee jqExportFeeConv = new FeeOrderNewVo.ExportFee();
+        BeanUtils.copyProperties(jqExportFee,jqExportFeeConv);
+        exportFeeList.add(jqExportFeeConv);
+
+        FeeOrderNewVo.ExportFee syExportFeeConv = new FeeOrderNewVo.ExportFee();
+        BeanUtils.copyProperties(syExportFee,syExportFeeConv);
+        exportFeeList.add(syExportFeeConv);
+
+        FeeOrderNewVo.ExportFee noExportFeeConv = new FeeOrderNewVo.ExportFee();
+        BeanUtils.copyProperties(noExportFee,noExportFeeConv);
+        exportFeeList.add(noExportFeeConv);
+
+        resultFeeOrderNewVo.setExportFee(exportFeeList);
+
+
+
+        //入口
+        record.setJqCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(0).getTotalProportion());
+        record.setSyCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(1).getTotalProportion());
+        record.setNoCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(2).getTotalProportion());
+        record.setJqSuperviseCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(0).getSuperviseCosts());
+        record.setSySuperviseCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(1).getSuperviseCosts());
+        record.setNoSuperviseCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(2).getSuperviseCosts());
+        record.setJqOtherCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(0).getOtherCostsProportion());
+        record.setSyOtherCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(1).getOtherCostsProportion());
+        record.setNoOtherCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(2).getOtherCostsProportion());
+
+        record.setJqCostsProportion(feeOrderNewVo.getEntranceFee().get(0).getTotalProportion());
+        record.setSyCostsProportion(feeOrderNewVo.getEntranceFee().get(1).getTotalProportion());
+        record.setNoCostsProportion(feeOrderNewVo.getEntranceFee().get(2).getTotalProportion());
+        record.setJqSuperviseCostsProportion(feeOrderNewVo.getEntranceFee().get(0).getSuperviseCosts());
+        record.setSySuperviseCostsProportion(feeOrderNewVo.getEntranceFee().get(1).getSuperviseCosts());
+        record.setNoSuperviseCostsProportion(feeOrderNewVo.getEntranceFee().get(2).getSuperviseCosts());
+        record.setJqOtherCostsProportion(feeOrderNewVo.getEntranceFee().get(0).getOtherCostsProportion());
+        record.setSyOtherCostsProportion(feeOrderNewVo.getEntranceFee().get(1).getOtherCostsProportion());
+        record.setNoOtherCostsProportion(feeOrderNewVo.getEntranceFee().get(2).getOtherCostsProportion());
+
+
+        //出口
+        record.setJqCostsExportProportionOld(feeOrderNewVoOld.getExportFee().get(0).getTotalProportion());
+        record.setSyCostsExportProportionOld(feeOrderNewVoOld.getExportFee().get(1).getTotalProportion());
+        record.setNoCostsExportProportionOld(feeOrderNewVoOld.getExportFee().get(2).getTotalProportion());
+
+        record.setJqCostsExportProportion(feeOrderNewVo.getExportFee().get(0).getTotalProportion());
+        record.setSyCostsExportProportion(feeOrderNewVo.getExportFee().get(1).getTotalProportion());
+        record.setNoCostsExportProportion(feeOrderNewVo.getExportFee().get(2).getTotalProportion());
+
+        //机构管理费 (交强)
+        //old
+        record.setJqDeptProportionLevel1Old(feeOrderNewVoOld.getDeptManagerFee().get(0).getDeptProportionLevelOne());
+        record.setJqDeptProportionLevel2Old(feeOrderNewVoOld.getDeptManagerFee().get(0).getDeptProportionLevelTwo());
+        record.setJqDeptProportionLevel3Old(feeOrderNewVoOld.getDeptManagerFee().get(0).getDeptProportionLevelThree());
+        record.setJqDeptProportionLevel4Old(feeOrderNewVoOld.getDeptManagerFee().get(0).getDeptProportionLevelFoure());
+        record.setJqDeptProportionLevel5Old(feeOrderNewVoOld.getDeptManagerFee().get(0).getDeptProportionLevelFive());
+
+        //new
+        record.setJqDeptProportionLevel1(feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelOne());
+        record.setJqDeptProportionLevel2(feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelTwo());
+        record.setJqDeptProportionLevel3(feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelThree());
+        record.setJqDeptProportionLevel4(feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelFoure());
+        record.setJqDeptProportionLevel5(feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelFive());
+
+
+
+        //机构管理费 (商业)
+        //old
+        record.setSyDeptProportionLevel1Old(feeOrderNewVoOld.getDeptManagerFee().get(1).getDeptProportionLevelOne());
+        record.setSyDeptProportionLevel2Old(feeOrderNewVoOld.getDeptManagerFee().get(1).getDeptProportionLevelTwo());
+        record.setSyDeptProportionLevel3Old(feeOrderNewVoOld.getDeptManagerFee().get(1).getDeptProportionLevelThree());
+        record.setSyDeptProportionLevel4Old(feeOrderNewVoOld.getDeptManagerFee().get(1).getDeptProportionLevelFoure());
+        record.setSyDeptProportionLevel5Old(feeOrderNewVoOld.getDeptManagerFee().get(1).getDeptProportionLevelFive());
+
+        //new
+        record.setSyDeptProportionLevel1(feeOrderNewVo.getDeptManagerFee().get(1).getDeptProportionLevelOne());
+        record.setSyDeptProportionLevel2(feeOrderNewVo.getDeptManagerFee().get(1).getDeptProportionLevelTwo());
+        record.setSyDeptProportionLevel3(feeOrderNewVo.getDeptManagerFee().get(1).getDeptProportionLevelThree());
+        record.setSyDeptProportionLevel4(feeOrderNewVo.getDeptManagerFee().get(1).getDeptProportionLevelFoure());
+        record.setSyDeptProportionLevel5(feeOrderNewVo.getDeptManagerFee().get(1).getDeptProportionLevelFive());
+
+
+        //机构管理费 (非车)
+        //old
+        record.setNoDeptProportionLevel1Old(feeOrderNewVoOld.getDeptManagerFee().get(2).getDeptProportionLevelOne());
+        record.setNoDeptProportionLevel2Old(feeOrderNewVoOld.getDeptManagerFee().get(2).getDeptProportionLevelTwo());
+        record.setNoDeptProportionLevel3Old(feeOrderNewVoOld.getDeptManagerFee().get(2).getDeptProportionLevelThree());
+        record.setNoDeptProportionLevel4Old(feeOrderNewVoOld.getDeptManagerFee().get(2).getDeptProportionLevelFoure());
+        record.setNoDeptProportionLevel5Old(feeOrderNewVoOld.getDeptManagerFee().get(2).getDeptProportionLevelFive());
+
+        //new
+        record.setNoDeptProportionLevel1(feeOrderNewVo.getDeptManagerFee().get(2).getDeptProportionLevelOne());
+        record.setNoDeptProportionLevel2(feeOrderNewVo.getDeptManagerFee().get(2).getDeptProportionLevelTwo());
+        record.setNoDeptProportionLevel3(feeOrderNewVo.getDeptManagerFee().get(2).getDeptProportionLevelThree());
+        record.setNoDeptProportionLevel4(feeOrderNewVo.getDeptManagerFee().get(2).getDeptProportionLevelFoure());
+        record.setNoDeptProportionLevel5(feeOrderNewVo.getDeptManagerFee().get(2).getDeptProportionLevelFive());
+
+        //保存历史记录
+        record.setFeeOrderId(feeId);
+        insFeeOrderNewRecordService.save(record);
+
+
+        insFeeOrderNew.setJqCostsProportion(jqEntranceFee.getTotalProportion());
+        insFeeOrderNew.setJqCostsPremiums(jqEntranceFee.getTotalAmount());
+        insFeeOrderNew.setSyCostsProportion(syEntranceFee.getTotalProportion());
+        insFeeOrderNew.setSyCostsPremiums(syEntranceFee.getTotalAmount());
+        insFeeOrderNew.setNoCostsProportion(noEntranceFee.getTotalProportion());
+        insFeeOrderNew.setNoCostsPremiums(noEntranceFee.getTotalAmount());
+
+        insFeeOrderNew.setJqSuperviseCostsProportion(jqEntranceFee.getSuperviseCosts());
+        insFeeOrderNew.setJqSuperviseCostsPremiums(jqEntranceFee.getSySuperviseCostsPremiums());
+        insFeeOrderNew.setSySuperviseCostsProportion(syEntranceFee.getSuperviseCosts());
+        insFeeOrderNew.setSySuperviseCostsPremiums(syEntranceFee.getSySuperviseCostsPremiums());
+        insFeeOrderNew.setNoSuperviseCostsProportion(noEntranceFee.getSuperviseCosts());
+        insFeeOrderNew.setNoSuperviseCostsPremiums(noEntranceFee.getSySuperviseCostsPremiums());
+
+        insFeeOrderNew.setJqOtherCostsProportion(jqEntranceFee.getOtherCostsProportion());
+        insFeeOrderNew.setJqOtherCostsPremiums(jqEntranceFee.getOtherCostsPremiums());
+        insFeeOrderNew.setSyOtherCostsProportion(syEntranceFee.getOtherCostsProportion());
+        insFeeOrderNew.setSyOtherCostsPremiums(syEntranceFee.getOtherCostsPremiums());
+        insFeeOrderNew.setNoOtherCostsProportion(noEntranceFee.getOtherCostsProportion());
+        insFeeOrderNew.setNoOtherCostsPremiums(noEntranceFee.getOtherCostsPremiums());
+
+        insFeeOrderNew.setJqDeptProportionLevel1(jqDeptManagerFee.getDeptManagerRadioLevel1());
+        insFeeOrderNew.setJqDeptProportionLevel2(jqDeptManagerFee.getDeptManagerRadioLevel2());
+        insFeeOrderNew.setJqDeptProportionLevel3(jqDeptManagerFee.getDeptManagerRadioLevel3());
+        insFeeOrderNew.setJqDeptProportionLevel4(jqDeptManagerFee.getDeptManagerRadioLevel4());
+        insFeeOrderNew.setJqDeptProportionLevel5(jqDeptManagerFee.getDeptManagerRadioLevel5());
+        insFeeOrderNew.setJqDeptPremiumsLevel1(jqDeptManagerFee.getDeptManagerFeeLevel1());
+        insFeeOrderNew.setJqDeptPremiumsLevel2(jqDeptManagerFee.getDeptManagerFeeLevel2());
+        insFeeOrderNew.setJqDeptPremiumsLevel3(jqDeptManagerFee.getDeptManagerFeeLevel3());
+        insFeeOrderNew.setJqDeptPremiumsLevel4(jqDeptManagerFee.getDeptManagerFeeLevel4());
+        insFeeOrderNew.setJqDeptPremiumsLevel5(jqDeptManagerFee.getDeptManagerFeeLevel5());
+
+        insFeeOrderNew.setSyDeptProportionLevel1(syDeptManagerFee.getDeptManagerRadioLevel1());
+        insFeeOrderNew.setSyDeptProportionLevel2(syDeptManagerFee.getDeptManagerRadioLevel2());
+        insFeeOrderNew.setSyDeptProportionLevel3(syDeptManagerFee.getDeptManagerRadioLevel3());
+        insFeeOrderNew.setSyDeptProportionLevel4(syDeptManagerFee.getDeptManagerRadioLevel4());
+        insFeeOrderNew.setSyDeptProportionLevel5(syDeptManagerFee.getDeptManagerRadioLevel5());
+        insFeeOrderNew.setSyDeptPremiumsLevel1(syDeptManagerFee.getDeptManagerFeeLevel1());
+        insFeeOrderNew.setSyDeptPremiumsLevel2(syDeptManagerFee.getDeptManagerFeeLevel2());
+        insFeeOrderNew.setSyDeptPremiumsLevel3(syDeptManagerFee.getDeptManagerFeeLevel3());
+        insFeeOrderNew.setSyDeptPremiumsLevel4(syDeptManagerFee.getDeptManagerFeeLevel4());
+        insFeeOrderNew.setSyDeptPremiumsLevel5(syDeptManagerFee.getDeptManagerFeeLevel5());
+
+        insFeeOrderNew.setNoDeptProportionLevel1(noDeptManagerFee.getDeptManagerRadioLevel1());
+        insFeeOrderNew.setNoDeptProportionLevel2(noDeptManagerFee.getDeptManagerRadioLevel2());
+        insFeeOrderNew.setNoDeptProportionLevel3(noDeptManagerFee.getDeptManagerRadioLevel3());
+        insFeeOrderNew.setNoDeptProportionLevel4(noDeptManagerFee.getDeptManagerRadioLevel4());
+        insFeeOrderNew.setNoDeptProportionLevel5(noDeptManagerFee.getDeptManagerRadioLevel5());
+        insFeeOrderNew.setNoDeptPremiumsLevel1(noDeptManagerFee.getDeptManagerFeeLevel1());
+        insFeeOrderNew.setNoDeptPremiumsLevel2(noDeptManagerFee.getDeptManagerFeeLevel2());
+        insFeeOrderNew.setNoDeptPremiumsLevel3(noDeptManagerFee.getDeptManagerFeeLevel3());
+        insFeeOrderNew.setNoDeptPremiumsLevel4(noDeptManagerFee.getDeptManagerFeeLevel4());
+        insFeeOrderNew.setNoDeptPremiumsLevel5(noDeptManagerFee.getDeptManagerFeeLevel5());
+
+        //保存新的比例
+        insFeeOrderNewService.updateById(insFeeOrderNew);
+        return true;
+
+    }
 }

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

@@ -109,7 +109,8 @@ public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreem
     @Override
     public List<PtlAgreementUndwrtRulesNew> rulesList(String agreementId) {
         List<PtlAgreementUndwrtRulesNew> rulesList = baseMapper.selectList(new LambdaQueryWrapper<PtlAgreementUndwrtRulesNew>()
-                .eq(PtlAgreementUndwrtRulesNew::getAgreementId, agreementId));
+                .eq(PtlAgreementUndwrtRulesNew::getAgreementId, agreementId)
+                .eq(PtlAgreementUndwrtRulesNew::getValidInd, "1"));
         List<PtlAgreementUndwrtRulesAttrLink> ptlAgreementUndwrtRulesAttrLinkList = ptlAgreementUndwrtRulesAttrLinkService.list();
         rulesList.forEach(item -> {
             List<PtlAgreementUndwrtRulesAttrLink> collect = ptlAgreementUndwrtRulesAttrLinkList.stream().filter(x -> Objects.equals(x.getRulesId(), item.getId())).collect(Collectors.toList());
@@ -214,7 +215,7 @@ public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreem
         //生成批次ID
         String uuid = UUID.randomUUID().toString();
         ptlAgreementUndwrtRulesNewHistory.setBatch(uuid);
-
+        ptlAgreementUndwrtRulesNewHistory.setId(null);
         ptlAgreementUndwrtRulesNewHistory.setOperatorType("add");
         ptlAgreementUndwrtRulesNewHistory.setModifier(BaseController.getUser().getId());
         ptlAgreementUndwrtRulesNewHistory.setOperatorTime(LocalDateTime.now());
@@ -236,7 +237,7 @@ public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreem
                 BeanUtils.copyProperties(x, undwrtRulesAttrLinkHistory);
                 //设置承包规则费用因子历史记录
                 undwrtRulesAttrLinkHistory.setBatch(uuid);
-
+                undwrtRulesAttrLinkHistory.setId(null);
                 undwrtRulesAttrLinkHistory.setOperatorType("add");
                 undwrtRulesAttrLinkHistory.setModifier(BaseController.getUser().getId());
                 undwrtRulesAttrLinkHistory.setOperatorTime(LocalDateTime.now());
@@ -251,7 +252,7 @@ public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreem
                     BeanUtils.copyProperties(x, undwrtRulesAttrLinkHistory);
                     //设置承包规则费用因子历史记录
                     undwrtRulesAttrLinkHistory.setBatch(uuid);
-
+                    undwrtRulesAttrLinkHistory.setId(null);
                     undwrtRulesAttrLinkHistory.setOperatorType("add");
                     undwrtRulesAttrLinkHistory.setModifier(BaseController.getUser().getId());
                     undwrtRulesAttrLinkHistory.setOperatorTime(LocalDateTime.now());
@@ -280,7 +281,7 @@ public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreem
         //生成批次ID
         String uuid = UUID.randomUUID().toString();
         ptlAgreementUndwrtRulesNewHistory.setBatch(uuid);
-
+        ptlAgreementUndwrtRulesNewHistory.setId(null);
         ptlAgreementUndwrtRulesNewHistory.setOperatorType("update");
         ptlAgreementUndwrtRulesNewHistory.setModifier(BaseController.getUser().getId());
         ptlAgreementUndwrtRulesNewHistory.setOperatorTime(LocalDateTime.now());
@@ -317,7 +318,7 @@ public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreem
                 BeanUtils.copyProperties(x, undwrtRulesAttrLinkHistory);
                 //设置承包规则费用因子历史记录
                 undwrtRulesAttrLinkHistory.setBatch(uuid);
-
+                undwrtRulesAttrLinkHistory.setId(null);
                 undwrtRulesAttrLinkHistory.setOperatorType("update");
                 undwrtRulesAttrLinkHistory.setModifier(BaseController.getUser().getId());
                 undwrtRulesAttrLinkHistory.setOperatorTime(LocalDateTime.now());
@@ -334,7 +335,7 @@ public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreem
                         BeanUtils.copyProperties(x, undwrtRulesAttrLinkHistory);
                         //设置承包规则费用因子历史记录
                         undwrtRulesAttrLinkHistory.setBatch(uuid);
-
+                        undwrtRulesAttrLinkHistory.setId(null);
                         undwrtRulesAttrLinkHistory.setOperatorType("update");
                         undwrtRulesAttrLinkHistory.setModifier(BaseController.getUser().getId());
                         undwrtRulesAttrLinkHistory.setOperatorTime(LocalDateTime.now());
@@ -349,7 +350,7 @@ public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreem
                         BeanUtils.copyProperties(x, undwrtRulesAttrLinkHistory);
                         //设置承包规则费用因子历史记录
                         undwrtRulesAttrLinkHistory.setBatch(uuid);
-
+                        undwrtRulesAttrLinkHistory.setId(null);
                         undwrtRulesAttrLinkHistory.setOperatorType("update");
                         undwrtRulesAttrLinkHistory.setModifier(BaseController.getUser().getId());
                         undwrtRulesAttrLinkHistory.setOperatorTime(LocalDateTime.now());
@@ -378,7 +379,7 @@ public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreem
         //生成批次ID
         String uuid = UUID.randomUUID().toString();
         ptlAgreementUndwrtRulesNewHistory.setBatch(uuid);
-
+        ptlAgreementUndwrtRulesNewHistory.setId(null);
         ptlAgreementUndwrtRulesNewHistory.setOperatorType("delete");
         ptlAgreementUndwrtRulesNewHistory.setModifier(BaseController.getUser().getId());
         ptlAgreementUndwrtRulesNewHistory.setOperatorTime(LocalDateTime.now());
@@ -396,6 +397,7 @@ public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreem
             BeanUtils.copyProperties(x, costsAttrLinkHistory);
             //设置承包规则费用因子历史记录
             costsAttrLinkHistory.setBatch(uuid);
+            costsAttrLinkHistory.setId(null);
             costsAttrLinkHistory.setOperatorType("add");
             costsAttrLinkHistory.setModifier(BaseController.getUser().getId());
             costsAttrLinkHistory.setOperatorTime(LocalDateTime.now());

+ 49 - 0
src/main/resources/mapper/modules/admin/SysAmountAuditingMapper.xml

@@ -82,5 +82,54 @@
 
     </select>
 
+    <select id="queryPageOrderNew" resultType="com.ydtech.modules.admin.model.po.SysAmountAuditingEntity">
+        select
+        a.id as "id",
+        a.bank_number as "bankNumber",
+        a.amount as "amount",
+        a.user_id as "userId",
+        a.create_time as "createTime",
+        a.auditing_status as "auditingStatus",
+        a.amount_status as "amountStatus",
+        a.auditing_time as "auditingTime",
+        a.auditing_user_id as "auditingUserId",
+        b.user_amount as "userAmount",
+        b.amount as "historyAmount",
+        b.surplus_amount as "surplusAmount",
+        su.name as "userName",
+        su2.name as "auditingUserName",
+        su.dept_id as "deptId",
+        sd.name as "deptName",
+        bc.bank_account as "bankAccount"
+        from sys_amount_auditing a
+        left join sys_user_account_history b on a.id = b.auditiing_id
+        left join sys_user su on su.id =a.user_id
+        left join sys_dept sd on sd.id =su.dept_id
+        left join sys_user_bank_card bc on bc.bank_number =a.bank_number
+        left join sys_user su2 on su2.id = a.auditing_user_id
+        <where>
+            <if test="auditingStatus !=null  and auditingStatus != ''">
+                a.auditing_status=#{auditingStatus}
+            </if>
+            <if test="amountStatus !=null  and amountStatus != ''">
+                and a.amount_status=#{amountStatus}
+            </if>
+
+            <if test="id !=null  and id != ''">
+                and a.id=#{id}
+            </if>
+
+
+            <if test="userId !=null  and userId != ''">
+                and a.user_id=#{userId}
+            </if>
+
+            <if test="startDate !=null and startDate != ''  and  endDate !=null  and  endDate!= '' ">
+                and DATE_FORMAT( a.auditing_time, '%Y-%m-%d')  between DATE_FORMAT(#{startDate}, '%Y-%m-%d') and DATE_FORMAT(#{endDate}, '%Y-%m-%d')
+            </if>
+        </where>
+
+    </select>
+
 
 </mapper>

+ 71 - 0
src/main/resources/mapper/modules/admin/SysUserLinkPtlAgreementMapper.xml

@@ -0,0 +1,71 @@
+<?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.admin.dao.SysUserLinkPtlAgreementMapper">
+    <sql id="Base_Column_List">
+            link.id as id,
+            user.id as "sysUser.id",
+            user.name as "sysUser.name",
+            agree.companies_type as  "ptlAgreement.id",
+            agree.companies_type as  "ptlAgreement.companiesType",
+            agree.agreement_type as  "ptlAgreement.agreementType",
+            agree.agreement_code as  "ptlAgreement.agreementCode",
+            agree.agreement_name as  "ptlAgreement.agreementName",
+            agree.agreement_abbreviation as  "ptlAgreement.underwritingDescription",
+            agree.partner_companies_id as  "ptlAgreement.partnerCompaniesId",
+            agree.association_companies_id as  "ptlAgreement.associationCompaniesId",
+            agree.insurance_company as  "ptlAgreement.insuranceCompany",
+            agree.insurance_company_id as  "ptlAgreement.insuranceCompanyId",
+            agree.start_date as  "ptlAgreement.startDate",
+            agree.end_date  as  "ptlAgreement.endDate",
+            agree.money_time  as  "ptlAgreement.moneyTime",
+            agree.match_type   as  "ptlAgreement.matchType",
+            agree.docking_person  as  "ptlAgreement.dockingPerson",
+            agree.docking_phone  as  "ptlAgreement.dockingPhone",
+            agree.with_tax  as  "ptlAgreement.withTax",
+            agree.money_type  as  "ptlAgreement.moneyType",
+            agree.valid_status  as  "ptlAgreement.validStatus",
+            agree.file_id   as  "ptlAgreement.fileId",
+            agree.audit_content  as  "ptlAgreement.auditContent",
+            agree.audit_status  as  "ptlAgreement.auditStatus",
+            agree.serial_number	  as  "ptlAgreement.serialNumber",
+            agree.underwriting_description	 as  "ptlAgreement.underwritingDescription"
+    </sql>
+
+    <select id="queryPage"  resultType="com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto">
+        SELECT
+          <include refid="Base_Column_List"/>
+        FROM
+        sys_user_link_pl_agreement link
+        LEFT JOIN sys_user USER ON link.user_id = USER.id
+        LEFT JOIN ptl_agreement agree ON link.ptl_agreement_id = agree.id
+        <where>
+            <if test="vo.userId != null and vo.userId != ''">
+                and  link.user_id =  #{vo.userId}
+            </if>
+            <if test="vo.ptlAgreementId != null">
+                and link.ptl_agreement_id = #{vo.ptlAgreementId}
+            </if>
+        </where>
+    </select>
+
+    <delete id="deleteByUserId">
+      delete  from     sys_user_link_pl_agreement
+     where   user_id=#{userId}
+    </delete>
+
+    <select id="findPtlAgreementListByUserId"  resultType="com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto">
+        SELECT
+             <include refid="Base_Column_List"/>
+        FROM
+        sys_user_link_pl_agreement link
+        LEFT JOIN sys_user USER ON link.user_id = USER.id
+        LEFT JOIN ptl_agreement agree ON link.ptl_agreement_id = agree.id
+        <where>
+            <if test="userId != null and userId != ''">
+                and  link.user_id =  #{userId}
+            </if>
+        </where>
+    </select>
+</mapper>

+ 9 - 1
src/main/resources/mapper/modules/fnc/InsPlyIncomeMapper.xml

@@ -74,6 +74,14 @@
                <if test="handlingFeesStatus !=null  and  handlingFeesStatus  !=''">
                     and a.handling_fees_status =#{handlingFeesStatus}
                 </if>
+
+                <if test="orderno !=null  and  orderno  !=''">
+                    and a.orderno =#{orderno}
+                </if>
+
+                <if test="policyno !=null  and  policyno  !=''">
+                    and a.policyno =#{policyno}
+                </if>
                 <if test="documentaryFeesStatus !=null  and  documentaryFeesStatus  !=''">
                     and a.documentary_fees_status =#{documentaryFeesStatus}
                 </if>
@@ -83,7 +91,7 @@
 
     <select id="totalQuery"  resultType="com.ydtech.modules.fnc.entity.InsPlyIncome">
             select
-                 sum(a.other_feevalue) as "totAmount",
+                sum(a.other_feevalue) as "totAmount",
                 GROUP_CONCAT(orderno) as  "ids",
                 count(1) as "totalorders"
                 from  ins_ply_income a

+ 15 - 1
src/main/resources/mapper/modules/fnc/SettlementDocumentaryFeesMapper.xml

@@ -9,6 +9,10 @@
         <result column="time_frame" property="timeFrame"/>
         <result column="total_amount" property="totalAmount"/>
         <result column="create_time" property="createTime"/>
+        <result column="start_time" property="startTime"/>
+        <result column="end_time" property="endTime"/>
+        <result column="settlement_amount" property="settlementAmount"/>
+        <result column="unsettled_amount" property="unsettledAmount"/>
     </resultMap>
 
 
@@ -19,7 +23,17 @@
             a.total_orders as "totalOrders",
             a.time_frame as "timeFrame",
             a.total_amount as "totalAmount",
-            a.create_time as "createTime"
+            a.create_time as "createTime",
+            a.start_time as "startTime",
+            a.end_time as "endTime",
+            a.settlement_amount as "settlementAmount",
+            a.unsettled_amount as "unsettledAmount"
+            from  settlement_documentary_fees  a
+    </select>
+
+    <select id="selectAll" resultType="com.ydtech.modules.fnc.entity.SettlementDocumentaryFeesEntity">
+        select
+            *
             from  settlement_documentary_fees  a
     </select>
 

+ 1 - 0
src/main/resources/mapper/modules/fnc/SettlementDocumentaryLogMapper.xml

@@ -9,6 +9,7 @@
         <result column="settlement_documentary_id" property="settlementDocumentaryId"/>
         <result column="amount_type" property="amountType"/>
         <result column="create_time" property="createTime"/>
+        <result column="handing_amount" property="handingAmount"/>
     </resultMap>