Pārlūkot izejas kodu

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

wks 2 gadi atpakaļ
vecāks
revīzija
f7d2fc0311
51 mainītis faili ar 1461 papildinājumiem un 94 dzēšanām
  1. 3 0
      sql/Online.sql
  2. 17 4
      src/main/java/com/ydtech/modules/admin/controller/SysUserController.java
  3. 8 8
      src/main/java/com/ydtech/modules/admin/controller/SysUserLinkPtlAgreementController.java
  4. 31 0
      src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java
  5. 7 1
      src/main/java/com/ydtech/modules/admin/model/SysDeptAccountWithdraw.java
  6. 2 2
      src/main/java/com/ydtech/modules/admin/model/dto/SysUserLinkPtlAgreementDto.java
  7. 1 1
      src/main/java/com/ydtech/modules/admin/model/po/SysUserLinkPtlAgreement.java
  8. 2 1
      src/main/java/com/ydtech/modules/admin/model/vo/SysUserBaseVO.java
  9. 2 2
      src/main/java/com/ydtech/modules/admin/model/vo/SysUserLinkPtlAgreementAddVo.java
  10. 1 1
      src/main/java/com/ydtech/modules/admin/model/vo/SysUserLinkPtlAgreementVo.java
  11. 28 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysUserVOExt.java
  12. 7 0
      src/main/java/com/ydtech/modules/admin/service/SysUserService.java
  13. 2 16
      src/main/java/com/ydtech/modules/admin/service/impl/SysDeptAccountServiceImpl.java
  14. 24 1
      src/main/java/com/ydtech/modules/admin/service/impl/SysDeptAccountWithdrawServiceImpl.java
  15. 17 5
      src/main/java/com/ydtech/modules/admin/service/impl/SysDeptServiceImpl.java
  16. 11 2
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java
  17. 17 0
      src/main/java/com/ydtech/modules/esm/dao/InsOrderSetUserHisMapper.java
  18. 76 0
      src/main/java/com/ydtech/modules/esm/model/po/InsOrderSetUserHis.java
  19. 54 0
      src/main/java/com/ydtech/modules/esm/model/vo/InsOrderSetUserHisVo.java
  20. 14 0
      src/main/java/com/ydtech/modules/esm/service/InsOrderSetUserHisService.java
  21. 37 0
      src/main/java/com/ydtech/modules/esm/service/impl/InsOrderSetUserHisServiceImpl.java
  22. 6 6
      src/main/java/com/ydtech/modules/fee/service/impl/CostsCalServiceImpl.java
  23. 1 1
      src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceImpl.java
  24. 6 2
      src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java
  25. 4 1
      src/main/java/com/ydtech/modules/ins/model/InsTaskHistory.java
  26. 24 0
      src/main/java/com/ydtech/modules/order/constants/OrderLinkTypeConstants.java
  27. 82 1
      src/main/java/com/ydtech/modules/order/controller/InsOrdersController.java
  28. 21 0
      src/main/java/com/ydtech/modules/order/controller/OrderTaskPoolsController.java
  29. 28 1
      src/main/java/com/ydtech/modules/order/dao/InsOrdersMapper.java
  30. 3 0
      src/main/java/com/ydtech/modules/order/entity/vo/OrderTaskPoolsVo.java
  31. 14 2
      src/main/java/com/ydtech/modules/order/service/InsOrdersService.java
  32. 22 0
      src/main/java/com/ydtech/modules/order/service/OrderTaskPoolsService.java
  33. 68 0
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  34. 96 0
      src/main/java/com/ydtech/modules/order/service/impl/OrderTaskPoolsServiceImpl.java
  35. 6 0
      src/main/java/com/ydtech/modules/protocol/controller/PtlAgreementController.java
  36. 2 0
      src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementSaveDto.java
  37. 15 0
      src/main/java/com/ydtech/modules/protocol/service/PtlAgreementService.java
  38. 33 0
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
  39. 31 3
      src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementController.java
  40. 8 0
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsNew.java
  41. 19 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCostsCopyVo.java
  42. 12 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductQueryVo.java
  43. 10 8
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewService.java
  44. 259 24
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java
  45. 11 0
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesNewServiceImpl.java
  46. 29 0
      src/main/java/com/ydtech/utils/LocalDateTimeDeserializer.java
  47. 2 1
      src/main/resources/mapper/modules/admin/SysDeptAccountWithdrawMapper.xml
  48. 42 0
      src/main/resources/mapper/modules/admin/SysUserMapper.xml
  49. 10 0
      src/main/resources/mapper/modules/esm/InsOrderSetUserHisMapper.xml
  50. 194 0
      src/main/resources/mapper/modules/order/InsOrdersMapper.xml
  51. 42 0
      src/main/resources/sql/sql.txt

+ 3 - 0
sql/Online.sql

@@ -49,3 +49,6 @@ INSERT INTO `sys_menu`(`id`, `name`, `parent_id`, `url`, `perms`, `type`, `icon`
 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);
 
+--  inv_source表 新增修改人名字 修改人id  前端还没联调  正式库先不加字段
+ALTER TABLE `inv_source` ADD COLUMN `update_name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '修改人名字' AFTER `revenue_userid`;
+ALTER TABLE `inv_source` ADD COLUMN `update_userid` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '修改人id' AFTER `update_name`;

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

@@ -32,7 +32,6 @@ import com.ydtech.modules.order.service.InsUploadFilesService;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.security.utils.PasswordUtils;
 import com.ydtech.utils.StringUtils;
-import com.ydtech.utils.excel.ExcelEasypoiUtils;
 import com.ydtech.utils.idgen.IdGenerate;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -43,13 +42,10 @@ import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
-import java.io.IOException;
 import java.util.Date;
 import java.util.List;
-import java.util.stream.Collectors;
 
 import static com.ydtech.constants.RedisConstant.PHONE_VERIFICATION_CODE_KEY;
 
@@ -729,4 +725,21 @@ public class SysUserController extends BaseController {
         return HttpResult.ok("", sysUserService.getQuUserByCompany(quUserNumDto));
     }
 
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/16 16:16
+     *  @Description:  获取待客录入可选业务员列表   通过工号、姓名、手机号、身份证号
+     */
+    @ApiOperation(value = "获取待客录入可选业务员列表   通过工号、姓名、手机号、身份证号")
+    @PostMapping(value = "/getAllUsersByHospitality")
+    public HttpResult getAllUsersByHospitality(@RequestBody SysUserVOExt sysUserVOExt) {
+        try{
+            List<SysUserBaseVO> userList = sysUserService.getAllUsersByHospitality(sysUserVOExt);
+            return HttpResult.ok(userList);
+        }catch (Exception e){
+            return HttpResult.error("查询失败"+e.getMessage());
+        }
+
+    }
 }

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

@@ -28,7 +28,7 @@ public class SysUserLinkPtlAgreementController extends BaseController {
     private SysUserLinkPtlAgreementService sysUserLinkPtlAgreementService;
 
     @PostMapping("queryPage")
-    @ApiOperation(value = "线人员关联协议分页")
+    @ApiOperation(value = "线人员关联协议分页")
     public HttpResult<BasePageResult<SysUserLinkPtlAgreementDto>> queryPage(@RequestBody  SysUserLinkPtlAgreementVo sysUserLinkPtlAgreementVo) {
 
         try{
@@ -43,7 +43,7 @@ public class SysUserLinkPtlAgreementController extends BaseController {
     @ApiOperation("前线人员关联协议添加修改")
     public HttpResult<Object> addOrUpdate(@RequestBody SysUserLinkPtlAgreementAddVo sysUserLinkPtlAgreementAddVo) {
         if(sysUserLinkPtlAgreementAddVo.getUserId()==null || "".equals(sysUserLinkPtlAgreementAddVo.getUserId())) {
-            return HttpResult.error("线人员id不能为空");
+            return HttpResult.error("线人员id不能为空");
         }
         if(sysUserLinkPtlAgreementAddVo.getPtlAgreementIds()==null || sysUserLinkPtlAgreementAddVo.getPtlAgreementIds().size()==0) {
             return HttpResult.error("协议ids不能为空");
@@ -58,11 +58,11 @@ public class SysUserLinkPtlAgreementController extends BaseController {
     }
 
     @PostMapping("delete")
-    @ApiOperation("线人员关联协议删除")
+    @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不能为空");
+            return HttpResult.error("线人员关联ids不能为空");
         }
         try{
             sysUserLinkPtlAgreementService.deleteByIds(ids);
@@ -73,7 +73,7 @@ public class SysUserLinkPtlAgreementController extends BaseController {
     }
 
     @GetMapping("findUserList")
-    @ApiOperation("查询所有的线人员列表")
+    @ApiOperation("查询所有的线人员列表")
     public HttpResult<Object> findUserList() {
         try{
             List<SysUserBaseVO> list= sysUserLinkPtlAgreementService.findUserList();
@@ -100,11 +100,11 @@ public class SysUserLinkPtlAgreementController extends BaseController {
     }
 
     @GetMapping("/findPtlAgreementListByUserId/{userId}")
-    @ApiOperation(value = "线人员关联协议列表")
-    @ApiImplicitParam(name = "userId", value = "线人员id", required = true)
+    @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不能为空");
+            return HttpResult.error("线人员id不能为空");
         }
         try{
             List<SysUserLinkPtlAgreementDto> result = sysUserLinkPtlAgreementService.findPtlAgreementListByUserId(userId);

+ 31 - 0
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -11,6 +11,7 @@ import com.ydtech.modules.admin.model.dto.QuUserNumDto;
 import com.ydtech.modules.admin.model.dto.SysUserDto;
 import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
 import com.ydtech.modules.admin.model.vo.SysUserVO;
+import com.ydtech.modules.admin.model.vo.SysUserVOExt;
 import com.ydtech.modules.base.model.dto.PageDto;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -180,6 +181,36 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
              " WHERE t1.`status` = 1 AND t1.id LIKE '%M%'")
 
     List<SysUserBaseVO> findQXUserList();
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/16 16:25
+     *  @Description: 通过工号、姓名、手机号查询工号信息
+     */
+    List<SysUserBaseVO> getAllUsersByHospitality(@Param("user") SysUserVOExt sysUserVOExt);
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/16 16:25
+     *  @Description: 查询领导人为用户id的数据
+     */
+    @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.leader_id = #{userId}")
+    List<SysUserBaseVO> getAllUsersByLeaderId(@Param("userId") String userId);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/17 16:55
+     *  @Description:  查询所有的代理人
+     */
+    @Select(" SELECT su.id FROM  sys_user su  LEFT JOIN sys_user_info info ON info.id = su.id  LEFT JOIN sys_dept sd ON su.dept_id = sd.id " +
+            " LEFT JOIN sys_dept psd ON psd.id = sd.parent_id   LEFT JOIN sys_user_role t3 ON su.id = t3.user_id  LEFT JOIN sys_role t4 ON t3.role_id = t4.id  " +
+            " AND sd.del_flag = '0'  and su.status = 1 " +
+            " WHERE  su.dept_id LIKE concat( '%', 9, '%' )    AND t3.role_id IN ( 20 )  AND sd.management_source = 2")
+    List<String> getAgentUserIds();
+
 }
 
 

+ 7 - 1
src/main/java/com/ydtech/modules/admin/model/SysDeptAccountWithdraw.java

@@ -3,12 +3,16 @@ package com.ydtech.modules.admin.model;
 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 com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.ydtech.utils.LocalDateTimeDeserializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 
 
 @Data
@@ -41,5 +45,7 @@ public class SysDeptAccountWithdraw implements Serializable {
 
     @TableField(value = "create_time")
     @ApiModelProperty("创建时间")
-    private String createTime;
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    private LocalDateTime createTime;
 }

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

@@ -17,10 +17,10 @@ import lombok.Data;
 @ApiModel
 public class SysUserLinkPtlAgreementDto extends PageRequest {
 
-    @ApiModelProperty("线人员关联协议id")
+    @ApiModelProperty("线人员关联协议id")
     private Long id;
 
-    @ApiModelProperty("线人员用户")
+    @ApiModelProperty("线人员用户")
     private SysUser sysUser;
 
     @ApiModelProperty("协议信息")

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

@@ -27,7 +27,7 @@ public class SysUserLinkPtlAgreement implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
     /***
-     * 线用户ID
+     * 线用户ID
      */
     @TableField(value = "user_id")
     private  String userId;

+ 2 - 1
src/main/java/com/ydtech/modules/admin/model/vo/SysUserBaseVO.java

@@ -40,6 +40,7 @@ public class SysUserBaseVO {
     private String roleId;
     @ApiModelProperty(value = "角色名称")
     private String roleName;
-
+    @ApiModelProperty(value = "工号类型")
+    private String noType;
 
 }

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

@@ -11,7 +11,7 @@ import java.util.List;
  *  @version
  *  @author: hxl
  *  @Date: 2024/4/15 15:08
- *  @Description: 线人员添加
+ *  @Description: 线人员添加
  */
 @Data
 @ApiModel
@@ -20,7 +20,7 @@ public class SysUserLinkPtlAgreementAddVo {
     /***
      * 用户ID
      */
-    @ApiModelProperty("线用户ID")
+    @ApiModelProperty("线用户ID")
     private String userId;
 
     /***

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

@@ -18,7 +18,7 @@ public class SysUserLinkPtlAgreementVo extends BasePageVO {
     /***
      * 用户ID
      */
-    @ApiModelProperty("线用户ID")
+    @ApiModelProperty("线用户ID")
     private String userId;
 
     /***

+ 28 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysUserVOExt.java

@@ -0,0 +1,28 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/4/16 16:12
+ *  @Description: 待客录入查询类
+ */
+@Data
+@ApiModel("待客录入查询类")
+public class SysUserVOExt {
+
+    @ApiModelProperty("工号")
+    private String userId;
+
+    @ApiModelProperty("业务员名称")
+    private String name;
+
+    @ApiModelProperty("手机号")
+    private String mobile;
+
+    @ApiModelProperty("身份证号")
+    private String identity;
+}

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

@@ -133,6 +133,13 @@ public interface SysUserService extends IService<SysUser> {
     IPage<QuUserNum> quUserNum(QuUserNumDto quUserNumDto);
 
     IPage<QuUserNum> getQuUserByCompany(QuUserNumDto quUserNumDto);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/16 15:50
+     *  @Description: 获取待客录入的可选业务员
+     */
+    List<SysUserBaseVO> getAllUsersByHospitality(SysUserVOExt sysUserVOExt);
 }
 
 

+ 2 - 16
src/main/java/com/ydtech/modules/admin/service/impl/SysDeptAccountServiceImpl.java

@@ -23,7 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Date;
+import java.time.LocalDateTime;
 import java.util.List;
 
 @Service
@@ -86,20 +86,6 @@ public class SysDeptAccountServiceImpl extends ServiceImpl<SysDeptAccountMapper,
         // 减去提现金额
         deptAccount.setManagementFee(deptAccount.getManagementFee().subtract(sysDeptAccount.getAmount()));
         sysDeptAccountService.updateById(deptAccount);
-        // 机构历史明细生成提现明细
-        SysDeptAccountHistory sysDeptAccountHistory = new SysDeptAccountHistory();
-        sysDeptAccountHistory.setId(IdGenerate.nextId());
-        sysDeptAccountHistory.setDeptId(sysDeptAccount.getDeptId());
-        sysDeptAccountHistory.setAmount(sysDeptAccount.getAmount());
-        sysDeptAccountHistory.setSurplusAmount(deptAccount.getManagementFee());
-        sysDeptAccountHistory.setSuborder(null);
-        sysDeptAccountHistory.setDocumentary("1"); //提现
-        sysDeptAccountHistory.setFromBankCard(null);
-        sysDeptAccountHistory.setToBankCard(null);
-        sysDeptAccountHistory.setUserId(BaseController.getUser().getId());
-        sysDeptAccountHistory.setCreateTime(new Date());
-        sysDeptAccountHistory.setRemark("从" + sysDept.getName() + "机构账户中提现" + sysDeptAccountHistory.getAmount() + "元");
-        sysDeptAccountHistoryService.save(sysDeptAccountHistory);
 
         // 生成提现审核数据
         SysDeptAccountWithdraw sysDeptAccountWithdraw = new SysDeptAccountWithdraw();
@@ -109,7 +95,7 @@ public class SysDeptAccountServiceImpl extends ServiceImpl<SysDeptAccountMapper,
         sysDeptAccountWithdraw.setAmount(sysDeptAccount.getAmount());
         sysDeptAccountWithdraw.setStatus(SysDeptAccountStatus.WAIT.getCode()); //待审核
         sysDeptAccountWithdraw.setRemark("");
-        sysDeptAccountWithdraw.setCreateTime(String.valueOf(new Date()));
+        sysDeptAccountWithdraw.setCreateTime(LocalDateTime.now());
         sysDeptAccountWithdrawService.save(sysDeptAccountWithdraw);
 
         return HttpResult.ok("", sysDeptAccount);

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

@@ -9,13 +9,19 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageRequest;
 import com.ydtech.modules.admin.dao.SysDeptAccountWithdrawMapper;
 import com.ydtech.modules.admin.model.SysDeptAccount;
+import com.ydtech.modules.admin.model.SysDeptAccountHistory;
 import com.ydtech.modules.admin.model.SysDeptAccountWithdraw;
 import com.ydtech.modules.admin.model.vo.SysDeptAccountWithdrawVo;
+import com.ydtech.modules.admin.service.SysDeptAccountHistoryService;
 import com.ydtech.modules.admin.service.SysDeptAccountService;
 import com.ydtech.modules.admin.service.SysDeptAccountWithdrawService;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.utils.idgen.IdGenerate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
+
 
 @Service
 public class SysDeptAccountWithdrawServiceImpl extends ServiceImpl<SysDeptAccountWithdrawMapper, SysDeptAccountWithdraw> implements SysDeptAccountWithdrawService {
@@ -27,6 +33,9 @@ public class SysDeptAccountWithdrawServiceImpl extends ServiceImpl<SysDeptAccoun
     private SysDeptAccountWithdrawService sysDeptAccountWithdrawService;
     @Autowired
     private SysDeptAccountService sysDeptAccountService;
+
+    @Autowired
+    private SysDeptAccountHistoryService sysDeptAccountHistoryService;
     @Override
     public IPage<SysDeptAccountWithdraw> getList(SysDeptAccountWithdrawVo sysDeptAccountWithdrawVo) {
         PageRequest pageRequest = new PageRequest();
@@ -41,8 +50,22 @@ public class SysDeptAccountWithdrawServiceImpl extends ServiceImpl<SysDeptAccoun
     public HttpResult updateByStatus(SysDeptAccountWithdraw sysDeptAccountWithdraw) {
         if (sysDeptAccountWithdraw.getStatus().equals(SysDeptAccountStatus.PASS.getCode())) {
             SysDeptAccount sysDeptAccount = sysDeptAccountService.getById(sysDeptAccountWithdraw.getDeptId());
-            sysDeptAccount.setManagementFee(sysDeptAccount.getManagementFee().subtract(sysDeptAccountWithdraw.getAmount()));
+            sysDeptAccount.setManagementFee(sysDeptAccount.getManagementFee());
             sysDeptAccountService.updateById(sysDeptAccount);
+            // 机构历史明细生成提现明细
+            SysDeptAccountHistory sysDeptAccountHistory = new SysDeptAccountHistory();
+            sysDeptAccountHistory.setId(IdGenerate.nextId());
+            sysDeptAccountHistory.setDeptId(sysDeptAccount.getDeptId());
+            sysDeptAccountHistory.setAmount(sysDeptAccountWithdraw.getAmount());
+            sysDeptAccountHistory.setSurplusAmount(sysDeptAccount.getManagementFee());
+            sysDeptAccountHistory.setSuborder(sysDeptAccountWithdraw.getId());
+            sysDeptAccountHistory.setDocumentary("1"); //提现
+            sysDeptAccountHistory.setFromBankCard(null);
+            sysDeptAccountHistory.setToBankCard(null);
+            sysDeptAccountHistory.setUserId(BaseController.getUser().getId());
+            sysDeptAccountHistory.setCreateTime(new Date());
+            sysDeptAccountHistory.setRemark("从" + sysDeptAccountWithdraw.getName() + "机构账户中提现" + sysDeptAccountWithdraw.getAmount() + "元");
+            sysDeptAccountHistoryService.save(sysDeptAccountHistory);
         }
         if (sysDeptAccountWithdraw.getStatus().equals(SysDeptAccountStatus.REJECT.getCode())) {
             SysDeptAccount sysDeptAccount = sysDeptAccountService.getById(sysDeptAccountWithdraw.getDeptId());

+ 17 - 5
src/main/java/com/ydtech/modules/admin/service/impl/SysDeptServiceImpl.java

@@ -18,6 +18,7 @@ import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.utils.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 
 import java.util.ArrayList;
@@ -107,6 +108,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
     }
 
     @Override
+    @Transactional
     public void addDept(SysDeptVo sysDeptVo) {
         SysDept sysDept = new SysDept();
         BeanUtils.copyProperties(sysDeptVo, sysDept);
@@ -169,7 +171,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
             LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
             lqw.eq(SysDept::getDelFlag, 0); // 删除标志为未删除
             lqw.eq(SysDept::getParentId, sysDept.getParentId()); // 父级部门ID相同
-            lqw.ge(SysDept::getOrderNum, sysDept.getOrderNum());  // 排序号大于当前部门
+            lqw.ge(SysDept::getOrderNum, sysDept.getOrderNum());  // 排序号大于等于当前部门
             List<SysDept> sysDeptList = list(lqw);
             // 更新这些部门的排序号
             sysDeptList.forEach(i -> {
@@ -183,16 +185,26 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
     }
 
     @Override
+    @Transactional
     public HttpResult updateDept(SysDept record) {
         // 查询当前部门序号是否存在
         LambdaQueryWrapper<SysDept> qw = new LambdaQueryWrapper<>();
         qw.eq(SysDept::getDelFlag, 0);  // 删除标志为未删除
         qw.eq(SysDept::getParentId, record.getParentId()); // 父级部门ID相同
         qw.eq(SysDept::getOrderNum, record.getOrderNum());  // 排序号相同
-        SysDept sysDept = baseMapper.selectOne(qw);
-        if (sysDept != null) {
-            sysDept.setOrderNum(sysDept.getOrderNum() + 1);
-            baseMapper.updateById(sysDept);
+        boolean exists = baseMapper.exists(qw);
+
+        if (exists){
+            // 如果存在,查询该父级部门下排序号大于当前部门的部门列表
+            LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
+            lqw.eq(SysDept::getDelFlag, 0); // 删除标志为未删除
+            lqw.eq(SysDept::getParentId, record.getParentId()); // 父级部门ID相同
+            lqw.ge(SysDept::getOrderNum, record.getOrderNum());  // 排序号大于等于当前部门
+            List<SysDept> sysDeptList = list(lqw);
+            sysDeptList.forEach(i -> {
+                i.setOrderNum(i.getOrderNum() + 1);
+                updateById(i);
+            });
         }
         baseMapper.updateById(record);
         return HttpResult.ok();

+ 11 - 2
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.constants.SysConstants;
@@ -981,7 +980,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         }
         return exist;
     }
-
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/16 15:51
+     *  @Description: 获取待客录入的可选业务员
+     *  查询
+     */
+    @Override
+    public List<SysUserBaseVO> getAllUsersByHospitality(SysUserVOExt sysUserVOExt) {
+        return super.baseMapper.getAllUsersByHospitality(sysUserVOExt);
+    }
 
 }
 

+ 17 - 0
src/main/java/com/ydtech/modules/esm/dao/InsOrderSetUserHisMapper.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.esm.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.esm.model.po.InsOrderSetUserHis;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/4/15 14:47
+ *  @Description: 用户关联协议表Dao
+ */
+@Mapper
+public interface InsOrderSetUserHisMapper extends BaseMapper<InsOrderSetUserHis> {
+
+
+}

+ 76 - 0
src/main/java/com/ydtech/modules/esm/model/po/InsOrderSetUserHis.java

@@ -0,0 +1,76 @@
+package com.ydtech.modules.esm.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 = "ins_order_set_user_his")
+@Data
+@NoArgsConstructor
+public class InsOrderSetUserHis implements Serializable {
+    /***
+     * 主键自增
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+    /***
+     * 前线用户ID
+     */
+    @TableField(value = "orderno")
+    private  String orderno;
+    /***
+     * 协议ID
+     */
+    @TableField(value = "quoteno")
+    private String quoteno;
+    /***
+     * 创建人
+     */
+    @TableField(value = "old_operator_id")
+    private String oldOperatorId;
+    /***
+     * 创建人名称
+     */
+    @TableField(value = "new_operator_id")
+    private String newOperatorId;
+    /***
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @TableField(value = "create_time")
+    private Date createTime;
+    /***
+     * 修改人名称
+     */
+    @TableField(value = "create_id")
+    private String createId;
+
+    /***
+     * 状态  1.转发  2. 回退
+     */
+    @TableField(value = "status")
+    private String status;
+
+    public InsOrderSetUserHis(String orderno, String quoteno, String oldOperatorId, String newOperatorId, Date createTime, String createId,String status) {
+        this.orderno = orderno;
+        this.quoteno = quoteno;
+        this.oldOperatorId = oldOperatorId;
+        this.newOperatorId = newOperatorId;
+        this.createTime = createTime;
+        this.createId = createId;
+        this.status = status;
+    }
+}

+ 54 - 0
src/main/java/com/ydtech/modules/esm/model/vo/InsOrderSetUserHisVo.java

@@ -0,0 +1,54 @@
+package com.ydtech.modules.esm.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/4/15 15:08
+ *  @Description: 订单操作人设置历史记录表
+ */
+@Data
+@ApiModel
+public class InsOrderSetUserHisVo {
+
+    /***
+     * 主键自增
+     */
+    @ApiModelProperty("主键ID")
+    private Long id;
+    /***
+     * 订单号
+     */
+    @ApiModelProperty(value = "订单号")
+    private  String orderno;
+    /***
+     * 报价单号
+     */
+    @ApiModelProperty(value = "报价单号")
+    private String quoteno;
+    /***
+     * 原操作人
+     */
+    @ApiModelProperty(value = "原操作人")
+    private String oldOperatorId;
+    /***
+     * 现操作人
+     */
+    @ApiModelProperty(value = "现操作人")
+    private String newOperatorId;
+    /***
+     * 操作时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "操作时间")
+    private String createTime;
+    /***
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createId;
+}

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

@@ -0,0 +1,14 @@
+package com.ydtech.modules.esm.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.esm.model.po.InsOrderSetUserHis;
+
+public interface InsOrderSetUserHisService extends IService<InsOrderSetUserHis> {
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 15:12
+     *  @Description: 修改
+     */
+    void addOrUpdate(InsOrderSetUserHis insOrderSetUserHis);
+}

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

@@ -0,0 +1,37 @@
+package com.ydtech.modules.esm.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.esm.dao.InsOrderSetUserHisMapper;
+import com.ydtech.modules.esm.model.po.InsOrderSetUserHis;
+import com.ydtech.modules.esm.service.InsOrderSetUserHisService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/4/15 14:52
+ *  @Description: 用户关联协议表
+ */
+@Service
+public class InsOrderSetUserHisServiceImpl extends ServiceImpl<InsOrderSetUserHisMapper, InsOrderSetUserHis> implements InsOrderSetUserHisService {
+
+
+    @Autowired
+    private InsOrderSetUserHisMapper insOrderSetUserHisMapper;
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/15 15:13
+     *  @Description: 插入历史记录表中
+     */
+    @Override
+    public void addOrUpdate(InsOrderSetUserHis insOrderSetUserHis) {
+        if(insOrderSetUserHis.getId()!=null){
+            insOrderSetUserHisMapper.updateById(insOrderSetUserHis);
+        }else{
+            insOrderSetUserHisMapper.insert(insOrderSetUserHis);
+        }
+    }
+
+}

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

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

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

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

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

@@ -600,7 +600,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
             //如果是多选 对value进行转换
             if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("checkbox")) {
                 PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = ptlAgreementUndwrtRulesAttr.getDictLabal().stream().filter(x ->
-                        x.getCode().equals(ruleAttrMappingVo.getValue())).findFirst().orElse(null);
+                        x.getName().equals(ruleAttrMappingVo.getValue())).findFirst().orElse(null);
                 ruleAttrMappingVo.setValue(ptlAgreementUndwrtRulesDictLabal.getName());
             }
             //如果是单选 并且是 性别的话 转换为code
@@ -609,7 +609,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                 if("CarOwnersSex".equals(ptlAgreementUndwrtRulesAttr.getAttrCode()) || "ApplicantSex".equals(ptlAgreementUndwrtRulesAttr.getAttrCode()) ||
                         "InsuredSex".equals(ptlAgreementUndwrtRulesAttr.getAttrCode())){
                     PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = ptlAgreementUndwrtRulesAttr.getDictLabal().stream().filter(x ->
-                            x.getName().equals(ruleAttrMappingVo.getValue())).findFirst().orElse(null);
+                            x.getCode().equals(ruleAttrMappingVo.getValue())).findFirst().orElse(null);
                     ruleAttrMappingVo.setValue(ptlAgreementUndwrtRulesDictLabal.getCode());
                 }
             }
@@ -709,6 +709,10 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("input")){
             return inputTextEqual(ptlAgreementUndwrtRulesAttrLink,value);
         }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("select")){
+            //截取车牌
+            if(ptlAgreementUndwrtRulesAttr.getAttrCode().equals("LicenseNo")){
+                value = value.substring(0,2);
+            }
             return selectEqual(ptlAgreementUndwrtRulesAttrLink,value);
         }else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("radio")){
             return radioEqual(ptlAgreementUndwrtRulesAttrLink,value);

+ 4 - 1
src/main/java/com/ydtech/modules/ins/model/InsTaskHistory.java

@@ -1,7 +1,6 @@
 package com.ydtech.modules.ins.model;
 
 import java.io.Serializable;
-import java.util.Date;
 
 
 public class InsTaskHistory implements Serializable {
@@ -16,6 +15,10 @@ public class InsTaskHistory implements Serializable {
     private String operator;
     private String remark;
     private String company;
+    /***
+     * 原操作人id
+     */
+    private String  oldOperatorid;
 
     public String getId() {
         return id;

+ 24 - 0
src/main/java/com/ydtech/modules/order/constants/OrderLinkTypeConstants.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.order.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @version
+ * @description: 用户订单关联的渠道、代理人、保险公司
+ * @author: tz
+ * @date: 2024-4-11 17:36:15
+ **/
+@Getter
+@AllArgsConstructor
+public enum OrderLinkTypeConstants {
+
+    ORDER_LINK_TYPE_CONSTANTS_1(1, "渠道"),
+    ORDER_LINK_TYPE_CONSTANTS_2(2,"代理人"),
+    ORDER_LINK_TYPE_CONSTANTS_3(3,"保险公司");
+
+    private final Integer code;
+
+    private final String desc;
+}

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

@@ -7,6 +7,7 @@ import com.ydtech.exception.SystemException;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.ins.model.InsOrdersExcelVo;
 import com.ydtech.modules.order.components.InsOrdersComponents;
+import com.ydtech.modules.order.constants.OrderLinkTypeConstants;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.modules.order.entity.InsAccidentalDriving;
 import com.ydtech.modules.order.entity.InsAreaCompany;
@@ -21,7 +22,6 @@ import com.ydtech.utils.StringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.ObjectUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -175,4 +175,85 @@ public class InsOrdersController extends BaseController {
         String userId = getUserId();
         return insOrdersService.exportPolicyInsuranceReport(policyInsuranceReportReqVo, userId);
     }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/17 15:32
+     *  @Description: 添加待客录单查询订单接口
+     */
+    @PostMapping("/queryPageHospitalityOrder")
+    @ApiOperation(value = "通过用户id和订单状态查询待客录单接口+分页")
+    public HttpResult<BasePageResult<InsOrders>> queryPageHospitalityOrder(@RequestBody  OrderQueryVo orderQueryVo) {
+        if(orderQueryVo.getUserId()==null || "".equals(orderQueryVo.getUserId())){
+            return HttpResult.error("待客录单人员id不能为空");
+        }
+        try{
+            BasePageResult<InsOrders> quoteResult = this.insOrdersService.queryPageHospitalityOrder(orderQueryVo);
+            return HttpResult.ok("success", quoteResult);
+        }catch (Exception e){
+            return HttpResult.error("查询失败"+e.getMessage());
+        }
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/17 15:32
+     *  @Description: 通过用户id和订单状态查询关联渠道的订单数据+分页
+     */
+    @PostMapping("/queryPageHospitalityByChannel")
+    @ApiOperation(value = "通过用户id和订单状态查询关联渠道的订单数据+分页")
+    public HttpResult<Object> queryPageHospitalityByChannel(@RequestBody  OrderQueryVo orderQueryVo) {
+        if(orderQueryVo.getUserId()==null || "".equals(orderQueryVo.getUserId())){
+            return HttpResult.error("待客录单人员id不能为空");
+        }
+        try{
+            BasePageResult<InsOrders> quoteResult = this.insOrdersService.queryPageOrderByLinkType(orderQueryVo, OrderLinkTypeConstants.ORDER_LINK_TYPE_CONSTANTS_1.getCode());
+            return HttpResult.ok("success", quoteResult);
+        }catch (Exception e){
+            return HttpResult.error("查询失败"+e.getMessage());
+        }
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/17 15:32
+     *  @Description: 通过用户id和订单状态查询关联代理人的订单数据+分页
+     */
+    @PostMapping("/queryPageHospitalityLinkagent")
+    @ApiOperation(value = "通过用户id和订单状态查询关联代理人的订单数据+分页")
+    public HttpResult<Object> queryPageHospitalityLinkagent(@RequestBody  OrderQueryVo orderQueryVo) {
+        if(orderQueryVo.getUserId()==null || "".equals(orderQueryVo.getUserId())){
+            return HttpResult.error("待客录单人员id不能为空");
+        }
+        try{
+            BasePageResult<InsOrders> quoteResult = this.insOrdersService.queryPageOrderByLinkType(orderQueryVo,OrderLinkTypeConstants.ORDER_LINK_TYPE_CONSTANTS_1.getCode());
+            return HttpResult.ok("success", quoteResult);
+        }catch (Exception e){
+            return HttpResult.error("查询失败"+e.getMessage());
+        }
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/17 15:32
+     *  @Description: 通过用户id和订单状态查询关联保险公司的订单数据+分页
+     */
+    @PostMapping("/queryPageHospitalityByInsuranceCompany")
+    @ApiOperation(value = "通过用户id和订单状态查询关联保险公司的订单数据+分页")
+    public HttpResult<Object> queryPageHospitalityByInsuranceCompany(@RequestBody  OrderQueryVo orderQueryVo) {
+        if(orderQueryVo.getUserId()==null || "".equals(orderQueryVo.getUserId())){
+            return HttpResult.error("待客录单人员id不能为空");
+        }
+        //if(orderQueryVo.getOrderStatus()==null || "".equals(orderQueryVo.getOrderStatus())){
+        //   return HttpResult.error("订单状态不能为空");
+        // }
+        try{
+            BasePageResult<InsOrders> quoteResult = this.insOrdersService.queryPageOrderByLinkType(orderQueryVo,OrderLinkTypeConstants.ORDER_LINK_TYPE_CONSTANTS_1.getCode());
+            return HttpResult.ok("success", quoteResult);
+        }catch (Exception e){
+            return HttpResult.error("查询失败"+e.getMessage());
+        }
+    }
 }

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

@@ -19,6 +19,8 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 
+import static com.ydtech.modules.base.controller.BaseController.getUser;
+
 
 @Api(tags = "任务池")
 @RestController
@@ -64,4 +66,23 @@ public class OrderTaskPoolsController {
     public HttpResult queryOrderOperatorId(@RequestSingleParam(value = "orderNo") String orderNo) {
         return orderTaskPoolsService.checkCurrentUserEdit(orderNo);
     }
+
+
+    @PostMapping(value = "/querySubOrders")
+    @ApiOperation(value = "子订单任务查询")
+    public HttpResult querySubOrders(@RequestBody OrderTaskPoolsVo orderTaskPoolsVo) {
+        return orderTaskPoolsService.querySubOrders(orderTaskPoolsVo);
+    }
+
+    @PostMapping(value = "/forwardingSubOrders")
+    @ApiOperation(value = "子订单任务转发")
+    public HttpResult forwardingSubOrders(@RequestBody TaskForwardingVo taskForwardingVo) {
+        return orderTaskPoolsService.forwardingSubOrders(taskForwardingVo,getUser());
+    }
+
+    @PostMapping(value = "/recover")
+    @ApiOperation(value = "子订单任务收回")
+    public HttpResult recover(@RequestBody TaskForwardingVo taskForwardingVo) {
+        return orderTaskPoolsService.recover(taskForwardingVo);
+    }
 }

+ 28 - 1
src/main/java/com/ydtech/modules/order/dao/InsOrdersMapper.java

@@ -36,5 +36,32 @@ public interface InsOrdersMapper extends BaseMapper<InsOrders> {
     Long getPolicyInsuranceReportCount(@Param("policyReqVo") PolicyInsuranceReportReqVo policyInsuranceReportReqVo);
 
     boolean updateStatus(@Param("orderno") String orderno, @Param("status") String status);
-
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/17 15:41
+     *  @Description: 通过用户id和订单状态查询订单信息
+     */
+    Page<InsOrders> queryPageHospitalityOrder(@Param("page") Page<InsOrders> page, @Param("orderQueryVo") OrderQueryVo orderQueryVo);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/17 15:43
+     *  @Description: 通过用户id和订单状态查询订单信息总条数
+     */
+    Long queryPageHospitalityOrderCount(@Param("orderQueryVo") OrderQueryVo orderQueryVo);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/17 18:01
+     *  @Description:  通过用户id查询订单、渠道、代理人、保险公司
+     */
+    Page<InsOrders> queryPageOrderByLinkType(@Param("page") Page<InsOrders> page,@Param("orderQueryVo") OrderQueryVo orderQueryVo, List<String> agentUserIds, List<String> agreeIds);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/17 18:36
+     *  @Description: 通过用户id查询订单、渠道、代理人、保险公司条数
+     */
+    Long queryPageOrderByLinkTypeCount(@Param("orderQueryVo") OrderQueryVo orderQueryVo, @Param("agentUserIds")  List<String> agentUserIds, @Param("agreeIds")  List<String> agreeIds);
 }

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

@@ -70,4 +70,7 @@ public class OrderTaskPoolsVo {
 
     @ApiModelProperty(value = "每页数量")
     private int pageSize = 10;
+
+    @ApiModelProperty(value = "类型 1.任务池总 2.任务池分 ")
+    private String type;
 }

+ 14 - 2
src/main/java/com/ydtech/modules/order/service/InsOrdersService.java

@@ -11,8 +11,6 @@ import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
 import com.ydtech.modules.order.entity.vo.*;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
@@ -132,4 +130,18 @@ public interface InsOrdersService extends IService<InsOrders> {
      * @return
      */
     HttpResult<String> exportPolicyInsuranceReport(PolicyInsuranceReportReqVo policyInsuranceReportReqVo,String userId);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/17 15:33
+     *  @Description:  通过用户id和状态查询待客订单的订单接口
+     */
+    BasePageResult<InsOrders> queryPageHospitalityOrder(OrderQueryVo orderQueryVo);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/17 16:11
+     *  @Description:  通过待客用户id查询渠道、代理人、保险公司的相关的订单表
+     */
+    BasePageResult<InsOrders> queryPageOrderByLinkType(OrderQueryVo orderQueryVo, int type);
 }

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

@@ -1,6 +1,7 @@
 package com.ydtech.modules.order.service;
 
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.order.entity.vo.OrderTaskPoolsVo;
 import com.ydtech.modules.order.entity.vo.TaskForwardingVo;
 
@@ -24,4 +25,25 @@ public interface OrderTaskPoolsService {
      * @return
      */
     public HttpResult checkCurrentUserEdit(String orderNo);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/16 15:36
+     *  @Description: 子订单查询
+     */
+    HttpResult querySubOrders(OrderTaskPoolsVo orderTaskPoolsVo);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/16 15:42
+     *  @Description: 子订单的收回
+     */
+    HttpResult recover(TaskForwardingVo taskForwardingVo);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/16 15:43
+     *  @Description: 子订单的转发
+     */
+    HttpResult forwardingSubOrders(TaskForwardingVo taskForwardingVo,SysUser sysUser);
 }

+ 68 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -17,9 +17,13 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageRequest;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.constants.RoleConstants;
+import com.ydtech.modules.admin.dao.SysUserLinkPtlAgreementMapper;
+import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.SysUserRole;
+import com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto;
+import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.SysUserRoleService;
 import com.ydtech.modules.admin.service.SysUserService;
@@ -121,6 +125,14 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Value("${upload.file.path}")
     private String uploadFilePath;
 
+    @Autowired
+    private SysUserMapper sysUserMapper;
+
+    @Autowired
+    private SysUserLinkPtlAgreementMapper sysUserLinkPtlAgreementMapper;
+
+
+    
     public InsOrdersServiceImpl(OrderComponents orderComponents, SysUserService sysUserService,
                                 SysUserRoleService sysUserRoleService,
                                 EsmUserReferrerService esmUserReferrerService, SysDeptService sysDeptService,
@@ -753,5 +765,61 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         insOrdersTrackService.save(insOrdersTrack);
         return true;
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/17 15:38
+     *  @Description: 通过待客录单id和订单状态查询订单数据
+     */
+    @Override
+    public BasePageResult<InsOrders> queryPageHospitalityOrder(OrderQueryVo orderQueryVo) {
+        Page<InsOrders> page = new Page<>(orderQueryVo.getPageNum(), orderQueryVo.getPageSize());
+        page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
+        orderQueryVo.setEndDate(orderQueryVo.getEndDatePlusOneDay());
+        Page<InsOrders> orderVoPage = baseMapper.queryPageHospitalityOrder(page, orderQueryVo);
+        Long total = baseMapper.queryPageHospitalityOrderCount(orderQueryVo);
+        orderVoPage.setTotal(total);
+        return new BasePageResult<>(orderQueryVo.getPageNum(), orderQueryVo.getPageSize(), orderVoPage.getTotal(),
+                orderVoPage.getPages()
+                , orderVoPage.getRecords());
+    }
 
+    @Override
+    public BasePageResult<InsOrders> queryPageOrderByLinkType(OrderQueryVo orderQueryVo, int type) {
+        Page<InsOrders> page = new Page<>(orderQueryVo.getPageNum(), orderQueryVo.getPageSize());
+        page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
+        List<String> agentUserIds =new ArrayList<>();
+        List<String> agreeIds =new ArrayList<>();
+        if(type==1){
+            //渠道
+            //查询用户表中的信息为领带id为用户id的数据
+            List<SysUserBaseVO> allUsersByLeaderId = sysUserMapper.getAllUsersByLeaderId(orderQueryVo.getUserId());
+            if(allUsersByLeaderId!=null && allUsersByLeaderId.size()>0){
+                for (SysUserBaseVO sysUserBaseVO : allUsersByLeaderId) {
+                    agentUserIds.add(sysUserBaseVO.getUserId());
+                }
+            }
+        }else if(type==2){
+            //查询所有的代理人
+            agentUserIds = sysUserMapper.getAgentUserIds();
+
+        }else if(type==3){
+            //查询用户关联的协议
+            List<SysUserLinkPtlAgreementDto> ptlAgreementListByUserIds = sysUserLinkPtlAgreementMapper.findPtlAgreementListByUserId(orderQueryVo.getUserId());
+            if(ptlAgreementListByUserIds!=null && ptlAgreementListByUserIds.size()>0){
+                for (SysUserLinkPtlAgreementDto sysUserLinkPtlAgreementDto : ptlAgreementListByUserIds) {
+                    agreeIds.add(sysUserLinkPtlAgreementDto.getPtlAgreement().getId());
+                }
+            }
+        }
+        Page<InsOrders> orderVoPage=new Page<>();
+        if(agentUserIds!=null || agentUserIds.size()==0){
+            orderVoPage= baseMapper.queryPageOrderByLinkType(page, orderQueryVo,agentUserIds,agreeIds);
+        }
+        Long total = baseMapper.queryPageOrderByLinkTypeCount(orderQueryVo,agentUserIds,agreeIds);
+        orderVoPage.setTotal(total);
+        return new BasePageResult<>(orderQueryVo.getPageNum(), orderQueryVo.getPageSize(), orderVoPage.getTotal(),
+                orderVoPage.getPages()
+                , orderVoPage.getRecords());
+    }
 }

+ 96 - 0
src/main/java/com/ydtech/modules/order/service/impl/OrderTaskPoolsServiceImpl.java

@@ -7,6 +7,8 @@ import com.ydtech.core.page.HttpResult;
 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.esm.model.po.InsOrderSetUserHis;
+import com.ydtech.modules.esm.service.InsOrderSetUserHisService;
 import com.ydtech.modules.ins.model.InsTaskHistory;
 import com.ydtech.modules.ins.service.InsTaskHistoryService;
 import com.ydtech.modules.order.entity.BasePageResult;
@@ -40,11 +42,14 @@ public class OrderTaskPoolsServiceImpl extends BaseController implements OrderTa
     private InsTaskHistoryService insTaskHistoryService;
     @Autowired
     private InsAreaCompanyService insAreaCompanyService;
+    @Autowired
+    private InsOrderSetUserHisService  insOrderSetUserHisService;
 
     @Override
     public HttpResult query(OrderTaskPoolsVo orderTaskPoolsVo) {
         //后线可以查所有,非后线只能查自己代客的
         String userId = getUserId();
+        userId="9914D17002";
         //查询当前工号是否为后线人员
         boolean isBachUser = false;
         List<SysUser> userList = sysUserService.findAllAgentRoleUser(userId,"22");
@@ -127,4 +132,95 @@ public class OrderTaskPoolsServiceImpl extends BaseController implements OrderTa
             }
         }
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/16 15:36
+     *  @Description: 查询子订单信息   改为连表查询
+     */
+    @Override
+    public HttpResult querySubOrders(OrderTaskPoolsVo orderTaskPoolsVo) {
+        //后线可以查所有,非后线只能查自己代客的
+        String userId = getUserId();
+        //查询当前工号是否为后线人员
+        boolean isBachUser = false;
+        List<SysUser> userList = sysUserService.findAllAgentRoleUser(userId,"22");
+        if(userList!=null && userList.size()>0){
+            isBachUser = true;
+        }
+        BaseMapper<InsOrders> baseMapper = insOrdersService.getBaseMapper();
+        LambdaQueryWrapper<InsOrders> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(!StringUtils.isEmpty(orderTaskPoolsVo.getOrderNo()), InsOrders::getOrderno, orderTaskPoolsVo.getOrderNo())
+                .eq(!StringUtils.isEmpty(orderTaskPoolsVo.getQuoteNo()), InsOrders::getQuoteno, orderTaskPoolsVo.getQuoteNo())
+                .eq(!StringUtils.isEmpty(orderTaskPoolsVo.getOrderStatus()), InsOrders::getOrderstatus, orderTaskPoolsVo.getOrderStatus())
+                .like(!StringUtils.isEmpty(orderTaskPoolsVo.getLicenseNo()), InsOrders::getLicenseno, orderTaskPoolsVo.getLicenseNo())
+                .like(!StringUtils.isEmpty(orderTaskPoolsVo.getFrameNo()), InsOrders::getFrameno, orderTaskPoolsVo.getFrameNo())
+                .like(!StringUtils.isEmpty(orderTaskPoolsVo.getEngineNo()), InsOrders::getCarinfo, orderTaskPoolsVo.getEngineNo())
+                .eq(!StringUtils.isEmpty(orderTaskPoolsVo.getRiskCode()), InsOrders::getProduct, orderTaskPoolsVo.getRiskCode())
+                .eq(!StringUtils.isEmpty(orderTaskPoolsVo.getUserid()), InsOrders::getUserid, orderTaskPoolsVo.getUserid())
+                .eq(!StringUtils.isEmpty(orderTaskPoolsVo.getUsername()), InsOrders::getUsername, orderTaskPoolsVo.getUsername())
+                .eq(!StringUtils.isEmpty(orderTaskPoolsVo.getInsureName()), InsOrders::getInsuredname, orderTaskPoolsVo.getInsureName())
+                .eq(!StringUtils.isEmpty(orderTaskPoolsVo.getAuditId()), InsOrders::getAgreeid, orderTaskPoolsVo.getAuditId())
+                //.eq(!StringUtils.isEmpty(userId), InsOrders::getOperatorid, userId)
+                .likeRight(!StringUtils.isEmpty(orderTaskPoolsVo.getDeptId()), InsOrders::getDeptid, orderTaskPoolsVo.getDeptId())
+                .between(!StringUtils.isEmpty(orderTaskPoolsVo.getStartDate()) && !StringUtils.isEmpty(orderTaskPoolsVo.getEndDate()), InsOrders::getCreatetime, orderTaskPoolsVo.getStartDate(), orderTaskPoolsVo.getEndDate())
+                .between(!StringUtils.isEmpty(orderTaskPoolsVo.getPolicyStartDate()) && !StringUtils.isEmpty(orderTaskPoolsVo.getPolicyEndDate()), InsOrders::getJqstartdate, orderTaskPoolsVo.getPolicyStartDate(), orderTaskPoolsVo.getPolicyEndDate())
+                .between(!StringUtils.isEmpty(orderTaskPoolsVo.getPolicyStartDate()) && !StringUtils.isEmpty(orderTaskPoolsVo.getPolicyEndDate()), InsOrders::getSystartdate, orderTaskPoolsVo.getPolicyStartDate(), orderTaskPoolsVo.getPolicyEndDate());
+        if(!isBachUser){//若非后线角色,只能查自己代客录单的单子
+            wrapper.eq(!StringUtils.isEmpty(userId), InsOrders::getOperatorid, userId);
+        }
+        //保司条件不为空时,拼接保司条件
+        if (org.apache.commons.lang3.StringUtils.isNotEmpty(orderTaskPoolsVo.getInsCompany())) {
+            List<InsAreaCompany> list = insAreaCompanyService.query()
+                    .select("DISTINCT orderno")
+                    .eq("company_id", orderTaskPoolsVo.getInsCompany())
+                    .list();
+            List<String> collect =
+                    list.stream().map(InsAreaCompany::getOrderno).distinct().collect(Collectors.toList());
+            wrapper.in(InsOrders::getOrderno, collect);
+        }
+        Page<InsOrders> page = baseMapper.selectPage(new Page<>(orderTaskPoolsVo.getPageNum(), orderTaskPoolsVo.getPageSize()), wrapper);
+        BasePageResult<InsOrders> insOrders = new BasePageResult<>(orderTaskPoolsVo.getPageNum(), page.getSize(), page.getTotal(), page.getPages(), page.getRecords());
+        return HttpResult.ok(insOrders);
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/16 18:51
+     *  @Description: 转发
+     */
+    @Override
+    @Transactional
+    public HttpResult forwardingSubOrders(TaskForwardingVo taskForwardingVo,SysUser sysUser) {
+        SysUser sysUserNew = sysUserService.getById(taskForwardingVo.getAuditId());
+        InsOrders insOrders = insOrdersService.existOrder(taskForwardingVo.getOrderNo());
+        //插入轨迹表
+        InsOrderSetUserHis  his=new InsOrderSetUserHis(insOrders.getOrderno(), insOrders.getQuoteno(), insOrders.getOperatorid(), taskForwardingVo.getAuditId(), new Date(), sysUser.getId(),"1");
+        insOrderSetUserHisService.addOrUpdate(his);
+        insOrders.setOperatorid(sysUserNew.getId());
+        insOrdersService.updateById(insOrders);
+        return HttpResult.ok("保存成功");
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/16 18:51
+     *  @Description: 收回
+     */
+    @Override
+    @Transactional
+    public HttpResult recover(TaskForwardingVo taskForwardingVo) {
+        InsOrders insOrders = insOrdersService.existOrder(taskForwardingVo.getOrderNo());
+
+        LambdaQueryWrapper<InsOrderSetUserHis> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(InsOrderSetUserHis::getOrderno,insOrders.getOrderno());
+        wrapper.eq(InsOrderSetUserHis::getStatus,"1");
+        InsOrderSetUserHis one = insOrderSetUserHisService.getOne(wrapper);
+        //设置为已回退
+        one.setStatus("2");
+        insOrderSetUserHisService.addOrUpdate(one);
+        insOrders.setOperatorid(one.getOldOperatorId());
+        insOrdersService.updateById(insOrders);
+        return HttpResult.ok("保存成功");
+    }
 }

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

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

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

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

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

@@ -112,6 +112,13 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
      */
     HttpResult<PageResult<PtlAgreement>> pageAgreement(PtlAgreementPageVo ptlAgreementPageVo);
 
+    /**
+     * 根据保险公司查询协议
+     * @param ptlAgreementPageVo
+     * @return
+     */
+    HttpResult<List<PtlAgreement>> listAgreement(PtlAgreementPageVo ptlAgreementPageVo);
+
     /**
      * 通过协议id查询
      *
@@ -199,4 +206,12 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
      *  @Description: 查询所有审核的协议
      */
     List<PtlAgreement> findCheckAgreementList(PtlAgreement ptlAgreement);
+
+    /**
+     * 获取当前费用的保险公司所有协议
+     * @param agreementId
+     * @return
+     */
+    List<PtlAgreement> getCurrentAgreementList(String agreementId);
+
 }

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

@@ -27,10 +27,13 @@ import com.ydtech.modules.protocol.entity.po.*;
 import com.ydtech.modules.protocol.entity.vo.*;
 import com.ydtech.modules.protocol.service.*;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
+import com.ydtech.modules.protocols.service.PtlAgreementProductCostsNewService;
 import com.ydtech.utils.idgen.IdGenerate;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -79,6 +82,7 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
 
     private final PtlAgreementAttributionHistoryService ptlAgreementAttributionHistoryService;
 
+
     public PtlAgreementServiceImpl(PtlAgreementProductCostsService ptlAgreementProductCostsService,
                                    PtlAgreementAttributionService ptlAgreementAttributionService, PtlAgreementDeptService ptlAgreementDeptService,
                                    EsmInsCompanyService esmInsCompanyService, PtlAgreementNonCarProductCostsService ptlAgreementNonCarProductCostsService,
@@ -349,6 +353,26 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         return HttpResult.ok(ptlAgreementPageResult);
     }
 
+    @Override
+    public HttpResult<List<PtlAgreement>> listAgreement(PtlAgreementPageVo ptlAgreementPageVo){
+        LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
+        // 获取供应商本级id 及其 下级id
+        List<String> lowerId = esmInsCompanyService.getByLowerId(ptlAgreementPageVo.getPartnerCompaniesId());
+        // 审核状态
+        wrapper.eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAuditStatus()), PtlAgreement::getAuditStatus, ptlAgreementPageVo.getAuditStatus())
+                //是否有效
+                .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getValidStatus()), PtlAgreement::getValidStatus, ptlAgreementPageVo.getValidStatus())
+                // 供应商类型
+                .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getCompaniesType()), PtlAgreement::getCompaniesType, ptlAgreementPageVo.getCompaniesType())
+                // 合作公司
+                .in(!StringUtils.isEmpty(ptlAgreementPageVo.getPartnerCompaniesId()) && !lowerId.isEmpty(), PtlAgreement::getPartnerCompaniesId, lowerId)
+                // 录入时间
+                .between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate()), PtlAgreement::getCreateTime, ptlAgreementPageVo.getStartDate(), ptlAgreementPageVo.getEndDate());
+
+        List<PtlAgreement> agreementPage = list(wrapper);
+        return HttpResult.ok(agreementPage);
+    }
+
     @Override
     public HttpResult<PtlAgreementQueryVo> getByAgreementId(String agreementId) {
         PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
@@ -605,4 +629,13 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         return list;
     }
 
+//    @Autowired
+//    private PtlAgreementProductCostsNewService ptlAgreementProductCostsNewService;
+    public List<PtlAgreement> getCurrentAgreementList(String agreementId){
+        PtlAgreement ptlAgreement = this.getById(agreementId);
+        String insuranceCompanyId = ptlAgreement.getInsuranceCompanyId();
+        List<PtlAgreement> ptlAgreements = baseMapper.selectList(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getInsuranceCompanyId, insuranceCompanyId));
+        return ptlAgreements;
+    }
+
 }

+ 31 - 3
src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementController.java

@@ -13,6 +13,7 @@ import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
 import com.ydtech.modules.protocol.entity.vo.PtlAgreementPageVo;
 import com.ydtech.modules.protocol.entity.vo.PtlAgreementProductQueryVo;
+import com.ydtech.modules.protocol.service.PtlAgreementService;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesDict;
@@ -47,6 +48,10 @@ public class PtlNewAgreementController extends BaseController {
     @Autowired
     private PtlAgreementUndwrtRulesNewService ptlAgreementUndwrtRulesNewService;
 
+    @Autowired
+    private PtlAgreementService ptlAgreementService;
+
+
     @ApiOperation(value = "协议承保规则属性列表")
     @GetMapping("/attr/list")
     public HttpResult<List<PtlAgreementUndwrtRulesAttr>> list() {
@@ -54,6 +59,12 @@ public class PtlNewAgreementController extends BaseController {
         return HttpResult.ok(undwrtRulesAttrList);
     }
 
+    @ApiOperation(value = "查询保险公司所有协议列表")
+    @GetMapping("/companyAgreementList")
+    public HttpResult<List<PtlAgreement>> companyAgreementList(String agreementId){
+        return HttpResult.ok(ptlAgreementService.getCurrentAgreementList(agreementId));
+    }
+
     @PostMapping("/getProduct")
     @ApiOperation("查询协议产品费用列表")
     public PageResult getProduct(@RequestBody AgreementProductQueryVo agreementProductQueryVo) {
@@ -62,6 +73,15 @@ public class PtlNewAgreementController extends BaseController {
         return buildPageResponse(schemeQueryDto);
     }
 
+    @ApiOperation("获取费用审核列表")
+    @PostMapping("/getCostsAuditList")
+    public PageResult getCostsAuditList(@RequestBody AgreementProductQueryVo agreementProductQueryVo){
+        Page<T> page = buildPageRequest(agreementProductQueryVo.getPageDto());
+        Page<PtlAgreementProductCostsNew> schemeQueryDto = ptlAgreementProductCostsNewService.getCostsAuditList(page,agreementProductQueryVo);
+        return buildPageResponse(schemeQueryDto);
+    }
+
+
     @ApiOperation(value = "获取协议费用")
     @GetMapping("/costs/get")
     public HttpResult costsGet(String costsId) {
@@ -90,16 +110,24 @@ public class PtlNewAgreementController extends BaseController {
 
     @ApiOperation(value = "复制协议费用")
     @PostMapping("/costs/copy")
-    public HttpResult costsCopy(String orgCostsId,String newAgreementId){
+    public HttpResult costsCopy(@RequestBody  AgreementProductCostsCopyVo agreementProductCostsCopyVo){
+        //orgCostsId:原协议费用id
+        //newAgreementId:新协议id
+        return ptlAgreementProductCostsNewService.costsCopy(agreementProductCostsCopyVo) ? HttpResult.ok("复制协议费用成功") : HttpResult.error("复制协议费用失败");
+    }
+
+    @ApiOperation(value = "批量复制协议费用")
+    @PostMapping("/costs/copyBatch")
+    public HttpResult costsCopyBatch(@RequestBody  AgreementProductCostsCopyVo agreementProductCostsCopyVo){
         //orgCostsId:原协议费用id
         //newAgreementId:新协议id
-        return ptlAgreementProductCostsNewService.costsCopy(orgCostsId,newAgreementId) ? HttpResult.ok("复制协议费用成功") : HttpResult.error("复制协议费用失败");
+        return ptlAgreementProductCostsNewService.costsCopyBatch(agreementProductCostsCopyVo) ? HttpResult.ok("复制协议费用成功") : HttpResult.error("复制协议费用失败");
     }
 
     @ApiOperation(value = "调整费用")
     @PostMapping("/costs/adjust")
     public HttpResult costsAdjust(@RequestBody FeeOrderNewRecordVo feeOrderNewRecordVo){
-        return ptlAgreementProductCostsNewService.costsAdjust(feeOrderNewRecordVo) ? HttpResult.ok("调整费用成功") : HttpResult.error("调整费用失败");
+        return HttpResult.ok("调整费用成功", ptlAgreementProductCostsNewService.costsAdjust(feeOrderNewRecordVo));
     }
 
     @ApiOperation(value = "费用审核")

+ 8 - 0
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsNew.java

@@ -111,6 +111,14 @@ public class PtlAgreementProductCostsNew {
     @TableField(value = "priority_level")
     private Integer priorityLevel;
 
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "create_time")
+    private String createTime;
+
+    @ApiModelProperty(value = "创建人")
+    @TableField(value = "create_by")
+    private String createBy;
+
     @ApiModelProperty(value = "是否审核")
     @TableField(value = "is_audit")
     private Integer isAudit;

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

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

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

@@ -15,4 +15,16 @@ public class AgreementProductQueryVo extends PageRequest {
 
     @ApiModelProperty(value = "产品id")
     private String productCode;
+
+    @ApiModelProperty(value = "费用起期")
+    private String costStartDate;
+
+    @ApiModelProperty(value = "费用止期")
+    private String costsEndDate;
+
+    @ApiModelProperty(value = "创建时间")
+    private String createStartTime;
+
+    @ApiModelProperty(value = "创建时间止期")
+    private String createEndTime;
 }

+ 10 - 8
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewService.java

@@ -6,10 +6,7 @@ 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;
-import com.ydtech.modules.protocols.entity.vo.AgreementProductCostsSave;
-import com.ydtech.modules.protocols.entity.vo.AgreementProductQueryVo;
-import com.ydtech.modules.protocols.entity.vo.CostsAuditVo;
+import com.ydtech.modules.protocols.entity.vo.*;
 
 import java.util.List;
 import java.util.Map;
@@ -29,6 +26,8 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
      */
     Page<PtlAgreementProductCostsNew> getByAgreementId(Page page, AgreementProductQueryVo agreementProductQueryVo);
 
+    List<PtlAgreementProductCostsNew> getByAgreementId(AgreementProductQueryVo agreementProductQueryVo);
+
     /**
      * 获取协议费用
      * @param costsId
@@ -64,11 +63,12 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 复制协议费用
-     * @param orgCostsId
-     * @param newAgreementId
+     * @param agreementProductCostsCopyVo
      * @return
      */
-    boolean costsCopy(String orgCostsId,String newAgreementId);
+    boolean costsCopy(AgreementProductCostsCopyVo agreementProductCostsCopyVo);
+
+    boolean costsCopyBatch(AgreementProductCostsCopyVo agreementProductCostsCopyVo);
 
     /**
      * 费用审核
@@ -82,5 +82,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
      * @param feeOrderNewRecordVo
      * @return
      */
-    boolean costsAdjust(FeeOrderNewRecordVo feeOrderNewRecordVo);
+    FeeOrderNewVo costsAdjust(FeeOrderNewRecordVo feeOrderNewRecordVo);
+
+    Page<PtlAgreementProductCostsNew> getCostsAuditList(Page page, AgreementProductQueryVo agreementProductQueryVo);
 }

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

@@ -24,10 +24,7 @@ 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.*;
-import com.ydtech.modules.protocols.entity.vo.AgreementProductCosts;
-import com.ydtech.modules.protocols.entity.vo.AgreementProductCostsSave;
-import com.ydtech.modules.protocols.entity.vo.AgreementProductQueryVo;
-import com.ydtech.modules.protocols.entity.vo.CostsAuditVo;
+import com.ydtech.modules.protocols.entity.vo.*;
 import com.ydtech.modules.protocols.service.*;
 import com.ydtech.utils.idgen.IdGenerate;
 import io.swagger.annotations.ApiOperation;
@@ -37,6 +34,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -89,6 +87,13 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
             ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getProductId, agreementProductQueryVo.getProductCode());
         }
 
+        //费用时间
+        if(agreementProductQueryVo.getCostStartDate() != null)
+        {
+            ptlAgreementProductCostsNewLambdaQueryWrapper.or().gt(PtlAgreementProductCostsNew::getCostsStartDate, agreementProductQueryVo.getCostStartDate())
+                    .lt(PtlAgreementProductCostsNew::getCostsEndDate, agreementProductQueryVo.getCostsEndDate());
+        }
+
         Page<PtlAgreementProductCostsNew> pages = baseMapper.selectPage(page, ptlAgreementProductCostsNewLambdaQueryWrapper);
 
 //                .lt(PtlAgreementProductCostsNew::getCostsStartDate, formattedDateTime)
@@ -145,6 +150,81 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         return pages;
     }
 
+    @Override
+    public List<PtlAgreementProductCostsNew> getByAgreementId(AgreementProductQueryVo agreementProductQueryVo) {
+        LambdaQueryWrapper<PtlAgreementProductCostsNew> ptlAgreementProductCostsNewLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getAgreementId, agreementProductQueryVo.getAgreementId());
+        //审核条件
+        if(agreementProductQueryVo.getIsAudit() != null){
+            ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getIsAudit, agreementProductQueryVo.getIsAudit());
+        }
+
+        //产品code
+        if(agreementProductQueryVo.getProductCode() != null){
+            ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getProductId, agreementProductQueryVo.getProductCode());
+        }
+
+        //费用时间
+        if(agreementProductQueryVo.getCostStartDate() != null)
+        {
+            ptlAgreementProductCostsNewLambdaQueryWrapper.or().gt(PtlAgreementProductCostsNew::getCostsStartDate, agreementProductQueryVo.getCostStartDate())
+                    .lt(PtlAgreementProductCostsNew::getCostsEndDate, agreementProductQueryVo.getCostsEndDate());
+        }
+
+        List<PtlAgreementProductCostsNew> pages = baseMapper.selectList(ptlAgreementProductCostsNewLambdaQueryWrapper);
+
+//                .lt(PtlAgreementProductCostsNew::getCostsStartDate, formattedDateTime)
+//                .gt(PtlAgreementProductCostsNew::getCostsEndDate, formattedDateTime));
+        //遍历费用列表
+        List<String> ids = new ArrayList<>();
+        pages.forEach(x -> {
+            ids.add(x.getId());
+        });
+        if(ids.isEmpty()){
+            return pages;
+        }
+        //获取出口比例
+        List<PtlAgreementProductCostsExport> ptlAgreementProductCostsExports = ptlAgreementProductCostsExportService.list(new LambdaQueryWrapper<PtlAgreementProductCostsExport>()
+                .in(PtlAgreementProductCostsExport::getCostsId, ids));
+        //获取费用属性
+        List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
+        List<PtlAgreementProductCostsAttrLink> list = ptlAgreementProductCostsAttrLinkService.list(new LambdaQueryWrapper<PtlAgreementProductCostsAttrLink>()
+                .in(PtlAgreementProductCostsAttrLink::getCostsId, ids));
+        Map<String, List<PtlAgreementProductCostsAttrLink>> groupedByCostsId = list.stream()
+                .collect(Collectors.groupingBy(PtlAgreementProductCostsAttrLink::getCostsId));
+        groupedByCostsId.forEach((k, v) -> {
+            pages.stream().filter(x -> x.getId().equals(k)).findFirst().ifPresent(x -> x.setDesc(buildDesc(v,undwrtRulesAttrList)));
+        });
+        //赋值出口比例
+        List<PtlAgreementProductCostsNew> records = pages;
+        for(int i=0;i<records.size();i++)
+        {
+            int finalI = i;
+            PtlAgreementProductCostsExport ptlAgreementProductCostsExport = ptlAgreementProductCostsExports.stream().filter(y -> y.getCostsId().equals(records.get(finalI).getId())).findFirst().orElse(null);
+            if(!Objects.isNull(ptlAgreementProductCostsExport)) {
+                records.get(i).setJqExportRadioLevel1(ptlAgreementProductCostsExport.getJqExportRadioLevel1().toString());
+                records.get(i).setJqExportRadioLevel2(ptlAgreementProductCostsExport.getJqExportRadioLevel2().toString());
+                records.get(i).setJqExportRadioLevel3(ptlAgreementProductCostsExport.getJqExportRadioLevel3().toString());
+                records.get(i).setJqExportRadioLevel4(ptlAgreementProductCostsExport.getJqExportRadioLevel4().toString());
+                records.get(i).setJqExportRadioLevel5(ptlAgreementProductCostsExport.getJqExportRadioLevel5().toString());
+                records.get(i).setJqExportInvestmentRadio(ptlAgreementProductCostsExport.getJqExportInvestmentRadio().toString());
+                records.get(i).setSyExportRadioLevel1(ptlAgreementProductCostsExport.getSyExportRadioLevel1().toString());
+                records.get(i).setSyExportRadioLevel2(ptlAgreementProductCostsExport.getSyExportRadioLevel2().toString());
+                records.get(i).setSyExportRadioLevel3(ptlAgreementProductCostsExport.getSyExportRadioLevel3().toString());
+                records.get(i).setSyExportRadioLevel4(ptlAgreementProductCostsExport.getSyExportRadioLevel4().toString());
+                records.get(i).setSyExportRadioLevel5(ptlAgreementProductCostsExport.getSyExportRadioLevel5().toString());
+                records.get(i).setSyExportInvestmentRadio(ptlAgreementProductCostsExport.getSyExportInvestmentRadio().toString());
+                records.get(i).setNoCarExportRadioLevel1(ptlAgreementProductCostsExport.getNoCarExportRadioLevel1().toString());
+                records.get(i).setNoCarExportRadioLevel2(ptlAgreementProductCostsExport.getNoCarExportRadioLevel2().toString());
+                records.get(i).setNoCarExportRadioLevel3(ptlAgreementProductCostsExport.getNoCarExportRadioLevel3().toString());
+                records.get(i).setNoCarExportRadioLevel4(ptlAgreementProductCostsExport.getNoCarExportRadioLevel4().toString());
+                records.get(i).setNoCarExportRadioLevel5(ptlAgreementProductCostsExport.getNoCarExportRadioLevel5().toString());
+            }
+        }
+
+        return pages;
+    }
+
     /**
      * 遍历费用属性描述文字
      *
@@ -167,6 +247,9 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
             if ("checkbox".equals(ptlAgreementUndwrtRulesAttr.getAttrType()) || "select".equals(ptlAgreementUndwrtRulesAttr.getAttrType())) {
                 desc += ptlAgreementUndwrtRulesAttr.getAttrName() + "包含" + v.get(i).getMin() + "\n";
             }
+            if("input".equals(ptlAgreementUndwrtRulesAttr.getAttrType())){
+                desc += ptlAgreementUndwrtRulesAttr.getAttrName() + "为" + v.get(i).getMin() + "\n";
+            }
         }
         return desc;
     }
@@ -333,7 +416,7 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         //校验非车信息是否存在
         List<PtlAgreementProductCostsAttrLink> nonMotorInsurance = agreementProductCosts.getCostsAttrLinks().stream().filter(x -> x.getAttrCode().equals("NonMotorInsurance")).collect(Collectors.toList());
         if (nonMotorInsurance.size() > 0) {
-            if(nonMotorInsurance.get(0).getMin() != null || nonMotorInsurance.get(0).getMax() != null)
+            if((nonMotorInsurance.get(0).getMin() != null && !nonMotorInsurance.get(0).getMin().equals("0")) || nonMotorInsurance.get(0).getMax() != null && !nonMotorInsurance.get(0).getMax().equals("0"))
             {
                 if((agreementProductCosts.getNoCostsProportion() == null || agreementProductCosts.getNoCostsProportion().equals("0"))){
                     throw new SystemException("检测到存在非车费用因子,请填写非车费用!");
@@ -350,6 +433,8 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         {
             ptlAgreementProductCostsNew.setPriorityLevel(1);
         }
+        ptlAgreementProductCostsNew.setCreateTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        ptlAgreementProductCostsNew.setCreateBy(BaseController.getUser().getId());
         ptlAgreementProductCostsNew.blank();
         int insert = baseMapper.insert(ptlAgreementProductCostsNew);
 
@@ -388,7 +473,8 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
 
             //单独处理车牌号
             if ("LicenseNo".equals(x.getAttrCode()) && (x.getMin() != null && !x.getMin().equals(""))) {
-                x.setOperator(x.getDictLabal().getJSONObject(0).getString("parentNumber"));
+//                x.setOperator(x.getDictLabal().getJSONObject(0).getString("parentNumber"));
+                x.setOperator("0");
                 x.setCostsId(ptlAgreementProductCostsNew.getId());
                 x.setId(0);
                 costsAttrLink.add(x);
@@ -431,7 +517,7 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         //校验非车信息是否存在
         List<PtlAgreementProductCostsAttrLink> nonMotorInsurance = agreementProductCosts.getCostsAttrLinks().stream().filter(x -> x.getAttrCode().equals("NonMotorInsurance")).collect(Collectors.toList());
         if (nonMotorInsurance.size() > 0) {
-            if(nonMotorInsurance.get(0).getMin() != null || nonMotorInsurance.get(0).getMax() != null)
+            if((nonMotorInsurance.get(0).getMin() != null && !nonMotorInsurance.get(0).getMin().equals("0")) || nonMotorInsurance.get(0).getMax() != null && !nonMotorInsurance.get(0).getMax().equals("0"))
             {
                 if((agreementProductCosts.getNoCostsProportion() == null || agreementProductCosts.getNoCostsProportion().equals("0"))){
                     throw new SystemException("检测到存在非车费用因子,请填写非车费用!");
@@ -618,27 +704,26 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
 
     /**
      * 复制协议费用
-     * @param orgCostsId  原始的费用id
-     * @param newAgreementId  需要复制的协议id
+     * @param agreementProductCostsCopyVo
      * @return
      */
     @Transactional
     @Override
-    public boolean costsCopy(String orgCostsId, String newAgreementId) {
+    public boolean costsCopy(AgreementProductCostsCopyVo agreementProductCostsCopyVo) {
         AgreementProductCosts agreementProductCosts = new AgreementProductCosts();
         //设置主表信息
-        PtlAgreementProductCostsNew ptlAgreementProductCostsNew = baseMapper.selectById(orgCostsId);
-        ptlAgreementProductCostsNew.setAgreementId(newAgreementId);
+        PtlAgreementProductCostsNew ptlAgreementProductCostsNew = baseMapper.selectById(agreementProductCostsCopyVo.getOrgCostsId());
+        ptlAgreementProductCostsNew.setAgreementId(agreementProductCostsCopyVo.getNewAgreementId());
         BeanUtils.copyProperties(ptlAgreementProductCostsNew, agreementProductCosts);
 
 
         //设置管理比例信息
-        PtlAgreementProductCostsExport ptlAgreementProductCostsExport = ptlAgreementProductCostsExportService.getOne(new LambdaQueryWrapper<PtlAgreementProductCostsExport>().eq(PtlAgreementProductCostsExport::getCostsId, orgCostsId));
+        PtlAgreementProductCostsExport ptlAgreementProductCostsExport = ptlAgreementProductCostsExportService.getOne(new LambdaQueryWrapper<PtlAgreementProductCostsExport>().eq(PtlAgreementProductCostsExport::getCostsId, agreementProductCostsCopyVo.getOrgCostsId()));
         BeanUtils.copyProperties(ptlAgreementProductCostsExport, agreementProductCosts);
         ptlAgreementProductCostsExport.setId("0");
 
         //设置费用因子信息
-        List<PtlAgreementProductCostsAttrLink> ptlAgreementProductCostsAttrLink = ptlAgreementProductCostsAttrLinkService.list(new LambdaQueryWrapper<PtlAgreementProductCostsAttrLink>().eq(PtlAgreementProductCostsAttrLink::getCostsId, orgCostsId));
+        List<PtlAgreementProductCostsAttrLink> ptlAgreementProductCostsAttrLink = ptlAgreementProductCostsAttrLinkService.list(new LambdaQueryWrapper<PtlAgreementProductCostsAttrLink>().eq(PtlAgreementProductCostsAttrLink::getCostsId, agreementProductCostsCopyVo.getOrgCostsId()));
         agreementProductCosts.setCostsAttrLinks(ptlAgreementProductCostsAttrLink);
         agreementProductCosts.setId("0");
 
@@ -648,6 +733,43 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
     }
 
 
+    @Transactional
+    @Override
+    public boolean costsCopyBatch(AgreementProductCostsCopyVo agreementProductCostsCopyVos){
+        for(int i=0;i<agreementProductCostsCopyVos.getOrgCostsIds().length; i++)
+        {
+            AgreementProductCostsCopyVo agreementProductCostsCopyVo = new AgreementProductCostsCopyVo();
+            agreementProductCostsCopyVo.setOrgCostsId(agreementProductCostsCopyVos.getOrgCostsIds()[i]);
+            agreementProductCostsCopyVo.setNewAgreementId(agreementProductCostsCopyVos.getNewAgreementId());
+            AgreementProductCosts agreementProductCosts = new AgreementProductCosts();
+            //设置主表信息
+            PtlAgreementProductCostsNew ptlAgreementProductCostsNew = baseMapper.selectById(agreementProductCostsCopyVo.getOrgCostsId());
+            ptlAgreementProductCostsNew.setAgreementId(agreementProductCostsCopyVo.getNewAgreementId());
+            BeanUtils.copyProperties(ptlAgreementProductCostsNew, agreementProductCosts);
+
+
+            //设置管理比例信息
+            PtlAgreementProductCostsExport ptlAgreementProductCostsExport = ptlAgreementProductCostsExportService.getOne(new LambdaQueryWrapper<PtlAgreementProductCostsExport>().eq(PtlAgreementProductCostsExport::getCostsId, agreementProductCostsCopyVo.getOrgCostsId()));
+            if(ptlAgreementProductCostsExport != null) {
+                BeanUtils.copyProperties(ptlAgreementProductCostsExport, agreementProductCosts);
+            }else{
+                ptlAgreementProductCostsExport = new PtlAgreementProductCostsExport();
+                ptlAgreementProductCostsExport.setCostsId(ptlAgreementProductCostsNew.getId());
+                ptlAgreementProductCostsExport.blank();
+            }
+            ptlAgreementProductCostsExport.setId("0");
+
+            //设置费用因子信息
+            List<PtlAgreementProductCostsAttrLink> ptlAgreementProductCostsAttrLink = ptlAgreementProductCostsAttrLinkService.list(new LambdaQueryWrapper<PtlAgreementProductCostsAttrLink>().eq(PtlAgreementProductCostsAttrLink::getCostsId, agreementProductCostsCopyVo.getOrgCostsId()));
+            agreementProductCosts.setCostsAttrLinks(ptlAgreementProductCostsAttrLink);
+            agreementProductCosts.setId("0");
+
+            this.costsAdd(agreementProductCosts);
+        }
+
+        return true;
+    }
+
     @Override
     public boolean costsAudit(CostsAuditVo costsAuditVo){
         PtlAgreementProductCostsNew ptlAgreementProductCostsNew = this.getById(costsAuditVo.getCostsId());
@@ -677,7 +799,7 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
 
     @Transactional
     @Override
-    public boolean costsAdjust(FeeOrderNewRecordVo feeOrderNewRecordVo) {
+    public FeeOrderNewVo costsAdjust(FeeOrderNewRecordVo feeOrderNewRecordVo) {
         String feeId = feeOrderNewRecordVo.getFeeId();
         InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getById(feeId);
         //查询协议是否包含税
@@ -692,29 +814,32 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         FeeOrderNewVo feeOrderNewVo = feeOrderNewRecordVo.getFeeOrderNewVoNew();
 
         //交强入口费用
-        EntranceFee jqEntranceFee = costsCalcService.getEntranceFee("交强险", feeOrderNewVo.getEntranceFee().get(0).getPremium().divide(taxRadio,2),
+        EntranceFee jqEntranceFee = costsCalcService.getEntranceFee("交强险", feeOrderNewVo.getEntranceFee().get(0).getPremium().divide(taxRadio,10, RoundingMode.UP),
                 feeOrderNewVo.getEntranceFee().get(0).getSuperviseCosts(), feeOrderNewVo.getEntranceFee().get(0).getOtherCostsProportion());
 
         //商业入口费用
-        EntranceFee syEntranceFee = costsCalcService.getEntranceFee("商业险", feeOrderNewVo.getEntranceFee().get(1).getPremium().divide(taxRadio,2),
+        EntranceFee syEntranceFee = costsCalcService.getEntranceFee("商业险", feeOrderNewVo.getEntranceFee().get(1).getPremium().divide(taxRadio,10, RoundingMode.UP),
                 feeOrderNewVo.getEntranceFee().get(1).getSuperviseCosts(), feeOrderNewVo.getEntranceFee().get(1).getOtherCostsProportion());
 
         //非车入口费用
-        EntranceFee noEntranceFee = costsCalcService.getEntranceFee("非车险", feeOrderNewVo.getEntranceFee().get(2).getPremium().divide(taxRadio,2),
+        EntranceFee noEntranceFee = costsCalcService.getEntranceFee("非车险", feeOrderNewVo.getEntranceFee().get(2).getPremium().divide(taxRadio,10, RoundingMode.UP),
                 feeOrderNewVo.getEntranceFee().get(2).getSuperviseCosts(), feeOrderNewVo.getEntranceFee().get(2).getOtherCostsProportion());
 
         //交强部门管理费用
-        DeptManagerFee jqDeptManagerFee = costsCalcService.getDeptManagerFee("交强险", insFeeOrderNew.getJqPremium().divide(taxRadio,2),
-                insFeeOrderNew.getJqDeptProportionLevel1(), insFeeOrderNew.getJqDeptProportionLevel2(), insFeeOrderNew.getJqDeptProportionLevel3(),
-                insFeeOrderNew.getJqDeptProportionLevel4(), insFeeOrderNew.getJqDeptProportionLevel5());
+        DeptManagerFee jqDeptManagerFee = costsCalcService.getDeptManagerFee("交强险", insFeeOrderNew.getJqPremium().divide(taxRadio,10, RoundingMode.UP),
+                feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelOne(),
+                feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelTwo(),
+                feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelThree(),
+                feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelFoure(),
+                feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelFive());
 
         //商业部门管理费用
-        DeptManagerFee syDeptManagerFee = costsCalcService.getDeptManagerFee("商业险", insFeeOrderNew.getSyPremium().divide(taxRadio,2),
+        DeptManagerFee syDeptManagerFee = costsCalcService.getDeptManagerFee("商业险", insFeeOrderNew.getSyPremium().divide(taxRadio,10, RoundingMode.UP),
                 insFeeOrderNew.getSyDeptProportionLevel1(), insFeeOrderNew.getSyDeptProportionLevel2(), insFeeOrderNew.getSyDeptProportionLevel3(),
                 insFeeOrderNew.getSyDeptProportionLevel4(), insFeeOrderNew.getSyDeptProportionLevel5());
 
         //非车部门管理费用
-        DeptManagerFee noDeptManagerFee = costsCalcService.getDeptManagerFee("非车险", insFeeOrderNew.getNoPremium().divide(taxRadio,2),
+        DeptManagerFee noDeptManagerFee = costsCalcService.getDeptManagerFee("非车险", insFeeOrderNew.getNoPremium().divide(taxRadio,10, RoundingMode.UP),
                 insFeeOrderNew.getNoDeptProportionLevel1(), insFeeOrderNew.getNoDeptProportionLevel2(), insFeeOrderNew.getNoDeptProportionLevel3(),
                 insFeeOrderNew.getNoDeptProportionLevel4(), insFeeOrderNew.getNoDeptProportionLevel5());
 
@@ -877,24 +1002,36 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
 
         insFeeOrderNew.setJqCostsProportion(jqEntranceFee.getTotalProportion());
         insFeeOrderNew.setJqCostsPremiums(jqEntranceFee.getTotalAmount());
+        feeOrderNewVo.getEntranceFee().get(0).setPremium(insFeeOrderNew.getJqPremium());
+        feeOrderNewVo.getEntranceFee().get(0).setTotalAmount(jqEntranceFee.getTotalAmount());
         insFeeOrderNew.setSyCostsProportion(syEntranceFee.getTotalProportion());
         insFeeOrderNew.setSyCostsPremiums(syEntranceFee.getTotalAmount());
+        feeOrderNewVo.getEntranceFee().get(1).setPremium(insFeeOrderNew.getSyPremium());
+        feeOrderNewVo.getEntranceFee().get(1).setTotalAmount(syEntranceFee.getTotalAmount());
         insFeeOrderNew.setNoCostsProportion(noEntranceFee.getTotalProportion());
         insFeeOrderNew.setNoCostsPremiums(noEntranceFee.getTotalAmount());
+        feeOrderNewVo.getEntranceFee().get(2).setPremium(insFeeOrderNew.getNoPremium());
+        feeOrderNewVo.getEntranceFee().get(1).setTotalAmount(noEntranceFee.getTotalAmount());
 
         insFeeOrderNew.setJqSuperviseCostsProportion(jqEntranceFee.getSuperviseCosts());
         insFeeOrderNew.setJqSuperviseCostsPremiums(jqEntranceFee.getSySuperviseCostsPremiums());
+        feeOrderNewVo.getEntranceFee().get(0).setSySuperviseCostsPremiums(jqEntranceFee.getSySuperviseCostsPremiums());
         insFeeOrderNew.setSySuperviseCostsProportion(syEntranceFee.getSuperviseCosts());
         insFeeOrderNew.setSySuperviseCostsPremiums(syEntranceFee.getSySuperviseCostsPremiums());
+        feeOrderNewVo.getEntranceFee().get(1).setSySuperviseCostsPremiums(syEntranceFee.getSySuperviseCostsPremiums());
         insFeeOrderNew.setNoSuperviseCostsProportion(noEntranceFee.getSuperviseCosts());
         insFeeOrderNew.setNoSuperviseCostsPremiums(noEntranceFee.getSySuperviseCostsPremiums());
+        feeOrderNewVo.getEntranceFee().get(2).setSySuperviseCostsPremiums(noEntranceFee.getSySuperviseCostsPremiums());
 
         insFeeOrderNew.setJqOtherCostsProportion(jqEntranceFee.getOtherCostsProportion());
         insFeeOrderNew.setJqOtherCostsPremiums(jqEntranceFee.getOtherCostsPremiums());
+        feeOrderNewVo.getEntranceFee().get(0).setOtherCostsPremiums(jqEntranceFee.getOtherCostsPremiums());
         insFeeOrderNew.setSyOtherCostsProportion(syEntranceFee.getOtherCostsProportion());
         insFeeOrderNew.setSyOtherCostsPremiums(syEntranceFee.getOtherCostsPremiums());
+        feeOrderNewVo.getEntranceFee().get(1).setOtherCostsPremiums(syEntranceFee.getOtherCostsPremiums());
         insFeeOrderNew.setNoOtherCostsProportion(noEntranceFee.getOtherCostsProportion());
         insFeeOrderNew.setNoOtherCostsPremiums(noEntranceFee.getOtherCostsPremiums());
+        feeOrderNewVo.getEntranceFee().get(2).setOtherCostsPremiums(noEntranceFee.getOtherCostsPremiums());
 
         insFeeOrderNew.setJqDeptProportionLevel1(jqDeptManagerFee.getDeptManagerRadioLevel1());
         insFeeOrderNew.setJqDeptProportionLevel2(jqDeptManagerFee.getDeptManagerRadioLevel2());
@@ -906,6 +1043,11 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         insFeeOrderNew.setJqDeptPremiumsLevel3(jqDeptManagerFee.getDeptManagerFeeLevel3());
         insFeeOrderNew.setJqDeptPremiumsLevel4(jqDeptManagerFee.getDeptManagerFeeLevel4());
         insFeeOrderNew.setJqDeptPremiumsLevel5(jqDeptManagerFee.getDeptManagerFeeLevel5());
+        feeOrderNewVo.getDeptManagerFee().get(0).setDeptPremiumsLevelOne(jqDeptManagerFee.getDeptManagerFeeLevel1());
+        feeOrderNewVo.getDeptManagerFee().get(0).setDeptPremiumsLevelTwo(jqDeptManagerFee.getDeptManagerFeeLevel2());
+        feeOrderNewVo.getDeptManagerFee().get(0).setDeptPremiumsLevelThree(jqDeptManagerFee.getDeptManagerFeeLevel3());
+        feeOrderNewVo.getDeptManagerFee().get(0).setDeptPremiumsLevelFoure(jqDeptManagerFee.getDeptManagerFeeLevel4());
+        feeOrderNewVo.getDeptManagerFee().get(0).setDeptPremiumsLevelFive(jqDeptManagerFee.getDeptManagerFeeLevel5());
 
         insFeeOrderNew.setSyDeptProportionLevel1(syDeptManagerFee.getDeptManagerRadioLevel1());
         insFeeOrderNew.setSyDeptProportionLevel2(syDeptManagerFee.getDeptManagerRadioLevel2());
@@ -917,6 +1059,11 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         insFeeOrderNew.setSyDeptPremiumsLevel3(syDeptManagerFee.getDeptManagerFeeLevel3());
         insFeeOrderNew.setSyDeptPremiumsLevel4(syDeptManagerFee.getDeptManagerFeeLevel4());
         insFeeOrderNew.setSyDeptPremiumsLevel5(syDeptManagerFee.getDeptManagerFeeLevel5());
+        feeOrderNewVo.getDeptManagerFee().get(1).setDeptPremiumsLevelOne(syDeptManagerFee.getDeptManagerFeeLevel1());
+        feeOrderNewVo.getDeptManagerFee().get(1).setDeptPremiumsLevelTwo(syDeptManagerFee.getDeptManagerFeeLevel2());
+        feeOrderNewVo.getDeptManagerFee().get(1).setDeptPremiumsLevelThree(syDeptManagerFee.getDeptManagerFeeLevel3());
+        feeOrderNewVo.getDeptManagerFee().get(1).setDeptPremiumsLevelFoure(syDeptManagerFee.getDeptManagerFeeLevel4());
+        feeOrderNewVo.getDeptManagerFee().get(1).setDeptPremiumsLevelFive(syDeptManagerFee.getDeptManagerFeeLevel5());
 
         insFeeOrderNew.setNoDeptProportionLevel1(noDeptManagerFee.getDeptManagerRadioLevel1());
         insFeeOrderNew.setNoDeptProportionLevel2(noDeptManagerFee.getDeptManagerRadioLevel2());
@@ -928,10 +1075,98 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         insFeeOrderNew.setNoDeptPremiumsLevel3(noDeptManagerFee.getDeptManagerFeeLevel3());
         insFeeOrderNew.setNoDeptPremiumsLevel4(noDeptManagerFee.getDeptManagerFeeLevel4());
         insFeeOrderNew.setNoDeptPremiumsLevel5(noDeptManagerFee.getDeptManagerFeeLevel5());
+        feeOrderNewVo.getDeptManagerFee().get(2).setDeptPremiumsLevelOne(noDeptManagerFee.getDeptManagerFeeLevel1());
+        feeOrderNewVo.getDeptManagerFee().get(2).setDeptPremiumsLevelTwo(noDeptManagerFee.getDeptManagerFeeLevel2());
+        feeOrderNewVo.getDeptManagerFee().get(2).setDeptPremiumsLevelThree(noDeptManagerFee.getDeptManagerFeeLevel3());
+        feeOrderNewVo.getDeptManagerFee().get(2).setDeptPremiumsLevelFoure(noDeptManagerFee.getDeptManagerFeeLevel4());
+        feeOrderNewVo.getDeptManagerFee().get(2).setDeptPremiumsLevelFive(noDeptManagerFee.getDeptManagerFeeLevel5());
+
 
         //保存新的比例
         insFeeOrderNewService.updateById(insFeeOrderNew);
-        return true;
+        return feeOrderNewVo;
+
+    }
+
+    public Page<PtlAgreementProductCostsNew> getCostsAuditList(Page page, AgreementProductQueryVo agreementProductQueryVo){
+        LambdaQueryWrapper<PtlAgreementProductCostsNew> ptlAgreementProductCostsNewLambdaQueryWrapper = new LambdaQueryWrapper<>();
+//        ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getAgreementId, agreementProductQueryVo.getAgreementId());
+
+        //协议id
+        if(agreementProductQueryVo.getAgreementId() != null){
+            ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getAgreementId,agreementProductQueryVo.getAgreementId());
+        }
+        //审核条件
+        if(agreementProductQueryVo.getIsAudit() != null){
+            ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getIsAudit, Integer.parseInt(agreementProductQueryVo.getIsAudit()));
+        }else{
+            ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getIsAudit,"0");
+        }
+
+        //产品code
+        if(agreementProductQueryVo.getProductCode() != null){
+            ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getProductId, agreementProductQueryVo.getProductCode());
+        }
 
+        //创建时间
+        if(agreementProductQueryVo.getCreateStartTime() != null)
+        {
+            ptlAgreementProductCostsNewLambdaQueryWrapper.between(PtlAgreementProductCostsNew::getCreateTime,agreementProductQueryVo.getCreateStartTime(),agreementProductQueryVo.getCreateEndTime());
+        }
+
+        Page<PtlAgreementProductCostsNew> pages = baseMapper.selectPage(page, ptlAgreementProductCostsNewLambdaQueryWrapper);
+
+//                .lt(PtlAgreementProductCostsNew::getCostsStartDate, formattedDateTime)
+//                .gt(PtlAgreementProductCostsNew::getCostsEndDate, formattedDateTime));
+        //遍历费用列表
+        List<String> ids = new ArrayList<>();
+        pages.getRecords().forEach(x -> {
+            ids.add(x.getId());
+        });
+        if(ids.isEmpty()){
+            return pages;
+        }
+        //获取出口比例
+        List<PtlAgreementProductCostsExport> ptlAgreementProductCostsExports = ptlAgreementProductCostsExportService.list(new LambdaQueryWrapper<PtlAgreementProductCostsExport>()
+                .in(PtlAgreementProductCostsExport::getCostsId, ids));
+        //获取费用属性
+        List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
+        List<PtlAgreementProductCostsAttrLink> list = ptlAgreementProductCostsAttrLinkService.list(new LambdaQueryWrapper<PtlAgreementProductCostsAttrLink>()
+                .in(PtlAgreementProductCostsAttrLink::getCostsId, ids));
+        Map<String, List<PtlAgreementProductCostsAttrLink>> groupedByCostsId = list.stream()
+                .collect(Collectors.groupingBy(PtlAgreementProductCostsAttrLink::getCostsId));
+        groupedByCostsId.forEach((k, v) -> {
+            pages.getRecords().stream().filter(x -> x.getId().equals(k)).findFirst().ifPresent(x -> x.setDesc(buildDesc(v,undwrtRulesAttrList)));
+        });
+        //赋值出口比例
+        List<PtlAgreementProductCostsNew> records = pages.getRecords();
+        for(int i=0;i<records.size();i++)
+        {
+            int finalI = i;
+            PtlAgreementProductCostsExport ptlAgreementProductCostsExport = ptlAgreementProductCostsExports.stream().filter(y -> y.getCostsId().equals(records.get(finalI).getId())).findFirst().orElse(null);
+            if(!Objects.isNull(ptlAgreementProductCostsExport)) {
+                records.get(i).setJqExportRadioLevel1(ptlAgreementProductCostsExport.getJqExportRadioLevel1().toString());
+                records.get(i).setJqExportRadioLevel2(ptlAgreementProductCostsExport.getJqExportRadioLevel2().toString());
+                records.get(i).setJqExportRadioLevel3(ptlAgreementProductCostsExport.getJqExportRadioLevel3().toString());
+                records.get(i).setJqExportRadioLevel4(ptlAgreementProductCostsExport.getJqExportRadioLevel4().toString());
+                records.get(i).setJqExportRadioLevel5(ptlAgreementProductCostsExport.getJqExportRadioLevel5().toString());
+                records.get(i).setJqExportInvestmentRadio(ptlAgreementProductCostsExport.getJqExportInvestmentRadio().toString());
+                records.get(i).setSyExportRadioLevel1(ptlAgreementProductCostsExport.getSyExportRadioLevel1().toString());
+                records.get(i).setSyExportRadioLevel2(ptlAgreementProductCostsExport.getSyExportRadioLevel2().toString());
+                records.get(i).setSyExportRadioLevel3(ptlAgreementProductCostsExport.getSyExportRadioLevel3().toString());
+                records.get(i).setSyExportRadioLevel4(ptlAgreementProductCostsExport.getSyExportRadioLevel4().toString());
+                records.get(i).setSyExportRadioLevel5(ptlAgreementProductCostsExport.getSyExportRadioLevel5().toString());
+                records.get(i).setSyExportInvestmentRadio(ptlAgreementProductCostsExport.getSyExportInvestmentRadio().toString());
+                records.get(i).setNoCarExportRadioLevel1(ptlAgreementProductCostsExport.getNoCarExportRadioLevel1().toString());
+                records.get(i).setNoCarExportRadioLevel2(ptlAgreementProductCostsExport.getNoCarExportRadioLevel2().toString());
+                records.get(i).setNoCarExportRadioLevel3(ptlAgreementProductCostsExport.getNoCarExportRadioLevel3().toString());
+                records.get(i).setNoCarExportRadioLevel4(ptlAgreementProductCostsExport.getNoCarExportRadioLevel4().toString());
+                records.get(i).setNoCarExportRadioLevel5(ptlAgreementProductCostsExport.getNoCarExportRadioLevel5().toString());
+            }
+        }
+        pages.getRecords().stream().forEach(x -> {
+
+        });
+        return pages;
     }
 }

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

@@ -198,9 +198,20 @@ public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreem
         return "";
     }
 
+    /**
+     * 验证承保规则表单
+     */
+    private void validateRules(AgreementUndwrtRules agreementUndwrtRules){
+        if(agreementUndwrtRules.getValidInd() == null)
+        {
+            throw new RuntimeException("有效标志不能为空");
+        }
+    }
+
     @Transactional
     @Override
     public boolean rulesAdd(AgreementUndwrtRules agreementUndwrtRules) {
+        validateRules(agreementUndwrtRules);
         //添加承保规则主表信息
         PtlAgreementUndwrtRulesNew ptlAgreementUndwrtRulesNew = new PtlAgreementUndwrtRulesNew();
         BeanUtils.copyProperties(agreementUndwrtRules, ptlAgreementUndwrtRulesNew);

+ 29 - 0
src/main/java/com/ydtech/utils/LocalDateTimeDeserializer.java

@@ -0,0 +1,29 @@
+package com.ydtech.utils;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+import lombok.Data;
+
+import java.io.IOException;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+
+
+/**
+ *
+ *   LocalDateTime反序列化器
+ *
+ */
+@Data
+public class LocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
+    @Override
+    public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
+        String dateStr = p.getValueAsString();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDate date = LocalDate.parse(dateStr, formatter);
+        return date.atStartOfDay(ZoneId.systemDefault()).toLocalDateTime();
+    }
+}

+ 2 - 1
src/main/resources/mapper/modules/admin/SysDeptAccountWithdrawMapper.xml

@@ -18,7 +18,8 @@
         select
         id,
         dept_id,
-        name,amount,
+        name,
+        amount,
         status,
         remark,
         DATE(create_time) as create_date

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

@@ -433,4 +433,46 @@
         iac.company_id,
         iac.inscompany
     </select>
+
+
+    <select id="getAllUsersByHospitality" resultType="com.ydtech.modules.admin.model.vo.SysUserBaseVO">
+        SELECT
+        su.id as userId,
+        su.name,
+        info.sex,
+        su.mobile,
+        su.status,
+        sd.id as deptId,
+        sd.name as deptName,
+        t4.id as roleId,
+        t4.name as roleName,
+        sd.management_source as managementSource,
+        psd.id as pDeptId,
+        psd.name as pDeptName,
+        "" as noType
+        FROM
+        sys_user su
+        LEFT JOIN sys_user_info info ON info.id = su.id
+        LEFT JOIN sys_dept sd ON su.dept_id = sd.id
+        left join sys_dept psd on psd.id = sd.parent_id
+        LEFT JOIN sys_user_role t3 ON su.id = t3.user_id
+        LEFT JOIN sys_role t4 ON t3.role_id = t4.id
+        AND sd.del_flag = '0'
+        WHERE
+        su.status =1  AND su.id LIKE '%M%'
+        <if test='user !=null  '>
+            <if test='user.name !=null and user.name!="" '>
+                and su.name = #{user.name}
+            </if>
+            <if test='user.userId !=null and user.userId!="" '>
+                and su.id = #{user.userId}
+            </if>
+            <if test='user.mobile !=null and user.mobile!=""  '>
+                and su.mobile = #{user.mobile}
+            </if>
+            <if test='user.identity !=null and user.identity!=""  '>
+                and su.identity = #{user.identity}
+            </if>
+        </if>
+    </select>
 </mapper>

+ 10 - 0
src/main/resources/mapper/modules/esm/InsOrderSetUserHisMapper.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.esm.dao.InsOrderSetUserHisMapper">
+
+
+
+
+</mapper>

+ 194 - 0
src/main/resources/mapper/modules/order/InsOrdersMapper.xml

@@ -684,4 +684,198 @@
     <update id="updateStatus">
         update ins_orders set orderstatus = #{status} where orderno = #{orderno}
     </update>
+
+    <select id="queryPageHospitalityOrder" resultMap="BaseResultMap">
+        select
+        io.*
+        from
+         ins_orders io
+        <!--如果存在 公司查询则进行连表 -->
+        <if test="orderQueryVo.companyId != null and orderQueryVo.companyId != ''">
+            left JOIN
+            ins_area_company iac on iac.orderno = io.orderno
+        </if>
+        <where>
+            <if test="orderQueryVo.orderNo != null and orderQueryVo.orderNo != ''">
+                and io.orderno = #{orderQueryVo.orderNo}
+            </if>
+            <if test="orderQueryVo.deptId != null and orderQueryVo.deptId != '' and isTeamLeader">
+                and io.deptid like "${orderQueryVo.deptId}%"
+            </if>
+            <if test="orderQueryVo.orderStatus != null and orderQueryVo.orderStatus != ''">
+                and io.orderstatus = #{orderQueryVo.orderStatus}
+            </if>
+            <if test="orderQueryVo.frameNo != null and orderQueryVo.frameNo != ''">
+                and io.frameno = #{orderQueryVo.frameNo}
+            </if>
+            <if test="orderQueryVo.licenseNo != null and orderQueryVo.licenseNo != ''">
+                and io.licenseno = #{orderQueryVo.licenseNo}
+            </if>
+            <if test="orderQueryVo.insuredName != null and orderQueryVo.insuredName != ''">
+                and io.insuredname = #{orderQueryVo.insuredName}
+            </if>
+            <if test="orderQueryVo.startDate != null and orderQueryVo.endDate != null">
+                and io.createtime between #{orderQueryVo.startDate} AND #{orderQueryVo.endDate}
+            </if>
+            <if test="orderQueryVo.companyId != null and orderQueryVo.companyId != ''">
+                and iac.company_id = #{orderQueryVo.companyId}
+            </if>
+            <if test="orderQueryVo.userId != null and orderQueryVo.userId != ''">
+                and io.userid = #{orderQueryVo.userId}
+            </if>
+        </where>
+        group by orderno
+        order by io.createtime desc
+    </select>
+
+    <select id="queryPageHospitalityOrderCount" resultType="Long">
+        select
+        count(1)
+        from (
+        select
+        io.orderno
+        from
+        ins_orders io
+        <!--如果存在 公司查询则进行连表 -->
+        <if test="orderQueryVo.companyId != null and orderQueryVo.companyId != ''">
+            left JOIN
+            ins_area_company iac on iac.orderno = io.orderno
+        </if>
+        <where>
+            <if test="orderQueryVo.orderNo != null and orderQueryVo.orderNo != ''">
+                and io.orderno = #{orderQueryVo.orderNo}
+            </if>
+            <if test="orderQueryVo.deptId != null and orderQueryVo.deptId != '' and isTeamLeader">
+                and io.deptid like "${orderQueryVo.deptId}%"
+            </if>
+            <if test="orderQueryVo.orderStatus != null and orderQueryVo.orderStatus != ''">
+                and io.orderstatus = #{orderQueryVo.orderStatus}
+            </if>
+            <if test="orderQueryVo.frameNo != null and orderQueryVo.frameNo != ''">
+                and io.frameno = #{orderQueryVo.frameNo}
+            </if>
+            <if test="orderQueryVo.licenseNo != null and orderQueryVo.licenseNo != ''">
+                and io.licenseno = #{orderQueryVo.licenseNo}
+            </if>
+            <if test="orderQueryVo.insuredName != null and orderQueryVo.insuredName != ''">
+                and io.insuredname = #{orderQueryVo.insuredName}
+            </if>
+            <if test="orderQueryVo.startDate != null and orderQueryVo.endDate != null">
+                and io.createtime between #{orderQueryVo.startDate} AND #{orderQueryVo.endDate}
+            </if>
+            <if test="orderQueryVo.companyId != null and orderQueryVo.companyId != ''">
+                and iac.company_id = #{orderQueryVo.companyId}
+            </if>
+            <if test="orderQueryVo.userId != null and orderQueryVo.userId != ''">
+                and io.userid = #{orderQueryVo.userId}
+            </if>
+        </where>
+        group by io.orderno
+        ) as s
+    </select>
+
+
+    <select id="queryPageOrderByLinkType" resultMap="BaseResultMap">
+        select
+        io.*
+        from
+        ins_orders io
+        <!--如果存在 公司查询则进行连表 -->
+        <if test="orderQueryVo.companyId != null and orderQueryVo.companyId != ''">
+            left JOIN
+            ins_area_company iac on iac.orderno = io.orderno
+        </if>
+        <where>
+            <if test="orderQueryVo.orderNo != null and orderQueryVo.orderNo != ''">
+                and io.orderno = #{orderQueryVo.orderNo}
+            </if>
+            <if test="orderQueryVo.deptId != null and orderQueryVo.deptId != '' and isTeamLeader">
+                and io.deptid like "${orderQueryVo.deptId}%"
+            </if>
+            <if test="orderQueryVo.orderStatus != null and orderQueryVo.orderStatus != ''">
+                and io.orderstatus = #{orderQueryVo.orderStatus}
+            </if>
+            <if test="orderQueryVo.frameNo != null and orderQueryVo.frameNo != ''">
+                and io.frameno = #{orderQueryVo.frameNo}
+            </if>
+            <if test="orderQueryVo.licenseNo != null and orderQueryVo.licenseNo != ''">
+                and io.licenseno = #{orderQueryVo.licenseNo}
+            </if>
+            <if test="orderQueryVo.insuredName != null and orderQueryVo.insuredName != ''">
+                and io.insuredname = #{orderQueryVo.insuredName}
+            </if>
+            <if test="orderQueryVo.startDate != null and orderQueryVo.endDate != null">
+                and io.createtime between #{orderQueryVo.startDate} AND #{orderQueryVo.endDate}
+            </if>
+            <if test="orderQueryVo.companyId != null and orderQueryVo.companyId != ''">
+                and iac.company_id = #{orderQueryVo.companyId}
+            </if>
+            <if test="agentUserIds != null and agentUserIds.size>0" >
+                and io.userid in
+                <foreach collection="agentUserIds" item="item"  open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="agreeIds != null and agreeIds.size>0" >
+                and iac.agreement_id in
+                <foreach collection="agreeIds" item="item"  open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+        group by orderno
+        order by io.createtime desc
+    </select>
+
+    <select id="queryPageOrderByLinkTypeCount" resultType="Long">
+        select
+        count(1)
+        from (
+        select
+        io.orderno
+        from
+        ins_orders io
+            left JOIN
+            ins_area_company iac on iac.orderno = io.orderno
+        <where>
+            <if test="orderQueryVo.orderNo != null and orderQueryVo.orderNo != ''">
+                and io.orderno = #{orderQueryVo.orderNo}
+            </if>
+            <if test="orderQueryVo.deptId != null and orderQueryVo.deptId != '' and isTeamLeader">
+                and io.deptid like "${orderQueryVo.deptId}%"
+            </if>
+            <if test="orderQueryVo.orderStatus != null and orderQueryVo.orderStatus != ''">
+                and io.orderstatus = #{orderQueryVo.orderStatus}
+            </if>
+            <if test="orderQueryVo.frameNo != null and orderQueryVo.frameNo != ''">
+                and io.frameno = #{orderQueryVo.frameNo}
+            </if>
+            <if test="orderQueryVo.licenseNo != null and orderQueryVo.licenseNo != ''">
+                and io.licenseno = #{orderQueryVo.licenseNo}
+            </if>
+            <if test="orderQueryVo.insuredName != null and orderQueryVo.insuredName != ''">
+                and io.insuredname = #{orderQueryVo.insuredName}
+            </if>
+            <if test="orderQueryVo.startDate != null and orderQueryVo.endDate != null">
+                and io.createtime between #{orderQueryVo.startDate} AND #{orderQueryVo.endDate}
+            </if>
+            <if test="orderQueryVo.companyId != null and orderQueryVo.companyId != ''">
+                and iac.company_id = #{orderQueryVo.companyId}
+            </if>
+            <if test="agentUserIds != null and agentUserIds.size>0" >
+                and io.userid in
+                <foreach collection="agentUserIds" item="item"  open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="agreeIds != null and agreeIds.size>0" >
+                and iac.agreement_id in
+                <foreach collection="agreeIds" item="item"  open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+        group by io.orderno
+        ) as s
+    </select>
 </mapper>

+ 42 - 0
src/main/resources/sql/sql.txt

@@ -0,0 +1,42 @@
+
+添加 前线人员关联协议表    hxl  add by 2024-04-16
+/*
+ Navicat Premium Data Transfer
+
+ Source Server         : 测试环境
+ Source Server Type    : MySQL
+ Source Server Version : 50719
+ Source Host           : 47.92.254.66:3306
+ Source Schema         : zgdd
+
+ Target Server Type    : MySQL
+ Target Server Version : 50719
+ File Encoding         : 65001
+
+ Date: 16/04/2024 16:44:32
+*/
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for sys_user_link_pl_agreement
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_user_link_pl_agreement`;
+CREATE TABLE `sys_user_link_pl_agreement`  (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键/自增',
+  `user_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '前线用户ID',
+  `ptl_agreement_id` bigint(20) NULL DEFAULT NULL COMMENT '协议ID',
+  `create_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人ID',
+  `create_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人名称',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `update_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人ID',
+  `update_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人名称',
+  `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
+  `type` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '协议类型  0 车险 1 非车',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `user_id_index`(`user_id`) USING BTREE,
+  INDEX `ptl_agreement_id_index`(`ptl_agreement_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '前线人员关联协议表' ROW_FORMAT = DYNAMIC;
+
+SET FOREIGN_KEY_CHECKS = 1;