Prechádzať zdrojové kódy

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

jiakai 4 mesiacov pred
rodič
commit
b9b0efea0e

+ 98 - 95
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -291,83 +291,86 @@ public class UnifyOrderManager {
             //////////////////////////////////////////新增营销抽奖活动////////////////////////////////////////////////
             //////////////////////////////////////////新增营销抽奖活动////////////////////////////////////////////////
             //远程调用活动列表
             //远程调用活动列表
             //匹配规则 每报价()次,可得()次抽奖机会,每日最多()次抽奖
             //匹配规则 每报价()次,可得()次抽奖机会,每日最多()次抽奖
-//            HttpResult<List<LotteryActivityVO>> result = localLivingClient.queryActivityRules(lotteryScene);
-//            if (result == null || result.getCode() != 200 || result.getData() == null) {
-//                log.error("统一报价,查询本地生活的活动列表异常");
-//            } else {
-//                for (LotteryActivityVO activity : result.getData()) {
-//                    // 检查活动是否有效
-//                    if (!LocalDate.now().isBefore(activity.getActivityStartTime())
-//                            && !LocalDate.now().isAfter(activity.getActivityEndTime())) {
-//                        continue;
-//                    }
-//
-//                    if (activity.getLocalActivityTables() == null) {
-//                        continue;
-//                    }
-//                    // 遍历所有本地活动表
-//                    for (LocalActivityTableVO table : activity.getLocalActivityTables()) {
-//                        // 只处理 type=6 的报价规则
-//                        if (!"6".equals(table.getType())) {
-//                            continue;
-//                        }
-//
-//                        // 只处理本租户的报价规则
-//                        if (!baseController.getUserSystemCode().equals(table.getTenantId())) {
-//                            continue;
-//                        }
-//                        // 查询是否在一账通绑定
-//                        UnifiedUserCenterDTO unifiedUserCenterDTO = new UnifiedUserCenterDTO();
-//                        unifiedUserCenterDTO.setUserId(quoteVo.getOrder().getRealQuoteUserId());
-//                        unifiedUserCenterDTO.setClientId(CLIENT_ID);
-//                        unifiedUserCenterDTO.setTenantId(baseController.getUserSystemCode());
-//                        HttpResult<UnifiedUserClientVO> unifiedUserClientVOHttpResult = null;
-//                        try {
-//                            unifiedUserClientVOHttpResult = localLivingClient.queryBind(unifiedUserCenterDTO);
-//                        } catch (Exception e) {
-//                            log.info("业务员报价,查询用户绑定一账通接口异常,userId:{},clientId:{},tenantId:{}", quoteVo.getOrder().getRealQuoteUserId(), CLIENT_ID, baseController.getUserSystemCode());
-//                            log.error("业务员报价,查询用户绑定一账通接口异常", e);
-//                        }
-//                        if (unifiedUserClientVOHttpResult == null || unifiedUserClientVOHttpResult.getCode() != 200 || unifiedUserClientVOHttpResult.getData() == null) {
-//                            // 判断是否满足条件
-//                            // 业务员报价次数是否大于等于本活动规定时间范围内的报价次数
-//                            // 统计业务员的报价次数
-//                            int count = insOrdersService.countQuoteNum(baseController.getUserSystemCode(), quoteVo.getOrder().getRealQuoteUserId(), activity.getActivityStartTime(), activity.getActivityEndTime());
-//                            if (count >= Integer.parseInt(table.getQutNum()) && count <= Integer.parseInt(table.getQutLotteryMax())) {
-//                                // 存本地记录 等绑定后更新本地记录的同步状态字段即可
-//                                completeRule(baseController.getUserSystemCode(), quoteVo.getOrder().getRealQuoteUserId(), null, activity.getId(),
-//                                        table.getId(), table.getQutNum() ,table.getQutLotteryNum() ,table.getQutLotteryMax() ,YesNoEnum.NO.getCode(), 6);
-//                                log.info("业务员报价,满足条件插入记录,userId:{},clientId:{},tenantId:{}", quoteVo.getOrder().getRealQuoteUserId(), CLIENT_ID, baseController.getUserSystemCode());
-//                            }
-//                        }else {
-//                            Map<String, List<UnifiedUserClientVO>> userClientGroupMap = unifiedUserClientVOHttpResult.getData().getUserClients()
-//                                    .stream()
-//                                    .collect(Collectors.groupingBy(UnifiedUserClientVO::getClientId));
-//                            // 首先查业务员是否在一账通绑定过本地生活  【已绑定过 远程调抽奖次数增加接口 标记已同步
-//                            if (userClientGroupMap.containsKey(CLIENT_ID)) {
-//                                LotteryCounDTO lotteryCounDTO = new LotteryCounDTO();
-//                                lotteryCounDTO.setAppUserId(quoteVo.getOrder().getRealQuoteUserId());
-//                                lotteryCounDTO.setActivityId(activity.getId());
-//                                lotteryCounDTO.setCount(Integer.parseInt(table.getQutLotteryNum()));
-//                                HttpResult<LotteryCountVO> lotteryCountVOHttpResult = null;
-//                                try {
-//                                    lotteryCountVOHttpResult = localLivingClient.addLotteryCount(lotteryCounDTO);
-//                                } catch (Exception e) {
-//                                    log.info("业务员报价,远程调用本地生活抽奖次数增加接口异常,userId:{},count:{},tenantId:{}", quoteVo.getOrder().getRealQuoteUserId(), table.getQutLotteryNum(), baseController.getUserSystemCode());
-//                                    log.error("业务员报价,远程调用本地生活抽奖次数增加异常", e);
-//                                }
-//                                if (lotteryCountVOHttpResult != null && lotteryCountVOHttpResult.getData().getSuccess()) {
-//                                    // 记录规则完成  标记已同步
-//                                    completeRule(baseController.getUserSystemCode(), quoteVo.getOrder().getRealQuoteUserId(), null, activity.getId(),
-//                                            table.getId(), table.getQutNum(), table.getQutLotteryNum(), table.getQutLotteryMax(), YesNoEnum.YES.getCode(), 6);
-//
-//                                    log.info("业务员报价,满足条件插入记录并远程同步,userId:{},clientId:{},tenantId:{}", quoteVo.getOrder().getRealQuoteUserId(), CLIENT_ID, baseController.getUserSystemCode());
-//                                }
-//                            }
-//                        }
-//                    }
-//                }
-//            }
+            HttpResult<List<LotteryActivityVO>> result = localLivingClient.queryActivityRules(lotteryScene);
+            if (result == null || result.getCode() != 200 || result.getData() == null) {
+                log.error("统一报价,查询本地生活的活动列表异常");
+            } else {
+                for (LotteryActivityVO activity : result.getData()) {
+                    // 检查活动是否有效
+                    if (!LocalDate.now().isBefore(activity.getActivityStartTime())
+                            && !LocalDate.now().isAfter(activity.getActivityEndTime())) {
+                        continue;
+                    }
+
+                    if (activity.getLocalActivityTables() == null) {
+                        continue;
+                    }
+                    // 遍历所有本地活动表
+                    for (LocalActivityTableVO table : activity.getLocalActivityTables()) {
+                        // 只处理 type=6 的报价规则
+                        if (!"6".equals(table.getType())) {
+                            continue;
+                        }
+
+                        // 只处理本租户的报价规则
+                        if (!baseController.getUserSystemCode().equals(table.getTenantId())) {
+                            continue;
+                        }
+                        // 查询是否在一账通绑定
+                        UnifiedUserCenterDTO unifiedUserCenterDTO = new UnifiedUserCenterDTO();
+                        unifiedUserCenterDTO.setUserId(quoteVo.getOrder().getRealQuoteUserId());
+                        unifiedUserCenterDTO.setClientId(CLIENT_ID);
+                        unifiedUserCenterDTO.setTenantId(baseController.getUserSystemCode());
+                        HttpResult<UnifiedUserClientVO> unifiedUserClientVOHttpResult = null;
+                        try {
+                            unifiedUserClientVOHttpResult = localLivingClient.queryBind(unifiedUserCenterDTO);
+                        } catch (Exception e) {
+                            log.info("业务员报价,查询用户绑定一账通接口异常,userId:{},clientId:{},tenantId:{}", quoteVo.getOrder().getRealQuoteUserId(), CLIENT_ID, baseController.getUserSystemCode());
+                            log.error("业务员报价,查询用户绑定一账通接口异常", e);
+                        }
+                        if (unifiedUserClientVOHttpResult == null || unifiedUserClientVOHttpResult.getCode() != 200 || unifiedUserClientVOHttpResult.getData() == null) {
+                            // 判断是否满足条件
+                            // 业务员报价次数是否大于等于本活动规定时间范围内的报价次数
+                            // 统计业务员的报价次数
+                            int count = insOrdersService.countQuoteNum(baseController.getUserSystemCode(), quoteVo.getOrder().getRealQuoteUserId(), activity.getActivityStartTime(), activity.getActivityEndTime());
+                            if (count >= Integer.parseInt(table.getQutNum()) && count <= Integer.parseInt(table.getQutLotteryMax())) {
+                                // 存本地记录 等绑定后更新本地记录的同步状态字段即可
+                                completeRule(baseController.getUserSystemCode(), quoteVo.getOrder().getRealQuoteUserId(), null, activity.getId(),
+                                        table.getId(), table.getQutNum() ,table.getQutLotteryNum() ,table.getQutLotteryMax() ,YesNoEnum.NO.getCode(), 6);
+                                log.info("业务员报价,满足条件插入记录,userId:{},clientId:{},tenantId:{}", quoteVo.getOrder().getRealQuoteUserId(), CLIENT_ID, baseController.getUserSystemCode());
+                            }
+                        }else {
+                            Map<String, List<UnifiedUserClientVO>> userClientGroupMap = unifiedUserClientVOHttpResult.getData().getUserClients()
+                                    .stream()
+                                    .collect(Collectors.groupingBy(UnifiedUserClientVO::getClientId));
+                            // 首先查业务员是否在一账通绑定过本地生活  【已绑定过 远程调抽奖次数增加接口 标记已同步
+                            if (userClientGroupMap.containsKey(CLIENT_ID)) {
+                                int count = insOrdersService.countQuoteNum(baseController.getUserSystemCode(), quoteVo.getOrder().getRealQuoteUserId(), activity.getActivityStartTime(), activity.getActivityEndTime());
+                                if (count >= Integer.parseInt(table.getQutNum()) && count <= Integer.parseInt(table.getQutLotteryMax())) {
+                                    LotteryCounDTO lotteryCounDTO = new LotteryCounDTO();
+                                    lotteryCounDTO.setAppUserId(quoteVo.getOrder().getRealQuoteUserId());
+                                    lotteryCounDTO.setActivityId(activity.getId());
+                                    lotteryCounDTO.setCount(Integer.parseInt(table.getQutLotteryNum()));
+                                    HttpResult<LotteryCountVO> lotteryCountVOHttpResult = null;
+                                    try {
+                                        lotteryCountVOHttpResult = localLivingClient.addLotteryCount(lotteryCounDTO);
+                                    } catch (Exception e) {
+                                        log.info("业务员报价,远程调用本地生活抽奖次数增加接口异常,userId:{},count:{},tenantId:{}", quoteVo.getOrder().getRealQuoteUserId(), table.getQutLotteryNum(), baseController.getUserSystemCode());
+                                        log.error("业务员报价,远程调用本地生活抽奖次数增加异常", e);
+                                    }
+                                    if (lotteryCountVOHttpResult != null && lotteryCountVOHttpResult.getData().getSuccess()) {
+                                        // 记录规则完成  标记已同步
+                                        completeRule(baseController.getUserSystemCode(), quoteVo.getOrder().getRealQuoteUserId(), null, activity.getId(),
+                                                table.getId(), table.getQutNum(), table.getQutLotteryNum(), table.getQutLotteryMax(), YesNoEnum.YES.getCode(), 6);
+
+                                        log.info("业务员报价,满足条件插入记录并远程同步,userId:{},clientId:{},tenantId:{}", quoteVo.getOrder().getRealQuoteUserId(), CLIENT_ID, baseController.getUserSystemCode());
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
 
 
 
 
         } catch (Exception e) {
         } catch (Exception e) {
@@ -407,7 +410,7 @@ public class UnifyOrderManager {
         record.setActivityType(activityType);
         record.setActivityType(activityType);
         record.setActivityId(activityId);
         record.setActivityId(activityId);
         record.setLocalActivityTableId(tableId);
         record.setLocalActivityTableId(tableId);
-        //报价次数
+        //报价/出单次数/承保费用
         record.setRuleCompleteNum(qutNum);
         record.setRuleCompleteNum(qutNum);
         //抽奖次数
         //抽奖次数
         record.setLotteryNum(StrUtil.isNotBlank(qutLotteryNum)
         record.setLotteryNum(StrUtil.isNotBlank(qutLotteryNum)
@@ -421,8 +424,8 @@ public class UnifyOrderManager {
         record.setUpdateBy(userId);
         record.setUpdateBy(userId);
         insOrdersService.insertActivityCompleteInRule(record);
         insOrdersService.insertActivityCompleteInRule(record);
 
 
-        log.info("报价规则完成,tenantId={}, userId={}, activityId={}, qutNum={}, qutLotteryNum={}, qutLotteryMax={}",
-                tenantId, userId, activityId, qutNum, qutLotteryNum,  qutLotteryMax);
+        log.info("匹配规则完成,activityType={}, tenantId={}, userId={}, activityId={}, qutNum={}, qutLotteryNum={}, qutLotteryMax={}, userPhone={}",
+                activityType, tenantId, userId, activityId, qutNum, qutLotteryNum,  qutLotteryMax, userPhone);
     }
     }
 
 
 
 
@@ -784,21 +787,21 @@ public class UnifyOrderManager {
                                         .collect(Collectors.groupingBy(UnifiedUserClientVO::getClientId));
                                         .collect(Collectors.groupingBy(UnifiedUserClientVO::getClientId));
                                 // 首先查业务员是否在一账通绑定过本地生活  【已绑定过 远程调抽奖次数增加接口 标记已同步
                                 // 首先查业务员是否在一账通绑定过本地生活  【已绑定过 远程调抽奖次数增加接口 标记已同步
                                 if (userClientGroupMap.containsKey(CLIENT_ID)) {
                                 if (userClientGroupMap.containsKey(CLIENT_ID)) {
-                                    LotteryCounDTO lotteryCounDTO = new LotteryCounDTO();
-                                    lotteryCounDTO.setAppUserId(insOrders.getRealQuoteUserId());
-                                    lotteryCounDTO.setActivityId(activity.getId());
-                                    lotteryCounDTO.setCount(Integer.parseInt(table.getQutLotteryNum()));
-                                    HttpResult<LotteryCountVO> lotteryCountVOHttpResult = null;
-                                    try {
-                                        lotteryCountVOHttpResult = localLivingClient.addLotteryCount(lotteryCounDTO);
-                                    } catch (Exception e) {
-                                        log.info("业务员出单,远程调用本地生活抽奖次数增加接口异常,userId:{},count:{},tenantId:{}", insOrders.getRealQuoteUserId(), table.getQutLotteryNum(), baseController.getUserSystemCode());
-                                        log.error("业务员出单,远程调用本地生活抽奖次数增加异常", e);
-                                    }
-                                    if (lotteryCountVOHttpResult != null && lotteryCountVOHttpResult.getData().getSuccess()) {
-                                        int count = insOrdersService.countOrderNum(baseController.getUserSystemCode(), insOrders.getRealQuoteUserId(), activity.getActivityStartTime(), activity.getActivityEndTime());
-                                        for (OrderRuleVO orderRule : table.getOrderRules()) {
-                                            if (count >= Integer.parseInt(orderRule.getOrdNum())) {
+                                    int count = insOrdersService.countOrderNum(baseController.getUserSystemCode(), insOrders.getRealQuoteUserId(), activity.getActivityStartTime(), activity.getActivityEndTime());
+                                    for (OrderRuleVO orderRule : table.getOrderRules()) {
+                                        if (count >= Integer.parseInt(orderRule.getOrdNum())) {
+                                            LotteryCounDTO lotteryCounDTO = new LotteryCounDTO();
+                                            lotteryCounDTO.setAppUserId(insOrders.getRealQuoteUserId());
+                                            lotteryCounDTO.setActivityId(activity.getId());
+                                            lotteryCounDTO.setCount(Integer.parseInt(table.getQutLotteryNum()));
+                                            HttpResult<LotteryCountVO> lotteryCountVOHttpResult = null;
+                                            try {
+                                                lotteryCountVOHttpResult = localLivingClient.addLotteryCount(lotteryCounDTO);
+                                            } catch (Exception e) {
+                                                log.info("业务员出单,远程调用本地生活抽奖次数增加接口异常,userId:{},count:{},tenantId:{}", insOrders.getRealQuoteUserId(), table.getQutLotteryNum(), baseController.getUserSystemCode());
+                                                log.error("业务员出单,远程调用本地生活抽奖次数增加异常", e);
+                                            }
+                                            if (lotteryCountVOHttpResult != null && lotteryCountVOHttpResult.getData().getSuccess()) {
                                                 // 记录规则完成  标记已同步
                                                 // 记录规则完成  标记已同步
                                                 completeRule(baseController.getUserSystemCode(), insOrders.getRealQuoteUserId(), null, activity.getId(),
                                                 completeRule(baseController.getUserSystemCode(), insOrders.getRealQuoteUserId(), null, activity.getId(),
                                                         table.getId(), table.getQutNum(), table.getQutLotteryNum(), table.getQutLotteryMax(), YesNoEnum.YES.getCode(), 8);
                                                         table.getId(), table.getQutNum(), table.getQutLotteryNum(), table.getQutLotteryMax(), YesNoEnum.YES.getCode(), 8);

+ 3 - 3
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/build/ZmCrawlerQuoteResultVoBuild.java

@@ -22,14 +22,14 @@ public final class ZmCrawlerQuoteResultVoBuild {
     private ZmCrawlerQuoteResultVoBuild() {throw new IllegalStateException("Utility class");}
     private ZmCrawlerQuoteResultVoBuild() {throw new IllegalStateException("Utility class");}
     public static QuoteResultsVo build(QuoteVo quoteVo, ZmCrawlerQuotedPriceResponse quotedPriceResponse) {
     public static QuoteResultsVo build(QuoteVo quoteVo, ZmCrawlerQuotedPriceResponse quotedPriceResponse) {
         QuoteResultsVo quoteResultsVo = new QuoteResultsVo();
         QuoteResultsVo quoteResultsVo = new QuoteResultsVo();
-        quoteResultsVo.setOrdersNo(quoteVo.getOrder().getOrdersNo());
-        quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
-        quoteResultsVo.setCompanyOrderNo(quotedPriceResponse.getBussinessMain().getContractMainNo());
         if(!"0".equals(quotedPriceResponse.getHead().getReturnCode())){
         if(!"0".equals(quotedPriceResponse.getHead().getReturnCode())){
             quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.QUOTE_FAIL);
             quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.QUOTE_FAIL);
             quoteResultsVo.setErrorMessage(quotedPriceResponse.getHead().getReturnMessage());
             quoteResultsVo.setErrorMessage(quotedPriceResponse.getHead().getReturnMessage());
             return quoteResultsVo;
             return quoteResultsVo;
         }
         }
+        quoteResultsVo.setOrdersNo(quoteVo.getOrder().getOrdersNo());
+        quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
+        quoteResultsVo.setCompanyOrderNo(quotedPriceResponse.getBussinessMain().getContractMainNo());
         //交强险
         //交强险
         quoteResultsVo.setCiRiskInfoVo(buildCiInfo(quotedPriceResponse));
         quoteResultsVo.setCiRiskInfoVo(buildCiInfo(quotedPriceResponse));
         //商业险
         //商业险

+ 54 - 31
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/service/Impl/ZhongMeiCrawlerRequestImpl.java

@@ -32,6 +32,7 @@ import com.jzg.quotation.zhongmei.crawler.service.ZhongMeiCrawlerRequest;
 import com.jzg.quotation.zhongmei.crawler.service.ZmCrawlerOrderService;
 import com.jzg.quotation.zhongmei.crawler.service.ZmCrawlerOrderService;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 
 
+import java.text.ParseException;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.time.temporal.ChronoUnit;
@@ -72,8 +73,7 @@ public class ZhongMeiCrawlerRequestImpl implements ZhongMeiCrawlerRequest {
      * @return 报价信息
      * @return 报价信息
      */
      */
     @Override
     @Override
-    public QuoteResultsVo quote(QuoteVo quoteVo) throws JsonProcessingException {
-        try {
+    public QuoteResultsVo quote(QuoteVo quoteVo) throws JsonProcessingException, ParseException {
             // 1.0获取token的请求头
             // 1.0获取token的请求头
             AttributionInformationVo attributionInformationVo = quoteVo
             AttributionInformationVo attributionInformationVo = quoteVo
                     .getOrder()
                     .getOrder()
@@ -103,31 +103,7 @@ public class ZhongMeiCrawlerRequestImpl implements ZhongMeiCrawlerRequest {
             }
             }
             // 3.0 保费计算
             // 3.0 保费计算
             ZmCrawlerQuotedPriceRequest quotedPriceRequest = new ZmCrawlerQuotedPriceRequest(zmCrawlerConfigureParameters, quoteVo, saleInfoDTO, fullCarDataDTO, actualValueResponse, userCode, head,accident);
             ZmCrawlerQuotedPriceRequest quotedPriceRequest = new ZmCrawlerQuotedPriceRequest(zmCrawlerConfigureParameters, quoteVo, saleInfoDTO, fullCarDataDTO, actualValueResponse, userCode, head,accident);
-            ZmCrawlerQuotedPriceResponse quotedPriceResponse = zmCrawlerRequestComponent.quotedPrice(quotedPriceRequest);
-            // 重复投保处理
-            if (quotedPriceResponse.getHead().getReturnCode().equals("-1") && quotedPriceResponse.getHead().getReturnMessage().contains("重复投保")) {
-                String startTime = extractDuplicateEndTime(quotedPriceResponse.getHead().getReturnMessage());
-                String endTime = calculateEndTime(startTime);
-                if (startTime != null && endTime != null) {
-                    List<ZmCrawlerQuotedPriceRequest.BusinessDataDTO.ContractDTO> contract = quotedPriceRequest.getBusinessData().getContract();
-                    contract.forEach(contractDTO -> {
-                        contractDTO.getContractMain().setValidDate(startTime);
-                        contractDTO.getContractMain().setExpiryDate(endTime);
-                        contractDTO.getCoverage().forEach(coverageDTO -> {
-                            coverageDTO.setValidDate(startTime);
-                            coverageDTO.setExpiryDate(endTime);
-                        });
-                    });
-                    // 重复投保 获取日期重新计算折旧价
-                    ZmCrawlerActualValueRequest actualValueReq = new ZmCrawlerActualValueRequest(quoteVo.getCarInfoVo(),fullCarDataDTO,head,startTime);
-                    ZmCrawlerActualValueResponse actualValueResp = zmCrawlerRequestComponent.getActualValue(actualValueReq);
-                    quotedPriceRequest.getBusinessData().getInsuredObject().getPolicyCar().setActualValue(actualValueResp.getActualValue());
-                    quotedPriceRequest.getBusinessData().getInsuredObject().getPolicyCar().setActualValueCarLoss(actualValueResp.getActualValue());
-                    quotedPriceRequest.getBusinessData().getInsuredObject().getPolicyCar().setUseYears(actualValueResp.getUseYears());
-                    quotedPriceRequest.getHead().setTransCode(TransCode.QUOTE_PRICE);
-                    quotedPriceResponse = zmCrawlerRequestComponent.quotedPrice(quotedPriceRequest);
-                }
-            }
+            ZmCrawlerQuotedPriceResponse quotedPriceResponse = repeatQuote(quotedPriceRequest,quoteVo, fullCarDataDTO,head);
             // 3.1 缓存数据
             // 3.1 缓存数据
             if(quotedPriceResponse.getHead().getReturnCode().equals("0")){
             if(quotedPriceResponse.getHead().getReturnCode().equals("0")){
                 zmCrawlerRequestComponent.cacheZmCrawlerSaveResponse(quotedPriceResponse, quotedPriceResponse.getBussinessMain().getContractMainNo());
                 zmCrawlerRequestComponent.cacheZmCrawlerSaveResponse(quotedPriceResponse, quotedPriceResponse.getBussinessMain().getContractMainNo());
@@ -135,10 +111,57 @@ public class ZhongMeiCrawlerRequestImpl implements ZhongMeiCrawlerRequest {
                 zmCrawlerOrderService.save(quoteVo,quotedPriceResponse);
                 zmCrawlerOrderService.save(quoteVo,quotedPriceResponse);
             }
             }
             return ZmCrawlerQuoteResultVoBuild.build(quoteVo, quotedPriceResponse);
             return ZmCrawlerQuoteResultVoBuild.build(quoteVo, quotedPriceResponse);
-        }catch (Exception e){
-            e.printStackTrace();
-            throw new RuntimeException("报价异常,请联系管理员");
+    }
+
+    // 重复投保处理
+    private ZmCrawlerQuotedPriceResponse repeatQuote(ZmCrawlerQuotedPriceRequest quotedPriceRequest,QuoteVo quoteVo,ZmCrawlerModelQueryResponse.FullCarDataDTO fullCarDataDTO,BaseRequestHead head) throws ParseException {
+        ZmCrawlerQuotedPriceResponse quotedPriceResponse = zmCrawlerRequestComponent.quotedPrice(quotedPriceRequest);
+        // 商业险重复投保
+        if (!quotedPriceResponse.getHead().getReturnCode().equals("0") && quotedPriceResponse.getHead().getReturnMessage().contains("商业险重复投保")) {
+            String startTime = extractDuplicateEndTime(quotedPriceResponse.getHead().getReturnMessage());
+            String endTime = calculateEndTime(startTime);
+            if (startTime != null && endTime != null) {
+                ZmCrawlerQuotedPriceRequest.BusinessDataDTO.ContractDTO contract =
+                        quotedPriceRequest.getBusinessData().getContract().stream()
+                                .filter(contractDTO -> "0361".equals(contractDTO.getContractMain().getRiskCode()))
+                                .findFirst()
+                                .orElse(null);
+                contract.getContractMain().setValidDate(startTime);
+                contract.getContractMain().setExpiryDate(endTime);
+                contract.getCoverage().forEach(coverageDTO -> {
+                    coverageDTO.setValidDate(startTime);
+                    coverageDTO.setExpiryDate(endTime);
+                });
+                // 重复投保 获取日期重新计算折旧价
+                ZmCrawlerActualValueRequest actualValueReq = new ZmCrawlerActualValueRequest(quoteVo.getCarInfoVo(),fullCarDataDTO,head,startTime);
+                ZmCrawlerActualValueResponse actualValueResp = zmCrawlerRequestComponent.getActualValue(actualValueReq);
+                quotedPriceRequest.getBusinessData().getInsuredObject().getPolicyCar().setActualValue(actualValueResp.getActualValue());
+                quotedPriceRequest.getBusinessData().getInsuredObject().getPolicyCar().setActualValueCarLoss(actualValueResp.getActualValue());
+                quotedPriceRequest.getBusinessData().getInsuredObject().getPolicyCar().setUseYears(actualValueResp.getUseYears());
+                quotedPriceRequest.getHead().setTransCode(TransCode.QUOTE_PRICE);
+                quotedPriceResponse = zmCrawlerRequestComponent.quotedPrice(quotedPriceRequest);
+            }
+        }
+        // 交强险重复投保
+        if (!quotedPriceResponse.getHead().getReturnCode().equals("0") && quotedPriceResponse.getHead().getReturnMessage().contains("重复投保")) {
+            String startTime = extractDuplicateEndTime(quotedPriceResponse.getHead().getReturnMessage());
+            String endTime = calculateEndTime(startTime);
+            if (startTime != null && endTime != null) {
+                ZmCrawlerQuotedPriceRequest.BusinessDataDTO.ContractDTO contract =
+                        quotedPriceRequest.getBusinessData().getContract().stream()
+                                .filter(contractDTO -> "0330".equals(contractDTO.getContractMain().getRiskCode()))
+                                .findFirst()
+                                .orElse(null);
+                contract.getContractMain().setValidDate(startTime);
+                contract.getContractMain().setExpiryDate(endTime);
+                contract.getCoverage().forEach(coverageDTO -> {
+                    coverageDTO.setValidDate(startTime);
+                    coverageDTO.setExpiryDate(endTime);
+                });
+                quotedPriceResponse = zmCrawlerRequestComponent.quotedPrice(quotedPriceRequest);
+            }
         }
         }
+        return quotedPriceResponse;
     }
     }
 
 
     // 非车险匹配
     // 非车险匹配
@@ -241,7 +264,7 @@ public class ZhongMeiCrawlerRequestImpl implements ZhongMeiCrawlerRequest {
         if (submit.getHead().getReturnCode().equals("0")) {
         if (submit.getHead().getReturnCode().equals("0")) {
             submit.getAppliResult().stream().forEach(appliResult -> {
             submit.getAppliResult().stream().forEach(appliResult -> {
                 appliResult.getNotion().stream().forEach(notion -> {
                 appliResult.getNotion().stream().forEach(notion -> {
-                    if (notion.getUWResult().equals("双核审核自动通过") || notion.getUWResult().equals("双核审核自动通过")) {
+                    if (notion.getUWResult().equals("双核审核自动通过") || notion.getUWResult().equals("双核审核通过")) {
                         PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
                         PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
                         paymentLinkVo.setOrder(underwritingVo.getOrder());
                         paymentLinkVo.setOrder(underwritingVo.getOrder());
                         PaymentLinkResultsVo paymentLinkResultsVo = getPaymentLink(paymentLinkVo);
                         PaymentLinkResultsVo paymentLinkResultsVo = getPaymentLink(paymentLinkVo);

+ 4 - 2
tenant/organization/src/main/java/com/jzg/organization/service/impl/SignInServiceImpl.java

@@ -207,7 +207,8 @@ public class SignInServiceImpl implements SignInService {
                         try {
                         try {
                             unifiedUserClientVOHttpResult = lotteryActivityService.queryBind(unifiedUserCenterDTO);
                             unifiedUserClientVOHttpResult = lotteryActivityService.queryBind(unifiedUserCenterDTO);
                         } catch (Exception e) {
                         } catch (Exception e) {
-                            throw new RuntimeException(e);
+                            log.error("签到抽奖,查询用户绑定一账通接口异常,userId:{},clientId:{},tenantId:{}", userId, CLIENT_ID, tenantId);
+                            log.error("签到抽奖,查询用户绑定一账通接口异常", e);
                         }
                         }
                         if (unifiedUserClientVOHttpResult == null || unifiedUserClientVOHttpResult.getCode() != 200 || unifiedUserClientVOHttpResult.getData() == null) {
                         if (unifiedUserClientVOHttpResult == null || unifiedUserClientVOHttpResult.getCode() != 200 || unifiedUserClientVOHttpResult.getData() == null) {
                             // 本地保存
                             // 本地保存
@@ -228,7 +229,8 @@ public class SignInServiceImpl implements SignInService {
                                 try {
                                 try {
                                     lotteryCountVOHttpResult = lotteryActivityService.addLotteryCount(lotteryCounDTO);
                                     lotteryCountVOHttpResult = lotteryActivityService.addLotteryCount(lotteryCounDTO);
                                 } catch (Exception e) {
                                 } catch (Exception e) {
-                                    throw new RuntimeException(e);
+                                    log.error("签到抽奖,远程调抽奖次数增加接口异常,userId:{},clientId:{},tenantId:{}", userId, CLIENT_ID, tenantId);
+                                    log.error("签到抽奖,远程调抽奖次数增加接口异常", e);
                                 }
                                 }
                                 if (lotteryCountVOHttpResult != null && lotteryCountVOHttpResult.getData().getSuccess()) {
                                 if (lotteryCountVOHttpResult != null && lotteryCountVOHttpResult.getData().getSuccess()) {
                                     // 记录规则完成  标记已同步
                                     // 记录规则完成  标记已同步

+ 17 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDeptServiceImpl.java

@@ -2,6 +2,7 @@ package com.jzg.organization.service.impl;
 
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.json.JSONUtil;
 import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -181,6 +182,8 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
     public List<SysDeptVo> getDeptTree(String deptId, SysDeptParam param) {
     public List<SysDeptVo> getDeptTree(String deptId, SysDeptParam param) {
         log.info("查询部门信息:deptTid=[{}],param=[{}]",deptId, JSONUtil.toJsonStr(param));
         log.info("查询部门信息:deptTid=[{}],param=[{}]",deptId, JSONUtil.toJsonStr(param));
         deptId = Objects.toString(deptId, "");
         deptId = Objects.toString(deptId, "");
+        // 用户所属的部门序号
+        final String userDeptId = deptId;
 
 
         String userSystemCode = Optional.ofNullable(param.getSysCode())
         String userSystemCode = Optional.ofNullable(param.getSysCode())
                 .filter(StringUtils::isNotEmpty)
                 .filter(StringUtils::isNotEmpty)
@@ -190,6 +193,12 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         SysSystem bySysCode = sysSystemService.getBySysCode(userSystemCode);
         SysSystem bySysCode = sysSystemService.getBySysCode(userSystemCode);
         SysDept sysDept = getById(deptId);
         SysDept sysDept = getById(deptId);
 
 
+        // add by lipf, 进行数据权限过滤
+        String userDataScope = baseController.getUserDataScope();
+        JSONObject dataScope = JSONObject.parseObject(userDataScope);
+        String dataMark = dataScope.getString("dataMark");
+        log.info("dataMark=[{}]",dataMark);
+
         List<String> deptTids = this.obatinDeptTids(param.getUserInfo());
         List<String> deptTids = this.obatinDeptTids(param.getUserInfo());
         List<SysDeptVo> voDept = baseMapper.selectDeptVoList(deptId, userSystemCode, param.getName())
         List<SysDeptVo> voDept = baseMapper.selectDeptVoList(deptId, userSystemCode, param.getName())
                 .stream()
                 .stream()
@@ -198,6 +207,14 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
                         return true;
                         return true;
                     }
                     }
                     return deptTids.contains(action.getId());
                     return deptTids.contains(action.getId());
+                }).filter(action->{
+                  // 如果用户的数据权限是: 只看本部门的数据,则安装部门序号进行过去,否则数据全部保留 2026年5月7日11:37:33
+                  // 这里的调整方式不是最优。 后续如果登录的时候,设置用户的datamark有多种权限,这里就不适用了
+                  if("1".equals(dataMark)){
+                      return userDeptId.equals(action.getId());
+                  }else{
+                      return true;
+                  }
                 }).map(item -> {
                 }).map(item -> {
                     SysDeptVo sysDeptVo = new SysDeptVo(item);
                     SysDeptVo sysDeptVo = new SysDeptVo(item);
 
 

+ 3 - 1
tenant/organization/src/main/resources/mapper/SysOrganizationMapper.xml

@@ -19,7 +19,9 @@
         select id, system_code, name, dept_id, manager_id, describe_information, attribute,
         select id, system_code, name, dept_id, manager_id, describe_information, attribute,
         (SELECT COUNT(1) FROM sys_organization_user_link WHERE sys_organization_user_link.organization_id = sys_organization.id) memberNumber,
         (SELECT COUNT(1) FROM sys_organization_user_link WHERE sys_organization_user_link.organization_id = sys_organization.id) memberNumber,
         (SELECT sys_dept.`name` FROM sys_dept WHERE sys_dept.id = sys_organization.dept_id) deptName,
         (SELECT sys_dept.`name` FROM sys_dept WHERE sys_dept.id = sys_organization.dept_id) deptName,
-        (SELECT u.username FROM sys_user u WHERE u.id = sys_organization.manager_id) managerName
+        (SELECT suji.name
+        FROM sys_user_jzg_info suji
+        WHERE suji.id = sys_organization.manager_id) manager_name
         from sys_organization
         from sys_organization
         <where>
         <where>
             is_delete = 0
             is_delete = 0