Răsfoiți Sursa

Merge branch 'test' into test-d

# Conflicts:
#	src/main/java/com/ydtech/modules/order/entity/api/yangguang/request/YangGuangAccuracyCalculateRequest.java
dongxin 1 an în urmă
părinte
comite
0ecb98ff78
33 a modificat fișierele cu 925 adăugiri și 186 ștergeri
  1. 2 0
      README.md
  2. 12 1
      docker/shell-prod.sh
  3. 12 1
      docker/shell-test.sh
  4. 0 10
      sql/Online.sql
  5. 22 2
      src/main/java/com/ydtech/components/OrderComponents.java
  6. 4 4
      src/main/java/com/ydtech/modules/esm/service/impl/EsmUserReferrerServiceImpl.java
  7. 2 2
      src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java
  8. 1 1
      src/main/java/com/ydtech/modules/ins/model/vo/CustomerInfoVo.java
  9. 4 3
      src/main/java/com/ydtech/modules/ins/model/yc/ruote/Applicant.java
  10. 3 4
      src/main/java/com/ydtech/modules/ins/model/yc/ruote/Insured.java
  11. 3 8
      src/main/java/com/ydtech/modules/ins/model/yc/ruote/Vhlowner.java
  12. 23 4
      src/main/java/com/ydtech/modules/inv/utils/EasyExcelUtils.java
  13. 7 0
      src/main/java/com/ydtech/modules/order/controller/InsOrdersController.java
  14. 47 16
      src/main/java/com/ydtech/modules/order/controller/QrCodeController.java
  15. 18 0
      src/main/java/com/ydtech/modules/order/dao/InsOrdersMapper.java
  16. 8 0
      src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java
  17. 59 59
      src/main/java/com/ydtech/modules/order/entity/api/yangguang/request/YangGuangAccuracyCalculateRequest.java
  18. 105 0
      src/main/java/com/ydtech/modules/order/entity/dto/TaskPoolDataExcelDto.java
  19. 10 0
      src/main/java/com/ydtech/modules/order/service/InsOrdersService.java
  20. 7 0
      src/main/java/com/ydtech/modules/order/service/impl/InsOrderPdfUrlServiceImpl.java
  21. 113 44
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  22. 24 0
      src/main/java/com/ydtech/modules/protocol/constants/ValidStatus.java
  23. 1 0
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreement.java
  24. 27 0
      src/main/java/com/ydtech/modules/protocols/constants/AgreementProductCostsAuditStatus.java
  25. 12 0
      src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementController.java
  26. 11 1
      src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsNew.java
  27. 1 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCosts.java
  28. 14 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductQueryVo.java
  29. 24 0
      src/main/java/com/ydtech/modules/protocols/entity/vo/CostsBatchDisableVo.java
  30. 37 6
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewService.java
  31. 94 16
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java
  32. 215 0
      src/main/resources/mapper/modules/order/InsOrdersMapper.xml
  33. 3 4
      src/main/resources/template/html/qrcode_error.html

+ 2 - 0
README.md

@@ -22,7 +22,9 @@
 * 前端pc:vue-insagent-pc-prod
 
 
+```shell
 
+```
 
 
 

+ 12 - 1
docker/shell-prod.sh

@@ -32,7 +32,18 @@ function run(){
   # mypid=$(netstat -apn|grep 9001|awk '{print $7}'|cut -d/ -f1);
   # echo $mypid
   # kill -9 $mypid
-  docker run -it --name ins -p 8080:8888 -e "--spring.profiles.active=prod" -p 9999:9999 --restart=always -v /usr/local/java/insAgency:/ins --mount type=bind,source=/nasData,destination=/nasData -v /usr/local/java/insAgency/logs:/ins/logs -d ins:latest
+  docker run -it --name ins  \
+  --restart=always \
+  --log-driver json-file \
+  --log-opt max-size=100m \
+  --log-opt max-file=3 \
+  -p 8080:8888  \
+  -p 9999:9999 \
+  -e "--spring.profiles.active=prod"  \
+  -v /usr/local/java/insAgency:/ins \
+  -v /usr/local/java/insAgency/logs:/ins/logs \
+  --mount type=bind,source=/nasData,destination=/nasData \
+  -d ins:latest
 }
 
 #入口

+ 12 - 1
docker/shell-test.sh

@@ -32,7 +32,18 @@ function run(){
   # mypid=$(netstat -apn|grep 9001|awk '{print $7}'|cut -d/ -f1);
   # echo $mypid
   # kill -9 $mypid
-  docker run -it --name ins-test -p 8080:8888 -e "--spring.profiles.active=test" -p 9999:9999 --restart=always -v /usr/local/java/insAgency:/ins --mount type=bind,source=/nasData,destination=/nasData -v /usr/local/java/insAgency/logs:/ins/logs -d ins-test:latest
+  docker run -it --name ins-test \
+    --log-driver json-file \
+    --log-opt max-size=100m \
+    --log-opt max-file=3 \
+    -p 8080:8888 \
+    -e "--spring.profiles.active=test" \
+    -p 9999:9999 \
+    --restart=always \
+    -v /usr/local/java/insAgency:/ins \
+    -v /usr/local/java/insAgency/logs:/ins/logs \
+    --mount type=bind,source=/nasData,destination=/nasData \
+    -d ins-test:latest
 }
 
 #入口

+ 0 - 10
sql/Online.sql

@@ -1,10 +0,0 @@
---  2024-12-02 BY wks
-alter table sys_qy_wechat
-    drop column support_staff_url;
-
-alter table sys_qy_wechat
-    add open_kf_id varchar(256) null comment '客服账号ID';
-
-alter table sys_qy_wechat
-    add open_kf_name varchar(256) null comment '客服账号名称';
---  2024-12-02 BY wks

+ 22 - 2
src/main/java/com/ydtech/components/OrderComponents.java

@@ -287,6 +287,26 @@ public class OrderComponents {
             throw new SystemException("被保人信息 / 被保人信息 不能为空!");
         }
 
+        if (StringUtils.isEmpty(yaQuoteInfoVo.getOwnerInfo().getIdentifyType())) {
+            yaQuoteInfoVo.getOwnerInfo().setIdentifyType("1");
+        }
+        if (StringUtils.isEmpty(yaQuoteInfoVo.getInsuredPersonInfo().getIdentifyType())) {
+            yaQuoteInfoVo.getInsuredPersonInfo().setIdentifyType("1");
+        }
+        if (StringUtils.isEmpty(yaQuoteInfoVo.getPolicyHolderInfo().getIdentifyType())) {
+            yaQuoteInfoVo.getPolicyHolderInfo().setIdentifyType("1");
+        }
+
+        if (StringUtils.isEmpty(yaQuoteInfoVo.getOwnerInfo().getProperty())) {
+            yaQuoteInfoVo.getOwnerInfo().setProperty("1");
+        }
+        if (StringUtils.isEmpty(yaQuoteInfoVo.getInsuredPersonInfo().getProperty())) {
+            yaQuoteInfoVo.getInsuredPersonInfo().setProperty("1");
+        }
+        if (StringUtils.isEmpty(yaQuoteInfoVo.getPolicyHolderInfo().getProperty())) {
+            yaQuoteInfoVo.getPolicyHolderInfo().setProperty("1");
+        }
+
         if (StringUtils.isEmpty(yaQuoteInfoVo.getCarInfo().getFrameNo())) {
             throw new SystemException("车架号不能为空");
         }
@@ -382,7 +402,8 @@ public class OrderComponents {
 //        insOrder.setUsername(user.getName());
 //        insOrder.setDeptid(user.getDeptId());
 //        SysDept dept = sysDeptService.getById(user.getDeptId());
-////        SysDept dept = sysDeptService.selectByPk(user.getDeptId());
+
+    /// /        SysDept dept = sysDeptService.selectByPk(user.getDeptId());
 //        insOrder.setDeptname(dept == null ? "" : dept.getName());
 //
 //        double retailRate = countRetail(user.getDeptId(), user.getId());
@@ -475,7 +496,6 @@ public class OrderComponents {
 //        return insOrder;
 //
 //    }
-
     public InsOrder orderExists(String orderNo) {
         InsOrder insOrder = insOrderService.selectByPk(orderNo);
         if (ObjectUtils.isEmpty(insOrder)) {

+ 4 - 4
src/main/java/com/ydtech/modules/esm/service/impl/EsmUserReferrerServiceImpl.java

@@ -380,7 +380,7 @@ public class EsmUserReferrerServiceImpl extends ServiceImpl<EsmUserReferrerMappe
                 EsmTeamPolicyVO esmTeamPolicyVO1_t = this.baseMapper.queryOrderCountHz(userList1, record.getStartdate(),
                         record.getEnddate());
                 if (esmTeamPolicyVO1_t != null) {
-                    esmTeamPolicyVO1.setSumpremium(esmTeamPolicyVO1_t.getSumpremium());
+                    esmTeamPolicyVO1.setSumpremium(Double.parseDouble(String.format("%.2f",esmTeamPolicyVO1_t.getSumpremium())));
                     esmTeamPolicyVO1.setUsernum(userPolicyList1.size());//出单人力
                 }
                 esmTeamPolicyVO1.setTeamnum(userList1.size());//团队人数
@@ -393,7 +393,7 @@ public class EsmUserReferrerServiceImpl extends ServiceImpl<EsmUserReferrerMappe
                     EsmTeamPolicyVO esmTeamPolicyVO2_t = this.baseMapper.queryOrderCountHz(userList2, record.getStartdate(),
                             record.getEnddate());
                     if (esmTeamPolicyVO2_t != null) {
-                        esmTeamPolicyVO2.setSumpremium(esmTeamPolicyVO2_t.getSumpremium());
+                        esmTeamPolicyVO2.setSumpremium(Double.parseDouble(String.format("%.2f",esmTeamPolicyVO2_t.getSumpremium())));
                         esmTeamPolicyVO2.setUsernum(userPolicyList2.size());
                     }
                     esmTeamPolicyVO2.setTeamnum(userList2.size());
@@ -405,7 +405,7 @@ public class EsmUserReferrerServiceImpl extends ServiceImpl<EsmUserReferrerMappe
                         esmTeamPolicyVO3.setTeamlevel("三级会员");
                         esmTeamPolicyVO3.setTeamnum(userList3.size());
                         if (esmTeamPolicyVO3_t != null) {
-                            esmTeamPolicyVO3.setSumpremium(esmTeamPolicyVO3_t.getSumpremium());
+                            esmTeamPolicyVO3.setSumpremium(Double.parseDouble(String.format("%.2f",esmTeamPolicyVO3_t.getSumpremium())));
                             esmTeamPolicyVO3.setUsernum(userPolicyList3.size());
                         }
 
@@ -434,7 +434,7 @@ public class EsmUserReferrerServiceImpl extends ServiceImpl<EsmUserReferrerMappe
             EsmTeamPolicyVO esmTeamPolicyVO = new EsmTeamPolicyVO();
             EsmTeamPolicyVO esmTeamPolicyVO_t = this.baseMapper.queryOrderCountHz(userList, record.getStartdate(), record.getEnddate());
             if (esmTeamPolicyVO_t != null) {
-                esmTeamPolicyVO.setSumpremium(esmTeamPolicyVO_t.getSumpremium());
+                esmTeamPolicyVO.setSumpremium(Double.parseDouble(String.format("%.2f",esmTeamPolicyVO_t.getSumpremium())));
                 esmTeamPolicyVO.setUsernum(userPolicyList.size());
             }
             esmTeamPolicyVO.setTeamlevel("汇总");

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

@@ -3336,7 +3336,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                 return true;
             }
         } else if ("3".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
-            if (v.isBefore(min)) {
+            if (v.isBefore(min) || v.isEqual(min)) {
                 return true;
             }
         } else if ("4".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
@@ -3344,7 +3344,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                 return true;
             }
         } else if ("5".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
-            if (v.isAfter(max)) {
+            if (v.isAfter(max) || v.isEqual(max)) {
                 return true;
             }
         }

+ 1 - 1
src/main/java/com/ydtech/modules/ins/model/vo/CustomerInfoVo.java

@@ -37,7 +37,7 @@ public class CustomerInfoVo {
     @ApiModelProperty("组织机构代码")
     private String organizationCode;
 
-    @NotNull(message = "车主、投保人、被保人身份证类型不能为空")
+//    @NotNull(message = "车主、投保人、被保人身份证类型不能为空")
     @ApiModelProperty("身份证类型")
     private String identifyType;
 

+ 4 - 3
src/main/java/com/ydtech/modules/ins/model/yc/ruote/Applicant.java

@@ -262,7 +262,7 @@ public class Applicant {
                 name=name.replace("(","");
                 name=name.replace(")","");
             }
-
+            applicant.setCClntMrk("0");
         }else{
             applicant.setCClntAddr(policyHolderInfo.getAddr());
             applicant.setCCertfCde(policyHolderInfo.getIdentifyNumber());
@@ -273,6 +273,8 @@ public class Applicant {
             // 增加团车标志
             applicant.setCMassCarMrk(ycConfigureParameters.getCCntrNme());
             name = policyHolderInfo.getName();
+            //投保人客户分类
+            applicant.setCClntMrk("1");
         }
 
         applicant.setCResvTxt5("000");
@@ -281,8 +283,7 @@ public class Applicant {
 
         //投保人姓名
         applicant.setCAppNme(name);
-        //投保人客户分类
-        applicant.setCClntMrk(property);
+
         if(StringUtils.isNullOrEmpty(applicant.getCCntrNme())){
             applicant.setCCntrNme(policyHolderInfo.getName());
         }

+ 3 - 4
src/main/java/com/ydtech/modules/ins/model/yc/ruote/Insured.java

@@ -274,13 +274,13 @@ public class Insured {
 //            insured.setCWorkCtt(insuredPersonInfo.getScope());
             insured.setNResvNum3(insuredPersonInfo.getRegisteredCapital());
             insured.setNResvNum3Cur("01");
-
-
-        }else {
+            insured.setCClntMrk("0");
+        } else {
             insured.setCCertfCls("120001");
             insured.setCCertfCde(insuredPersonInfo.getIdentifyNumber());
             insured.setTBirthday(IDCardUtils.GetBirthday(insuredPersonInfo.getIdentifyNumber()));
             insured.setCSex(IDCardUtils.GetYcSex(insuredPersonInfo.getIdentifyNumber()));
+            insured.setCClntMrk("1");
         }
 
         insured.setCWorkDpt("900");
@@ -289,7 +289,6 @@ public class Insured {
         insured.setCInsuredNme(insuredPersonInfo.getName());
         insured.setCClntAddr(insuredPersonInfo.getAddr());
         insured.setCMobile(insuredPersonInfo.getMobile());
-        insured.setCClntMrk(property);
         insured.setCAreaCde("103132");
 
         insured.setTCertfClsValiDate(insuredPersonInfo.getIdentifyValidEndDate());

+ 3 - 8
src/main/java/com/ydtech/modules/ins/model/yc/ruote/Vhlowner.java

@@ -108,29 +108,24 @@ public class Vhlowner {
         Vhlowner vhlowner = new Vhlowner();
         vhlowner.setCOwnerNme(ownerInfo.getName());
         //0:法人 1:个人(中国籍) 2: 个人(非中国籍)
-        String property = ownerInfo.getProperty();
+        String property = ownerInfo.getProperty() ;
         if ("0".equals(property)) {
-
             vhlowner.setDrvOwnerCeritType("110004");
             vhlowner.setDrvOwnerCertiCode(ownerInfo.getOrganizationCode());
             vhlowner.setCProvince(ownerInfo.getProvince());
             vhlowner.setCCity(ownerInfo.getCity());
             vhlowner.setCCounty(ownerInfo.getCounty());
-
+            vhlowner.setCOwnerCls("0");
         }else{
-
             vhlowner.setTBirthday(IDCardUtils.GetBirthday(ownerInfo.getIdentifyNumber()));
             vhlowner.setCSex(IDCardUtils.GetYcSex(ownerInfo.getIdentifyNumber()));
             vhlowner.setDrvOwnerCeritType("120001");
             vhlowner.setDrvOwnerCertiCode(ownerInfo.getIdentifyNumber());
+            vhlowner.setCOwnerCls("1");
         }
-
 //        vhlowner.setDrvOwnerCeritType("120001");
         vhlowner.setCAreaCde("103132");
         vhlowner.setCMobile(ownerInfo.getMobile());
-
-        vhlowner.setCOwnerCls(property);
-
         vhlowner.setCWorkdptKind("900");
         //地址  自建
         vhlowner.setCWaddress(ownerInfo.getAddr());

+ 23 - 4
src/main/java/com/ydtech/modules/inv/utils/EasyExcelUtils.java

@@ -16,6 +16,7 @@ import com.ydtech.modules.inv.utils.excel.InvSettlementSourceDataListener;
 import com.ydtech.modules.inv.utils.excel.InvSourceDataListener;
 import lombok.SneakyThrows;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import java.io.*;
@@ -40,13 +41,32 @@ public class EasyExcelUtils {
 
     //通用写入
     public static String downExcel(String uploadFilePath, Class clz, List<?> list) {
-
         String file = System.currentTimeMillis() + ".xlsx";
         String fileName = uploadFilePath + file;
         EasyExcel.write(fileName, clz).sheet("1").doWrite(list);
         return file;
     }
 
+    /**
+     * @param uploadFilePath 路劲
+     * @param fileName       文件名称
+     * @param sheetName      sheet 名称
+     * @param clz            写入类型
+     * @param list           写入数据类型
+     * @return 文件路劲
+     */
+    public static String downExcel(String uploadFilePath, String fileName, String sheetName, Class<?> clz, List<?> list) {
+        File f = new File(uploadFilePath);
+        if(f.exists()) {
+            f.mkdirs();
+        }
+
+        String file = fileName + System.currentTimeMillis() + ".xlsx";
+        String filePath = uploadFilePath + file;
+        EasyExcel.write(filePath, clz).sheet(sheetName).doWrite(list);
+        return filePath;
+    }
+
     /**
      * 不创建对象的写
      */
@@ -202,7 +222,6 @@ public class EasyExcelUtils {
         return list;
     }
 
-
     public static String downExcel(String uploadFilePath, String fileName, Class clz, List<?> list) {
 
         String file = fileName + System.currentTimeMillis() + ".xlsx";
@@ -342,10 +361,10 @@ public class EasyExcelUtils {
 
 
     //保存流对象(输入流在第二次使用的时候会失效)
-    public byte[] saveIns(InputStream ins){
+    public byte[] saveIns(InputStream ins) {
         byte[] buf = null;
         try {
-            if(ins!=null){
+            if (ins != null) {
                 buf = org.apache.commons.io.IOUtils.toByteArray(ins);//ins为InputStream流
             }
         } catch (IOException e) {

+ 7 - 0
src/main/java/com/ydtech/modules/order/controller/InsOrdersController.java

@@ -294,6 +294,13 @@ public class InsOrdersController extends BaseController {
         }
     }
 
+    @PostMapping("/exportHospitalityByChannel")
+    @ApiOperation(value = "导出用户id和订单状态查询关联渠道的订单数据")
+    public HttpResult<String> exportHospitalityByChannel(@RequestBody OrderQueryVo orderQueryVo) {
+        String downloadLink = this.insOrdersService.exportTaskPoolData(orderQueryVo, OrderLinkTypeConstants.ORDER_LINK_TYPE_CONSTANTS_1);
+        return HttpResult.ok("success", downloadLink);
+    }
+
     /**
      * @version
      * @author: hxl

+ 47 - 16
src/main/java/com/ydtech/modules/order/controller/QrCodeController.java

@@ -2,17 +2,14 @@ package com.ydtech.modules.order.controller;
 
 import cn.dev33.satoken.annotation.SaIgnore;
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.constants.UserConstants;
 import com.ydtech.modules.admin.model.po.SysBarcodeConfig;
 import com.ydtech.modules.admin.service.SysBarcodeConfigService;
 import com.ydtech.modules.admin.service.SysQRCodeRelationService;
-import com.ydtech.modules.admin.service.impl.SysBarcodeConfigServiceImpl;
 import com.ydtech.modules.esm.model.EsmInsCompany;
 import com.ydtech.modules.esm.service.EsmInsCompanyService;
-import com.ydtech.modules.esm.service.impl.EsmInsCompanyServiceImpl;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrderQrCode;
 import com.ydtech.modules.order.entity.InsOrders;
@@ -20,7 +17,10 @@ import com.ydtech.modules.order.entity.vo.QrCodeVo;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsOrderQrCodeService;
 import com.ydtech.modules.order.service.InsOrdersService;
-import com.ydtech.modules.protocol.entity.constants.PtlApiType;
+import com.ydtech.modules.protocol.constants.ValidStatus;
+import com.ydtech.modules.protocol.entity.po.PtlAgreement;
+import com.ydtech.modules.protocol.service.PtlAgreementService;
+import com.ydtech.utils.StringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,10 +34,10 @@ import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
 
 import javax.annotation.Resource;
 import java.io.IOException;
-import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Objects;
 
@@ -61,6 +61,9 @@ public class QrCodeController {
     @Resource
     InsOrdersService insOrdersService;
 
+    @Resource
+    private PtlAgreementService ptlAgreementService;
+
     //二维码生成地址
     @Value("${qrcode.genAddress}")
     private String qrCodeGenAddress;
@@ -68,6 +71,7 @@ public class QrCodeController {
     //二维码生成地址
     @Value("${qrcode.imageSrc}")
     private String imageSrc;
+
     @Autowired
     private EsmInsCompanyService esmInsCompanyService;
 
@@ -133,21 +137,23 @@ public class QrCodeController {
     public Object index(String areaCompanyId) throws IOException {
         InsOrderQrCode insOrderQrCode = insOrderQrCodeService.getOne(areaCompanyId);
         InsAreaCompany insAreaCompany = insAreaCompanyService.getById(areaCompanyId);
+        if (ValidStatus.AVS_0.getCode().equals(Integer.parseInt(insAreaCompany.getCodeValidStatus()))) {
+            //重定向到错误页面中
+            return getModelAndView("费用失效,请重新报价。");
+        }
         // 根据保险公司获取二维码配置方式
         LambdaQueryWrapper<SysBarcodeConfig> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(SysBarcodeConfig::getCompanyId, insAreaCompany.getCompanyId())
                 .eq(SysBarcodeConfig::getApiType, insAreaCompany.getApiType());
         List<SysBarcodeConfig> configs = sysBarcodeConfigService.list(wrapper);
-        if (CollUtil.isEmpty(configs) || configs.size() > 1) {
+        if (CollUtil.isEmpty(getConfigs(configs)) || configs.size() > 1) {
             //重定向到错误页面中
-            ModelAndView modelAndView = new ModelAndView("qrcode_error");
-            return modelAndView;
+            return getModelAndView("配置已失效,请联系客服处理");
         }
         Integer configType = configs.get(0).getType();
         if (insOrderQrCode == null) {
             //重定向到错误页面中
-            ModelAndView modelAndView = new ModelAndView("qrcode_error");
-            return modelAndView;
+            return getModelAndView("");
         }
 
         //更新二维码扫描时间
@@ -158,8 +164,20 @@ public class QrCodeController {
         LocalDate currentDate = LocalDate.now();
         if (Math.abs(currentDate.toEpochDay() - qrcodeCreateTime.toEpochDay()) >= 1) {
             //重定向到错误页面中
-            ModelAndView modelAndView = new ModelAndView("qrcode_error");
-            return modelAndView;
+            return getModelAndView("二维码仅当天支付有效");
+        }
+
+        PtlAgreement ptlAgreement = ptlAgreementService.getById(insAreaCompany.getAgreementId());
+        // 禁用状态
+        if (ValidStatus.AVS_0.getCode().equals(Integer.parseInt(ptlAgreement.getValidStatus()))) {
+            //重定向到错误页面中
+            return getModelAndView("");
+        }
+
+        LocalDateTime endDate = ptlAgreement.getEndDate();
+        // 订单创建时间在协议失效时间之后提示错误
+        if (insAreaCompany.getCreatetime().isAfter(endDate)) {
+            return getModelAndView("");
         }
 
         if (UserConstants.CONFIG_TYPE_2.equals(configType) || UserConstants.CONFIG_TYPE_1.equals(configType)) {
@@ -199,12 +217,26 @@ public class QrCodeController {
         } else if (UserConstants.CONFIG_TYPE_0.equals(configType)) {
             return "redirect:" + insOrderQrCode.getJumpUrl();
         } else {
-            //重定向到错误页面中
-            ModelAndView modelAndView = new ModelAndView("qrcode_error");
-            return modelAndView;
+            return getModelAndView("配置已失效,请联系客服处理");
         }
     }
 
+    private static List<SysBarcodeConfig> getConfigs(List<SysBarcodeConfig> configs) {
+        return configs;
+    }
+
+    private static ModelAndView getModelAndView(String message) {
+        //重定向到错误页面中
+        ModelAndView modelAndView = new ModelAndView("qrcode_error");
+        HashMap<String, Object> map = new HashMap<>();
+        if (StringUtils.isNotEmpty(message)) {
+            map.put("message", message);
+        } else {
+            map.put("message", "协议已失效,请联系客服处理");
+        }
+        modelAndView.addAllObjects(map);
+        return modelAndView;
+    }
 
     @GetMapping(value = "/error")
     @ApiOperation(value = "错误页面显示")
@@ -212,5 +244,4 @@ public class QrCodeController {
         return "qrcode_error";
     }
 
-
 }

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

@@ -135,6 +135,7 @@ public interface InsOrdersMapper extends BaseMapper<InsOrders> {
 
     /**
      * 查找未删除的外部订单
+     *
      * @param insOrdersEditingVo
      * @return
      */
@@ -165,4 +166,21 @@ public interface InsOrdersMapper extends BaseMapper<InsOrders> {
      * @return 被保人列表
      */
     List<String> queryInsured(@Param("queryInsuredInOrderVo") QueryLicenseInOrderVo queryInsuredInOrderVo, String userId);
+
+    /**
+     * 根据业务类型查询数据
+     *
+     * @param orderQueryVo 订单查询信息
+     * @param agentUserIds 管理人员列表
+     * @param agreeIds     管理区域
+     * @param code         业务类型
+     * @return
+     */
+    List<InsOrders> queryOrderByLinkType(
+            @Param("orderQueryVo") OrderQueryVo orderQueryVo,
+            @Param("agentUserIds") List<String> agentUserIds,
+            @Param("agreeIds") List<String> agreeIds,
+            @Param("type") Integer code,
+            @Param("flag") Boolean flag
+    );
 }

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

@@ -80,6 +80,14 @@ public class InsAreaCompany implements Serializable {
      */
     @TableField(value = "reqtxt", typeHandler = FastjsonTypeHandler.class)
     private JSONObject reqtxt;
+
+    /**
+     * 二维码有效状态
+     * @see com.ydtech.modules.protocol.constants.ValidStatus
+     */
+    @TableField(value = "code_valid_status")
+    private String codeValidStatus;
+
     /**
      * 响应报文
      */

+ 59 - 59
src/main/java/com/ydtech/modules/order/entity/api/yangguang/request/YangGuangAccuracyCalculateRequest.java

@@ -225,69 +225,69 @@ public class YangGuangAccuracyCalculateRequest extends YangGuangBaseRequest{
                                              RiskInfoVo riskInfoVo, String startDate,
                                              YangGuangConfigureParameters ygConfigureParameters,
                                              BaseQuoteVo<List<YgQuoteAccidentVo>> quoteVo) {
-    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-    this.RequestNo = "accuracyCalculate";
-    this.UnderWritingRate = quoteVo.getCoefficient();
-    this.ComCode = ygConfigureParameters.getComCode();
-    this.HandlerCode = ygConfigureParameters.getHandlerCode();
-    this.TongxinNo = ygConfigureParameters.getTongxinNo() == null ? "" : ygConfigureParameters.getTongxinNo();
-    this.InfotransNo = getInfotransNo();
-    this.Modelinfoid = carmodellist.getModelinfoid();
-    LocalDateTime startTime = LocalDateTime.parse(startDate, formatter);
-    LocalDateTime endTime = startTime.plusYears(1).with(LocalTime.MIDNIGHT).minusSeconds(1);
-
-    if (quoteInfoVo.getProductId().equals("034001")) {
-        this.BiStartDate = startTime.format(formatter);
-        this.BiEndDate = endTime.format(formatter);
-        this.CiStartDate = "";
-        this.CiEndDate = "";
-        this.PolicyType = "1";
-        this.CiImmediateFlag = "0";
-        if (riskInfoVo.getInstantFlag().equals("1")) {
-            this.BiImmediateFlag = "1";
-        } else {
-            this.BiImmediateFlag = "0";
-        }
-    } else if (quoteInfoVo.getProductId().equals("0330")) {
-        this.CiStartDate = startTime.format(formatter);
-        this.CiEndDate = endTime.format(formatter);
-        this.BiStartDate = "";
-        this.BiEndDate = "";
-        this.PolicyType = "2";
-        this.BiImmediateFlag = "0";
-        if (riskInfoVo.getInstantFlag().equals("1")) {
-            this.CiImmediateFlag = "1";
-        } else {
-            this.CiImmediateFlag = "0";
-        }
-    } else {
-        this.CiStartDate = startTime.format(formatter);
-        this.CiEndDate = endTime.format(formatter);
-        this.BiStartDate = startTime.toString();
-        this.BiEndDate = endTime.toString();
-        this.PolicyType = "3";
-        if (riskInfoVo.getInstantFlag().equals("1")) {
-            this.CiImmediateFlag = "1";
-            this.BiImmediateFlag = "1";
-        } else {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        this.RequestNo = "accuracyCalculate";
+        this.UnderWritingRate = quoteVo.getCoefficient();
+        this.ComCode = ygConfigureParameters.getComCode();
+        this.HandlerCode = ygConfigureParameters.getHandlerCode();
+        this.TongxinNo = ygConfigureParameters.getTongxinNo() == null ? "" : ygConfigureParameters.getTongxinNo();
+        this.InfotransNo = getInfotransNo();
+        this.Modelinfoid = carmodellist.getModelinfoid();
+        LocalDateTime startTime = LocalDateTime.parse(startDate, formatter);
+        LocalDateTime endTime = startTime.plusYears(1).with(LocalTime.MIDNIGHT).minusSeconds(1);
+
+        if (quoteInfoVo.getProductId().equals("034001") || quoteInfoVo.getProductId().equals("034002")) {
+            this.BiStartDate = startTime.format(formatter);
+            this.BiEndDate = endTime.format(formatter);
+            this.CiStartDate = "";
+            this.CiEndDate = "";
+            this.PolicyType = "1";
             this.CiImmediateFlag = "0";
+            if (riskInfoVo.getInstantFlag().equals("1")) {
+                this.BiImmediateFlag = "1";
+            } else {
+                this.BiImmediateFlag = "0";
+            }
+        } else if (quoteInfoVo.getProductId().equals("0330")) {
+            this.CiStartDate = startTime.format(formatter);
+            this.CiEndDate = endTime.format(formatter);
+            this.BiStartDate = "";
+            this.BiEndDate = "";
+            this.PolicyType = "2";
             this.BiImmediateFlag = "0";
+            if (riskInfoVo.getInstantFlag().equals("1")) {
+                this.CiImmediateFlag = "1";
+            } else {
+                this.CiImmediateFlag = "0";
+            }
+        } else {
+            this.CiStartDate = startTime.format(formatter);
+            this.CiEndDate = endTime.format(formatter);
+            this.BiStartDate = startTime.toString();
+            this.BiEndDate = endTime.toString();
+            this.PolicyType = "3";
+            if (riskInfoVo.getInstantFlag().equals("1")) {
+                this.CiImmediateFlag = "1";
+                this.BiImmediateFlag = "1";
+            } else {
+                this.CiImmediateFlag = "0";
+                this.BiImmediateFlag = "0";
+            }
         }
-    }
-    this.IsCreateEpolicyJQ = "1";
-    this.ArgueSolution = "1";
-    this.NoDamageYears = "";
-    this.RequestDate = LocalDateTime.now().format(formatter);
-    this.insuredList = YangGuangAccuracyCalculateRequest.InsuredListDTO.toInsuredListDTOList(quoteInfoVo.getPolicyHolderInfo(), quoteInfoVo.getInsuredPersonInfo());
-    this.carowner = new CarOwnerInfoDTO(quoteInfoVo.getOwnerInfo(),quoteInfoVo.getCarInfo());
-    this.itemcar = new ItemCarInfoDTO(quoteInfoVo.getCarInfo(),carmodellist);
-    this.kindList = ItemKindListDTO.toItemKindListDTOList(actualValue, quoteInfoVo.getKindList(),
+        this.IsCreateEpolicyJQ = "1";
+        this.ArgueSolution = "1";
+        this.NoDamageYears = "";
+        this.RequestDate = LocalDateTime.now().format(formatter);
+        this.insuredList = YangGuangAccuracyCalculateRequest.InsuredListDTO.toInsuredListDTOList(quoteInfoVo.getPolicyHolderInfo(), quoteInfoVo.getInsuredPersonInfo());
+        this.carowner = new CarOwnerInfoDTO(quoteInfoVo.getOwnerInfo(),quoteInfoVo.getCarInfo());
+        this.itemcar = new ItemCarInfoDTO(quoteInfoVo.getCarInfo(),carmodellist);
+        this.kindList = ItemKindListDTO.toItemKindListDTOList(actualValue, quoteInfoVo.getKindList(),
                 Integer.parseInt(quoteInfoVo.getCarInfo().getSeatCount()) - 1, quoteInfoVo.getCarInfo().isNewEnergy());
-    if (ArrayUtil.isNotEmpty(quoteVo.getAccidentalDrivingVo()) && quoteVo.getAccidentalDrivingVo().size() > 0) {
-        this.NonVehicleProductInformationList = quoteVo.getAccidentalDrivingVo().stream().map(NonVehicleProductInformationListDTO::new).collect(Collectors.toList());
-        this.CasualtyFlag = "1";
-    }
-    this.carshipyTaxInfo = new CarshipyTaxInfoDTO(quoteInfoVo.getVehicleAndVesselTax(),riskInfoVo,quoteInfoVo.getOwnerInfo());
+        if (ArrayUtil.isNotEmpty(quoteVo.getAccidentalDrivingVo()) && quoteVo.getAccidentalDrivingVo().size() > 0) {
+            this.NonVehicleProductInformationList = quoteVo.getAccidentalDrivingVo().stream().map(NonVehicleProductInformationListDTO::new).collect(Collectors.toList());
+            this.CasualtyFlag = "1";
+        }
+        this.carshipyTaxInfo = new CarshipyTaxInfoDTO(quoteInfoVo.getVehicleAndVesselTax(),riskInfoVo,quoteInfoVo.getOwnerInfo());
     }
 
     public static List<NonVehicleProductInformationListDTO> toCarPolicySubInfoListDTO(List<YgQuoteAccidentVo> ygQuoteAccidentVos) {

+ 105 - 0
src/main/java/com/ydtech/modules/order/entity/dto/TaskPoolDataExcelDto.java

@@ -0,0 +1,105 @@
+package com.ydtech.modules.order.entity.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ydtech.modules.admin.constants.ManagementSource;
+import com.ydtech.modules.order.constants.OrderEntryStatus;
+import com.ydtech.modules.order.constants.UnderwritingStatus;
+import com.ydtech.modules.order.entity.InsOrders;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.format.DateTimeFormatter;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TaskPoolDataExcelDto {
+
+    @ExcelProperty("订单号")
+    private String orderNo;
+
+    @ExcelProperty("投保险种")
+    private String product;
+
+    @ExcelProperty("归属信息")
+    private String areaInfo;
+
+    @ExcelProperty("业务员姓名")
+    private String username;
+
+    @ExcelProperty("管理人")
+    private String leaderName;
+
+    @ExcelProperty("业务来源")
+    private String managementSource;
+
+    @ExcelProperty("录入来源")
+    private String entryStatus;
+
+    @ExcelProperty("已承保公司")
+    private String partnerCompaniesName;
+
+    @ExcelProperty("车牌号")
+    private String licenseNo;
+
+    @ExcelProperty("交强险保费")
+    private String jqPremium;
+
+    @ExcelProperty("商业险保费")
+    private String syPremium;
+
+    @ExcelProperty("车船税")
+    private String taxAmount;
+
+    @ExcelProperty("驾意险保费")
+    private String jyPremium;
+
+    @ExcelProperty("投保人姓名")
+    private String insuredName;
+
+    @ExcelProperty("核保通过方式")
+    private String underwritingStatus;
+
+    @ExcelProperty("业务员工号")
+    private String userid;
+
+    @ExcelProperty("报价时间")
+    private String createTime;
+
+    public TaskPoolDataExcelDto(InsOrders insOrder) {
+        this.orderNo = insOrder.getSubOrderId();
+        this.product = insOrder.getProduct();
+        this.areaInfo = insOrder.getAreaInfo();
+        this.username = insOrder.getUsername();
+        this.leaderName = insOrder.getLeaderName();
+
+        this.managementSource = insOrder.getManagementSource();
+        try {
+            OrderEntryStatus orderEntryStatus = OrderEntryStatus.valueOf("OES_" + insOrder.getEntryStatus());
+            this.entryStatus = orderEntryStatus.getDesc();
+        } catch (Exception e) {
+            this.entryStatus = "";
+        }
+
+        this.partnerCompaniesName = insOrder.getPartnerCompaniesName();
+        this.licenseNo = insOrder.getLicenseno();
+        this.jqPremium = insOrder.getJqpremium();
+        this.syPremium = insOrder.getSypremium();
+        this.taxAmount = insOrder.getTaxamount();
+        this.jyPremium = insOrder.getJypremium();
+        this.insuredName = insOrder.getInsuredname();
+
+        try {
+            UnderwritingStatus status = UnderwritingStatus.valueOf("US_" + insOrder.getUnderwritingStatus());
+            this.underwritingStatus = status.getDesc();
+        } catch (Exception e) {
+            this.underwritingStatus = "";
+        }
+
+        this.userid = insOrder.getUserid();
+        this.createTime = insOrder.getCreatetime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+    }
+
+
+}

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

@@ -8,6 +8,7 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.ins.model.InsOrdersExcelVo;
 import com.ydtech.modules.ins.model.ya.CarModelDTO;
+import com.ydtech.modules.order.constants.OrderLinkTypeConstants;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
@@ -302,4 +303,13 @@ public interface InsOrdersService extends IService<InsOrders> {
      * @return
      */
     boolean delExternalOrder(InsOrdersEditingVo insOrdersEditingVo);
+
+    /**
+     * 导出任务池数据-渠道
+     * @author: wks
+     * @param orderQueryVo 任务池查询项
+     * @param orderLinkTypeConstants  用户订单关联类型
+     * @return 下载链接
+     */
+    String exportTaskPoolData(OrderQueryVo orderQueryVo, OrderLinkTypeConstants orderLinkTypeConstants);
 }

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

@@ -95,6 +95,13 @@ public class InsOrderPdfUrlServiceImpl extends ServiceImpl<InsOrderPdfUrlMapper,
         InsAreaCompany subOrder = insAreaCompanyService.getById(subOrderId);
         InsOrders insOrders = insOrdersService.getById(subOrder.getOrderno());
         InsOrderPdfUrl jqUrlEntity = insOrderPdfUrlMapper.findEntityBySubOrderId(subOrderId);
+        //如果是外部订单重新更新下生成路径表中的数据   add by hxl  2024-12-10
+        if(insOrders.getIsExternal()!=null && insOrders.getIsExternal() ==1){
+            ReadPdfUrlListDto readPdfUrlListDto = insAreaCompanyExternalPolicyService.getPolicyByCompanyIdPdfList(subOrder, insOrders);
+            InsOrderPdfUrl insOrderPdfUrl = tranferData(readPdfUrlListDto, subOrder.getId(), subOrder.getProduct());
+            this.saveOrUpdate(insOrderPdfUrl);
+            jqUrlEntity =insOrderPdfUrl;
+        }
         return insertOrderPdfData(subOrder,insOrders, false,jqUrlEntity);
     }
     /**

+ 113 - 44
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.order.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import com.alibaba.excel.EasyExcel;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -47,13 +48,12 @@ import com.ydtech.modules.ins.model.ya.ResponseDataC2;
 import com.ydtech.modules.inv.utils.EasyExcelUtils;
 import com.ydtech.modules.order.constants.BusinessConstant;
 import com.ydtech.modules.order.constants.JqInsuranceType;
+import com.ydtech.modules.order.constants.OrderEntryStatus;
+import com.ydtech.modules.order.constants.OrderLinkTypeConstants;
 import com.ydtech.modules.order.dao.InsOrdersMapper;
 import com.ydtech.modules.order.entity.*;
 import com.ydtech.modules.order.entity.crawler.response.CrawlerVerifyPaymentResponse;
-import com.ydtech.modules.order.entity.dto.DrivingInsuranceDto;
-import com.ydtech.modules.order.entity.dto.InquiryDetalsQueryDto;
-import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
-import com.ydtech.modules.order.entity.dto.TelemarketingAuditOrderDTO;
+import com.ydtech.modules.order.entity.dto.*;
 import com.ydtech.modules.order.entity.vo.*;
 import com.ydtech.modules.order.entity.vo.OrderVo;
 import com.ydtech.modules.order.entity.vo.bohai.BoHaiQuoteAccidentVo;
@@ -97,6 +97,7 @@ import javax.validation.constraints.NotBlank;
 import java.io.File;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
@@ -156,6 +157,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Value("${upload.file.path}")
     private String uploadFilePath;
 
+    @Value("${upload.file.url}")
+    private String uploadUrlPath;
+
     @Autowired
     private SysUserLinkPtlAgreementMapper sysUserLinkPtlAgreementMapper;
 
@@ -201,7 +205,6 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     private SysProportionConfigMapper sysProportionConfigMapper;
 
 
-
     public InsOrdersServiceImpl(OrderComponents orderComponents, SysUserService sysUserService,
                                 SysUserRoleService sysUserRoleService,
                                 EsmUserReferrerService esmUserReferrerService, SysDeptService sysDeptService,
@@ -295,10 +298,10 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 sysPremiumDetailsInfo.setLicenseno(insOrders.getLicenseno());
                 sysPremiumDetailsMapper.insert(sysPremiumDetailsInfo);
 
-                String deptId=getFiveDeptId(sysDept);
+                String deptId = getFiveDeptId(sysDept);
                 //工作室管理员抽层费用记录
                 SysAgencyLeader sysAgencyLeader = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>()
-                        .eq(SysAgencyLeader::getDeptId, deptId).eq(SysAgencyLeader::getDelFlag,1));
+                        .eq(SysAgencyLeader::getDeptId, deptId).eq(SysAgencyLeader::getDelFlag, 1));
                 if (sysAgencyLeader != null) {
                     //工作室分钱
                     String proportional = sysAgencyLeader.getProportional();
@@ -341,7 +344,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                         BigDecimal bigDecimal1 = bigDecimal.multiply(new BigDecimal(sysProportionConfig.getOneProportion())
                                 .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN);
                         map.put(1, bigDecimal1);
-                    }else {
+                    } else {
                         map.put(1, null);
                     }
                     String twoProportion = sysProportionConfig.getTwoProportion();
@@ -349,7 +352,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                         BigDecimal bigDecimal2 = bigDecimal.multiply(new BigDecimal(sysProportionConfig.getTwoProportion())
                                 .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN);
                         map.put(2, bigDecimal2);
-                    }else {
+                    } else {
                         map.put(2, null);
                     }
 
@@ -359,7 +362,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                         BigDecimal bigDecimal3 = bigDecimal.multiply(new BigDecimal(sysProportionConfig.getThreeProportion())
                                 .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN);
                         map.put(3, bigDecimal3);
-                    }else {
+                    } else {
                         map.put(3, null);
                     }
 
@@ -369,7 +372,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                         BigDecimal bigDecimal4 = bigDecimal.multiply(new BigDecimal(sysProportionConfig.getFourProportion())
                                 .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN);
                         map.put(4, bigDecimal4);
-                    }else {
+                    } else {
                         map.put(4, null);
                     }
 
@@ -378,7 +381,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                         BigDecimal bigDecimal5 = bigDecimal.multiply(new BigDecimal(sysProportionConfig.getFiveProportion())
                                 .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN);
                         map.put(5, bigDecimal5);
-                    }else {
+                    } else {
                         map.put(5, null);
                     }
 
@@ -387,24 +390,24 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                     List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
                             .eq(SysRelationPerson::getAgencyLeaderId, sysAgencyLeader.getUserId()).eq(SysRelationPerson::getType, 1));
 
-                    Map<Integer, SysRelationPerson> collect = sysRelationPersonList.stream().collect(Collectors.toMap(SysRelationPerson::getSuggestLevel, x->x));
+                    Map<Integer, SysRelationPerson> collect = sysRelationPersonList.stream().collect(Collectors.toMap(SysRelationPerson::getSuggestLevel, x -> x));
 
                     for (Integer integer : collect1) {
                         SysPremiumDetails sysPremiumDetail = new SysPremiumDetails();
                         BigDecimal bigDecimal6 = map.get(integer);
-                        if(bigDecimal6 == null){
+                        if (bigDecimal6 == null) {
                             continue;
                         }
 
                         if (integer == 1) {
                             sysPremiumDetail.setProportional(oneProportion);
-                        }else if (integer == 2) {
+                        } else if (integer == 2) {
                             sysPremiumDetail.setProportional(twoProportion);
-                        }else if (integer == 3) {
+                        } else if (integer == 3) {
                             sysPremiumDetail.setProportional(threeProportion);
-                        }else if (integer == 4) {
+                        } else if (integer == 4) {
                             sysPremiumDetail.setProportional(fourProportion);
-                        }else if (integer == 5) {
+                        } else if (integer == 5) {
                             sysPremiumDetail.setProportional(fiveProportion);
                         }
                         sysPremiumDetail.setSource(integer);
@@ -413,7 +416,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                         int c = integer;
                         if (sysRelationPerson == null) {
 
-                            for(int a = collect1.indexOf(integer); a < collect1.size(); a++ ){
+                            for (int a = collect1.indexOf(integer); a < collect1.size(); a++) {
                                 System.out.println(a);
                                 Integer integer1 = collect1.get(a);
 
@@ -451,7 +454,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                     }
                 }
             }
-        }catch (Exception e){
+        } catch (Exception e) {
 
         }
 
@@ -461,7 +464,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         String comlevel = sysDept.getComlevel();
         if (StringUtils.isNotEmpty(comlevel) && comlevel.equals("5")) {
             return sysDept.getId();
-        }else {
+        } else {
             SysDept sysDept1 = sysDeptService.getById(sysDept.getParentId());
             return getFiveDeptId(sysDept1);
         }
@@ -1026,15 +1029,15 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             if (accidentInfo.isEmpty()) {
 
                 InsDrivingIntentionInsurance one = insDrivingIntentionInsuranceService.getOne(new LambdaQueryWrapper<InsDrivingIntentionInsurance>()
-                        .and(wrapper-> wrapper
-                            .eq(InsDrivingIntentionInsurance::getProjectCode, insAreaCompanyAccidentalDriving.getRideRiskCode())
-                            .or()
-                            .eq(InsDrivingIntentionInsurance::getRiskCode, insAreaCompanyAccidentalDriving.getRideRiskCode())
+                        .and(wrapper -> wrapper
+                                .eq(InsDrivingIntentionInsurance::getProjectCode, insAreaCompanyAccidentalDriving.getRideRiskCode())
+                                .or()
+                                .eq(InsDrivingIntentionInsurance::getRiskCode, insAreaCompanyAccidentalDriving.getRideRiskCode())
                         )
                         .and(wrapper ->
-                        wrapper.isNull(InsDrivingIntentionInsurance::getSeatNum)
-                            .or()
-                            .eq(InsDrivingIntentionInsurance::getSeatNum, orderAndAreaCompany.getCarinfo().getString("seatCount"))));
+                                wrapper.isNull(InsDrivingIntentionInsurance::getSeatNum)
+                                        .or()
+                                        .eq(InsDrivingIntentionInsurance::getSeatNum, orderAndAreaCompany.getCarinfo().getString("seatCount"))));
                 if (!Objects.isNull(one)) {
                     JSONObject accidentInfoObject = new JSONObject();
                     accidentInfoObject.put("name", one.getProjectName());
@@ -1614,7 +1617,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         if (InsuranceEnum.YAIC.getCode().equals(orderAndAreaCompany.getCompanyId().substring(0, 4))) {
             JSONObject reptxt = orderAndAreaCompany.getReptxt();
             // add by  hxl  2024-10-14   处理永安财险查询报错
-            if(reptxt!=null){
+            if (reptxt != null) {
                 ResponseDataC2 responseDataC2 = JSON.toJavaObject(reptxt, ResponseDataC2.class);
                 List<ExtendInfoDto> extendInfoDtos = responseDataC2.getResponseBody().getExtendInfo();
                 Map<String, String> stringStringMap = extendInfoDtos.stream().collect(LinkedHashMap::new,
@@ -1622,7 +1625,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                                 v.getValue()), LinkedHashMap::putAll);
                 yaExtendInfoDto = new YaExtendInfoDto(stringStringMap);
                 orderAndAreaCompany.setExtendInfo(yaExtendInfoDto);
-            }else{
+            } else {
                 orderAndAreaCompany.setExtendInfo(new HashMap<String, String>());
             }
 
@@ -1732,11 +1735,11 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             return baseQuoteVo;
         }
 
-        if(baseQuoteVo.getAccidentalDrivingVo().getParentId()!= null && !baseQuoteVo.getAccidentalDrivingVo().getParentId().equals("")
-            && !baseQuoteVo.getAccidentalDrivingVo().getParentId().equals("0")){
+        if (baseQuoteVo.getAccidentalDrivingVo().getParentId() != null && !baseQuoteVo.getAccidentalDrivingVo().getParentId().equals("")
+                && !baseQuoteVo.getAccidentalDrivingVo().getParentId().equals("0")) {
             //查父级属性
             InsDrivingIntentionInsurance byProjectCode = insDrivingIntentionInsuranceService.getById(baseQuoteVo.getAccidentalDrivingVo().getParentId());
-            if(!Objects.isNull(byProjectCode)) {
+            if (!Objects.isNull(byProjectCode)) {
                 baseQuoteVo.getAccidentalDrivingVo().setParentCode(byProjectCode.getProjectCode());
                 baseQuoteVo.getAccidentalDrivingVo().setParentName(byProjectCode.getProjectName());
             }
@@ -1755,7 +1758,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             guoRenBaseQuoteVo.getAccidentalDrivingVo().setProdCode(baseQuoteVo.getAccidentalDrivingVo().getProjectCode());
             guoRenBaseQuoteVo.getAccidentalDrivingVo().setGoodsCode(baseQuoteVo.getAccidentalDrivingVo().getParentCode());
             guoRenBaseQuoteVo.getAccidentalDrivingVo().setGoodsName(baseQuoteVo.getAccidentalDrivingVo().getParentName());
-            InsDrivingIntentionInsurance byProjectCode = insDrivingIntentionInsuranceService.getByProjectCode(baseQuoteVo.getCompanyId(), baseQuoteVo.getAccidentalDrivingVo().getProjectCode(),baseQuoteVo.getSeatNum());
+            InsDrivingIntentionInsurance byProjectCode = insDrivingIntentionInsuranceService.getByProjectCode(baseQuoteVo.getCompanyId(), baseQuoteVo.getAccidentalDrivingVo().getProjectCode(), baseQuoteVo.getSeatNum());
             guoRenBaseQuoteVo.getAccidentalDrivingVo().setRiskCode(byProjectCode.getRiskCode());
             guoRenBaseQuoteVo.getAccidentalDrivingVo().setQuantity(baseQuoteVo.getAccidentalDrivingVo().getQuantity());
             return guoRenBaseQuoteVo;
@@ -1887,7 +1890,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             InsDrivingIntentionInsurance byProjectCode = insDrivingIntentionInsuranceService.getByProjectCode(baseQuoteVo.getCompanyId(), baseQuoteVo.getAccidentalDrivingVo().getProjectCode(), baseQuoteVo.getSeatNum());
             chengtaiBaseQuoteVo.setAccidentalDrivingVo(JSONObject.parseObject(byProjectCode.getRequestData()));
             return chengtaiBaseQuoteVo;
-        } else if(baseQuoteVo.getCompanyId().equals("CPIC1000000")){
+        } else if (baseQuoteVo.getCompanyId().equals("CPIC1000000")) {
             // 太平洋财险
             BaseQuoteVo<Object> taiPingYangBaseQuoteVo = new BaseQuoteVo<>();
             BeanUtils.copyProperties(baseQuoteVo, taiPingYangBaseQuoteVo);
@@ -2324,11 +2327,12 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         insAreaCompanyService.insertCompanyAndOrders(insAreaCompany, insAreaCompanyAccidentalDriving);
         return true;
     }
+
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2024/10/17 10:53
-     *  @Description:  查詢已承保
+     * @version
+     * @author: hxl
+     * @Date: 2024/10/17 10:53
+     * @Description: 查詢已承保
      */
     @Override
     public BasePageResult<InsOrders> queryPageOrderCB(OrderQueryVo orderQueryVo) {
@@ -2357,12 +2361,12 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Override
     public boolean delExternalOrder(InsOrdersEditingVo insOrdersEditingVo) {
         InsOrders externalOrder = baseMapper.selectOne(new LambdaQueryWrapper<InsOrders>()
-                .eq(InsOrders::getOrderno,insOrdersEditingVo.getOrderno())
+                .eq(InsOrders::getOrderno, insOrdersEditingVo.getOrderno())
                 .isNull(InsOrders::getDelFlag)
-                .eq(InsOrders::getOrderstatus,"0")
-                .eq(InsOrders::getEntryStatus,"3"));
+                .eq(InsOrders::getOrderstatus, "0")
+                .eq(InsOrders::getEntryStatus, "3"));
 
-        if(externalOrder == null){
+        if (externalOrder == null) {
             throw new SystemException("未找到暂存订单");
         }
         //设置删除标识
@@ -2380,7 +2384,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
         // 更新维护人
         String s = Optional.ofNullable(sysUser).map(SysUser::getLeaderId).orElse(null);
-        if(StringUtils.isNotEmpty(s)){
+        if (StringUtils.isNotEmpty(s)) {
             insAreaCompany.setLeaderId(sysUser.getLeaderId());
             insAreaCompany.setLeaderName(sysUser.getLeaderName());
         }
@@ -2426,4 +2430,69 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         newOrderObj.remove("createtime");
         return oldOrderObj.equals(newOrderObj);
     }
+
+    @Override
+    public String exportTaskPoolData(OrderQueryVo orderQueryVo, OrderLinkTypeConstants orderLinkTypeConstants) {
+        //添加收回按钮的操作
+        Boolean flag = false;
+
+        List<String> agentUserIds = new ArrayList<>();
+        List<String> agreeIds = new ArrayList<>();
+        String signStartDateStr = orderQueryVo.getSignStartDateStr();
+        String signEndDateStr = orderQueryVo.getSignEndDateStr();
+
+        if (!InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(orderQueryVo.getOrderStatus())) {
+            throw new SystemException("只允许导出已承保数据");
+        }
+
+        if (StringUtils.isEmpty(signStartDateStr) || StringUtils.isEmpty(signEndDateStr)) {
+            throw new SystemException("1.导出数据时,签单时间必填;2.选择的签单时间(开始日期-结束日期)>30天,导出时,按结束时间往前+30天的数据做导出");
+        }
+
+        final int day = 30;
+        DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDate startDate = LocalDate.parse(signStartDateStr, pattern);
+        LocalDate endDate = LocalDate.parse(signStartDateStr, pattern);
+        long between = ChronoUnit.DAYS.between(startDate, endDate);
+        if (between > day) {
+            LocalDate localDate = endDate.minusDays(day);
+            orderQueryVo.setSignStartDateStr(localDate.format(pattern));
+        }
+
+        switch (orderLinkTypeConstants) {
+            case ORDER_LINK_TYPE_CONSTANTS_1:
+                agentUserIds = sysUserService.getUserIdsByLeaderId(orderQueryVo.getUserId());
+                break;
+            case ORDER_LINK_TYPE_CONSTANTS_2:
+                //查询所有的代理人
+                //查询绑定的区域的代理人信息
+                List<String> areaCodes = sysUserLinkAreaMapper.findAreaCodeByUserId(orderQueryVo.getUserId());
+                if (areaCodes != null && !areaCodes.isEmpty()) {
+                    agentUserIds = sysUserLinkAreaMapper.findAreaIdsByAgentUserId(orderQueryVo.getUserId(), areaCodes);
+                }
+                break;
+            case ORDER_LINK_TYPE_CONSTANTS_3:
+                //查询用户关联的协议
+                List<SysUserLinkPtlAgreementDto> ptlAgreementListByUserIds =
+                        sysUserLinkPtlAgreementMapper.findPtlAgreementListByUserId(orderQueryVo.getUserId());
+                if (ptlAgreementListByUserIds != null && !ptlAgreementListByUserIds.isEmpty()) {
+                    agreeIds = ptlAgreementListByUserIds.stream().map(sysUserLinkPtlAgreementDto -> sysUserLinkPtlAgreementDto.getPtlAgreement().getId()).collect(Collectors.toList());
+                }
+                break;
+            case ORDER_LINK_TYPE_CONSTANTS_4:
+                agentUserIds = sysUserService.getTelemarketingPersonnelData();
+                break;
+        }
+
+        if (agentUserIds != null && !agentUserIds.isEmpty() || !agreeIds.isEmpty()) {
+            List<InsOrders> insOrders = baseMapper.queryOrderByLinkType(orderQueryVo, agentUserIds, agreeIds, orderLinkTypeConstants.getCode(), flag);
+            List<TaskPoolDataExcelDto> collect = insOrders.stream().map(TaskPoolDataExcelDto::new).collect(Collectors.toList());
+            String s = EasyExcelUtils.downExcel(uploadFilePath + "task-pool/", orderLinkTypeConstants.getDesc(), orderLinkTypeConstants.getDesc(), TaskPoolDataExcelDto.class, collect);
+            return s.replace(uploadFilePath, uploadUrlPath);
+        }
+
+        throw new SystemException("文件导出失败");
+    }
+
+
 }

+ 24 - 0
src/main/java/com/ydtech/modules/protocol/constants/ValidStatus.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.protocol.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: 有效状态
+ * @author: wenks
+ * @date: 2024/12/9 10:18
+ **/
+@AllArgsConstructor
+@Getter
+public enum ValidStatus {
+
+    AVS_0(0, "禁用"),
+    AVS_1(1, "启用");
+
+    private final Integer code;
+
+    private final String description;
+
+}

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

@@ -152,6 +152,7 @@ public class PtlAgreement implements Serializable {
     private String moneyType;
 
     /**
+     * @see com.ydtech.modules.protocol.constants.ValidStatus
      * 有效状态
      */
     @TableField(value = "valid_status")

+ 27 - 0
src/main/java/com/ydtech/modules/protocols/constants/AgreementProductCostsAuditStatus.java

@@ -0,0 +1,27 @@
+package com.ydtech.modules.protocols.constants;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Getter;
+
+
+
+/**
+ * @version
+ * @description: 审核状态
+ * @author: wenks
+ * @date: 2024/12/9 15:36
+ **/
+@AllArgsConstructor
+@Getter
+public enum AgreementProductCostsAuditStatus {
+
+    COSTS_AUDIT_STATUS_0(0, "未审核"),
+    COSTS_AUDIT_STATUS_1(1, "审核通过"),
+    COSTS_AUDIT_STATUS_2(2, "驳回");
+
+    private final Integer code;
+
+    private final String description;
+
+}

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

@@ -111,6 +111,18 @@ public class PtlNewAgreementController extends BaseController {
         return ptlAgreementProductCostsNewService.costsUpdate(agreementProductCosts) ? HttpResult.ok("更新协议费用成功") : HttpResult.error("更新协议费用失败");
     }
 
+    @ApiOperation(value = "通过id禁用费用")
+    @PostMapping("/costs/disable/{costsId}")
+    public HttpResult costsDisable(@PathVariable String costsId) {
+        return ptlAgreementProductCostsNewService.costsDisable(costsId);
+    }
+
+    @ApiOperation(value = "禁用费用")
+    @PostMapping("/costs/batchDisable")
+    public HttpResult costsBatchDisable(@RequestBody CostsBatchDisableVo costsBatchDisableVo) {
+        return ptlAgreementProductCostsNewService.costsBatchDisable(costsBatchDisableVo.getCostsIdList());
+    }
+
     @ApiOperation(value = "删除协议费用")
     @PostMapping("/costs/delete")
     public HttpResult costsDelete(String costsId){

+ 11 - 1
src/main/java/com/ydtech/modules/protocols/entity/po/PtlAgreementProductCostsNew.java

@@ -23,7 +23,7 @@ import java.util.List;
 @AllArgsConstructor
 public class PtlAgreementProductCostsNew {
 
-    @TableId(value = "id",type= IdType.AUTO)
+    @TableId(value = "id", type = IdType.AUTO)
     private String id;
 
     @ApiModelProperty(value = "保险公司名称")
@@ -127,10 +127,20 @@ public class PtlAgreementProductCostsNew {
     @TableField(value = "create_by")
     private String createBy;
 
+    /**
+     * @see com.ydtech.modules.protocols.constants.AgreementProductCostsAuditStatus
+     */
     @ApiModelProperty(value = "是否审核")
     @TableField(value = "is_audit")
     private Integer isAudit;
 
+    /**
+     * @see com.ydtech.modules.protocol.constants.ValidStatus
+     */
+    @ApiModelProperty(value = "费用状态")
+    @TableField(value = "valid_status")
+    private Integer validStatus;
+
     @ApiModelProperty(value = "驳回信息")
     @TableField(value = "reject")
     private String reject;

+ 1 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCosts.java

@@ -16,6 +16,7 @@ import java.util.List;
 @Data
 public class AgreementProductCosts implements Serializable {
 
+    private static final long serialVersionUID = -1397990482130505322L;
 
     @TableId(value = "id", type = IdType.AUTO)
     @ApiModelProperty(value = "费用id")

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

@@ -1,13 +1,17 @@
 package com.ydtech.modules.protocols.entity.vo;
 
 import com.ydtech.core.page.PageRequest;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 import java.util.List;
 
+@EqualsAndHashCode(callSuper = true)
 @Data
 public class AgreementProductQueryVo extends PageRequest {
+
     @ApiModelProperty(value = "保险公司id")
     private String companyId;
 
@@ -19,6 +23,9 @@ public class AgreementProductQueryVo extends PageRequest {
     @ApiModelProperty(value = "协议id")
     private String agreementId;
 
+    /**
+     * @see com.ydtech.modules.protocols.constants.AgreementProductCostsAuditStatus
+     */
     @ApiModelProperty(value = "是否审核")
     private String isAudit;
 
@@ -40,6 +47,12 @@ public class AgreementProductQueryVo extends PageRequest {
     @ApiModelProperty(value = "是否有效")
     private String isEffective;
 
+    /**
+     * @see com.ydtech.modules.protocol.constants.ValidStatus
+     */
+    @ApiModelProperty(value = "有效状态")
+    private String validStatus;
+
     @ApiModelProperty(value = "费用因子描述")
     private String desc;
 
@@ -65,4 +78,5 @@ public class AgreementProductQueryVo extends PageRequest {
     private String nowCostsId;
 
 
+
 }

+ 24 - 0
src/main/java/com/ydtech/modules/protocols/entity/vo/CostsBatchDisableVo.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.protocols.entity.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description: 批量删除实体
+ * @author: wenks
+ * @date: 2024/12/9 11:46
+ **/
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class CostsBatchDisableVo implements Serializable {
+
+    private static final long serialVersionUID = -5901195362841683700L;
+
+    private List<String> costsIdList;
+
+}

+ 37 - 6
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewService.java

@@ -2,6 +2,7 @@ package com.ydtech.modules.protocols.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.vo.SysChannelGroupPageVo;
 import com.ydtech.modules.order.entity.vo.FeeOrderNewRecordVo;
 import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
@@ -14,14 +15,15 @@ import java.util.List;
 import java.util.Map;
 
 /**
-*@author: tz
-*@description: 协议承保规则属性 service
-*@create: 2024-2-22 15:44:29
-*/
+ * @author: tz
+ * @description: 协议承保规则属性 service
+ * @create: 2024-2-22 15:44:29
+ */
 public interface PtlAgreementProductCostsNewService extends IService<PtlAgreementProductCostsNew> {
 
     /**
      * 获取协议费用列表
+     *
      * @param page
      * @param agreementProductQueryVo
      * @return
@@ -32,6 +34,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 获取协议费用列表(用于分组费用关联)
+     *
      * @param page
      * @param sysChannelGroupPageVo
      * @return
@@ -40,6 +43,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 获取协议费用
+     *
      * @param costsId
      * @return
      */
@@ -48,10 +52,11 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
     List<AgreementProductCosts> costsGetList(String agreementId);
 
 
-    List<AgreementProductCosts> costsGetList(String agreementId,String productId);
+    List<AgreementProductCosts> costsGetList(String agreementId, String productId);
 
     /**
      * 添加协议费用
+     *
      * @param agreementProductCostsList
      * @return
      */
@@ -59,6 +64,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 更新协议费用
+     *
      * @param agreementProductCosts
      * @return
      */
@@ -66,6 +72,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 删除协议费用
+     *
      * @param costsId
      * @return
      */
@@ -73,6 +80,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 删除协议费用
+     *
      * @param ids
      * @return
      */
@@ -80,6 +88,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 复制协议费用
+     *
      * @param agreementProductCostsCopyVo
      * @return
      */
@@ -89,6 +98,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 费用审核
+     *
      * @param costsAuditVo
      * @return
      */
@@ -96,6 +106,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 费用批量审核
+     *
      * @param costsAuditVo
      * @return
      */
@@ -103,6 +114,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 费用批量更改费用起止期
+     *
      * @param agreementProductCostsVo
      * @return
      */
@@ -110,6 +122,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 费用批量更改费用
+     *
      * @param agreementProductCostsVo
      * @return
      */
@@ -117,6 +130,7 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 调整费用
+     *
      * @param feeOrderNewRecordVo
      * @return
      */
@@ -126,10 +140,27 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
 
     /**
      * 获取现询费用
+     *
      * @param inquiryNowFeeQueryVo
      * @return
      */
     List<PtlAgreementProductCostsNew> getInquiryNowFee(InquiryNowFeeQueryVo inquiryNowFeeQueryVo);
 
-    PtlAgreementProductCostsNew getNoInquiryNowFee(String agreementId,String productCode);
+    PtlAgreementProductCostsNew getNoInquiryNowFee(String agreementId, String productCode);
+
+    /**
+     * 批量禁用协议
+     *
+     * @param costsIdList 协议列表
+     * @return
+     */
+    HttpResult costsBatchDisable(List<String> costsIdList);
+
+    /**
+     * 通过费用id禁用协议
+     *
+     * @param costsId 费用id
+     * @return
+     */
+    HttpResult costsDisable(String costsId);
 }

+ 94 - 16
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java

@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.constants.enums.dict.FeeAuditAuditstatus;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.constants.enums.dict.agreement.ProductsType;
 import com.ydtech.constants.enums.dict.insurance.TrafficManagementVehicleType;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.vo.SysChannelGroupPageVo;
@@ -26,25 +28,34 @@ import com.ydtech.modules.fnc.service.InsFeeAuditHistoryService;
 import com.ydtech.modules.fnc.service.InsFeeAuditService;
 import com.ydtech.modules.fnc.service.impl.InsFeeAuditServiceImpl;
 import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsFeeOrder;
 import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.api.pingan.constants.order.OrderStatusCodeEnum;
+import com.ydtech.modules.order.entity.api.zijin.constants.enums.OrderStatusEnum;
 import com.ydtech.modules.order.entity.vo.FeeOrderNewRecordVo;
 import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
+import com.ydtech.modules.order.service.InsFeeOrderService;
 import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.protocol.constants.ValidStatus;
 import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.entity.po.PtlAreaLicense;
 import com.ydtech.modules.protocol.service.PtlAgreementService;
 import com.ydtech.modules.protocol.service.PtlAreaLicenseService;
+import com.ydtech.modules.protocol.utils.AssertionUtils;
+import com.ydtech.modules.protocols.constants.AgreementProductCostsAuditStatus;
 import com.ydtech.modules.protocols.dao.PtlAgreementProductCostsNewMapper;
 import com.ydtech.modules.protocols.entity.po.*;
 import com.ydtech.modules.protocols.entity.vo.*;
 import com.ydtech.modules.protocols.service.*;
+import com.ydtech.utils.ObjectUtil;
 import com.ydtech.utils.idgen.IdGenerate;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -97,12 +108,8 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
     @Autowired
     private PtlAgreementProductCostsNewMapper ptlAgreementProductCostsNewMapper;
 
-    @Autowired
+    @Resource
     private InsFeeAuditHistoryService insFeeAuditHistoryService;
-    private InsFeeOrderConfigServiceImpl insFeeOrderConfigServiceImpl;
-    @Autowired
-    private InsFeeAuditServiceImpl insFeeAuditServiceImpl;
-
 
     @Override
     public Page<PtlAgreementProductCostsNew> getProductPage(Page page, SysChannelGroupPageVo sysChannelGroupPageVo) {
@@ -179,7 +186,7 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                         .gt(PtlAgreementProductCostsNew::getCostsEndDate, LocalDateTime.now());
             }
         }
-
+        ptlAgreementProductCostsNewLambdaQueryWrapper.eq(agreementProductQueryVo.getValidStatus() != null, PtlAgreementProductCostsNew::getValidStatus, agreementProductQueryVo.getValidStatus());
         //统配描述
         if (agreementProductQueryVo.getDesc() != null) {
             ptlAgreementProductCostsNewLambdaQueryWrapper.like(PtlAgreementProductCostsNew::getDesc, agreementProductQueryVo.getDesc());
@@ -360,16 +367,15 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                 }
                 if ("checkbox".equals(ptlAgreementUndwrtRulesAttr.getAttrType()) || "select".equals(ptlAgreementUndwrtRulesAttr.getAttrType())) {
                     //车辆类型不显示代码k33 显示普通货车
-                    if(ptlAgreementUndwrtRulesAttr.getAttrCode().equals("CarClass"))
-                    {
+                    if (ptlAgreementUndwrtRulesAttr.getAttrCode().equals("CarClass")) {
                         String[] split = v.get(i).getMin().split(",");
                         desc += ptlAgreementUndwrtRulesAttr.getAttrName() + "包含";
                         for (String s : split) {
                             desc += TrafficManagementVehicleType.getDesc(s) + ",";
                         }
-                        desc = desc.substring(0,desc.length()-1);
+                        desc = desc.substring(0, desc.length() - 1);
                         desc += "\n";
-                    }else{
+                    } else {
                         desc += ptlAgreementUndwrtRulesAttr.getAttrName() + "包含" + v.get(i).getMin() + "\n";
                     }
                 }
@@ -520,7 +526,10 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                 .eq(PtlAgreementProductCostsNew::getProductId, productId)
                 .lt(PtlAgreementProductCostsNew::getCostsStartDate, formattedDateTime)
                 .gt(PtlAgreementProductCostsNew::getCostsEndDate, formattedDateTime)
-                .eq(PtlAgreementProductCostsNew::getIsAudit, "1")//查找审核已通过的
+                // 是有禁用
+                .eq(PtlAgreementProductCostsNew::getValidStatus, ValidStatus.AVS_1.getCode())
+                // 审核状态
+                .eq(PtlAgreementProductCostsNew::getIsAudit, AgreementProductCostsAuditStatus.COSTS_AUDIT_STATUS_1.getCode())
                 .orderBy(true, true, PtlAgreementProductCostsNew::getPriorityLevel));
 
         List<AgreementProductCosts> agreementProductCosts = new ArrayList<>();
@@ -530,7 +539,7 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
             BeanUtils.copyProperties(news, productCosts);
             agreementProductCosts.add(productCosts);
         });
-        if (ptlAgreementProductCostsNews.size() > 0) {
+        if (!ptlAgreementProductCostsNews.isEmpty()) {
             List<PtlAgreementProductCostsAttrLink> list = ptlAgreementProductCostsAttrLinkService.list(new LambdaQueryWrapper<PtlAgreementProductCostsAttrLink>()
                     .in(PtlAgreementProductCostsAttrLink::getCostsId, ptlAgreementProductCostsNews.stream().map(PtlAgreementProductCostsNew::getId).collect(Collectors.toList())));
             agreementProductCosts.forEach(x -> {
@@ -721,7 +730,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);
@@ -761,7 +771,6 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
 //        return true;
 //
 //    }
-
     @Transactional
     @Override
     public boolean costsUpdate(AgreementProductCosts agreementProductCosts) {
@@ -785,13 +794,17 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
             //清空交强险信息
             agreementProductCosts.clearJqInfo();
         }
-        PtlAgreementProductCostsNew old = getById(agreementProductCosts.getId());
 
+        PtlAgreementProductCostsNew old = getById(agreementProductCosts.getId());
+        if (!ValidStatus.AVS_0.getCode().equals(old.getValidStatus())) {
+            throw new SystemException("请先禁用后再编辑修改费用");
+        }
         //更新费用主表信息
-        PtlAgreementProductCostsNew ptlAgreementProductCost= ptlAgreementProductCostsNewService.getById(agreementProductCosts.getId());
+        PtlAgreementProductCostsNew ptlAgreementProductCost = ptlAgreementProductCostsNewService.getById(agreementProductCosts.getId());
         PtlAgreementProductCostsNew ptlAgreementProductCostsNew = new PtlAgreementProductCostsNew();
         BeanUtils.copyProperties(agreementProductCosts, ptlAgreementProductCostsNew);
         //修改审核状态为未审核
+        ptlAgreementProductCostsNew.setValidStatus(ValidStatus.AVS_1.getCode());
         ptlAgreementProductCostsNew.setCreateBy(old.getCreateBy());
         ptlAgreementProductCostsNew.setCreateTime(old.getCreateTime());
         ptlAgreementProductCostsNew.setIsAudit(0);
@@ -2437,4 +2450,69 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         PtlAgreementProductCostsNew ptlAgreementProductCostsNews = baseMapper.selectOne(queryWrapper);
         return ptlAgreementProductCostsNews;
     }
+
+
+    @Override
+    public HttpResult costsDisable(String costsId) {
+        PtlAgreementProductCostsNew ptlAgreementProductCostsNew = getById(costsId);
+        AssertionUtils.isEmpty(ptlAgreementProductCostsNew, "未查询到此协议");
+        if (ValidStatus.AVS_0.getCode().equals(ptlAgreementProductCostsNew.getValidStatus())) {
+            ptlAgreementProductCostsNew.setValidStatus(ValidStatus.AVS_1.getCode());
+        } else {
+            // 查询费用列表
+            List<InsFeeOrderNew> insFeeOrderNews = insFeeOrderNewService
+                    .lambdaQuery()
+                    .eq(InsFeeOrderNew::getCostsId, costsId)
+                    .list();
+
+            List<String> insFeeOrderIdList = insFeeOrderNews.stream().map(InsFeeOrderNew::getInsOrderNo).collect(Collectors.toList());
+            if (!insFeeOrderIdList.isEmpty()) {
+                // 修改订单二维码状态
+                insAreaCompanyService.lambdaUpdate()
+                        .set(InsAreaCompany::getCodeValidStatus, ValidStatus.AVS_0.getCode())
+                        .in(InsAreaCompany::getId, insFeeOrderIdList)
+                        .update();
+            }
+
+            ptlAgreementProductCostsNew.setValidStatus(ValidStatus.AVS_0.getCode());
+        }
+
+        boolean b = updateById(ptlAgreementProductCostsNew);
+        AssertionUtils.isSucceed(b, "修改费用状态失败");
+        return HttpResult.ok("修改成功");
+    }
+
+
+    @Override
+    @Transactional
+    public HttpResult<Object> costsBatchDisable(List<String> costsIdList) {
+        List<PtlAgreementProductCostsNew> list = lambdaQuery()
+                .in(PtlAgreementProductCostsNew::getId, costsIdList)
+                .list();
+
+        if (list.isEmpty() || list.size() != costsIdList.size()) {
+            throw new SystemException("请选择正确的费用");
+        }
+
+        // 查询费用列表
+        List<InsFeeOrderNew> insFeeOrderNews = insFeeOrderNewService
+                .lambdaQuery()
+                .in(InsFeeOrderNew::getCostsId, costsIdList)
+                .list();
+
+        List<String> insFeeOrderIdList = insFeeOrderNews.stream().map(InsFeeOrderNew::getInsOrderNo).collect(Collectors.toList());
+        if (!insFeeOrderIdList.isEmpty()) {
+            // 修改订单二维码状态
+            insAreaCompanyService.lambdaUpdate()
+                    .set(InsAreaCompany::getCodeValidStatus, ValidStatus.AVS_0.getCode())
+                    .in(InsAreaCompany::getId, insFeeOrderIdList)
+                    .update();
+        }
+
+        list.forEach(ptlAgreementProductCostsNew -> ptlAgreementProductCostsNew.setValidStatus(ValidStatus.AVS_0.getCode()));
+        boolean b = updateBatchById(list);
+        AssertionUtils.isSucceed(b, "修改费用状态失败");
+        return HttpResult.ok("修改成功");
+    }
+
 }

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

@@ -1832,4 +1832,219 @@
         </if>
     </select>
 
+    <select id="queryOrderByLinkType" resultType="com.ydtech.modules.order.entity.InsOrders">
+        select
+        io.orderno as orderno,
+        io.quoteno as quoteno,
+        iac.orderstatus as orderstatus,
+        io.carinfo as carinfo,
+        io.userid as userid,
+        io.username as username,
+        io.deptid as deptid,
+        io.deptname as deptname,
+        io.ownerinfo as ownerinfo,
+        io.applyinfo as applyinfo,
+        io.insureinfo as insureinfo,
+        io.agreeid as agreeid,
+        iac.productid as productid,
+        iac.product as product,
+        iac.createtime as createtime,
+        io.frameno as frameno,
+        io.licenseno as licenseno,
+        REPLACE(JSON_EXTRACT(io.applyinfo, '$.name'),'"','') as insuredname,
+        iac.jq_start_date as jqstartdate,
+        iac.jq_end_date as jqenddate,
+        iac.sy_start_date as systartdate,
+        iac.sy_end_date as syenddate,
+        iac.jqpremium as jqpremium,
+        iac.sypremium as sypremium,
+        iac.jypremium as jypremium,
+        iac.taxamount as taxamount,
+        io.risk as risk,
+        io.king as king,
+        io.vehicle_and_vessel_tax as vehicleAndVesselTax,
+        iac.id as subOrderId,
+        iac.underwriting_status as underwritingStatus,
+        iac.company_id as company_id,
+        iac.inscompany as ins_company,
+        agree.agreement_code as agreementCode,
+        agree.agreement_name as agreementName,
+        company.namesimple as partnerCompaniesName,
+        dept.province,
+        dept.city,
+        dept.area,
+        d1.area_cname as province_name,
+        d2.area_cname as city_name,
+        d3.area_cname as area_name,
+        concat(d1.area_cname,d2.area_cname,d3.area_cname) as area_info,
+        iac.api_type,
+        io.is_external,
+        u.leader_name,
+        u.leader_id,
+        CASE dept.management_source
+        WHEN '1' THEN '渠道'
+        WHEN '2' THEN '个代'
+        WHEN '3' THEN '电销'
+        ELSE '' END
+        AS managementSource,
+        io.entry_status as entryStatus,
+        iac.underwriting_time as underwritingTime,
+        iac.pay_date as payDate,
+        iac.update_status AS updateStatus,
+        iac.update_status_time AS updateStatusTime,
+        iac.signing_time as signingTime
+        from
+        ins_area_company iac
+        left JOIN
+        ins_orders io on iac.orderno = io.orderno
+        left join
+        ptl_agreement agree on iac.agreement_id= agree.id
+        left join
+        esm_ins_company company on agree.partner_companies_id= company.id
+        LEFT JOIN
+        sys_dept dept ON dept.id = io.deptid
+        LEFT JOIN sys_dept pdept on dept.parent_id = pdept.id
+        LEFT JOIN sys_area d1 ON d1.area_code = pdept.province
+        LEFT JOIN sys_area d2 ON d2.area_code = pdept.city
+        LEFT JOIN sys_area d3 ON d3.area_code = pdept.area
+        LEFT JOIN
+        sys_user u on io.userid = u.id
+        <where>
+            <if test="agentUserIds != null and agentUserIds.size>0">
+                AND (
+                (io.userid in
+                <foreach collection="agentUserIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+                AND ( iac.new_operator_id IS NULL OR iac.new_operator_id = #{orderQueryVo.userId} )
+                )
+                <if test="flag">
+                    OR iac.operator_id = #{orderQueryVo.userId}
+                </if>
+                )
+            </if>
+            <if test="agreeIds != null and agreeIds.size>0">
+                AND (
+                (iac.agreement_id in
+                <foreach collection="agreeIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+                AND ( iac.new_operator_id IS NULL OR iac.new_operator_id = #{orderQueryVo.userId} ) )
+                <if test="flag">
+                    OR iac.operator_id = #{orderQueryVo.userId}
+                </if>
+                )
+            </if>
+            <if test="orderQueryVo.orderNo != null and orderQueryVo.orderNo != ''">
+                and iac.id = #{orderQueryVo.orderNo}
+            </if>
+            <if test="orderQueryVo.managementSource != null and orderQueryVo.managementSource != ''">
+                and dept.management_source = #{orderQueryVo.managementSource}
+            </if>
+            <if test="orderQueryVo.deptId != null and orderQueryVo.deptId != ''">
+                and io.deptid like "${orderQueryVo.deptId}%"
+            </if>
+            <if test="orderQueryVo.orderStatus != null and orderQueryVo.orderStatus != ''">
+                and iac.orderstatus= #{orderQueryVo.orderStatus}
+            </if>
+            <if test="orderQueryVo.frameNo != null and orderQueryVo.frameNo != ''">
+                and io.frameno = #{orderQueryVo.frameNo}
+            </if>
+            <if test="orderQueryVo.licenseNo != null and orderQueryVo.licenseNo != ''">
+                and io.licenseno = #{orderQueryVo.licenseNo}
+            </if>
+            <if test="orderQueryVo.insuredName != null and orderQueryVo.insuredName != ''">
+                and REPLACE(JSON_EXTRACT(io.applyinfo, '$.name'),'"','') = #{orderQueryVo.insuredName}
+            </if>
+            <if test="orderQueryVo.quoteStartDateStr != null and orderQueryVo.quoteEndDateStr != null">
+                and DATE_FORMAT(iac.createtime, '%Y-%m-%d') between #{orderQueryVo.quoteStartDateStr} AND
+                #{orderQueryVo.quoteEndDateStr}
+            </if>
+            <if test="orderQueryVo.companyId != null and orderQueryVo.companyId != ''">
+                and iac.company_id = #{orderQueryVo.companyId}
+            </if>
+            <if test="orderQueryVo.operatorId != null and orderQueryVo.operatorId != ''">
+                and io.userid = #{orderQueryVo.operatorId}
+            </if>
+            <if test="orderQueryVo.operatorName != null and orderQueryVo.operatorName != ''">
+                and io.username = #{orderQueryVo.operatorName}
+            </if>
+            <if test="orderQueryVo.engineNo != null and orderQueryVo.engineNo != ''">
+                and JSON_EXTRACT( io.carinfo, '$.engineNo' ) = #{orderQueryVo.engineNo}
+            </if>
+            <if test="orderQueryVo.provinceId != null and orderQueryVo.provinceId != ''">
+                and io.deptid like "${orderQueryVo.provinceId}%"
+            </if>
+            <if test="orderQueryVo.cityId != null and orderQueryVo.cityId != ''">
+                and io.deptid like "${orderQueryVo.cityId}%"
+            </if>
+            <if test="orderQueryVo.countyId != null and orderQueryVo.countyId != ''">
+                and io.deptid like "${orderQueryVo.countyId}%"
+            </if>
+            <if test="orderQueryVo.houseId != null and orderQueryVo.houseId != ''">
+                and io.deptid like "${orderQueryVo.houseId}%"
+            </if>
+            <if test="orderQueryVo.agreeId != null and orderQueryVo.agreeId != ''">
+                and iac.agreement_id = #{orderQueryVo.agreeId}
+            </if>
+            <if test="orderQueryVo.taskNo != null and orderQueryVo.taskNo != ''">
+                and io.orderno = #{orderQueryVo.taskNo}
+            </if>
+            <if test="orderQueryVo.riskCode != null and orderQueryVo.riskCode != ''">
+                and iac.product = #{orderQueryVo.riskCode}
+            </if>
+            <if test="orderQueryVo.auditId != null and orderQueryVo.auditId != ''">
+                and IFNULL( iac.new_operator_id, '' ) = #{orderQueryVo.auditId}
+            </if>
+            <if test="orderQueryVo.leaderId != null and orderQueryVo.leaderId != ''">
+                and u.leader_id = #{orderQueryVo.leaderId}
+            </if>
+            <if test="orderQueryVo.leaderName != null and orderQueryVo.leaderName != ''">
+                and u.leader_name = #{orderQueryVo.leaderName}
+            </if>
+            <if test="orderQueryVo.attachStartDateStr != null and orderQueryVo.attachEndDateStr != ''">
+                and ((
+                DATE_FORMAT(iac.jq_start_date, '%Y-%m-%d') BETWEEN #{orderQueryVo.attachStartDateStr}
+                AND #{orderQueryVo.attachEndDateStr}
+                )
+                OR ( DATE_FORMAT(iac.sy_start_date, '%Y-%m-%d') BETWEEN #{orderQueryVo.attachStartDateStr} AND
+                #{orderQueryVo.attachEndDateStr} )
+                )
+            </if>
+            <choose>
+                <when test="type==1">
+                    and dept.management_source=1
+                </when>
+                <when test="type==2">
+                    and dept.management_source=2
+                </when>
+            </choose>
+            <if test="orderQueryVo.signStartDateStr != null and orderQueryVo.signEndDateStr != null">
+                and DATE_FORMAT(iac.signing_time, '%Y-%m-%d') between #{orderQueryVo.signStartDateStr} AND
+                #{orderQueryVo.signEndDateStr}
+            </if>
+            <if test="orderQueryVo.entryStatus != null and orderQueryVo.entryStatus != ''">
+                and io.entry_status = #{orderQueryVo.entryStatus }
+            </if>
+            <if test="orderQueryVo.payStartDateStr != null and orderQueryVo.payEndDateStr != null">
+                and DATE_FORMAT(iac.pay_date, '%Y-%m-%d') between #{orderQueryVo.payStartDateStr} AND
+                #{orderQueryVo.payEndDateStr}
+            </if>
+
+            <if test="orderQueryVo.auditStartDateStr != null and orderQueryVo.auditEndDateStr != null">
+                and DATE_FORMAT(iac.underwriting_time, '%Y-%m-%d') between #{orderQueryVo.auditStartDateStr} AND
+                #{orderQueryVo.auditEndDateStr}
+            </if>
+            <if test="orderQueryVo.updateStartDateStr != null and orderQueryVo.updateEndDateStr != null">
+                and DATE_FORMAT( iac.update_status_time, '%Y-%m-%d') between #{orderQueryVo.updateStartDateStr} AND
+                #{orderQueryVo.updateEndDateStr}
+            </if>
+            <if test="orderQueryVo.updateStatus != null and orderQueryVo.updateStatus != null">
+                and iac.update_status = #{orderQueryVo.updateStatus}
+            </if>
+            and (iac.del_flag = '1' or io.del_flag IS NULL or io.del_flag = 1)
+        </where>
+        order by io.createtime desc
+    </select>
+
 </mapper>

+ 3 - 4
src/main/resources/template/html/qrcode_error.html

@@ -2,13 +2,12 @@
 <html lang="en">
 <head>
     <meta charset="UTF-8">
-    <title>二维码不存在</title>
+    <title>二维码异常</title>
     <div style="display: flex;">
-        二维码错误
+        <span th:if="${message != '' && message != null}" th:text="${message}"></span>
+        <span th:unless="${message != '' || message != null}">二维码异常</span>
     </div>
-
 </head>
 <body>
-
 </body>
 </html>