Quellcode durchsuchen

Merge branch 'test' of http://www.baoxianzhanggui.com:8090/sxzgd/java-insagent-pc into test

hxl13994548489 vor 1 Jahr
Ursprung
Commit
ae39bf543b
60 geänderte Dateien mit 996 neuen und 147 gelöschten Zeilen
  1. 3 2
      src/main/java/com/ydtech/modules/admin/controller/personnelStatistics/PersonnelStatisticsController.java
  2. 3 0
      src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java
  3. 3 0
      src/main/java/com/ydtech/modules/admin/model/dto/QxFrontlineAgentDto.java
  4. 3 0
      src/main/java/com/ydtech/modules/admin/model/vo/QxFrontlineAgentVo.java
  5. 2 1
      src/main/java/com/ydtech/modules/admin/service/UserReportService.java
  6. 2 2
      src/main/java/com/ydtech/modules/admin/service/impl/SysMenuRecordServiceImpl.java
  7. 78 51
      src/main/java/com/ydtech/modules/admin/service/impl/UserReportServiceImpl.java
  8. 7 0
      src/main/java/com/ydtech/modules/order/components/ZhongmeiRequestApiComponents.java
  9. 11 0
      src/main/java/com/ydtech/modules/order/components/bohai/BoHaiRequestApiComponent.java
  10. 11 0
      src/main/java/com/ydtech/modules/order/components/gouren/GuorenRequestApiComponent.java
  11. 6 0
      src/main/java/com/ydtech/modules/order/components/huatai/HuaTaiRequestApiComponents.java
  12. 11 1
      src/main/java/com/ydtech/modules/order/components/yongcheng/YongchengRequestApiComponents.java
  13. 4 0
      src/main/java/com/ydtech/modules/order/controller/InsAreaCompanyController.java
  14. 4 0
      src/main/java/com/ydtech/modules/order/entity/InsOrders.java
  15. 32 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/UnderwritingRevocationRequest.java
  16. 1 0
      src/main/java/com/ydtech/modules/order/entity/api/dajia/constants/ServiceCode.java
  17. 48 0
      src/main/java/com/ydtech/modules/order/entity/api/dajia/request/ODR1015Request.java
  18. 2 1
      src/main/java/com/ydtech/modules/order/entity/api/guoren/constants/PlatformInterfaceCode.java
  19. 29 0
      src/main/java/com/ydtech/modules/order/entity/api/guoren/request/IIRBT00012Request.java
  20. 26 0
      src/main/java/com/ydtech/modules/order/entity/api/guoren/response/IIRBT00012Response.java
  21. 3 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/constants/HuaTaiTransCode.java
  22. 43 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/request/HuaTaiPaymentLogoutRequest.java
  23. 23 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/response/HuaTaiPaymentLogoutResponse.java
  24. 1 0
      src/main/java/com/ydtech/modules/order/entity/api/yongcheng/constants/RequestUrl.java
  25. 93 0
      src/main/java/com/ydtech/modules/order/entity/api/yongcheng/request/ProposalPolicyReturnRequest.java
  26. 3 0
      src/main/java/com/ydtech/modules/order/entity/api/zhongmei/constants/TransCode.java
  27. 2 0
      src/main/java/com/ydtech/modules/order/entity/api/zhongmei/request/SubmitStatusQueryRequest.java
  28. 36 0
      src/main/java/com/ydtech/modules/order/entity/api/zhongmei/request/UnderwritingWithdrawRequest.java
  29. 15 0
      src/main/java/com/ydtech/modules/order/entity/api/zhongmei/response/UnderwritingWithdrawResponse.java
  30. 16 6
      src/main/java/com/ydtech/modules/order/service/BoHaiOrderApiService.java
  31. 23 10
      src/main/java/com/ydtech/modules/order/service/DaJiaOrderService.java
  32. 17 10
      src/main/java/com/ydtech/modules/order/service/GuorenOrderApiService.java
  33. 9 1
      src/main/java/com/ydtech/modules/order/service/HuaTaiOrderApiService.java
  34. 0 3
      src/main/java/com/ydtech/modules/order/service/InsBusinessInsuranceService.java
  35. 12 1
      src/main/java/com/ydtech/modules/order/service/InsCrawlerOrderService.java
  36. 21 0
      src/main/java/com/ydtech/modules/order/service/InsuranceCompanyPolymerizationService.java
  37. 8 1
      src/main/java/com/ydtech/modules/order/service/YongchengOrderApiService.java
  38. 10 1
      src/main/java/com/ydtech/modules/order/service/ZhongMeiOrderApiService.java
  39. 11 1
      src/main/java/com/ydtech/modules/order/service/ZijinOrderApiService.java
  40. 19 1
      src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java
  41. 18 0
      src/main/java/com/ydtech/modules/order/service/impl/DaJiaOrderServiceImpl.java
  42. 19 0
      src/main/java/com/ydtech/modules/order/service/impl/GuorenOrderApiServiceImpl.java
  43. 17 0
      src/main/java/com/ydtech/modules/order/service/impl/HuaTaiOrderApiServiceImpl.java
  44. 1 32
      src/main/java/com/ydtech/modules/order/service/impl/InsBusinessInsuranceServiceImpl.java
  45. 22 10
      src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java
  46. 66 0
      src/main/java/com/ydtech/modules/order/service/impl/InsuranceCompanyPolymerizationServiceImpl.java
  47. 17 3
      src/main/java/com/ydtech/modules/order/service/impl/YongchengOrderApiServiceImpl.java
  48. 12 0
      src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderApiServiceImpl.java
  49. 13 0
      src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java
  50. 3 3
      src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementSaveDto.java
  51. 12 2
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreement.java
  52. 3 1
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementPageVo.java
  53. 14 3
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
  54. 9 0
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java
  55. 3 0
      src/main/java/com/ydtech/modules/scheme/entity/vo/DrivingIntentionQueryVo.java
  56. 11 0
      src/main/java/com/ydtech/modules/scheme/service/impl/RuleFilteringServiceImpl.java
  57. 79 0
      src/main/resources/mapper/modules/admin/SysUserMapper.xml
  58. 12 0
      src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml
  59. 3 0
      src/main/resources/mapper/modules/order/InsDrivingIntentionInsuranceMapper.xml
  60. 11 0
      src/main/resources/mapper/modules/order/InsOrdersMapper.xml

+ 3 - 2
src/main/java/com/ydtech/modules/admin/controller/personnelStatistics/PersonnelStatisticsController.java

@@ -2,6 +2,7 @@ package com.ydtech.modules.admin.controller.personnelStatistics;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageResult;
 import com.ydtech.modules.admin.model.dto.EsmUserReferrerDTO;
 import com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto;
 import com.ydtech.modules.admin.model.dto.TeamManagementDto;
@@ -63,7 +64,7 @@ public class PersonnelStatisticsController {
      */
     @PostMapping("queryQxFrontlineAgent")
     @ApiOperation(value = "人员统计-前线人员-代理人统计")
-    public HttpResult<IPage<QxFrontlineAgentDto>> queryQxFrontlineAgent(@RequestBody QxFrontlineAgentVo qxFrontlineAgentVo, HttpServletRequest httpServerRequest) {
+    public HttpResult<PageResult<QxFrontlineAgentDto>> queryQxFrontlineAgent(@RequestBody QxFrontlineAgentVo qxFrontlineAgentVo, HttpServletRequest httpServerRequest) {
         KztGetDeptUtils kztGetDeptUtils = new KztGetDeptUtils();
         KztGetDeptUtilsDto kztGetDeptUtilsDto = kztGetDeptUtils.KztGetDeptIds(httpServerRequest.getRequestURL().toString());
         if(ObjectUtils.isNotEmpty(kztGetDeptUtilsDto)){
@@ -73,7 +74,7 @@ public class PersonnelStatisticsController {
                 qxFrontlineAgentVo.setUserIds(kztGetDeptUtilsDto.getIds());
             }
         }
-        HttpResult<IPage<QxFrontlineAgentDto>> result = userReportService.queryQxFrontlineAgent(qxFrontlineAgentVo);
+        HttpResult<PageResult<QxFrontlineAgentDto>> result = userReportService.queryQxFrontlineAgent(qxFrontlineAgentVo);
         return result;
     }
 

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

@@ -513,6 +513,9 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
     List<SysUser> selectByLeadId(String userId);
 
     List<SysUser> querySourceId(String id);
+
+    List<QxFrontlineAgentDto> getQxFrontlineAgentList(@Param("vo") QxFrontlineAgentVo qxFrontlineAgentVo);
+
 }
 
 

+ 3 - 0
src/main/java/com/ydtech/modules/admin/model/dto/QxFrontlineAgentDto.java

@@ -126,6 +126,9 @@ public class QxFrontlineAgentDto implements Serializable {
     @ApiModelProperty(value = "用户ids")
     private List<String> userIds;
 
+    @ApiModelProperty(value = "是否出单 0  不出单  1 出单")
+    private String outThere;
+
     private Integer totalManpowerNum;
 
     private Double totalPremiumNum;

+ 3 - 0
src/main/java/com/ydtech/modules/admin/model/vo/QxFrontlineAgentVo.java

@@ -81,6 +81,9 @@ public class QxFrontlineAgentVo implements Serializable {
     @ApiModelProperty(value = "月份")
     private String month;
 
+    @ApiModelProperty(value = "是否出单 0  不出单  1 出单")
+    private String outThere;
+
     @ApiModelProperty(value = "层级类型  0 汇总  1.本人  2. 一级团队 3. 二级团队  4 三级团队  5 临时团队")
     private String type;
 

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

@@ -3,6 +3,7 @@ package com.ydtech.modules.admin.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageResult;
 import com.ydtech.modules.admin.model.dto.EsmUserReferrerDTO;
 import com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto;
 import com.ydtech.modules.admin.model.dto.TeamManagementDto;
@@ -65,7 +66,7 @@ public interface UserReportService {
      *  @Date: 2024/8/07
      *  @Description:  人员统计-前线人员-代理人统计
      */
-    HttpResult<IPage<QxFrontlineAgentDto>> queryQxFrontlineAgent(QxFrontlineAgentVo qxFrontlineAgentVo);
+    HttpResult<PageResult<QxFrontlineAgentDto>> queryQxFrontlineAgent(QxFrontlineAgentVo qxFrontlineAgentVo);
     /**
      *  @version
      *  @author: whp

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

@@ -72,19 +72,19 @@ public class SysMenuRecordServiceImpl  extends ServiceImpl<SysMenuRecordMapper,
 
     @Override
     public SysMenuRecordVo getClickMenu(SysMenuRecordDto sysMenuRecordDto) {
-        SysMenuRecordVo sysMenuRecordVo = new SysMenuRecordVo(null,null,null,0l,0l,0l,0l,0l,0l,null,null,null,null,null,null);
+        SysMenuRecordVo sysMenuRecordVo = new SysMenuRecordVo(null,null,null,0L,0L,0L,0L,0L,0L,null,null,null,null,null,null);
         List<SysMenuRecord> sysMenuRecords = baseMapper.selectList(new LambdaQueryWrapper<SysMenuRecord>().eq(!StringUtils.isNotEmpty(sysMenuRecordDto.getUserId()), SysMenuRecord::getUserId, sysMenuRecordDto.getUserId())
                 .eq(sysMenuRecordDto.getType() != null, SysMenuRecord::getType, sysMenuRecordDto.getType())
                 .eq(StringUtils.isNotEmpty(sysMenuRecordDto.getUserId()),SysMenuRecord::getUserId, sysMenuRecordDto.getUserId())
                 .between(StringUtils.isNotEmpty(sysMenuRecordDto.getBeginTime()) && StringUtils.isNotEmpty(sysMenuRecordDto.getEndTime()),
                         SysMenuRecord::getCreateTime, sysMenuRecordDto.getBeginTime(), sysMenuRecordDto.getEndTime()));
 
-        if (sysMenuRecords.size()==0) return sysMenuRecordVo;
         SysUser sysUser = sysUserMapper.selectById(sysMenuRecordDto.getUserId());
         sysMenuRecordVo.setUserId(sysUser.getId());
         sysMenuRecordVo.setUserName(sysUser.getName());
         String deptName = getDeptName(sysUser.getDeptId());
         sysMenuRecordVo.setDeptName(deptName);
+        if (sysMenuRecords.size()==0) return sysMenuRecordVo;
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         //客户端:1:APP;2:PC
         if (sysMenuRecordDto.getType()==1) {

+ 78 - 51
src/main/java/com/ydtech/modules/admin/service/impl/UserReportServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.constants.enums.dict.DictionaryManagement;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageResult;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.dao.SysDeptMapper;
 import com.ydtech.modules.admin.dao.SysUserMapper;
@@ -200,23 +201,69 @@ public class UserReportServiceImpl implements UserReportService {
      *  @Description:  人员统计-前线人员-代理人统计
      */
     @Override
-    public HttpResult<IPage<QxFrontlineAgentDto>> queryQxFrontlineAgent(QxFrontlineAgentVo qxFrontlineAgentVo) {
+    public HttpResult<PageResult<QxFrontlineAgentDto>> queryQxFrontlineAgent(QxFrontlineAgentVo qxFrontlineAgentVo) {
         try {
+            PageResult<QxFrontlineAgentDto> resultPage = new PageResult<>();
+
             HashMap<String, String> map = getDateMapByType(qxFrontlineAgentVo.getDays(), qxFrontlineAgentVo.getCreatetimeStart(), qxFrontlineAgentVo.getCreatetimeEnd());
             qxFrontlineAgentVo.setCreatetimeStart(map.get("startDate"));
             qxFrontlineAgentVo.setCreatetimeEnd(map.get("endDate"));
-            PageVo<SettlementDocumentaryFeesSumEntity> pageVo = new PageVo<>();
-            Page page = new Page(qxFrontlineAgentVo.getPageNum(), qxFrontlineAgentVo.getPageSize());
-            pageVo.setPageNum(qxFrontlineAgentVo.getPageNum());
-            pageVo.setPageSize(qxFrontlineAgentVo.getPageSize());
-            IPage<QxFrontlineAgentDto> sysUserListPage = sysUserMapper.queryQxFrontlineAgent(page, qxFrontlineAgentVo);
-            List<QxFrontlineAgentDto> sysUserList = sysUserListPage.getRecords();
-            if(qxFrontlineAgentVo.getManagementSource().equals("1")){// 渠道
-                this.channelPerson(sysUserList,qxFrontlineAgentVo);
-            }else if (qxFrontlineAgentVo.getManagementSource().equals("2")){// 代理人
-                this.agentPerson(sysUserList,qxFrontlineAgentVo);
+
+            List<QxFrontlineAgentDto> getQxFrontlineAgentList = sysUserMapper.getQxFrontlineAgentList(qxFrontlineAgentVo);
+            if (qxFrontlineAgentVo.getManagementSource().equals("1")) {// 渠道
+                this.channelPerson(getQxFrontlineAgentList, qxFrontlineAgentVo);
+            } else if (qxFrontlineAgentVo.getManagementSource().equals("2")) {// 代理人
+                this.agentPerson(getQxFrontlineAgentList, qxFrontlineAgentVo);
+            }
+
+            if (StringUtils.isNotEmpty(qxFrontlineAgentVo.getOutThere())) {
+                if ("1".equals(qxFrontlineAgentVo.getOutThere())) {
+                    getQxFrontlineAgentList = getQxFrontlineAgentList.stream()
+                            .filter(agent -> new BigDecimal(agent.getTotalPremium()).compareTo(BigDecimal.ZERO) > 0)
+                            .collect(Collectors.toList());
+                } else {
+                    getQxFrontlineAgentList = getQxFrontlineAgentList.stream()
+                            .filter(agent -> new BigDecimal(agent.getTotalPremium()).compareTo(BigDecimal.ZERO) == 0)
+                            .collect(Collectors.toList());
+                }
+            }
+            resultPage.setTotalSize(getQxFrontlineAgentList.size());
+
+            getQxFrontlineAgentList.sort((dto1, dto2) -> {
+                BigDecimal premium1 = new BigDecimal(dto1.getTotalPremium());
+                BigDecimal premium2 = new BigDecimal(dto2.getTotalPremium());
+                return premium2.compareTo(premium1); // 降序排序
+            });
+
+            int fromIndex = (qxFrontlineAgentVo.getPageNum() - 1) * qxFrontlineAgentVo.getPageSize();  //创建分页数据
+            int toIndex = Math.min(fromIndex + qxFrontlineAgentVo.getPageSize(), getQxFrontlineAgentList.size());
+            List<QxFrontlineAgentDto> qxFrontlineAgentDtos = getQxFrontlineAgentList.subList(fromIndex, toIndex);
+            for (QxFrontlineAgentDto dto : qxFrontlineAgentDtos) {
+                String deptId = dto.getDeptId();
+                if(StringUtils.isNotEmpty(deptId)){
+                    int length = deptId.length();
+                    if (length > 0) {
+                        if (length > 10) {
+                            String substring = deptId.substring(0, 6);
+                            String substring1 = deptId.substring(0, 8);
+                            String province = deptId.substring(0, 4);
+                            String storeDept = deptId.substring(0, 11);
+                            SysDept cityName = sysDeptService.getById(substring);
+                            SysDept districtName = sysDeptService.getById(substring1);
+                            SysDept provinceName = sysDeptService.getById(province);
+                            SysDept storeDeptEntity = sysDeptService.getById(storeDept);
+                            String deptName = dto.getDeptName();
+                            String a = provinceName.getName()+"-"+cityName.getName()+"-"+districtName.getName()+"-"+storeDeptEntity.getName()+"-"+deptName;
+                            dto.setDeptName(a);
+                        }
+                    }
+                }
             }
-            return HttpResult.ok(sysUserListPage);
+            resultPage.setContent(qxFrontlineAgentDtos);
+            resultPage.setPageNum(qxFrontlineAgentVo.getPageNum());
+            resultPage.setPageSize(qxFrontlineAgentVo.getPageSize());
+            resultPage.setTotalPages(qxFrontlineAgentDtos.size());
+            return HttpResult.ok(resultPage);
         } catch (Exception e) {
             e.printStackTrace();
             return HttpResult.error("查询异常");
@@ -285,25 +332,25 @@ public class UserReportServiceImpl implements UserReportService {
             userItem.setTotalPremium(orderManpower.getTotalPremium());
             //单均保费
             userItem.setAveragePremium(orderManpower.getAveragePremium());
-            String deptId = userItem.getDeptId();
-            if(StringUtils.isNotEmpty(deptId)){
-                int length = deptId.length();
-                if (length > 0) {
-                    if (length > 10) {
-                        String substring = deptId.substring(0, 6);
-                        String substring1 = deptId.substring(0, 8);
-                        String province = deptId.substring(0, 4);
-                        String storeDept = deptId.substring(0, 11);
-                        SysDept cityName = sysDeptService.getById(substring);
-                        SysDept districtName = sysDeptService.getById(substring1);
-                        SysDept provinceName = sysDeptService.getById(province);
-                        SysDept storeDeptEntity = sysDeptService.getById(storeDept);
-                        String deptName = userItem.getDeptName();
-                        String a = provinceName.getName()+"-"+cityName.getName()+"-"+districtName.getName()+"-"+storeDeptEntity.getName()+"-"+deptName;
-                        userItem.setDeptName(a);
-                    }
-                }
-            }
+//            String deptId = userItem.getDeptId();
+//            if(StringUtils.isNotEmpty(deptId)){
+//                int length = deptId.length();
+//                if (length > 0) {
+//                    if (length > 10) {
+//                        String substring = deptId.substring(0, 6);
+//                        String substring1 = deptId.substring(0, 8);
+//                        String province = deptId.substring(0, 4);
+//                        String storeDept = deptId.substring(0, 11);
+//                        SysDept cityName = sysDeptService.getById(substring);
+//                        SysDept districtName = sysDeptService.getById(substring1);
+//                        SysDept provinceName = sysDeptService.getById(province);
+//                        SysDept storeDeptEntity = sysDeptService.getById(storeDept);
+//                        String deptName = userItem.getDeptName();
+//                        String a = provinceName.getName()+"-"+cityName.getName()+"-"+districtName.getName()+"-"+storeDeptEntity.getName()+"-"+deptName;
+//                        userItem.setDeptName(a);
+//                    }
+//                }
+//            }
         }
     }
 
@@ -334,26 +381,6 @@ public class UserReportServiceImpl implements UserReportService {
                 item.setAveragePremium(taskStatisticsDto.getAveragePremium());
                 item.setTotalPremium(taskStatisticsDto.getTotalPremium());
             }
-            String deptId = item.getDeptId();
-            if(StringUtils.isNotEmpty(deptId)){
-                int length = deptId.length();
-                if (length > 0) {
-                    if (length > 10) {
-                        String substring = deptId.substring(0, 6);
-                        String substring1 = deptId.substring(0, 8);
-                        String province = deptId.substring(0, 4);
-                        String storeDept = deptId.substring(0, 11);
-                        SysDept cityName = sysDeptService.getById(substring);
-                        SysDept districtName = sysDeptService.getById(substring1);
-                        SysDept provinceName = sysDeptService.getById(province);
-                        SysDept storeDeptEntity = sysDeptService.getById(storeDept);
-                        String deptName = item.getDeptName();
-                        String a = provinceName.getName()+"-"+cityName.getName()+"-"+districtName.getName()+"-"+storeDeptEntity.getName()+"-"+deptName;
-                        item.setDeptName(a);
-
-                    }
-                }
-            }
         }
     }
 

+ 7 - 0
src/main/java/com/ydtech/modules/order/components/ZhongmeiRequestApiComponents.java

@@ -151,6 +151,13 @@ public class ZhongmeiRequestApiComponents {
         return routineRequest(request, tClass, false, "");
     }
 
+    /**
+     * 核保撤回
+     */
+    public void underwritingWithdraw(UnderwritingWithdrawRequest request, Class<UnderwritingWithdrawResponse> tClass) {
+        routineRequest(request, tClass, true, "");
+    }
+
     /**
      * 上传影像 传入订单信息,查询是否生成保单成功
      */

+ 11 - 0
src/main/java/com/ydtech/modules/order/components/bohai/BoHaiRequestApiComponent.java

@@ -195,6 +195,17 @@ public class BoHaiRequestApiComponent {
         return verificationResponse(paymentRequest, properties.getUrl(), PaymentResponse.class, sysSourceCode, RequestType.Z00008);
     }
 
+    /**
+     * 核保撤销
+     *
+     * @param paymentRequest 核保撤销 请求实体
+     * @return 响应
+     */
+    public BoHaiBaseResponse underwritingRevocation(UnderwritingRevocationRequest paymentRequest, String sysSourceCode) throws Exception {
+        return verificationResponse(paymentRequest, properties.getUrl(), PaymentResponse.class, sysSourceCode, RequestType.Z00009);
+    }
+
+
     /**
      * 获取保单接口
      *

+ 11 - 0
src/main/java/com/ydtech/modules/order/components/gouren/GuorenRequestApiComponent.java

@@ -12,9 +12,11 @@ import com.ydtech.modules.ins.model.guoren.*;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.api.guoren.constants.PlatformInterfaceCode;
 import com.ydtech.modules.order.entity.api.guoren.constants.Response;
+import com.ydtech.modules.order.entity.api.guoren.request.IIRBT00012Request;
 import com.ydtech.modules.order.entity.api.guoren.request.NoCarElectronicPolicyRequest;
 import com.ydtech.modules.order.entity.api.guoren.request.QueryNoCarPolicyNoRequest;
 import com.ydtech.modules.order.entity.api.guoren.request.SignatureRequest;
+import com.ydtech.modules.order.entity.api.guoren.response.IIRBT00012Response;
 import com.ydtech.modules.order.entity.api.guoren.response.NoCarElectronicPolicyResponse;
 import com.ydtech.modules.order.entity.api.guoren.response.QueryNoCarPolicyNoResponse;
 import com.ydtech.modules.order.entity.api.guoren.response.SignatureResponse;
@@ -166,6 +168,15 @@ public class GuorenRequestApiComponent {
         return null;
     }
 
+    /**
+     * 已核投保单注销
+     * @param req
+     * @return
+     */
+    public IIRBT00012Response proposalPolicyLogout(IIRBT00012Request req) {
+        return request(req, PlatformInterfaceCode.API_IIRBT00012, IIRBT00012Response.class);
+    }
+
     /**
      * 通过二维码扫描获取电子投保单签名
      */

+ 6 - 0
src/main/java/com/ydtech/modules/order/components/huatai/HuaTaiRequestApiComponents.java

@@ -233,6 +233,12 @@ public class HuaTaiRequestApiComponents {
         return routineRequest(request, tClass, true, insuredCode);
     }
 
+    /**
+     * 缴费注销
+     */
+    public HuaTaiPaymentLogoutResponse paymentLogout(HuaTaiPaymentLogoutRequest request, Class<HuaTaiPaymentLogoutResponse> tClass, String insuredCode) {
+        return routineRequest(request, tClass, true, insuredCode);
+    }
 
     /**
      * 获取缴费链接

+ 11 - 1
src/main/java/com/ydtech/modules/order/components/yongcheng/YongchengRequestApiComponents.java

@@ -25,6 +25,7 @@ import com.ydtech.modules.ins.model.yc.ruote.Ruote;
 import com.ydtech.modules.ins.model.yc.ruote.response.RuoteResponse;
 import com.ydtech.modules.order.entity.api.yongcheng.constants.RequestUrl;
 import com.ydtech.modules.order.entity.api.yongcheng.request.AccidentUnderwritingRequest;
+import com.ydtech.modules.order.entity.api.yongcheng.request.ProposalPolicyReturnRequest;
 import com.ydtech.modules.order.entity.api.yongcheng.response.AccidentUnderwritingResponse;
 import com.ydtech.modules.order.utils.InsuranceLog;
 import lombok.extern.slf4j.Slf4j;
@@ -180,6 +181,15 @@ public class YongchengRequestApiComponents {
         return post(accident, RequestUrl.API_ACCIDENT, AccidentResponse.class);
     }
 
+    /**
+     * 投保单打回接口
+     *
+     * @param accident 投保单打回 入参实体
+     * @return 出参实体
+     */
+    public AccidentResponse returnAppPolicyWebService(ProposalPolicyReturnRequest accident) throws JsonProcessingException {
+        return post(accident, RequestUrl.API_UNDERWRITING_RETURNS, AccidentResponse.class);
+    }
 
     /**
      * 补传回调及订单信息查询接口
@@ -195,7 +205,7 @@ public class YongchengRequestApiComponents {
      * 意外险确保接口
      *
      * @param accidentUnderwritingRequest 意外险确保 请求参数
-     * @return  意外险响应参数
+     * @return 意外险响应参数
      * @throws JsonProcessingException 序列化失败
      */
     public AccidentUnderwritingResponse submitPolicy(AccidentUnderwritingRequest accidentUnderwritingRequest) throws JsonProcessingException {

+ 4 - 0
src/main/java/com/ydtech/modules/order/controller/InsAreaCompanyController.java

@@ -11,6 +11,7 @@ import com.ydtech.modules.order.entity.InsOrdersTrack;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsOrderQrCodeService;
 import com.ydtech.modules.order.service.InsOrdersTrackService;
+import com.ydtech.modules.order.service.InsuranceCompanyPolymerizationService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -33,6 +34,8 @@ public class InsAreaCompanyController {
 
     private final InsOrderQrCodeService insOrderQrCodeService;
 
+    private final InsuranceCompanyPolymerizationService insuranceCompanyPolymerizationService;
+
     @GetMapping("/statusInquiry/{subOrderNo}")
     @ApiOperation("状态查询")
     public HttpResult<String> statusInquiry(@PathVariable String subOrderNo) {
@@ -79,6 +82,7 @@ public class InsAreaCompanyController {
                 InsOrdersTrack insOrdersTrack = new InsOrdersTrack(insAreaCompany, user.getId(), user.getName());
                 insAreaCompanyService.updateById(insAreaCompany);
                 insOrdersTrackService.save(insOrdersTrack);
+                insuranceCompanyPolymerizationService.cancelOrder(insAreaCompany);
                 return HttpResult.ok();
             }
             throw new SystemException("此订单未到达已核保待缴费,无法跟新状态");

+ 4 - 0
src/main/java/com/ydtech/modules/order/entity/InsOrders.java

@@ -367,6 +367,10 @@ public class InsOrders implements Serializable {
     @TableField(exist = false)
     private String orderStatus4;
 
+    @ApiModelProperty("区划信息")
+    @TableField(exist = false)
+    private String areaInfo;
+
 
     public InsOrders(SysUser user, SysDept dept, BaseQuoteInfoVo quoteInfoVo) {
         // 2. 组装订单

+ 32 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/UnderwritingRevocationRequest.java

@@ -0,0 +1,32 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @description: 渤海财险 核保撤销
+ * @author: wenks
+ * @date: 2024/3/7 18:29
+ **/
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class UnderwritingRevocationRequest extends BoHaiBaseRequest {
+
+    private static final long serialVersionUID = -8988419586130153169L;
+
+    /**
+     * 订单业务
+     */
+    @JsonProperty("busUniqueId")
+    private String busUniqueId;
+
+
+    public UnderwritingRevocationRequest(BoHaiConfigureParameters parameters, String id, String busUniqueId) {
+        this.setBaseParam(parameters, id);
+        this.busUniqueId = busUniqueId;
+    }
+
+}

+ 1 - 0
src/main/java/com/ydtech/modules/order/entity/api/dajia/constants/ServiceCode.java

@@ -31,6 +31,7 @@ public enum ServiceCode {
     ODR1021("ODR1021"	,"北京承保交管车辆查询确认接口"),
     ODR1020("ODR1020"	,"北京承保交管车辆查询接口"),
     ODR1016("ODR1016"	,"车辆实际价值计算接口"),
+    ODR1015("ODR1015"	,"业务订单删除接口"),
     ODR1014("ODR1014"	,"业务订单退回接口"),
     ODR1013("ODR1013"	,"影像上传接口"),
     ODR1012("ODR1012"	,"非个人申请支付接口"),

+ 48 - 0
src/main/java/com/ydtech/modules/order/entity/api/dajia/request/ODR1015Request.java

@@ -0,0 +1,48 @@
+package com.ydtech.modules.order.entity.api.dajia.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.dajia.DaJiaBaseRequest;
+import com.ydtech.modules.order.entity.api.dajia.constants.ServiceCode;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @version
+ * @description: 大家财险 业务订单撤回接口 请求参数
+ * @author: wenks
+ * @date: 2024/10/08 16:44
+ **/
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ODR1015Request extends DaJiaBaseRequest {
+
+    private static final long serialVersionUID = 8247524994147021165L;
+
+    @JsonProperty("body")
+    private BodyDTO body;
+
+    public ODR1015Request(String orderNo) {
+        super("", ServiceCode.ODR1015.getCode());
+        if(body == null){
+            body = new BodyDTO();
+        }
+        body.setOrderNo(orderNo);
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class BodyDTO implements Serializable {
+
+        private static final long serialVersionUID = -4592159874022566051L;
+
+        @JsonProperty("orderNo")
+        private String orderNo;
+
+    }
+
+
+}

+ 2 - 1
src/main/java/com/ydtech/modules/order/entity/api/guoren/constants/PlatformInterfaceCode.java

@@ -25,6 +25,8 @@ public enum PlatformInterfaceCode {
 
     API_IIRBT00010("IIRBT00010", "投保单状态查询"),
 
+    API_IIRBT00012("IIRBT00012", "已核投保单注销"),
+
     API_IIRBT00017("IIRBT00017", "匹配多条车型记录需再次做车价查询"),
 
     API_IIRBT00018("IIRBT00018", "获取出单所需的基本信息"),
@@ -37,7 +39,6 @@ public enum PlatformInterfaceCode {
 
     API_IIIRBT00053("IIIRBT00053", "查询非车商品信息"),
 
-
     API_IIIRBT00055("IIIRBT00055", "通过二维码扫描获取电子投保单签名"),
 
     API_IIIRBT00054("IIIRBT00054", "创建非车订单"),

+ 29 - 0
src/main/java/com/ydtech/modules/order/entity/api/guoren/request/IIRBT00012Request.java

@@ -0,0 +1,29 @@
+package com.ydtech.modules.order.entity.api.guoren.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+
+/**
+ * @description: 已核投保单注销
+ * @author: wenks
+ * @date: 2024/10/08 16:59
+ **/
+@NoArgsConstructor
+@Data
+public class IIRBT00012Request {
+
+    @JsonProperty("proposalNoList")
+    private List<String> proposalNoList;
+
+    @JsonProperty("cancelFlag")
+    private String cancelFlag;
+
+    public IIRBT00012Request(List<String> proposalNoList) {
+        this.proposalNoList = proposalNoList;
+        this.cancelFlag = "0";
+    }
+}

+ 26 - 0
src/main/java/com/ydtech/modules/order/entity/api/guoren/response/IIRBT00012Response.java

@@ -0,0 +1,26 @@
+package com.ydtech.modules.order.entity.api.guoren.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @description: 已核投保单注销
+ * @author: wenks
+ * @date: 2024/10/08 16:59
+ **/
+@NoArgsConstructor
+@Data
+public class IIRBT00012Response implements Serializable {
+
+    private static final long serialVersionUID = -5548504588559415916L;
+
+    @JsonProperty("resultCode")
+    private Integer resultCode;
+
+    @JsonProperty("resultMsg")
+    private String resultMsg;
+
+}

+ 3 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/constants/HuaTaiTransCode.java

@@ -21,6 +21,9 @@ public class HuaTaiTransCode {
     //转投保
     public static final String SAVE = "Save";
 
+    // 缴费注销
+    public static final String ORDER_CANCEL = "OrderCancel";
+
     //提交核保
     public static final String SUBMIT = "submit";
 

+ 43 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/request/HuaTaiPaymentLogoutRequest.java

@@ -0,0 +1,43 @@
+package com.ydtech.modules.order.entity.api.huatai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequest;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequestHead;
+import com.ydtech.modules.order.entity.api.huatai.constants.HuaTaiTransCode;
+import com.ydtech.modules.order.entity.config.HuaTaiConfigureParameters;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@NoArgsConstructor
+public class HuaTaiPaymentLogoutRequest  extends HuaTaiBaseRequest {
+
+    private static final long serialVersionUID = 3768214271916723325L;
+
+    //操作员代码
+    @JsonProperty("operatorCode")
+    private String operatorCode;
+
+    //机构代码
+    @JsonProperty("loginCom")
+    private String loginCom;
+
+    //支付交易号
+    @JsonProperty("poaCode")
+    private String poaCode;
+
+    @Override
+    public void setHead(HuaTaiBaseRequestHead head) {
+        super.setHead(head);
+        super.getHead().setTransCode(HuaTaiTransCode.ORDER_CANCEL);
+    }
+
+    public HuaTaiPaymentLogoutRequest(String poaCode, HuaTaiConfigureParameters huaTaiConfigureParameters) {
+        this.loginCom = huaTaiConfigureParameters.getComCode();
+        this.operatorCode = huaTaiConfigureParameters.getOperatorCode();
+        this.poaCode = poaCode;
+    }
+
+}

+ 23 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/response/HuaTaiPaymentLogoutResponse.java

@@ -0,0 +1,23 @@
+package com.ydtech.modules.order.entity.api.huatai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseResponse;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class HuaTaiPaymentLogoutResponse extends HuaTaiBaseResponse {
+
+    private static final long serialVersionUID = -4638858480953971007L;
+
+    /**
+     * 报价单号(列表)
+     */
+    @JsonProperty("contractNo")
+    private List<String> contractNo;
+
+}

+ 1 - 0
src/main/java/com/ydtech/modules/order/entity/api/yongcheng/constants/RequestUrl.java

@@ -15,6 +15,7 @@ public enum RequestUrl {
     API_PAY("newGetPayNoService", "支付"),
     API_GUARANTEE_SLIP("DzbdWebService", "电子保单"),
     API_ORDER_QUERY("payCallback", "补传回调及订单信息查询接口"),
+    API_UNDERWRITING_RETURNS("returnAppPolicyWebService", "投保单打回接口"),
     API_ACCIDENT("NewQueryYwCvrgWebService", "意外险"),
     API_SUBMIT_POLICY("SubmitpolicyWebService", "意外险确保接口");
 

+ 93 - 0
src/main/java/com/ydtech/modules/order/entity/api/yongcheng/request/ProposalPolicyReturnRequest.java

@@ -0,0 +1,93 @@
+package com.ydtech.modules.order.entity.api.yongcheng.request;
+
+
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
+import com.ydtech.modules.ins.model.yc.YcConfigureParameters;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @version 投保单退回 请求
+ * @author: wenks
+ * @date: 2024/10/08 17:57
+ **/
+@Data
+@JacksonXmlRootElement(localName = "tns:returnAppPolicy")
+public class ProposalPolicyReturnRequest implements Serializable {
+
+    private static final long serialVersionUID = -1149419609003431963L;
+
+    @JacksonXmlProperty(localName = "request")
+    private RequestDTO request;
+
+    public ProposalPolicyReturnRequest(YcConfigureParameters ycConfigureParameters, String policyNumber) {
+        this.request = new RequestDTO(ycConfigureParameters.getPassword(), ycConfigureParameters.getUserName(), policyNumber, ycConfigureParameters.getDptCde(), ycConfigureParameters.getOperatorCode());
+    }
+
+    @Data
+    private static class RequestDTO implements Serializable {
+
+        private static final long serialVersionUID = -1902215151514107102L;
+
+        @JacksonXmlProperty(localName = "authorityData")
+        private AuthorityDataDTO authorityData;
+
+        @JacksonXmlProperty(localName = "condition")
+        private ConditionDTO condition;
+
+        public RequestDTO(String password, String username, String insOrderNo, String deptcode, String operatorcode) {
+            this.authorityData = new AuthorityDataDTO(password, username);
+            this.condition = new ConditionDTO(insOrderNo, deptcode, operatorcode);
+        }
+
+        @Data
+        @AllArgsConstructor
+        private static class AuthorityDataDTO implements Serializable {
+
+            private static final long serialVersionUID = 7311697554642031110L;
+            /**
+             * 密码
+             */
+            @JacksonXmlProperty(localName = "password")
+            private String password;
+
+            /**
+             * 密码
+             */
+            @JacksonXmlProperty(localName = "userName")
+            private String userName;
+
+        }
+
+        @Data
+        @AllArgsConstructor
+        private static class ConditionDTO implements Serializable {
+
+            private static final long serialVersionUID = -8787772717387104811L;
+
+            /**
+             * 投保单号
+             */
+            @JacksonXmlProperty(localName = "appno")
+            private String appno;
+
+            /**
+             * 机构编码
+             */
+            @JacksonXmlProperty(localName = "deptcode")
+            private String deptcode;
+
+            /**
+             * 操作人
+             */
+            @JacksonXmlProperty(localName = "operatorcode")
+            private String operatorcode;
+
+        }
+
+    }
+
+}

+ 3 - 0
src/main/java/com/ydtech/modules/order/entity/api/zhongmei/constants/TransCode.java

@@ -48,4 +48,7 @@ public class TransCode {
     // 非车可投保产品查询
     public static final String Ride_Accident_Query = "RideAccidentQuery";
 
+    // 核保撤回
+    public static final String UNDERWRITING_CANCLE = "UnderwritingCancle";
+
 }

+ 2 - 0
src/main/java/com/ydtech/modules/order/entity/api/zhongmei/request/SubmitStatusQueryRequest.java

@@ -5,6 +5,7 @@ import com.ydtech.modules.order.entity.api.zhongmei.BaseRequest;
 import com.ydtech.modules.order.entity.api.zhongmei.BaseRequestHead;
 import com.ydtech.modules.order.entity.api.zhongmei.constants.TransCode;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
 /**
@@ -13,6 +14,7 @@ import lombok.NoArgsConstructor;
  * @description TODO
  * @date 2023/4/25 17:55
  */
+@EqualsAndHashCode(callSuper = true)
 @NoArgsConstructor
 @Data
 public class SubmitStatusQueryRequest extends BaseRequest {

+ 36 - 0
src/main/java/com/ydtech/modules/order/entity/api/zhongmei/request/UnderwritingWithdrawRequest.java

@@ -0,0 +1,36 @@
+package com.ydtech.modules.order.entity.api.zhongmei.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.zhongmei.BaseRequest;
+import com.ydtech.modules.order.entity.api.zhongmei.BaseRequestHead;
+import com.ydtech.modules.order.entity.api.zhongmei.constants.TransCode;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@NoArgsConstructor
+public class UnderwritingWithdrawRequest  extends BaseRequest {
+
+    private static final long serialVersionUID = -2337717710536441127L;
+
+    /**
+     * 主投保单号
+     */
+    @JsonProperty("contractMainNo")
+    private String contractMainNo;
+
+
+    public UnderwritingWithdrawRequest(String contractMainNo) {
+        this.contractMainNo = contractMainNo;
+    }
+
+    @Override
+    public void setHead(BaseRequestHead head) {
+        super.setHead(head);
+        super.getHead().setTransCode(TransCode.UNDERWRITING_CANCLE);
+    }
+
+}

+ 15 - 0
src/main/java/com/ydtech/modules/order/entity/api/zhongmei/response/UnderwritingWithdrawResponse.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.order.entity.api.zhongmei.response;
+
+import com.ydtech.modules.order.entity.api.zhongmei.BaseResponse;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@AllArgsConstructor
+@Data
+public class UnderwritingWithdrawResponse  extends BaseResponse {
+
+    private static final long serialVersionUID = -8974689717579272423L;
+
+}

+ 16 - 6
src/main/java/com/ydtech/modules/order/service/BoHaiOrderApiService.java

@@ -2,6 +2,7 @@ package com.ydtech.modules.order.service;
 
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.ins.model.vo.QuoteRespVo;
+import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.api.bohai.request.ManualReviewRequest;
 import com.ydtech.modules.order.entity.api.bohai.request.PaymentCallbackRequest;
 import com.ydtech.modules.order.entity.api.bohai.request.PolicyResultCallbackRequest;
@@ -81,6 +82,7 @@ public interface BoHaiOrderApiService {
 
     /**
      * 支付回调
+     *
      * @param coverageRequest 支付回调参数
      * @return
      */
@@ -88,6 +90,7 @@ public interface BoHaiOrderApiService {
 
     /**
      * 核保回调
+     *
      * @param approvedRequest 支付回调参数
      * @return
      */
@@ -95,21 +98,28 @@ public interface BoHaiOrderApiService {
 
     /**
      * 保单结果
+     *
      * @param policyResultCallbackRequest 保单结果回调参数
      * @return
      */
-    String policyResultCallback(PolicyResultCallbackRequest policyResultCallbackRequest)  throws Exception;
+    String policyResultCallback(PolicyResultCallbackRequest policyResultCallbackRequest) throws Exception;
 
 
-     /**
+    /**
      * @Description 更新承保状态和支付时间
-     * @Author  hxl
-     * @Date   2024/4/2 11:31
+     * @Author hxl
+     * @Date 2024/4/2 11:31
      * @Param
      * @Return
      * @Exception
-     *
      */
-    public void getOrderDetailNew(String subOrderNo) throws Exception;
+    void getOrderDetailNew(String subOrderNo) throws Exception;
 
+    /**
+     * 撤销保险公司二维码/订单
+     *
+     * @param insAreaCompany 子订单号
+     * @return 是否成功
+     */
+    boolean cancelOrder(InsAreaCompany insAreaCompany);
 }

+ 23 - 10
src/main/java/com/ydtech/modules/order/service/DaJiaOrderService.java

@@ -2,13 +2,15 @@ package com.ydtech.modules.order.service;
 
 
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
 import com.ydtech.modules.order.entity.vo.dajia.AccidentalInsuranceQueryVo;
 
-public interface DaJiaOrderService extends BaseOrderService<Object>{
+public interface DaJiaOrderService extends BaseOrderService<Object> {
 
     /**
      * 缴费状态查询
+     *
      * @param companyId
      * @return
      */
@@ -17,6 +19,7 @@ public interface DaJiaOrderService extends BaseOrderService<Object>{
 
     /**
      * 获取保单
+     *
      * @param policyPrintVo
      * @return
      */
@@ -24,6 +27,7 @@ public interface DaJiaOrderService extends BaseOrderService<Object>{
 
     /**
      * 业务订单撤回
+     *
      * @param companyId
      * @return
      */
@@ -31,24 +35,33 @@ public interface DaJiaOrderService extends BaseOrderService<Object>{
 
     /**
      * 获取驾意险列表
+     *
      * @return
      */
     HttpResult<Object> accidentalDrivingList(AccidentalInsuranceQueryVo queryVo);
 
     /**
      * 获取驾意险详情
+     *
      * @return
      */
     HttpResult<Object> accidentalDrivingInfo(String accidentalId);
 
     /**
-    * @Description 自动更新承保状态
-    * @Author  xingming
-    * @Date   2024/3/28 16:36
-    * @Param
-    * @Return
-    * @Exception
-    *
-    */
-     void verifyPaymentNew(String companyId);
+     * @Description 自动更新承保状态
+     * @Author xingming
+     * @Date 2024/3/28 16:36
+     * @Param
+     * @Return
+     * @Exception
+     */
+    void verifyPaymentNew(String companyId);
+
+    /**
+     * 撤销保险公司二维码/订单
+     *
+     * @param insAreaCompany 子订单号
+     * @return 是否成功
+     */
+    boolean cancelOrder(InsAreaCompany insAreaCompany);
 }

+ 17 - 10
src/main/java/com/ydtech/modules/order/service/GuorenOrderApiService.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.order.service;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.ins.model.guoren.CarModelResp;
 import com.ydtech.modules.ins.model.vo.CarInfoVo;
+import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
 import com.ydtech.modules.order.entity.vo.guoren.*;
 
@@ -31,6 +32,7 @@ public interface GuorenOrderApiService {
 
     /**
      * 特约查询 根据公司id
+     *
      * @param companyId
      * @return
      */
@@ -85,15 +87,20 @@ public interface GuorenOrderApiService {
 
 
     /**
-    * @Description 更新支付状态和支付时间
-    * @Author  xingming
-    * @Date   2024/3/28 16:47
-    * @Param
-    * @Return
-    * @Exception
-    *
-    */
-    public void insOrderInfoNew(String companyId);
-
+     * @Description 更新支付状态和支付时间
+     * @Author xingming
+     * @Date 2024/3/28 16:47
+     * @Param
+     * @Return
+     * @Exception
+     */
+    void insOrderInfoNew(String companyId);
 
+    /**
+     * 撤销保险公司二维码/订单
+     *
+     * @param insAreaCompany 子订单号
+     * @return 是否成功
+     */
+    boolean cancelOrder(InsAreaCompany insAreaCompany);
 }

+ 9 - 1
src/main/java/com/ydtech/modules/order/service/HuaTaiOrderApiService.java

@@ -2,6 +2,7 @@ package com.ydtech.modules.order.service;
 
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.ins.model.vo.QuoteRespVo;
+import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
 import com.ydtech.modules.order.entity.po.InsHuataiContributing;
 import com.ydtech.modules.order.entity.vo.*;
@@ -84,6 +85,13 @@ public interface HuaTaiOrderApiService{
     * @Exception
     *
     */
-    public void paymentEnquiryNew(String companyId);
+     void paymentEnquiryNew(String companyId);
 
+    /**
+     * 撤销保险公司二维码/订单
+     *
+     * @param insAreaCompany 子订单号
+     * @return 是否成功
+     */
+    boolean cancelOrder(InsAreaCompany insAreaCompany);
 }

+ 0 - 3
src/main/java/com/ydtech/modules/order/service/InsBusinessInsuranceService.java

@@ -2,8 +2,6 @@ package com.ydtech.modules.order.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.modules.order.entity.InsBusinessInsurance;
-import com.ydtech.modules.order.entity.InsDrivingIntentionInsurance;
-import com.ydtech.modules.scheme.entity.vo.InsDrivingIntentionInsuranceInfoVo;
 
 import java.util.List;
 
@@ -18,5 +16,4 @@ public interface InsBusinessInsuranceService extends IService<InsBusinessInsuran
      */
     List<InsBusinessInsurance> getBusinessInsurance();
 
-    List<InsDrivingIntentionInsurance> getDrivingInfo(InsDrivingIntentionInsuranceInfoVo insuranceInfoVo);
 }

+ 12 - 1
src/main/java/com/ydtech/modules/order/service/InsCrawlerOrderService.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.order.service;
 
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
 
@@ -64,7 +65,7 @@ public interface InsCrawlerOrderService extends BaseOrderService<Object> {
     /**
      * 撤销订单
      */
-    void quash(String subOrderNo);
+    boolean quash(String subOrderNo);
 
     /**
      * 验车码识别
@@ -72,4 +73,14 @@ public interface InsCrawlerOrderService extends BaseOrderService<Object> {
      */
     String vehicleInspectionCode();
 
+
+
+    /**
+     * 撤销保险公司二维码/订单
+     *
+     * @param insAreaCompany 子订单号
+     * @return 是否成功
+     */
+    boolean cancelOrder(InsAreaCompany insAreaCompany);
+
 }

+ 21 - 0
src/main/java/com/ydtech/modules/order/service/InsuranceCompanyPolymerizationService.java

@@ -0,0 +1,21 @@
+package com.ydtech.modules.order.service;
+
+
+import com.ydtech.modules.order.entity.InsAreaCompany;
+
+/**
+ * 保险公司聚合
+ */
+public interface InsuranceCompanyPolymerizationService {
+
+
+    /**
+     * 撤销保险公司二维码/订单
+     *
+     * @param insAreaCompany 子订单号
+     * @return 是否成功
+     */
+    boolean cancelOrder(InsAreaCompany insAreaCompany);
+
+
+}

+ 8 - 1
src/main/java/com/ydtech/modules/order/service/YongchengOrderApiService.java

@@ -78,6 +78,13 @@ public interface YongchengOrderApiService {
      *  @Date: 2024/3/28 17:01
      *  @Description: 更新承保状态和支付时间
      */
-    public void callbackAnOrderNew(String insAreaCompanyId);
+    void callbackAnOrderNew(String insAreaCompanyId);
 
+    /**
+     * 撤销保险公司二维码/订单
+     *
+     * @param insAreaCompany 子订单号
+     * @return 是否成功
+     */
+    boolean cancelOrder(InsAreaCompany insAreaCompany);
 }

+ 10 - 1
src/main/java/com/ydtech/modules/order/service/ZhongMeiOrderApiService.java

@@ -4,6 +4,7 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.ins.model.vo.GeneralNonCarProductReqVo;
 import com.ydtech.modules.ins.model.vo.GeneralNonCarProductResVo;
 import com.ydtech.modules.ins.model.ya.CarModelDTO;
+import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.api.zhongmei.request.ApprovedRequest;
 import com.ydtech.modules.order.entity.api.zhongmei.request.CoverageRequest;
 import com.ydtech.modules.order.entity.api.zhongmei.response.RideAccidentQueryResponse;
@@ -92,5 +93,13 @@ public interface ZhongMeiOrderApiService extends BaseOrderService<AccidentalDriv
     * @Exception
     *
     */
-    public void paymentEnquiryNew(String companyId);
+     void paymentEnquiryNew(String companyId);
+
+    /**
+     * 撤销保险公司二维码/订单
+     *
+     * @param insAreaCompany 子订单号
+     * @return 是否成功
+     */
+    boolean cancelOrder(InsAreaCompany insAreaCompany);
 }

+ 11 - 1
src/main/java/com/ydtech/modules/order/service/ZijinOrderApiService.java

@@ -2,6 +2,7 @@ package com.ydtech.modules.order.service;
 
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.ins.model.vo.QuoteRespVo;
+import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.api.zijin.request.PaymentCallbacksRequest;
 import com.ydtech.modules.order.entity.api.zijin.request.SubmitVerifyRequest;
 import com.ydtech.modules.order.entity.api.zijin.response.QueryClauseDataResponse;
@@ -97,5 +98,14 @@ public interface ZijinOrderApiService {
     * @Return
     * @Exception
     */
-    public void getOrderDetailNew(String companyId);
+    void getOrderDetailNew(String companyId);
+
+
+    /**
+     * 撤销保险公司二维码/订单
+     *
+     * @param insAreaCompany 子订单号
+     * @return 是否成功
+     */
+    boolean cancelOrder(InsAreaCompany insAreaCompany);
 }

+ 19 - 1
src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java

@@ -676,7 +676,7 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
             InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = new InsAreaCompanyAccidentalDriving();
             insAreaCompanyAccidentalDriving.setQuantity(Integer.parseInt(accidentalDriving.getCopies()));
             insAreaCompanyAccidentalDriving.setRideRiskCode(accidentalDriving.getPackageCode());
-            if(!bpic1000000.isEmpty()) {
+            if (!bpic1000000.isEmpty()) {
                 insAreaCompanyAccidentalDriving.setRideRiskName(bpic1000000.get(0).getProjectName());
             }
             insAreaCompanyAccidentalDrivings.add(insAreaCompanyAccidentalDriving);
@@ -737,4 +737,22 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
             insAreaCompanyService.updateCompanyAndOrdersNew(insAreaCompany);
         }
     }
+
+    @Override
+    public boolean cancelOrder(InsAreaCompany insAreaCompany)  {
+        // 账号信息
+        PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
+        // 通过 协议id获取配置实体
+        BoHaiConfigureParameters parameters = configureParametersComponents.toEntity(BoHaiConfigureParameters.class,
+                ptlAgreementAttribution);
+
+        UnderwritingRevocationRequest underwritingRevocationRequest = new UnderwritingRevocationRequest(parameters, insAreaCompany.getId(), insAreaCompany.getInsOrderNo());
+        try {
+            boHaiRequestApiComponent.underwritingRevocation(underwritingRevocationRequest, parameters.getSysSourceCode());
+            return true;
+        }catch (Exception ignored){
+            return false;
+        }
+    }
+
 }

+ 18 - 0
src/main/java/com/ydtech/modules/order/service/impl/DaJiaOrderServiceImpl.java

@@ -974,4 +974,22 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
             throw new RuntimeException(e.getMessage());
         }
     }
+
+    @Override
+    public boolean cancelOrder(InsAreaCompany insAreaCompany) {
+        //获取公司配置信息
+        DaJiaConfigureParameters daJiaConfigureParameters = new DaJiaConfigureParameters();
+        configureParametersComponents.toEntity(daJiaConfigureParameters, insAreaCompany.getAgreementId());
+
+        ODR1014Request odr1014Request = new ODR1014Request(insAreaCompany.getInsOrderNo(), daJiaConfigureParameters);
+        try {
+            ODR1014Response odr1014Response = daJiaRequestApiComponents.orderBack(odr1014Request);
+            if ("0000".equals(odr1014Response.getStatus())) {
+                return true;
+            }
+        } catch (Exception ignored) {
+        }
+        return false;
+    }
+
 }

+ 19 - 0
src/main/java/com/ydtech/modules/order/service/impl/GuorenOrderApiServiceImpl.java

@@ -31,8 +31,10 @@ import com.ydtech.modules.order.entity.api.guoren.constants.GoodsClassifyList;
 import com.ydtech.modules.order.entity.api.guoren.constants.GuoRenRiskCode;
 import com.ydtech.modules.order.entity.api.guoren.constants.PlatformInterfaceCode;
 import com.ydtech.modules.order.entity.api.guoren.request.ApplicationDetailsRequest;
+import com.ydtech.modules.order.entity.api.guoren.request.IIRBT00012Request;
 import com.ydtech.modules.order.entity.api.guoren.request.NonAutoInsuranceRequest;
 import com.ydtech.modules.order.entity.api.guoren.request.SpecialAgreementRequest;
+import com.ydtech.modules.order.entity.api.guoren.response.IIRBT00012Response;
 import com.ydtech.modules.order.entity.api.guoren.response.NonAutoInsOrderResponse;
 import com.ydtech.modules.order.entity.api.guoren.response.SignatureResponse;
 import com.ydtech.modules.order.entity.api.guoren.response.SpecialAgreementResponse;
@@ -1219,4 +1221,21 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         }
     }
 
+
+    @Override
+    public boolean cancelOrder(InsAreaCompany insAreaCompany) {
+        String jqapplyno = insAreaCompany.getJqapplyno();
+        List<String> list = new ArrayList<>();
+        if(StringUtils.isNotEmpty(jqapplyno)){
+            list.add(jqapplyno);
+        }
+        String syapplyno = insAreaCompany.getSyapplyno();
+        if(StringUtils.isNotEmpty(syapplyno)){
+            list.add(syapplyno);
+        }
+
+        IIRBT00012Request iirbt00012Request = new IIRBT00012Request(list);
+        IIRBT00012Response iirbt00012Response = guorenRequestApiComponent.proposalPolicyLogout(iirbt00012Request);
+        return iirbt00012Response.getResultCode() == 0;
+    }
 }

+ 17 - 0
src/main/java/com/ydtech/modules/order/service/impl/HuaTaiOrderApiServiceImpl.java

@@ -812,6 +812,23 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
             insAreaCompanyService.updateCompanyAndOrdersNew(insAreaCompany);
         }
     }
+
+    @Override
+    public boolean cancelOrder(InsAreaCompany insAreaCompany) {
+        // 1. 协议id获取配置实体
+        HuaTaiConfigureParameters huaTaiConfigureParameters = configureParametersComponents.toEntity(HuaTaiConfigureParameters.class,
+                insAreaCompany.getAgreementId());
+        // 订单查询
+        HuaTaiOrderStatusRequest orderStatusRequest = new HuaTaiOrderStatusRequest(insAreaCompany, huaTaiConfigureParameters);
+        orderStatusRequest.setHead(new HuaTaiBaseRequestHead(huaTaiConfigureParameters));
+        HuaTaiOrderStatusResponse orderStatusResponse = huaTaiRequestApiComponents.orderStatus(orderStatusRequest,
+                HuaTaiOrderStatusResponse.class, huaTaiConfigureParameters.getInsuredCode());
+        // 撤销
+        HuaTaiPaymentLogoutRequest huaTaiPaymentLogoutRequest = new HuaTaiPaymentLogoutRequest(orderStatusResponse.getPoaCode(), huaTaiConfigureParameters);
+        huaTaiRequestApiComponents.paymentLogout(huaTaiPaymentLogoutRequest, HuaTaiPaymentLogoutResponse.class, huaTaiConfigureParameters.getInsuredCode());
+        return false;
+    }
+
 }
 
 

+ 1 - 32
src/main/java/com/ydtech/modules/order/service/impl/InsBusinessInsuranceServiceImpl.java

@@ -4,14 +4,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.modules.order.dao.InsBusinessInsuranceMapper;
 import com.ydtech.modules.order.entity.*;
 import com.ydtech.modules.order.service.*;
-import com.ydtech.modules.scheme.entity.vo.InsDrivingIntentionInsuranceInfoVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
+
 
 /**
  * 驾意险服务实现类
@@ -27,32 +24,4 @@ public class InsBusinessInsuranceServiceImpl extends ServiceImpl<InsBusinessInsu
         return baseMapper.getBusinessInsurance();
     }
 
-    @Override
-    public List<InsDrivingIntentionInsurance> getDrivingInfo(InsDrivingIntentionInsuranceInfoVo insuranceInfoVo) {
-        // 获取所有记录
-        List<InsDrivingIntentionInsurance> allRecords = insDrivingIntentionInsuranceService.list();
-
-        // 使用parentId对记录进行分组
-        Map<Integer, List<InsDrivingIntentionInsurance>> groupedByParent = allRecords.stream()
-                .collect(Collectors.groupingBy(InsDrivingIntentionInsurance::getParentId));
-
-        // 创建一个新的List来存储最终的结果
-        List<InsDrivingIntentionInsurance> resultList = new ArrayList<>();
-
-        // 过滤出所有的顶级记录(parentId为null或0)
-        List<InsDrivingIntentionInsurance> topLevelRecords = allRecords.stream()
-                .filter(item -> item.getParentId() == null || item.getParentId() == 0)
-                .collect(Collectors.toList());
-
-        // 设置每个顶级记录的子记录
-        for (InsDrivingIntentionInsurance item : topLevelRecords) {
-            // 根据顶级记录的id来查找子记录
-            item.setInsDrivingIntentionInsurances(groupedByParent.getOrDefault(item.getId(), new ArrayList<>()));
-        }
-
-        // 将顶级记录添加到结果集中
-        resultList.addAll(topLevelRecords);
-
-        return resultList;
-    }
 }

+ 22 - 10
src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java

@@ -146,13 +146,13 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
         if (t.getAccidentalDrivingVo() != null && t.getCompanyId().equals("TPIC1000000")) {
             JSONObject jsonObject = JSON.parseObject(t.getAccidentalDrivingVo().toString());
             insAreaCompanyAccidentalDriving.setRideRiskCode(jsonObject.get("id").toString());
-        }else if(t.getAccidentalDrivingVo() != null && t.getCompanyId().equals("TKIC1000000")){
+        } else if (t.getAccidentalDrivingVo() != null && t.getCompanyId().equals("TKIC1000000")) {
             JSONObject jsonObject = JSON.parseObject(t.getAccidentalDrivingVo().toString());
             insAreaCompanyAccidentalDriving.setRideRiskCode(jsonObject.getString("planCode"));
             insAreaCompanyAccidentalDriving.setRideRiskName(jsonObject.getString("planName"));
             insAreaCompanyAccidentalDriving.setCompanyId("TKIC1000000");
             insAreaCompanyAccidentalDriving.setQuantity(1);
-        }else if(t.getAccidentalDrivingVo() != null && t.getCompanyId().equals("DJPC1000000")){
+        } else if (t.getAccidentalDrivingVo() != null && t.getCompanyId().equals("DJPC1000000")) {
             JSONObject jsonObject = JSON.parseObject(t.getAccidentalDrivingVo().toString());
             InsDrivingIntentionInsurance one = insDrivingIntentionInsuranceService.getOne(new LambdaQueryWrapper<InsDrivingIntentionInsurance>()
                     .eq(InsDrivingIntentionInsurance::getCompanyId, t.getCompanyId())
@@ -332,10 +332,10 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
             kind.setKindCode(kindInfoVo.getKindCode());
             kind.setKindName(kindInfoVo.getKindName());
 
-            if(map.get(kindInfoVo.getKindCode()) != null) {
+            if (map.get(kindInfoVo.getKindCode()) != null) {
                 kind.setCoveragePremium(map.get(kindInfoVo.getKindCode()));
                 kind.setUnitAmount(kindInfoVo.getUnitAmount());
-            }else{
+            } else {
                 kind.setServiceTimes(String.valueOf(kindInfoVo.getServiceTimes()));
             }
 
@@ -547,19 +547,31 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
     }
 
     @Override
-    public void quash(String subOrderNo) {
+    public boolean quash(String subOrderNo) {
         InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(subOrderNo);
+        return quashOrder(insAreaCompany);
+    }
+
+    @Override
+    public String vehicleInspectionCode() {
+        return "";
+    }
+
+    @Override
+    public boolean cancelOrder(InsAreaCompany insAreaCompany) {
+        return quashOrder(insAreaCompany);
+    }
+
+    private boolean quashOrder(InsAreaCompany insAreaCompany) {
         CrawlerBaseRequest crawlerBaseRequest = new CrawlerBaseRequest(insAreaCompany.getInsOrderNo());
         CrawlerBaseResponse request = insCrawlerOrderComponents.request(apiUrl, insAreaCompany.getCompanyId(),
                 PtlCrawlerApiType.API_9.getDesc(), crawlerBaseRequest, CrawlerBaseResponse.class);
         if (request.getCode() == CrawlerAuditStatus.CAS_200.getCode()) {
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode());
+            insAreaCompanyService.updateCompanyAndOrdersNew(insAreaCompany);
+            return true;
         }
-        insAreaCompanyService.updateCompanyAndOrdersNew(insAreaCompany);
+        return false;
     }
 
-    @Override
-    public String vehicleInspectionCode() {
-        return "";
-    }
 }

+ 66 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsuranceCompanyPolymerizationServiceImpl.java

@@ -0,0 +1,66 @@
+package com.ydtech.modules.order.service.impl;
+
+import com.ydtech.constants.InsuranceEnum;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.service.*;
+import com.ydtech.modules.protocol.entity.constants.PtlApiType;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+
+@Service
+@RequiredArgsConstructor
+public class InsuranceCompanyPolymerizationServiceImpl implements InsuranceCompanyPolymerizationService {
+
+    private final InsCrawlerOrderService insCrawlerOrderService;
+
+    private final ZijinOrderApiService zijinOrderApiService;
+
+    private final BoHaiOrderApiService boHaiOrderApiService;
+
+    private final DaJiaOrderService daJiaOrderService;
+
+    private final GuorenOrderApiService guorenOrderApiService;
+
+    private final HuaTaiOrderApiService huaTaiOrderApiService;
+
+    private final YongchengOrderApiService yongchengOrderApiService;
+
+    private final ZhongMeiOrderApiService zhongMeiOrderApiService;
+
+    @Override
+    public boolean cancelOrder(InsAreaCompany insAreaCompany) {
+        Integer apiType = insAreaCompany.getApiType();
+
+        if(PtlApiType.PTL_API_2.getCode() == apiType){
+            return insCrawlerOrderService.cancelOrder(insAreaCompany);
+        }
+
+        String companyId = insAreaCompany.getCompanyId();
+        String code = companyId.substring(0, 4);
+        // 紫金财险
+        if (InsuranceEnum.ZKIC.getCode().equals(code)){
+            return zijinOrderApiService.cancelOrder(insAreaCompany);
+            // 渤海财险
+        }else if (InsuranceEnum.BPIC.getCode().equals(code)){
+            return boHaiOrderApiService.cancelOrder(insAreaCompany);
+            // 大家财险
+        }else if (InsuranceEnum.DJPC.getCode().equals(code)){
+            return daJiaOrderService.cancelOrder(insAreaCompany);
+            // 国任财险
+        }else if(InsuranceEnum.XDCX.getCode().equals(code)){
+            return guorenOrderApiService.cancelOrder(insAreaCompany);
+            // 华泰财险
+        }else if(InsuranceEnum.HTIC.getCode().equals(code)){
+            return huaTaiOrderApiService.cancelOrder(insAreaCompany);
+            // 永诚财险
+        }else if(InsuranceEnum.AICS.getCode().equals(code)){
+            return yongchengOrderApiService.cancelOrder(insAreaCompany);
+            // 中煤财险
+        }else if(InsuranceEnum.ZMBX.getCode().equals(code)){
+            return zhongMeiOrderApiService.cancelOrder(insAreaCompany);
+        }
+        return false;
+    }
+
+}

+ 17 - 3
src/main/java/com/ydtech/modules/order/service/impl/YongchengOrderApiServiceImpl.java

@@ -61,6 +61,7 @@ import com.ydtech.modules.order.entity.InsAreaCompanyAccidentalDriving;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.api.yongcheng.constants.MessageStatusCode;
 import com.ydtech.modules.order.entity.api.yongcheng.request.AccidentUnderwritingRequest;
+import com.ydtech.modules.order.entity.api.yongcheng.request.ProposalPolicyReturnRequest;
 import com.ydtech.modules.order.entity.api.yongcheng.response.AccidentUnderwritingResponse;
 import com.ydtech.modules.order.entity.crawler.request.RecognitionRequest;
 import com.ydtech.modules.order.entity.crawler.response.RecognitionResponse;
@@ -387,7 +388,7 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
 
         List<String> requestInfoList = new ArrayList<>();
         //获取报价信息
-        BaseQuoteInfoVo yaQuoteInfoVo = insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo(),quoteVo.getKinds());
+        BaseQuoteInfoVo yaQuoteInfoVo = insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo(), quoteVo.getKinds());
         CoreModelsVo coreModelsVo = new CoreModelsVo();
 
         //build参数
@@ -1426,9 +1427,7 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
         carInfo.setCiCarName(vehicleInfo.getVehicleName());
         carInfo.setModelcname(vehicleInfo.getVehicleName());
 //        carInfo.setSeatCount(vehicleInfo.getVehicleSeat());
-
         coreModelsVo = vehicleInfo.toCoreModelsVo();
-
     }
 
     /**
@@ -1480,4 +1479,19 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
         }
     }
 
+    @Override
+    public boolean cancelOrder(InsAreaCompany insAreaCompany) {
+        // 获取协议配置信息
+        YcConfigureParameters ycConfigureParameters = gainYcConfigParams(insAreaCompany.getAgreementId());
+        String policyNumber = StringUtils.isNotEmpty(insAreaCompany.getJqapplyno()) ? insAreaCompany.getJqapplyno() : insAreaCompany.getSyapplyno();
+        ProposalPolicyReturnRequest proposalPolicyReturnRequest = new ProposalPolicyReturnRequest(ycConfigureParameters, policyNumber);
+        try {
+            AccidentResponse accidentResponse = yongchengRequestApiComponents.returnAppPolicyWebService(proposalPolicyReturnRequest);
+            if (MessageStatusCode.E0000.getCode().equals(accidentResponse.getHead().getResponseCompleteMessageStatus().getMessageStatusCode())) {
+                return true;
+            }
+        } catch (Exception ignored) {
+        }
+        return false;
+    }
 }

+ 12 - 0
src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderApiServiceImpl.java

@@ -762,6 +762,18 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
             insAreaCompanyService.updateCompanyAndOrdersNew(insAreaCompany);
         }
     }
+
+    @Override
+    public boolean cancelOrder(InsAreaCompany insAreaCompany) {
+        // 1. 协议id获取配置实体
+        ZmConfigureParameters zmConfigureParameters = configureParametersComponents.toEntity(ZmConfigureParameters.class,
+                insAreaCompany.getAgreementId());
+        UnderwritingWithdrawRequest underwritingWithdrawRequest = new UnderwritingWithdrawRequest(insAreaCompany.getId());
+        underwritingWithdrawRequest.setHead(new BaseRequestHead(zmConfigureParameters));
+        zhongmeiRequestApiComponents.underwritingWithdraw(underwritingWithdrawRequest, UnderwritingWithdrawResponse.class);
+        return true;
+    }
+
 }
 
 

+ 13 - 0
src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java

@@ -659,6 +659,19 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
             insAreaCompanyService.updateCompanyAndOrdersNew(insAreaCompany);
         }
+    }
 
+    @Override
+    public boolean cancelOrder(InsAreaCompany insAreaCompany) {
+        // 1 通过 协议id获取配置实体
+        HttpHeaders httpHeaders = zijinRequestApiComponents.getHttpHeaders(insAreaCompany.getAgreementId());
+        // 2 请求查看订单状态
+        OrderNoRequest orderNoRequest = new OrderNoRequest(insAreaCompany.getId());
+        zijinRequestApiComponents.cancel(orderNoRequest, httpHeaders);
+        // 3 撤销成功后修改状态为报价中
+        insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode());
+        insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+        return true;
     }
+
 }

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

@@ -1,15 +1,12 @@
 package com.ydtech.modules.protocol.entity.dto;
 
 
-import com.ydtech.modules.protocol.entity.vo.PtlAgreementSaveVo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
 import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.List;
 
 @Data
 @ApiModel("协议添加实体")
@@ -88,4 +85,7 @@ public class PtlAgreementSaveDto implements Serializable {
 
     @ApiModelProperty("工号描述")
     private String jobDescription;
+
+    @ApiModelProperty("对接管理人")
+    private String custodianId;
 }

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

@@ -242,6 +242,18 @@ public class PtlAgreement implements Serializable {
     @TableField(value = "job_description")
     private String jobDescription;
 
+    /**
+     * 对接管理人工号
+     */
+    @TableField(value = "custodian_id")
+    private String custodianId;
+
+    /**
+     * 是否有效
+     */
+    @TableField(value = "is_valid")
+    private String isValid;
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 
@@ -257,8 +269,6 @@ public class PtlAgreement implements Serializable {
     @TableField(exist = false)
     private String partnerCompaniesName;
 
-    @TableField(exist = false)
-    private String isValid;
 
     @TableField(exist = false)
     private String name;

+ 3 - 1
src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementPageVo.java

@@ -1,7 +1,6 @@
 package com.ydtech.modules.protocol.entity.vo;
 
 
-import com.ydtech.core.page.BasePageVO;
 import com.ydtech.core.page.PageRequest;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -79,4 +78,7 @@ public class PtlAgreementPageVo extends PageRequest {
 
     @ApiModelProperty("部门id")
     private String deptId;
+    @ApiModelProperty("是否有效")
+    private String isValid;
+
 }

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

@@ -212,6 +212,15 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         ptlAgreement.setCreator(userName);
         ptlAgreement.setCreateTime(LocalDateTime.now());
         ptlAgreement.setDeleted(0);
+        LocalDate startDate = agreementSaveDto.getStartDate();
+        LocalDate endDate = agreementSaveDto.getEndDate();
+        LocalDate now = LocalDate.now();
+        //更新是否有效
+        if (now.isEqual(startDate) || (now.isAfter(startDate) && now.isBefore(endDate))) {
+            ptlAgreement.setIsValid("1");
+        } else {
+            ptlAgreement.setIsValid("0");
+        }
         save(ptlAgreement);
         // 新增协议轨迹
         PtlAgreementTrajectory ptlAgreementTrajectory = new PtlAgreementTrajectory();
@@ -483,7 +492,9 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
                         ptlAgreementPageVo.getAuditType())
                 // 对接人名字
                 .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getDockingPerson()), PtlAgreement::getDockingPerson,
-                        ptlAgreementPageVo.getDockingPerson());
+                        ptlAgreementPageVo.getDockingPerson())
+                .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getIsValid()), PtlAgreement::getIsValid,
+                        ptlAgreementPageVo.getIsValid());
         // 录入时间
         if (!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate())) {
             LocalDateTime startDateTime = ptlAgreementPageVo.getStartDate().atTime(LocalTime.MIN);
@@ -535,15 +546,15 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         Page<PtlAgreement> agreementPage = page(page, wrapper);
         for (PtlAgreement agreement : agreementPage.getRecords()) {
             LocalDate startDate = agreement.getStartDate();
-            System.out.println(startDate);
             LocalDate endDate = agreement.getEndDate();
             LocalDate now = LocalDate.now();
-
+            //更新是否有效
             if (now.isEqual(startDate) || (now.isAfter(startDate) && now.isBefore(endDate))) {
                 agreement.setIsValid("1");
             } else {
                 agreement.setIsValid("0");
             }
+            ptlAgreementMapper.updateById(agreement);
             // 判断是否勾选
             if(agreeMap.containsKey(agreement.getId())){
                 agreement.setCheck(true);

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

@@ -143,6 +143,15 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
             ptlAgreementProductCostsNewLambdaQueryWrapper
                     .ge(PtlAgreementProductCostsNew::getCostsEndDate, agreementProductQueryVo.getCostsEndDate());
         }
+        // 创建时间
+        if (agreementProductQueryVo.getCreateStartTime() != null) {
+            ptlAgreementProductCostsNewLambdaQueryWrapper
+                    .ge(PtlAgreementProductCostsNew::getCreateTime, agreementProductQueryVo.getCreateStartTime());
+        }
+        if (agreementProductQueryVo.getCreateEndTime() != null) {
+            ptlAgreementProductCostsNewLambdaQueryWrapper
+                    .le(PtlAgreementProductCostsNew::getCreateTime, agreementProductQueryVo.getCreateEndTime());
+        }
         //是否有效  1失效  2 有效
         if (agreementProductQueryVo.getIsEffective() != null) {
             if (agreementProductQueryVo.getIsEffective().equals("1")) {

+ 3 - 0
src/main/java/com/ydtech/modules/scheme/entity/vo/DrivingIntentionQueryVo.java

@@ -14,6 +14,9 @@ public class DrivingIntentionQueryVo {
     @ApiModelProperty("产品名称")
     private String productName;
 
+    @ApiModelProperty("产品名称")
+    private String projectName;
+
     @ApiModelProperty("保险公司id")
     private String companyId;
     @ApiModelProperty("保险公司名称")

+ 11 - 0
src/main/java/com/ydtech/modules/scheme/service/impl/RuleFilteringServiceImpl.java

@@ -2,11 +2,13 @@ package com.ydtech.modules.scheme.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ydtech.constants.enums.dict.insurance.EnergyType;
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.fee.dto.vo.RuleAttrMappingVo;
 import com.ydtech.modules.protocol.entity.po.PtlNewCarJudgeRules;
 import com.ydtech.modules.protocol.service.PtlNewCarJudgeRulesService;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsAttrLink;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
+import com.ydtech.modules.protocols.service.PtlAgreementUndwrtRulesAttrService;
 import com.ydtech.modules.scheme.entity.po.PtlSchemeRulesAttr;
 import com.ydtech.modules.scheme.entity.po.PtlSchemeRulesAttrLink;
 import com.ydtech.modules.scheme.entity.vo.SchemeRuleAttrMappingVo;
@@ -16,6 +18,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.Objects;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 
@@ -29,6 +32,9 @@ public class RuleFilteringServiceImpl implements RuleFilteringService {
     @Autowired
     PtlNewCarJudgeRulesService ptlNewCarJudgeRulesService;
 
+    @Autowired
+    PtlAgreementUndwrtRulesAttrService ptlAgreementUndwrtRulesAttrService;
+
     @Override
     public boolean judgements(List<PtlSchemeRulesAttrLink> ptlSchemeRulesAttrLinks,
                                List<PtlSchemeRulesAttr> rulesAttrs, List<SchemeRuleAttrMappingVo> ruleAttrMappingVoList) {
@@ -70,6 +76,11 @@ public class RuleFilteringServiceImpl implements RuleFilteringService {
 
     private boolean attrEqual(PtlSchemeRulesAttrLink attrLink,
                               PtlSchemeRulesAttr rulesAttr, String value) {
+        if(Objects.isNull(value)){
+            PtlAgreementUndwrtRulesAttr one = ptlAgreementUndwrtRulesAttrService.getOne(new LambdaQueryWrapper<PtlAgreementUndwrtRulesAttr>()
+                    .eq(PtlAgreementUndwrtRulesAttr::getAttrCode, attrLink.getAttrCode()));
+            throw new SystemException(one.getAttrName() + "规则校验失败,请检查");
+        }
         if (rulesAttr.getAttrType().equals("checkbox")) {
             return checkBoxEqual(attrLink, value);
         } else if (rulesAttr.getAttrType().equals("inputNumber")) {

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

@@ -1425,6 +1425,85 @@
         </where>
     </select>
 
+    <select id="getQxFrontlineAgentList" resultType="com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto">
+        SELECT
+        sd.name as "deptName",
+        su.name as "name",
+        sd.id as "deptId",
+        su.id  as "userId",
+        su.mobile as "mobile",
+        su.dept_id  as "deptId",
+        inf.url  as "filePath",
+        sul.name as "leaderName",
+        sui.sex as "sex",
+        sur.role_id AS roleId
+        FROM
+        sys_user su
+        LEFT JOIN sys_dept sd ON sd.id = su.dept_id
+        LEFT JOIN  ins_upload_files   inf on  su.head_sculpture  =inf.id
+        LEFT JOIN sys_user_role sur ON sur.user_id = su.id
+        LEFT JOIN sys_user sul  on  sul.id=su.leader_id
+        LEFT JOIN sys_user_info  sui  on  sui .id =su.id
+        <where>
+            su.id  LIKE '%M%'
+            and su.status = '1'
+            <if test="vo.managementSource != null  and  vo.managementSource!='' ">
+                AND sd.management_source =#{vo.managementSource}
+            </if>
+            <choose>
+                <when  test='vo.managementSource == "2"'>
+                    and (sur.role_id = 20  or  sur.role_id = 21)
+                </when>
+                <when  test='vo.managementSource == "1"'>
+                    and (sur.role_id = 19  or  sur.role_id = 21)
+                </when>
+                <otherwise>
+                </otherwise>
+            </choose>
+            <if test="vo.provinceId != null and vo.provinceId != ''">
+                and sd.id like  concat('%',#{vo.provinceId},'%')
+            </if>
+            <if test="vo.cityId != null and vo.cityId != ''">
+                and sd.id like concat('%',#{vo.cityId},'%')
+            </if>
+            <if test="vo.countyId != null and vo.countyId != ''">
+                and sd.id like concat('%',#{vo.countyId},'%')
+            </if>
+            <if test="vo.houseId != null and vo.houseId != ''">
+                and sd.id like concat('%',#{vo.houseId},'%')
+            </if>
+            <if test="vo.name != null and vo.name != ''">
+                and su.name   =#{vo.name}
+            </if>
+            <if test="vo.userCode != null and vo.userCode != ''">
+                and su.id   =#{vo.userCode}
+            </if>
+            <if test="vo.phoneNumber != null and vo.phoneNumber != ''">
+                and su.mobile   =#{vo.phoneNumber}
+            </if>
+            <if test="vo.leaderId != null and vo.leaderId != ''">
+                and su.leader_id   =#{vo.leaderId}
+            </if>
+            <if test="vo.leaderName != null and vo.leaderName != ''">
+                and su.leader_name   =#{vo.leaderName}
+            </if>
+
+            <if test="vo.deptIds != null and vo.deptIds != '' and vo.deptIds.size() > 0">
+                AND sd.id  in
+                <foreach collection="vo.deptIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+
+            <if test="vo.userIds != null and vo.userIds != '' and vo.userIds.size() > 0">
+                AND su.id  in
+                <foreach collection="vo.userIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
+
     <select id="getByIdsList" resultType="com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto">
         SELECT
         su.name as "name",

+ 12 - 0
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -1647,6 +1647,18 @@
         GROUP BY
         io.userid
         ) a
+        <where>
+            <if test="vo.outThere  != null  and  vo.outThere!=''">
+                <choose>
+                    <when test=" vo.outThere == 0">
+                        AND IFNULL(a.orderAmount,0) = 0
+                    </when>
+                    <when test="vo.outThere == 1">
+                        AND IFNULL(a.orderAmount,0) > 0
+                    </when>
+                </choose>
+            </if>
+        </where>
         order by  sum( a.orderAmount ) desc
     </select>
 

+ 3 - 0
src/main/resources/mapper/modules/order/InsDrivingIntentionInsuranceMapper.xml

@@ -103,6 +103,9 @@
         <if test="param.companyName != null and param.companyName != ''">
             and company.name like concat('%',#{param.companyName},'%')
         </if>
+        <if test="param.projectName != null and param.projectName != ''">
+            and idii.project_name like concat('%',#{param.projectName},'%')
+        </if>
         <if test="param.drivingIntentionIds != null and param.drivingIntentionIds != ''">
             and idii.id in
             <foreach item="id" collection="param.drivingIntentionIds" open="(" separator="," close=")">

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

@@ -919,6 +919,13 @@
         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,
@@ -940,6 +947,10 @@
            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>