Procházet zdrojové kódy

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

Qchen před 2 roky
rodič
revize
b5c89e12db
34 změnil soubory, kde provedl 827 přidání a 41 odebrání
  1. 17 4
      src/main/java/com/ydtech/modules/admin/controller/SysUserController.java
  2. 8 0
      src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java
  3. 25 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysUserVOExt.java
  4. 7 0
      src/main/java/com/ydtech/modules/admin/service/SysUserService.java
  5. 17 5
      src/main/java/com/ydtech/modules/admin/service/impl/SysDeptServiceImpl.java
  6. 11 2
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java
  7. 17 0
      src/main/java/com/ydtech/modules/esm/dao/InsOrderSetUserHisMapper.java
  8. 76 0
      src/main/java/com/ydtech/modules/esm/model/po/InsOrderSetUserHis.java
  9. 54 0
      src/main/java/com/ydtech/modules/esm/model/vo/InsOrderSetUserHisVo.java
  10. 14 0
      src/main/java/com/ydtech/modules/esm/service/InsOrderSetUserHisService.java
  11. 37 0
      src/main/java/com/ydtech/modules/esm/service/impl/InsOrderSetUserHisServiceImpl.java
  12. 6 2
      src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java
  13. 4 1
      src/main/java/com/ydtech/modules/ins/model/InsTaskHistory.java
  14. 23 1
      src/main/java/com/ydtech/modules/order/controller/InsOrdersController.java
  15. 21 0
      src/main/java/com/ydtech/modules/order/controller/OrderTaskPoolsController.java
  16. 14 1
      src/main/java/com/ydtech/modules/order/dao/InsOrdersMapper.java
  17. 3 0
      src/main/java/com/ydtech/modules/order/entity/vo/OrderTaskPoolsVo.java
  18. 7 2
      src/main/java/com/ydtech/modules/order/service/InsOrdersService.java
  19. 22 0
      src/main/java/com/ydtech/modules/order/service/OrderTaskPoolsService.java
  20. 18 1
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  21. 96 0
      src/main/java/com/ydtech/modules/order/service/impl/OrderTaskPoolsServiceImpl.java
  22. 8 0
      src/main/java/com/ydtech/modules/protocol/service/PtlAgreementService.java
  23. 11 0
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
  24. 22 2
      src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementController.java
  25. 8 0
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsNew.java
  26. 15 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCostsCopyVo.java
  27. 12 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductQueryVo.java
  28. 5 7
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewService.java
  29. 101 13
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java
  30. 11 0
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesNewServiceImpl.java
  31. 38 0
      src/main/resources/mapper/modules/admin/SysUserMapper.xml
  32. 10 0
      src/main/resources/mapper/modules/esm/InsOrderSetUserHisMapper.xml
  33. 47 0
      src/main/resources/mapper/modules/order/InsOrdersMapper.xml
  34. 42 0
      src/main/resources/sql/sql.txt

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

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

@@ -0,0 +1,25 @@
+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;
+}

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

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

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

@@ -21,7 +21,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 +174,27 @@ 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不能为空");
+        }
+        if(orderQueryVo.getOrderStatus()==null || "".equals(orderQueryVo.getOrderStatus())){
+            return HttpResult.error("订单状态不能为空");
+        }
+        try{
+            BasePageResult<InsOrders> quoteResult = this.insOrdersService.queryPageHospitalityOrder(orderQueryVo);
+            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);
+    }
 }

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

@@ -36,5 +36,18 @@ 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);
 }

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

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

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

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

@@ -753,5 +753,22 @@ 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());
+    }
 }

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

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

@@ -199,4 +199,12 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
      *  @Description: 查询所有审核的协议
      */
     List<PtlAgreement> findCheckAgreementList(PtlAgreement ptlAgreement);
+
+    /**
+     * 获取当前费用的保险公司所有协议
+     * @param agreementId
+     * @return
+     */
+    List<PtlAgreement> getCurrentAgreementList(String agreementId);
+
 }

+ 11 - 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,
@@ -605,4 +609,11 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         return list;
     }
 
+    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;
+    }
+
 }

+ 22 - 2
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,10 +110,10 @@ 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(orgCostsId,newAgreementId) ? HttpResult.ok("复制协议费用成功") : HttpResult.error("复制协议费用失败");
+        return ptlAgreementProductCostsNewService.costsCopy(agreementProductCostsCopyVo) ? HttpResult.ok("复制协议费用成功") : HttpResult.error("复制协议费用失败");
     }
 
     @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;

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

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

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

+ 5 - 7
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;
@@ -64,11 +61,10 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 复制协议费用
-     * @param orgCostsId
-     * @param newAgreementId
+     * @param agreementProductCostsCopyVo
      * @return
      */
-    boolean costsCopy(String orgCostsId,String newAgreementId);
+    boolean costsCopy(AgreementProductCostsCopyVo agreementProductCostsCopyVo);
 
     /**
      * 费用审核
@@ -83,4 +79,6 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
      * @return
      */
     boolean costsAdjust(FeeOrderNewRecordVo feeOrderNewRecordVo);
+
+    Page<PtlAgreementProductCostsNew> getCostsAuditList(Page page, AgreementProductQueryVo agreementProductQueryVo);
 }

+ 101 - 13
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;
@@ -89,6 +86,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)
@@ -167,6 +171,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 +340,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 +357,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);
 
@@ -431,7 +440,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 +627,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");
 
@@ -934,4 +942,84 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         return true;
 
     }
+
+    public Page<PtlAgreementProductCostsNew> getCostsAuditList(Page page, AgreementProductQueryVo agreementProductQueryVo){
+        LambdaQueryWrapper<PtlAgreementProductCostsNew> ptlAgreementProductCostsNewLambdaQueryWrapper = new LambdaQueryWrapper<>();
+//        ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getAgreementId, agreementProductQueryVo.getAgreementId());
+        ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getIsAudit,"0");
+        //协议id
+        if(agreementProductQueryVo.getAgreementId() != null){
+            ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getAgreementId,agreementProductQueryVo.getAgreementId());
+        }
+        //审核条件
+        if(agreementProductQueryVo.getIsAudit() != null){
+            ptlAgreementProductCostsNewLambdaQueryWrapper.eq(PtlAgreementProductCostsNew::getIsAudit, agreementProductQueryVo.getIsAudit());
+        }
+
+        //产品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);

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

@@ -433,4 +433,42 @@
         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,
+        psd.id as pDeptId,
+        psd.name as pDeptName
+        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
+        <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>
+    </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>

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

@@ -684,4 +684,51 @@
     <update id="updateStatus">
         update ins_orders set orderstatus = #{status} where orderno = #{orderno}
     </update>
+
+    <select id="queryPageHospitalityOrder" resultMap="BaseResultMap">
+        select
+        io.*
+        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.orderStatus != null and orderQueryVo.orderStatus != ''">
+                and io.orderstatus = #{orderQueryVo.orderStatus}
+            </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
+            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.orderStatus != null and orderQueryVo.orderStatus != ''">
+                and io.orderstatus = #{orderQueryVo.orderStatus}
+            </if>
+            <if test="orderQueryVo.userId != null and orderQueryVo.userId != ''">
+                and io.userid = #{orderQueryVo.userId}
+            </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;