فهرست منبع

Merge branch 'tz'

# Conflicts:
#	tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
785834757 1 سال پیش
والد
کامیت
52b759d5dd
39فایلهای تغییر یافته به همراه1076 افزوده شده و 160 حذف شده
  1. 8 21
      commons/src/main/java/com/jzg/commons/constants/dict/InsOrderStatusEnum.java
  2. 8 0
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrders.java
  3. 22 0
      commons/src/main/java/com/jzg/commons/entity/orders/vo/InsOrdersListVo.java
  4. 33 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/CarInfoVo.java
  5. 32 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/CustomerInfoVo.java
  6. 3 0
      commons/src/main/java/com/jzg/commons/entity/vo/OrdersListVo.java
  7. 63 0
      commons/src/main/java/com/jzg/commons/util/Base64Utils.java
  8. 16 3
      commons/src/main/java/com/jzg/commons/util/IDCardUtils.java
  9. 9 0
      platform/src/main/java/com/jzg/controller/QrBarcodeController.java
  10. 1 1
      tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/entity/request/InsurePremiumRequest.java
  11. 1 1
      tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/service/impl/ChengTaiApiRequestImpl.java
  12. 9 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/PlatformClient.java
  13. 110 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/QuoteEchoVo.java
  14. 83 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/QuoteVo.java
  15. 12 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/UnderwritingResultsVo.java
  16. 7 1
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/orders/InsOrdersVo.java
  17. 1 1
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationBaseService.java
  18. 1 1
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/service/impl/DaJiaApiRequestImpl.java
  19. 2 2
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerRequestImpl.java
  20. 10 5
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java
  21. 54 9
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  22. 56 6
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/factory/CompanyFactory.java
  23. 39 18
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/factory/decorator/image/ImageParamHandlerDecorator.java
  24. 4 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersMapper.java
  25. 10 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersCarInfoService.java
  26. 18 6
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java
  27. 32 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersCarInfoServiceImpl.java
  28. 74 28
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  29. 2 2
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsTaskImagesServiceImpl.java
  30. 38 1
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml
  31. 4 1
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsTaskImagesMapper.xml
  32. 1 1
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKQuotationBaseServiceImpl.java
  33. 1 1
      tenant/insurance/quotation-yangguang/src/main/java/com/jzg/quotation/yangguang/api/service/impl/YangGuangApiRequestImpl.java
  34. 9 9
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/components/YcRequestApiComponents.java
  35. 7 7
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/request/AuditRequest.java
  36. 60 0
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/request/CallbackRequest.java
  37. 157 0
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/response/CallBackResponse.java
  38. 79 28
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/service/impl/YongChengApiRequestImpl.java
  39. 0 6
      tenant/organization/src/main/java/com/jzg/organization/controller/AgreementController.java

+ 8 - 21
commons/src/main/java/com/jzg/commons/constants/dict/InsOrderStatusEnum.java

@@ -13,29 +13,19 @@ import java.util.Objects;
 public enum InsOrderStatusEnum implements IBaseEnum {
 
     //所有未提交核保的均为报价中(包括拒保订单 )
-    QUOTE_ING("0", "报价完成", 1, 0),
+    QUOTE_ING("0", "订单已提交", 1, 0),
 
     //已提交核保,并转人工核保状态
     WAIT_AUDIT("1", "待核保", 2, 0),
 
     //自动核保或者人工核保审核通过
-    WAIT_PAY("2", "已核保待缴费", 3, 0),
-
-    //客户缴费完成生成保单状态
-    ACCEPT_INSURANCE("3", "已承保", 4, 0),
-
-    //人工核保退回状态,直至再次提交核保,状态修改为待核保
-    TO_BACK("4", "核保退回", 6, 0),
-
-    //报价失败
-    QUOTE_FAILED("10","报价失败",8,0),
-
-    //重复投保
-    REPEAT_INSURE("11","重复投保",9,0)
-
-    //撤回二维码
-//    BACK_QR_CODE("5", "撤销二维码", 7, 0),
-    ;
+    AUDIT_ING("2", "核保中", 3, 0),
+    STAFF_PROCESS("3", "人工处理", 3, 0),
+    PAY_PENDING("4", "待缴费", 3, 0),
+    UNDERWRITED("5", "已承保", 3, 0),
+    QUOTE_FAIL("6", "报价失败", 3, 0),
+    AUDIT_FAIL("7", "核保失败", 3, 0),
+    ORDER_CLOSE("8", "订单关闭", 3, 0);
 
 
     private final String code;
@@ -58,8 +48,5 @@ public enum InsOrderStatusEnum implements IBaseEnum {
         return result;
     }
 
-    public static String[] getRefuseUnderwriting() {
-        return new String[]{WAIT_AUDIT.getCode(), TO_BACK.getCode()};
-    }
 
 }

+ 8 - 0
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrders.java

@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -30,6 +32,9 @@ public class InsOrders extends BaseModel {
     @Schema(description = "订单状态")
     private String orderStatus;
 
+    @Schema(description = "保司订单单号")
+    private String companyOrderNo;
+
     @Schema(description = "保司ID")
     private String companyId;
 
@@ -45,6 +50,9 @@ public class InsOrders extends BaseModel {
     @Schema(description = "录入状态 1 车险录入 2 待客录单 3 外部订单")
     private Integer entryStatus;
 
+    @Schema(description = "录单人id")
+    private String realQuoteUserId;
+
     @Schema(description = "订单来源 0 pc  1 app")
     private Integer orderSource;
 

+ 22 - 0
commons/src/main/java/com/jzg/commons/entity/orders/vo/InsOrdersListVo.java

@@ -0,0 +1,22 @@
+package com.jzg.commons.entity.orders.vo;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class InsOrdersListVo {
+    private String id;
+    private String productCode;
+    private String productName;
+    private String userName;
+    private String userId;
+    private String orderStatus;
+    private String companyId;
+    private String companyName;
+    private String licenseNo;
+    private String vinNo;
+    private String insuredName;
+    private LocalDateTime createTime;
+    private LocalDateTime signingTime;
+}

+ 33 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/CarInfoVo.java

@@ -3,6 +3,7 @@ package com.jzg.commons.entity.quote.vo;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -10,6 +11,7 @@ import org.springframework.util.StringUtils;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.time.format.DateTimeFormatter;
 import java.util.Objects;
 
 /**
@@ -218,4 +220,35 @@ public class CarInfoVo implements Serializable {
     @Schema(description = "排量")
     private String displacement;
 
+
+    /**
+     * InsOrdersCarInfo 转换 CarInfoVo
+     * @param carInfo
+     */
+    public CarInfoVo(InsOrdersCarInfo carInfo){
+        this.licenseNo = carInfo.getLicenseNo();
+        this.vinNo = carInfo.getVinNo();
+        this.brandName = carInfo.getBrandName();
+        this.engineNo = carInfo.getEngineNo();
+        this.carYear = carInfo.getCarYear();
+        this.seatCount = String.valueOf(carInfo.getSeatCount());
+        this.completeKerbMass = String.valueOf(carInfo.getCompleteKerbMass());
+        this.limitLoad = String.valueOf(carInfo.getLimitLoad());
+        this.powerScale = String.valueOf(carInfo.getPowerScale());
+        this.purchasePrice = String.valueOf(carInfo.getPurchasePrice());
+        this.carNatureCode = carInfo.getCarNatureCode();
+        this.vehicleUseCode = carInfo.getVehicleUseCode();
+        this.carTypeCode = carInfo.getCarTypeCode();
+        this.carKindCode = carInfo.getCarKindCode();
+        this.energyTypeCode = carInfo.getEnergyTypeCode();
+        this.propertyCode = carInfo.getPropertyCode();
+        this.licenseColorCode = carInfo.getLicenseColorCode();
+        this.carKindDetailIdCode = carInfo.getCarKindDetailIdCode();
+        this.licenseKindCode = carInfo.getLicenseKindCode();
+        this.registerDate = carInfo.getRegisterDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+        this.issueDate = carInfo.getIssueDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+        this.transfer = carInfo.getTransfer() == 1;
+        this.biTransfer = carInfo.getTransferBi() == 1;
+
+    }
 }

+ 32 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/CustomerInfoVo.java

@@ -1,6 +1,9 @@
 package com.jzg.commons.entity.quote.vo;
 
 
+import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
+import com.jzg.commons.util.AssertionUtils;
+import com.jzg.commons.util.IDCardUtils;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -8,6 +11,8 @@ import lombok.NoArgsConstructor;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.time.format.DateTimeFormatter;
+import java.util.Objects;
 
 /**
  * @description: 人员信息
@@ -154,4 +159,31 @@ public class CustomerInfoVo implements Serializable {
     @Schema(description = "是否车主 0-否 1-是")
     private int carOwner;
 
+
+    public CustomerInfoVo(InsOrdersCarUserInfo carUserInfo){
+        AssertionUtils.isFail(Objects.isNull(carUserInfo),"人员转换出错");
+        if(carUserInfo.getPersonType() == 1)
+        {
+            this.name = carUserInfo.getName();
+            this.identifyNumber = carUserInfo.getIdentifyNumber();
+            this.birthday = IDCardUtils.getBirthDate(carUserInfo.getIdentifyNumber());
+            this.age = IDCardUtils.getAgeFromIDCard(carUserInfo.getIdentifyNumber());
+            this.gender = IDCardUtils.getSex(carUserInfo.getIdentifyNumber());
+            this.identifyValidDate = carUserInfo.getIdentifyValidDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+            this.identifyValidEndDate = carUserInfo.getIdentifyValidEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+            this.mobile = carUserInfo.getMobile();
+            this.email = carUserInfo.getEmail();
+            this.addr = carUserInfo.getAddr();
+
+        }
+        if(carUserInfo.getPolicyPersonType() == 2){
+
+        }
+        this.provinceCode = carUserInfo.getProvinceCode();
+        this.cityCode = carUserInfo.getCityCode();
+        this.countyCode = carUserInfo.getCountyCode();
+        this.documentsTypeCode = String.valueOf(carUserInfo.getCerType());
+
+    }
+
 }

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/vo/OrdersListVo.java

@@ -17,6 +17,9 @@ public class OrdersListVo {
     @Schema(description = "订单号")
     private String quoteNo;
 
+    @Schema(description = "订单状态")
+    private String orderStatus;
+
     @Schema(description = "核保人")
     private String auditId;
 

+ 63 - 0
commons/src/main/java/com/jzg/commons/util/Base64Utils.java

@@ -0,0 +1,63 @@
+package com.jzg.commons.util;
+
+
+import java.nio.charset.StandardCharsets;
+import java.util.Base64;
+
+/**
+ * 2021/6/4
+ **/
+public class Base64Utils {
+    /**
+     * 判断图片base64字符串的文件格式
+     *
+     * @param base64ImgData
+     * @return
+     */
+    public static String checkImageBase64Format(String base64ImgData) {
+        byte[] b = base64ImgData.getBytes();
+
+        String type = "";
+        if (0x424D == ((b[0] & 0xff) << 8 | (b[1] & 0xff))) {
+            type = "bmp";
+        } else if (0x8950 == ((b[0] & 0xff) << 8 | (b[1] & 0xff))) {
+            type = "png";
+        } else if (0xFFD8 == ((b[0] & 0xff) << 8 | (b[1] & 0xff))) {
+            type = "jpg";
+        } else {
+            type = "jpeg";
+        }
+        return type;
+    }
+
+    // 加密
+    public static String getBase64Encode(String str) {
+        byte[] b = null;
+        String s = null;
+        b = str.getBytes(StandardCharsets.UTF_8);
+
+
+        s = Base64.getEncoder().encodeToString(b);
+//        s = new BASE64Encoder().encode(b);
+        return s;
+    }
+
+    // 解密
+    public static String getBase64Decode(String s) {
+        byte[] b = null;
+        String result = null;
+        if (s != null) {
+//            BASE64Decoder decoder = new BASE64Decoder();
+            try {
+//                b = decoder.decodeBuffer(s);
+                b = Base64.getDecoder().decode(s);
+                result = new String(b, StandardCharsets.UTF_8);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return result;
+    }
+
+
+}

+ 16 - 3
commons/src/main/java/com/jzg/commons/util/IDCardUtils.java

@@ -2,6 +2,8 @@ package com.jzg.commons.util;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -183,7 +185,7 @@ public class IDCardUtils {
      * @return String
      * @author: aidy
      */
-    public static String GetSex(String idCard) {
+    public static String getSex(String idCard) {
         String sex = "";
         if (idCard.length() == 15)
             sex = idCard.substring(idCard.length() - 3, idCard.length());
@@ -194,9 +196,9 @@ public class IDCardUtils {
         //		System.out.println(sex);
         int sexNum = Integer.parseInt(sex) % 2;
         if (sexNum == 0) {
-            return "FEMALE";
+            return "2";
         }
-        return "MALE";
+        return "1";
     }
 
 
@@ -359,6 +361,17 @@ public class IDCardUtils {
         return row;
     }
 
+    public static String getBirthDate(String idCard) {
+        if (idCard.length() == 18) {
+            String birthDateStr = idCard.substring(6, 14); // 取出 8 位生日
+            DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
+            DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            LocalDate birthDate = LocalDate.parse(birthDateStr, inputFormatter);
+            return birthDate.format(outputFormatter); // 格式化输出
+        }
+        return "身份证号格式错误";
+    }
+
     public static void main(String[] args) throws ParseException {
         Map m = addressResolution("陕西省旬阳县赤岩镇闵家河村三组109号");
         String IDCardNum = "43282219381105414X";

+ 9 - 0
platform/src/main/java/com/jzg/controller/QrBarcodeController.java

@@ -67,4 +67,13 @@ public class QrBarcodeController {
         return qrBarcodeService.removeById(id) ? HttpResult.ok("删除成功") : HttpResult.error("删除失败");
     }
 
+    @GetMapping("/queryByCompanyCode")
+    @Schema(description = "二维码配置查询")
+    public HttpResult queryByCompanyCode(String companyCode,String apiType) {
+        QrBarcodeConfig qrBarcodeConfig = qrBarcodeService.getOne(new LambdaQueryWrapper<QrBarcodeConfig>()
+                .eq(QrBarcodeConfig::getCompanyId, companyCode)
+                .eq(QrBarcodeConfig::getApiType, apiType));
+        return HttpResult.ok(qrBarcodeConfig);
+    }
+
 }

+ 1 - 1
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/entity/request/InsurePremiumRequest.java

@@ -990,7 +990,7 @@ public class InsurePremiumRequest extends BaseRequest {
                 this.identifyTypeCode = "01";
                 this.identifyTypeName = "居民身份证";
                 this.identifyNumber = ownerInfo.getIdentifyNumber();
-                this.sex = IDCardUtils.GetSex(identifyNumber).equalsIgnoreCase("FEMALE") ? "2" : "1";
+                this.sex = IDCardUtils.getSex(identifyNumber).equalsIgnoreCase("FEMALE") ? "2" : "1";
                 this.age = IDCardUtils.getAgeFromIDCard(identifyNumber);
                 this.birthday = IDCardUtils.GetBirthday(identifyNumber);
                 this.identifyValidDate = ownerInfo.getIdentifyValidDate();

+ 1 - 1
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/service/impl/ChengTaiApiRequestImpl.java

@@ -329,7 +329,7 @@ public class ChengTaiApiRequestImpl implements ChengTaiApiRequest {
     }
 
     @Override
-    public void queryOrderState(OrderBase orderBase) {
+    public void queryOrderState(OrderStatusVo orderStatusVo) {
 
     }
 

+ 9 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/PlatformClient.java

@@ -3,6 +3,7 @@ package com.jzg.quotation.commons.client;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.agreement.po.PtlAgreementAttribution;
 import com.jzg.commons.entity.po.EsmInsCompany;
+import com.jzg.commons.entity.po.QrBarcodeConfig;
 import com.jzg.commons.entity.vo.PersonAreaVo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -29,4 +30,12 @@ public interface PlatformClient {
             @RequestParam("id") String id,
             @RequestHeader("Authorization") String authToken);
 
+
+    // 获取二维码配置
+    @GetMapping("/qrBarcode/queryByCompanyCode")
+    public HttpResult<QrBarcodeConfig> qrBarcodeByCompanyCode(
+            @RequestParam("companyCode") String companyCode,
+            @RequestParam("apiType") String apiType,
+            @RequestHeader("Authorization") String authToken);
+
 }

+ 110 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/QuoteEchoVo.java

@@ -0,0 +1,110 @@
+package com.jzg.quotation.commons.entity.vo.aggregated;
+
+
+import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
+import com.jzg.commons.entity.orders.po.InsOrdersCosts;
+import com.jzg.commons.entity.orders.po.InsOrdersPolicy;
+import com.jzg.commons.entity.quote.vo.*;
+import com.jzg.commons.util.IDCardUtils;
+import com.jzg.quotation.commons.constant.enums.quote.RiskCode;
+import com.jzg.quotation.commons.entity.vo.base.OrderBase;
+import com.jzg.quotation.commons.entity.vo.orders.InsOrdersVo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Objects;
+
+
+/**
+ * 报价回显VO
+ */
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class QuoteEchoVo extends QuoteVo {
+
+    @Serial
+    private static final long serialVersionUID = 1928126868229420046L;
+
+    /**
+     * OrderBase追加属性
+     */
+    @Data
+    private static class OrderBaseVo extends OrderBase{
+        private String orderStatus;
+        private String companyName;
+    }
+
+    private OrderBaseVo order;
+
+    /**
+     * 费用信息
+     */
+    private InsOrdersCosts costs;
+
+    //保单号信息
+    private InsOrdersPolicy policy;
+
+
+    /**
+     * 订单数据库查询数据转 QuoteVo对象
+     * @param insOrdersVo
+     */
+    public QuoteEchoVo(InsOrdersVo insOrdersVo){
+        if(Objects.isNull(this.getOrder())){
+            this.setOrder(new OrderBaseVo());
+        }
+        this.getOrder().setOrdersNo(insOrdersVo.getId());
+        this.getOrder().setQuoteNo(insOrdersVo.getQuoteNo());
+        this.getOrder().setCompanyName(insOrdersVo.getCompanyName());
+        this.getOrder().setOrderStatus(insOrdersVo.getInsOrders().getOrderStatus());
+
+        //车辆信息处理
+        this.setCarInfoVo(insOrdersVo.getCarInfoVo());
+
+        //人员处理
+        this.setOwnersInfo(insOrdersVo.getOwnersInfo());
+        this.setPolicyHolderInfo(insOrdersVo.getPolicyHolderInfo());
+        this.setInsuredPersonInfo(insOrdersVo.getInsuredPersonInfo());
+
+        //险种处理
+        insOrdersVo.getInsOrdersRiskList().forEach(item->{
+            if(item.getRiskCode().equals(RiskCode.TRAFFIC.getCode())){
+                RiskInfoVo riskInfoVo = new RiskInfoVo();
+                riskInfoVo.setRiskCode(RiskCode.TRAFFIC.getCode());
+                riskInfoVo.setStartDate(item.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                riskInfoVo.setEndDate(item.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                riskInfoVo.setInstantFlag(item.getStartDate().getHour() != 0 || item.getStartDate().getMinute() != 0 || item.getStartDate().getSecond() != 0);
+                this.setCiRiskInfoVo(riskInfoVo);
+            }
+            if(item.getRiskCode().equals(RiskCode.BUSINESS.getCode())){
+                RiskInfoVo riskInfoVo = new RiskInfoVo();
+                riskInfoVo.setRiskCode(RiskCode.BUSINESS.getCode());
+                riskInfoVo.setStartDate(item.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                riskInfoVo.setEndDate(item.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                riskInfoVo.setInstantFlag(item.getStartDate().getHour() != 0 || item.getStartDate().getMinute() != 0 || item.getStartDate().getSecond() != 0);
+                this.setBiRiskInfoVo(riskInfoVo);
+            }
+        });
+
+        this.setKindInfoVo(insOrdersVo.getKindInfoVo());
+
+        this.setOtherInfo(insOrdersVo.getOtherInfo());
+        this.setAccidentalDrivings(insOrdersVo.getAccidentalDrivings());
+        this.setVehicleAndVesselTax(insOrdersVo.getVehicleAndVesselTax());
+
+        //费用处理
+        this.costs = insOrdersVo.getInsOrdersCosts();
+
+        //保单号信息
+        this.policy = insOrdersVo.getInsOrdersPolicy();
+    }
+
+
+}

+ 83 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/QuoteVo.java

@@ -1,8 +1,12 @@
 package com.jzg.quotation.commons.entity.vo.aggregated;
 
 
+import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
 import com.jzg.commons.entity.quote.vo.*;
+import com.jzg.commons.util.IDCardUtils;
+import com.jzg.quotation.commons.constant.enums.quote.RiskCode;
 import com.jzg.quotation.commons.entity.vo.base.OrderBase;
+import com.jzg.quotation.commons.entity.vo.orders.InsOrdersVo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -10,7 +14,10 @@ import lombok.NoArgsConstructor;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.text.DateFormat;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
+import java.util.Objects;
 
 
 @AllArgsConstructor
@@ -79,4 +86,80 @@ public class QuoteVo implements Serializable {
     @Schema(description = "是否同车主0-否;1-是")
     private int carOwner;
 
+
+    /**
+     * 订单数据库查询数据转 QuoteVo对象
+     * @param insOrdersVo
+     */
+    public QuoteVo(InsOrdersVo insOrdersVo){
+        if(Objects.isNull(order)){
+            order = new OrderBase();
+        }
+        order.setOrdersNo(insOrdersVo.getId());
+        order.setQuoteNo(insOrdersVo.getQuoteNo());
+        order.setInsuranceCompanyCode(insOrdersVo.getCompanyId());
+        order.setProductsCode(insOrdersVo.getInsOrders().getProductId());
+
+        //车辆信息处理
+        this.setCarInfoVo(insOrdersVo.getCarInfoVo());
+
+        //人员处理
+        this.setOwnersInfo(insOrdersVo.getOwnersInfo());
+        this.setPolicyHolderInfo(insOrdersVo.getPolicyHolderInfo());
+        this.setInsuredPersonInfo(insOrdersVo.getInsuredPersonInfo());
+
+        //险种处理
+        insOrdersVo.getInsOrdersRiskList().forEach(item->{
+            if(item.getRiskCode().equals(RiskCode.TRAFFIC.getCode())){
+                RiskInfoVo riskInfoVo = new RiskInfoVo();
+                riskInfoVo.setRiskCode(RiskCode.TRAFFIC.getCode());
+                riskInfoVo.setStartDate(item.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                riskInfoVo.setEndDate(item.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                riskInfoVo.setInstantFlag(item.getStartDate().getHour() != 0 || item.getStartDate().getMinute() != 0 || item.getStartDate().getSecond() != 0);
+                this.setCiRiskInfoVo(riskInfoVo);
+            }
+            if(item.getRiskCode().equals(RiskCode.BUSINESS.getCode())){
+                RiskInfoVo riskInfoVo = new RiskInfoVo();
+                riskInfoVo.setRiskCode(RiskCode.BUSINESS.getCode());
+                riskInfoVo.setStartDate(item.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                riskInfoVo.setEndDate(item.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                riskInfoVo.setInstantFlag(item.getStartDate().getHour() != 0 || item.getStartDate().getMinute() != 0 || item.getStartDate().getSecond() != 0);
+                this.setBiRiskInfoVo(riskInfoVo);
+            }
+        });
+
+        this.setKindInfoVo(insOrdersVo.getKindInfoVo());
+
+        this.setOtherInfo(insOrdersVo.getOtherInfo());
+        this.setAccidentalDrivings(insOrdersVo.getAccidentalDrivings());
+        this.setVehicleAndVesselTax(insOrdersVo.getVehicleAndVesselTax());
+    }
+
+    public CustomerInfoVo converCustomerInfoVo(InsOrdersCarUserInfo insOrdersCarUserInfo){
+        CustomerInfoVo customerInfoVo = new CustomerInfoVo();
+        customerInfoVo.setDocumentsTypeCode(insOrdersCarUserInfo.getCerType().toString());
+        //身份证 个人
+        if(insOrdersCarUserInfo.getCerType() == 1){
+            customerInfoVo.setName(insOrdersCarUserInfo.getName());
+            customerInfoVo.setIdentifyNumber(insOrdersCarUserInfo.getIdentifyNumber());
+            customerInfoVo.setBirthday(IDCardUtils.getBirthDate(insOrdersCarUserInfo.getIdentifyNumber()));
+            customerInfoVo.setAge(IDCardUtils.getAgeFromIDCard(insOrdersCarUserInfo.getIdentifyNumber()));
+            customerInfoVo.setGender(IDCardUtils.getSex(insOrdersCarUserInfo.getIdentifyNumber()));
+            customerInfoVo.setMobile(insOrdersCarUserInfo.getMobile());
+            customerInfoVo.setIdentifyValidDate(insOrdersCarUserInfo.getIdentifyValidDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+            customerInfoVo.setIdentifyValidEndDate(insOrdersCarUserInfo.getIdentifyValidEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+            customerInfoVo.setAddr(insOrdersCarUserInfo.getAddr());
+            customerInfoVo.setProvinceCode(insOrdersCarUserInfo.getProvinceCode());
+            customerInfoVo.setCityCode(insOrdersCarUserInfo.getCityCode());
+            customerInfoVo.setCountyCode(insOrdersCarUserInfo.getCountyCode());
+        }
+        //机构 企业
+        if(insOrdersCarUserInfo.getCerType() == 2){
+
+        }
+        return customerInfoVo;
+    }
+
+
+
 }

+ 12 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/UnderwritingResultsVo.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.commons.entity.vo.aggregated;
 
+import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -16,4 +17,15 @@ public class UnderwritingResultsVo implements Serializable {
      * 交互唯一订单
      */
     private String ordersNo;
+
+    /**
+     * 核保状态
+     */
+    private InsOrderStatusEnum underwritingStatus;
+
+    /**
+     * 核保结果
+     */
+    private String underwritingResult;
+
 }

+ 7 - 1
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/orders/InsOrdersVo.java

@@ -26,7 +26,7 @@ public class InsOrdersVo extends QuoteVo {
     @Schema(description = "保险公司id")
     private String companyId;
 
-    @Schema(description = "所属机构")
+    @Schema(description = "保险公司名称")
     private String companyName;
 
     @Schema(description = "审核状态")
@@ -60,6 +60,9 @@ public class InsOrdersVo extends QuoteVo {
     @Schema(description = "订单信息")
     private List<InsOrdersRisk> insOrdersRiskList;
 
+    @Schema(description = "费用")
+    private InsOrdersCosts insOrdersCosts;
+
     @Schema(description = "费用信息")
     private InsOrdersExternalFee ordersExternal;
 
@@ -69,5 +72,8 @@ public class InsOrdersVo extends QuoteVo {
     @Schema(description = "保单信息")
     private InsOrdersExternalPolicy insOrdersExternalPolicy;
 
+    @Schema(description = "保单号信息")
+    private InsOrdersPolicy insOrdersPolicy;
+
 
 }

+ 1 - 1
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationBaseService.java

@@ -41,6 +41,6 @@ public interface QuotationBaseService {
     /**
      * 查询订单状态
      */
-    void queryOrderState(OrderBase orderBase);
+    void queryOrderState(OrderStatusVo orderStatusVo);
 
 }

+ 1 - 1
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/service/impl/DaJiaApiRequestImpl.java

@@ -177,7 +177,7 @@ public class DaJiaApiRequestImpl implements DaJiaApiRequest {
     }
 
     @Override
-    public void queryOrderState(OrderBase orderBase) {
+    public void queryOrderState(OrderStatusVo orderStatusVo) {
 
     }
 }

+ 2 - 2
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerRequestImpl.java

@@ -153,8 +153,8 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
     }
 
     @Override
-    public void queryOrderState(OrderBase orderBase) {
-        AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
+    public void queryOrderState(OrderStatusVo orderStatusVo) {
+        AttributionInformationVo attributionInformationVo = orderStatusVo.getOrder().getAttributionInformationVo();
         HttpHeaders headers = daJiaCrawlerRequestComponent.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
         String userCode = daJiaCrawlerCacheComponent.getUserCode(attributionInformationVo.getUsername());
 

+ 10 - 5
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java

@@ -64,11 +64,16 @@ public class InsOrdersController {
         return HttpResult.ok(insOrdersService.pageList(insOrdersParam));
     }
 
-//    @PostMapping("queryOrderList")
-//    @Operation(summary = "查询订单列表")
-//    public HttpResult queryOrderList(@RequestBody InsOrdersParam insOrdersParam) {
-//        return HttpResult.ok(insOrdersService.queryOrderList());
-//    }
+    @PostMapping("queryList")
+    @Operation(summary = "查询订单列表")
+    public HttpResult queryList(@RequestBody InsOrdersParam insOrdersParam) {
+        return HttpResult.ok(insOrdersService.queryList(insOrdersParam));
+    }
 
+    @GetMapping("getOrderDetail")
+    @Operation(summary = "获取订单详情")
+    public HttpResult getOrderDetail(String ordersNo) {
+        return HttpResult.ok(insOrdersService.getOrderDetail(ordersNo));
+    }
 
 }

+ 54 - 9
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -3,6 +3,8 @@ package com.jzg.quotation.summary.controller;
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.jzg.commons.constants.CompanyConstants;
+import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.orders.po.*;
@@ -83,7 +85,7 @@ public class UnifyOrderManager {
     InsTaskImagesService insTaskImagesService;
 
 
-    /**\
+    /**
      * 获取报价号
      * @param licenseNo
      * @param vinNo
@@ -131,8 +133,9 @@ public class UnifyOrderManager {
     public HttpResult quote(@RequestBody QuoteVo quoteVo) throws JsonProcessingException {
         HttpResult<EsmInsCompany> esmInsCompanyHttpResult = platformClient.findById(quoteVo.getOrder().getInsuranceCompanyCode(), baseController.getToken());
         AssertionUtils.isFail(esmInsCompanyHttpResult.getCode() != 200,esmInsCompanyHttpResult.getMsg());
-        quoteVo.getOrder().setInsuranceCompanyCode(esmInsCompanyHttpResult.getData().getCompanyCode());
         String systemCode = baseController.getAppSystemCode();
+
+        String companyName = CompanyConstants.getCompanyNameByCode(quoteVo.getOrder().getInsuranceCompanyCode());
         //先默认第一个协议
         HttpResult<List<PtlAgreement>> byCompanyId = orgClient.getByCompanyId(esmInsCompanyHttpResult.getData().getId(), baseController.getToken(),systemCode);
         if(byCompanyId.getData().isEmpty()){
@@ -142,7 +145,7 @@ public class UnifyOrderManager {
 
         //获取保司实体
         QuotationApiBaseService quoteService = companyFactory.getQuoteService(
-                quoteVo.getOrder().getInsuranceCompanyCode(),
+                esmInsCompanyHttpResult.getData().getCompanyCode(),
                 sysQuoteConfigService,sysQuoteRedisService,
                 platformClient,
                 baseController);
@@ -151,8 +154,9 @@ public class UnifyOrderManager {
             Map<String, List<QuoteRuleMapping>> quoteKindMappingMap = quoteRuleMappingService.getByInsuranceCompanyCode(esmInsCompanyHttpResult.getData().getCode());
             QuoteInfoConverter.converterKindInfoVo(quoteVo.getKindInfoVo(), quoteKindMappingMap.get(QuoteRuleCategory.KIND.getCode()));
         }
+
         // 生成订单
-        String ordersNo = insOrdersService.generateOrders(quoteVo);
+        String ordersNo = insOrdersService.generateOrders(quoteVo,companyName);
 
         // 报价
         QuoteResultsVo quoteResultsVo = quoteService.quote(quoteVo);
@@ -171,6 +175,7 @@ public class UnifyOrderManager {
 
     }
 
+
     @Operation(summary = "统一核保")
     @PostMapping("/underwriting")
     public HttpResult underwriting(@RequestBody UnderwritingVo underwritingVo) throws JsonProcessingException {
@@ -192,12 +197,25 @@ public class UnifyOrderManager {
 
         UnderwritingResultsVo underwritingResultsVo = quoteService.underwriting(underwritingVo);
 
-        // 保存核保结果
 
 
-        return HttpResult.ok();
+        // 保存核保结果
+        insOrdersService.orderAfterUpdateUnderwriting(underwritingResultsVo);
+
+        if(underwritingResultsVo.getUnderwritingStatus().equals(InsOrderStatusEnum.PAY_PENDING)) {
+            return HttpResult.ok("核保成功");
+        }else{
+            return HttpResult.error(underwritingResultsVo.getUnderwritingResult());
+        }
     }
 
+    /**
+     * 获取支付连接
+     * @param paymentLinkVo
+     * @return
+     * @throws JsonProcessingException
+     */
+    @Operation(summary = "获取支付链接")
     @PostMapping("/getPaymentLink")
     public HttpResult PaymentLinkService(@RequestBody PaymentLinkVo paymentLinkVo) throws JsonProcessingException {
         //获取保司实体
@@ -218,14 +236,15 @@ public class UnifyOrderManager {
 
         // 保存支付链接
         insOrders.setPayLink(paymentLinkResultsVo.getPaymentLink());
-
+        insOrdersService.updateById(insOrders);
         return HttpResult.ok();
     }
 
     @Operation(summary = "影像上传")
     @PostMapping("/imagesUpload")
     public HttpResult imagesUpload(@RequestBody InsuranceUploadImageVo insuranceUploadImageVo) {
-        HttpResult<EsmInsCompany> esmInsCompanyHttpResult = platformClient.findById(insuranceUploadImageVo.getOrder().getInsuranceCompanyCode(), baseController.getToken());
+        InsOrders insOrders = insOrdersService.getById(insuranceUploadImageVo.getOrder().getOrdersNo());
+        HttpResult<EsmInsCompany> esmInsCompanyHttpResult = platformClient.findById(insOrders.getCompanyId(), baseController.getToken());
         String systemCode = "";
         //如果是APP登录的话 则传递SystemCode的头部字段
         if(baseController.getUserSystemCode().equals("APP")){
@@ -233,7 +252,7 @@ public class UnifyOrderManager {
             systemCode = request.getHeader("system_code");
         }
         //先默认第一个协议
-        HttpResult<List<PtlAgreement>> byCompanyId = orgClient.getByCompanyId(insuranceUploadImageVo.getOrder().getInsuranceCompanyCode(), baseController.getToken(),systemCode);
+        HttpResult<List<PtlAgreement>> byCompanyId = orgClient.getByCompanyId(insOrders.getCompanyId(), baseController.getToken(),systemCode);
         if(byCompanyId.getData().isEmpty()){
             AssertionUtils.isFail(true,"保司未配置协议");
         }
@@ -249,4 +268,30 @@ public class UnifyOrderManager {
         return HttpResult.ok();
     }
 
+    @Operation(summary = "获取订单状态")
+    @PostMapping("/getOrderStatus")
+    public HttpResult getOrderStatus(@RequestBody OrderStatusVo orderStatusVo) {
+
+        //获取保司实体
+        QuotationApiBaseService orderStatusService = companyFactory.getOrderStatusService(
+                orderStatusVo,
+                insOrdersService,
+                baseController);
+        InsOrders insOrders = insOrdersService.getById(orderStatusVo.getOrder().getOrdersNo());
+        AssertionUtils.isFail(Objects.isNull(insOrders),"订单不存在");
+        orderStatusService.queryOrderState(orderStatusVo);
+        return HttpResult.ok("状态刷新成功");
+    }
+
+    /**
+     * 获取车辆档案
+     * @return
+     */
+    @Operation(summary = "获取车辆档案")
+    @GetMapping("/getCarRecord")
+    public HttpResult getCarRecord(String licenseNo,String vinNo,String engineNo){
+        QuoteVo quoteVo = insOrdersCarInfoService.getCarRecord(licenseNo,vinNo,engineNo);
+        return HttpResult.ok(quoteVo);
+    }
+
 }

+ 56 - 6
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/factory/CompanyFactory.java

@@ -1,11 +1,12 @@
 package com.jzg.quotation.summary.factory;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.jzg.commons.constants.CompanyConstants;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.agreement.po.PtlAgreementAttribution;
-import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.orders.po.*;
 import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
 import com.jzg.commons.util.AssertionUtils;
 import com.jzg.commons.util.MinioUtils;
@@ -13,6 +14,7 @@ import com.jzg.commons.util.spring.SpringUtils;
 import com.jzg.quotation.chengtai.api.service.impl.ChengTaiApiRequestImpl;
 import com.jzg.quotation.commons.client.PlatformClient;
 import com.jzg.quotation.commons.entity.vo.aggregated.InsuranceUploadImageVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.OrderStatusVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.PaymentLinkVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.UnderwritingVo;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersVo;
@@ -23,10 +25,7 @@ import com.jzg.quotation.summary.factory.decorator.image.ImageProxyFactory;
 import com.jzg.quotation.summary.factory.decorator.quote.QuoteDispatchDecorator;
 import com.jzg.quotation.summary.factory.decorator.quote.QuoteProxyFactory;
 import com.jzg.quotation.summary.factory.decorator.quote.QuoteRestrictDecorator;
-import com.jzg.quotation.summary.service.InsOrdersService;
-import com.jzg.quotation.summary.service.InsTaskImagesService;
-import com.jzg.quotation.summary.service.SysQuoteConfigService;
-import com.jzg.quotation.summary.service.SysQuoteRedisService;
+import com.jzg.quotation.summary.service.*;
 import com.jzg.quotation.yongcheng.api.service.impl.YongChengApiRequestImpl;
 import com.jzg.quotation.yangguang.api.service.impl.YangGuangApiRequestImpl;
 import io.minio.MinioClient;
@@ -34,6 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
@@ -58,6 +58,21 @@ public class CompanyFactory {
     @Autowired
     private InsOrdersService insOrdersService;
 
+    @Autowired
+    private InsOrdersKindService insOrdersKindService;
+
+    @Autowired
+    private InsOrdersRiskService insOrdersRiskService;
+
+    @Autowired
+    private InsOrdersCarInfoService insOrdersCarInfoService;
+
+    @Autowired
+    private InsOrdersCarUserInfoService insOrdersCarUserInfoService;
+
+    @Autowired
+    private InsTaskImagesService insTaskImagesService;
+
     @Value("${minio.bucket-name}")
     private String bucketName;
 
@@ -116,6 +131,20 @@ public class CompanyFactory {
         attributionInformationVo.setConfigInfo(fieldMap);
         underwritingVo.getOrder().setAttributionInformationVo(attributionInformationVo);
 
+        //拼装 参数
+        List<InsOrdersRisk> riskList = insOrdersRiskService.list(new LambdaUpdateWrapper<InsOrdersRisk>()
+                .eq(InsOrdersRisk::getOrderNo, insOrders.getId()));
+
+        InsOrdersCarInfo carInfo = insOrdersCarInfoService.getOne(new LambdaUpdateWrapper<InsOrdersCarInfo>()
+                .eq(InsOrdersCarInfo::getOrderNo, insOrders.getId()));
+
+        List<InsOrdersCarUserInfo> carUserInfoList = insOrdersCarUserInfoService.list(new LambdaUpdateWrapper<InsOrdersCarUserInfo>()
+                .eq(InsOrdersCarUserInfo::getOrderNo, insOrders.getId()));
+
+        underwritingVo.setInsOrdersRiskList(riskList);
+        underwritingVo.setInsOrdersCarInfo(carInfo);
+        underwritingVo.setInsOrdersCarUserInfoList(carUserInfoList);
+
         QuotationApiBaseService service = getService(companyCode);
         return service;
     }
@@ -177,9 +206,30 @@ public class CompanyFactory {
         InsOrdersVo insOrdersVo = insOrdersService.selectById(Long.parseLong(insuranceUploadImageVo.getOrder().getOrdersNo()));
         insuranceUploadImageVo.setCarInfo(insOrdersVo.getCarInfoVo());
         QuotationApiBaseService service = getService(insuranceUploadImageVo.getOrder().getInsuranceCompanyCode());
-        ImageParamHandlerDecorator imageParamHandlerDecorator = new ImageParamHandlerDecorator(service,minioClient,bucketName,sysQuoteConfigService,sysQuoteRedisService);
+        ImageParamHandlerDecorator imageParamHandlerDecorator = new ImageParamHandlerDecorator(service,minioClient,bucketName,insTaskImagesService);
         service = ImageProxyFactory.createProxy(service,
                 imageParamHandlerDecorator);
         return service;
     }
+
+    public QuotationApiBaseService getOrderStatusService(OrderStatusVo orderStatusVo,InsOrdersService insOrdersService, BaseController baseController) {
+
+
+        //设置归属信息
+        String token = baseController.getToken();
+        String systemCode = baseController.getAppSystemCode();
+        HttpResult<PtlAgreementAttribution> agreementAttribution = platformClient.getAgreementAttribution(orderStatusVo.getOrder().getAgreementId(),token,systemCode);
+        AssertionUtils.isFail(agreementAttribution.getCode() == 500,"获取协议属性失败");
+        Map<String, String> fieldMap = agreementAttribution.getData().getFields().stream()
+                .map(obj -> new JSONObject((Map<String, Object>) obj))  // 转换为 JSONObject
+                .collect(Collectors.toMap(
+                        json -> json.getString("field"),    // 获取 key
+                        json -> json.getString("value")   // 获取 value
+                ));
+        AttributionInformationVo attributionInformationVo = new AttributionInformationVo();
+        attributionInformationVo.setConfigInfo(fieldMap);
+        orderStatusVo.getOrder().setAttributionInformationVo(attributionInformationVo);
+        QuotationApiBaseService service = getService(orderStatusVo.getOrder().getInsuranceCompanyCode());
+        return service;
+    }
 }

+ 39 - 18
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/factory/decorator/image/ImageParamHandlerDecorator.java

@@ -1,12 +1,15 @@
 package com.jzg.quotation.summary.factory.decorator.image;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.jzg.commons.entity.vo.ImagesVo;
+import com.jzg.commons.entity.vo.InsTaskImagesVo;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.util.MinioUtils;
 import com.jzg.quotation.commons.entity.vo.aggregated.InsuranceUploadImageVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.UploadImageVo;
+import com.jzg.quotation.commons.entity.vo.image.InsuranceImageVo;
 import com.jzg.quotation.commons.service.QuotationApiBaseService;
 import com.jzg.quotation.summary.entity.vo.QuoteNumRedisVo;
 import com.jzg.quotation.summary.service.InsTaskImagesService;
@@ -22,8 +25,8 @@ import java.io.InputStream;
 import java.math.BigDecimal;
 import java.security.InvalidKeyException;
 import java.security.NoSuchAlgorithmException;
-import java.util.Base64;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 影像上传参数处理装饰器
@@ -32,23 +35,18 @@ public class ImageParamHandlerDecorator {
     private QuotationApiBaseService target;
 
     private final MinioClient minioClient;
-
-    private final SysQuoteConfigService sysQuoteConfigService;
-
-    private final SysQuoteRedisService sysQuoteRedisService;
-
     private final String bucketName;
 
+    private final InsTaskImagesService insTaskImagesService;
+
     public ImageParamHandlerDecorator(QuotationApiBaseService target,
                                       MinioClient minioClient,
                                       String bucketName,
-                                      SysQuoteConfigService sysQuoteConfigService,
-                                      SysQuoteRedisService sysQuoteRedisService) {
+                                      InsTaskImagesService insTaskImagesService) {
         this.target = target;
         this.minioClient = minioClient;
         this.bucketName = bucketName;
-        this.sysQuoteConfigService = sysQuoteConfigService;
-        this.sysQuoteRedisService = sysQuoteRedisService;
+        this.insTaskImagesService = insTaskImagesService;
     }
 
     public void setTarget(QuotationApiBaseService target) {
@@ -61,13 +59,36 @@ public class ImageParamHandlerDecorator {
      */
     public void uploadImage(InsuranceUploadImageVo uploadImageVo){
 
+        if(Objects.isNull(uploadImageVo.getImageVoList())){
+            uploadImageVo.setImageVoList(new ArrayList<>());
+        }
 
-        uploadImageVo.getImageVoList().forEach(imageVo->{
-            imageVo.getImageBase64List().forEach(base64->{
-                String fileBase64 = getFileBase64(minioClient, bucketName, base64.getImageId());
-                base64.setImageBase64Str(fileBase64);
-            });
+        InsTaskImagesVo insTaskImagesVo = insTaskImagesService.selectByQuoteNo(uploadImageVo.getOrder().getQuoteNo());
+        List<ImagesVo> images = insTaskImagesVo.getImages();
+        Map<String, List<ImagesVo>> groupImages = images.stream().collect(Collectors.groupingBy(ImagesVo::getImageType));
+
+        groupImages.forEach((imageType,ImageList)->{
+            InsuranceImageVo vo = new InsuranceImageVo();
+            vo.setImageCode(imageType);
+            List<InsuranceImageVo.ImageDTO> imageDTOList = ImageList.stream().map(imageVo -> {
+                InsuranceImageVo.ImageDTO imageDTO = new InsuranceImageVo.ImageDTO();
+                imageDTO.setImageId(imageVo.getImageId());
+                imageDTO.setImageName(imageVo.getFileName());
+                String fileBase64 = getFileBase64(minioClient, bucketName, imageVo.getFileName());
+                imageDTO.setImageBase64Str(fileBase64);
+                return imageDTO;
+            }).collect(Collectors.toList());
+            vo.setImageBase64List(imageDTOList);
+            uploadImageVo.getImageVoList().add(vo);
         });
+
+
+//        uploadImageVo.getImageVoList().forEach(imageVo->{
+//            imageVo.getImageBase64List().forEach(base64->{
+//                String fileBase64 = getFileBase64(minioClient, bucketName, base64.getImageId());
+//                base64.setImageBase64Str(fileBase64);
+//            });
+//        });
         target.uploadImage(uploadImageVo);
     }
 
@@ -78,9 +99,9 @@ public class ImageParamHandlerDecorator {
      * @param imageId
      * @return
      */
-    public String getFileBase64(MinioClient minioClient,String bucketName,String imageId){
+    public String getFileBase64(MinioClient minioClient,String bucketName,String imageName){
         try (InputStream stream = minioClient.getObject(
-                GetObjectArgs.builder().bucket(bucketName).object(imageId).build());
+                GetObjectArgs.builder().bucket(bucketName).object(imageName).build());
              ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
 
             // 读取流数据

+ 4 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersMapper.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.entity.dto.InsOrdersParam;
 import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.orders.vo.InsOrdersListVo;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersVo;
 import com.jzg.commons.entity.vo.OrdersListVo;
 import org.apache.ibatis.annotations.Mapper;
@@ -15,8 +16,10 @@ import org.apache.ibatis.annotations.Param;
 public interface InsOrdersMapper extends BaseMapper<InsOrders> {
 
 
-    InsOrdersVo selectById(Long id);
+    InsOrdersVo getById(Long id);
 
 
     IPage<OrdersListVo> pageList(@Param("page") Page page, @Param("insOrdersParam") InsOrdersParam insOrdersParam);
+
+    Page<InsOrdersVo> queryList(@Param("page") Page page, @Param("insOrdersParam") InsOrdersParam insOrdersParam);
 }

+ 10 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersCarInfoService.java

@@ -9,6 +9,7 @@ import com.jzg.commons.entity.quote.vo.CarInfoVo;
 import java.time.format.DateTimeFormatter;
 import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
 import com.jzg.commons.entity.quote.vo.CarInfoVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 
 import java.time.format.DateTimeFormatter;
 import java.util.List;
@@ -17,4 +18,13 @@ public interface InsOrdersCarInfoService extends IService<InsOrdersCarInfo> {
     InsOrdersCarInfo createCarInfo(InsOrders insOrders, CarInfoVo carInfoVo, DateTimeFormatter formatter);
 
     InsOrdersCarInfo getByOrderId(String orderId);
+
+    /**
+     * 获取车辆档案信息
+     * @param licenseNo
+     * @param vinNo
+     * @param engineNo
+     * @return
+     */
+    QuoteVo getCarRecord(String licenseNo,String vinNo,String engineNo);
 }

+ 18 - 6
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java

@@ -1,13 +1,14 @@
 package com.jzg.quotation.summary.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.InsOrdersParam;
 import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.orders.vo.InsOrdersListVo;
 import com.jzg.commons.entity.vo.OrdersListVo;
-import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
-import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.*;
 
 import java.lang.reflect.InvocationTargetException;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
@@ -34,7 +35,7 @@ public interface InsOrdersService extends IService<InsOrders> {
      * 根据报价参数生成订单  返回订单号
      */
 
-    String generateOrders(QuoteVo quoteVo);
+    String generateOrders(QuoteVo quoteVo,String companyName);
 
     /**
      * 保存报价的订单
@@ -49,11 +50,22 @@ public interface InsOrdersService extends IService<InsOrders> {
      */
     void orderAfterUpdateQuote(String ordersNo, QuoteResultsVo quoteResponse);
 
-
     /**
-     * 查询订单list
+     * 订单核保更新后处理
      */
-    void queryOrderList();
+    void orderAfterUpdateUnderwriting(UnderwritingResultsVo underwritingResultsVo);
 
+    /**
+     * 查询订单列表
+     * @param insOrdersParam
+     * @return
+     */
+    Page<QuoteEchoVo> queryList(InsOrdersParam insOrdersParam);
 
+    /**
+     * 查询订单详情
+     * @param ordersNo
+     * @return
+     */
+    QuoteVo getOrderDetail(String ordersNo);
 }

+ 32 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersCarInfoServiceImpl.java

@@ -10,8 +10,14 @@ import com.jzg.commons.entity.quote.vo.CarInfoVo;
 import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
 import com.jzg.commons.entity.po.SysUserJzgInfo;
 import com.jzg.commons.entity.quote.vo.CarInfoVo;
+import com.jzg.commons.entity.quote.vo.CustomerInfoVo;
+import com.jzg.commons.entity.vo.CardUserInfo;
+import com.jzg.commons.util.AssertionUtils;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quotation.summary.mapper.InsOrdersCarInfoMapper;
 import com.jzg.quotation.summary.service.InsOrdersCarInfoService;
+import com.jzg.quotation.summary.service.InsOrdersCarUserInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -28,6 +34,10 @@ import java.util.List;
 
 @Service
 public class InsOrdersCarInfoServiceImpl extends ServiceImpl<InsOrdersCarInfoMapper, InsOrdersCarInfo> implements InsOrdersCarInfoService {
+
+    @Autowired
+    InsOrdersCarUserInfoService insOrdersCarUserInfoService;
+
     @Override
     public InsOrdersCarInfo createCarInfo(InsOrders insOrders, CarInfoVo carInfoVo, DateTimeFormatter formatter) {
         InsOrdersCarInfo info = new InsOrdersCarInfo();
@@ -73,4 +83,26 @@ public class InsOrdersCarInfoServiceImpl extends ServiceImpl<InsOrdersCarInfoMap
         return baseMapper.selectOne(new LambdaQueryWrapper<InsOrdersCarInfo>()
                 .eq(InsOrdersCarInfo::getOrderNo, orderId));
     }
+
+    @Override
+    public QuoteVo getCarRecord(String licenseNo, String vinNo, String engineNo) {
+        QuoteVo quoteVo = new QuoteVo();
+        InsOrdersCarInfo carInfo = this.baseMapper.selectOne(new LambdaQueryWrapper<InsOrdersCarInfo>()
+                .eq(InsOrdersCarInfo::getLicenseNo, licenseNo)
+                .or()
+                .eq(InsOrdersCarInfo::getVinNo, vinNo)
+                .or()
+                .eq(InsOrdersCarInfo::getEngineNo,engineNo)
+        );
+        AssertionUtils.isFail(Objects.isNull(carInfo),"暂无此车档案信息");
+        List<InsOrdersCarUserInfo> carUserInfoList = insOrdersCarUserInfoService.getByOrderId(carInfo.getOrderNo());
+        quoteVo.setCarInfoVo(new CarInfoVo(carInfo));
+        InsOrdersCarUserInfo ownerInfo = carUserInfoList.stream().filter(u -> u.getPolicyPersonType() == 1).findFirst().orElse(null);
+        quoteVo.setOwnersInfo(new CustomerInfoVo(ownerInfo));
+        InsOrdersCarUserInfo policyHolderInfo = carUserInfoList.stream().filter(u -> u.getPolicyPersonType() == 2).findFirst().orElse(null);
+        quoteVo.setPolicyHolderInfo(new CustomerInfoVo(policyHolderInfo));
+        InsOrdersCarUserInfo insuredPersonInfo = carUserInfoList.stream().filter(u -> u.getPolicyPersonType() == 3).findFirst().orElse(null);
+        quoteVo.setInsuredPersonInfo(new CustomerInfoVo(insuredPersonInfo));
+        return quoteVo;
+    }
 }

+ 74 - 28
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java

@@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.constants.CompanyConstants;
 import com.jzg.commons.constants.InsuranceRisk;
@@ -17,6 +18,7 @@ import com.jzg.commons.entity.dto.InsOrdersParam;
 import com.jzg.commons.entity.dto.InsTaskImagesAdd;
 import com.jzg.commons.entity.enums.MessageCodeEnum;
 import com.jzg.commons.entity.orders.po.*;
+import com.jzg.commons.entity.orders.vo.InsOrdersListVo;
 import com.jzg.commons.entity.po.InsTaskImages;
 import com.jzg.commons.entity.po.SysMessageTemplate;
 import com.jzg.commons.entity.quote.vo.*;
@@ -29,8 +31,10 @@ import com.jzg.commons.util.StringUtils;
 import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.quotation.commons.client.OrgClient;
 import com.jzg.quotation.commons.constant.enums.base.ProductsType;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteEchoVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.UnderwritingResultsVo;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersAdd;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersEnd;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersVo;
@@ -269,34 +273,31 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersKindService.updateBatchById(insOrdersKinds);
 
             // 税费信息
-//            VehicleAndVesselTaxVo vehicleAndVesselTax = ordersEnd.getVehicleAndVesselTax();
-//            InsOrdersTax insOrdersTax = BeanUtil.copyProperties(vehicleAndVesselTax, InsOrdersTax.class);
-//            insOrdersTax.setOrderNo(quoteNo);
-//            insOrdersTaxService.updateById(insOrdersTax);
+            VehicleAndVesselTaxVo vehicleAndVesselTax = ordersEnd.getVehicleAndVesselTax();
+            InsOrdersTax insOrdersTax = BeanUtil.copyProperties(vehicleAndVesselTax, InsOrdersTax.class);
+            insOrdersTax.setOrderNo(quoteNo);
+            insOrdersTaxService.updateById(insOrdersTax);
 
             // 交强险 险种信息
-//            RiskInfoVo ciRiskInfoVo = ordersEnd.getCiRiskInfoVo();
-//            InsOrdersRisk insuranceInfo = BeanUtil.copyProperties(ciRiskInfoVo, InsOrdersRisk.class);
-//            insOrdersRiskService.update(insuranceInfo,new LambdaUpdateWrapper<>(InsOrdersRisk.class).eq(InsOrdersRisk::getOrderNo,quoteNo));
-//            // 商业险 险种信息
-//            InsOrdersRisk biRiskInfoVo = BeanUtil.copyProperties(ordersEnd.getBiRiskInfoVo(), InsOrdersRisk.class);
-//            insOrdersRiskService.update(biRiskInfoVo,new LambdaUpdateWrapper<>(InsOrdersRisk.class).eq(InsOrdersRisk::getOrderNo,quoteNo));
+            RiskInfoVo ciRiskInfoVo = ordersEnd.getCiRiskInfoVo();
+            InsOrdersRisk insuranceInfo = BeanUtil.copyProperties(ciRiskInfoVo, InsOrdersRisk.class);
+            insOrdersRiskService.update(insuranceInfo,new LambdaUpdateWrapper<>(InsOrdersRisk.class).eq(InsOrdersRisk::getOrderNo,quoteNo));
+            // 商业险 险种信息
+            InsOrdersRisk biRiskInfoVo = BeanUtil.copyProperties(ordersEnd.getBiRiskInfoVo(), InsOrdersRisk.class);
+            insOrdersRiskService.update(biRiskInfoVo,new LambdaUpdateWrapper<>(InsOrdersRisk.class).eq(InsOrdersRisk::getOrderNo,quoteNo));
 
             InsTaskImagesAdd imagesAdds = ordersEnd.getImagesAdds();
-            if (ObjectUtil.isNotNull(imagesAdds)) {
+            if (ObjectUtil.isNotEmpty(imagesAdds)){
                 List<InsTaskImages> insTaskImages = BeanUtil.copyToList(imagesAdds.getImages(), InsTaskImages.class);
-                if (CollectionUtil.isNotEmpty(insTaskImages)) {
-                    insTaskImagesService.removeByQuoteNo(quoteNo);
-                    insTaskImages.forEach(image -> {
-                        image.setQuoteNo(String.valueOf(quoteNo));
-                        insTaskImagesService.save(image);
-                    });
-
-                }
+                insTaskImages.forEach(image->{
+                    image.setQuoteNo(String.valueOf(quoteNo));
+                    insTaskImagesService.save(image);
+                });
             }
-//            InsOrdersExternalPolicy ordersExternalPolicy = ordersEnd.getInsOrdersExternalPolicy();
-//            ordersExternalPolicy.setOrderNo(String.valueOf(quoteNo));
-//            policyService.updateById(ordersExternalPolicy);
+
+            InsOrdersExternalPolicy ordersExternalPolicy = ordersEnd.getInsOrdersExternalPolicy();
+            ordersExternalPolicy.setOrderNo(String.valueOf(quoteNo));
+            policyService.updateById(ordersExternalPolicy);
 
 
             // 返回成功信息,表示订单、车辆和用户信息修改成功
@@ -319,7 +320,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Override
     public InsOrdersVo selectById(Long id) {
         // 1. 查询订单信息
-        InsOrdersVo insOrdersVo = insOrdersMapper.selectById(id);
+        InsOrdersVo insOrdersVo = insOrdersMapper.getById(id);
         if (insOrdersVo == null) {
             throw new IllegalArgumentException("查询结果为空,无法处理订单信息");
         }
@@ -486,29 +487,43 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         }
         insOrdersOtherService.saveOrUpdate(ordersOther);
 
+        //更新投保单号
+        InsOrdersPolicy ordersPolicy = insOrdersPolicyService.getOne(new LambdaQueryWrapper<InsOrdersPolicy>().eq(InsOrdersPolicy::getOrderNo,ordersNo));
+        ordersPolicy.setJqApplyNo(quoteResponse.getCiPolicyNumber());
+        ordersPolicy.setSyApplyNo(quoteResponse.getBiPolicyNumber());
+        insOrdersPolicyService.saveOrUpdate(ordersPolicy);
+
+
     }
 
     @Override
-    public void queryOrderList() {
-        
+    public void orderAfterUpdateUnderwriting(UnderwritingResultsVo underwritingResultsVo) {
+        // 检测主订单是否存在
+        InsOrders insOrders = insOrdersMapper.selectOne(new LambdaQueryWrapper<InsOrders>().eq(InsOrders::getId,underwritingResultsVo.getOrdersNo()));
+        AssertionUtils.isFail(Objects.isNull(insOrders),"订单不存在");
+
+        Integer status = underwritingResultsVo.getUnderwritingStatus().getStatus();
+        insOrders.setOrderStatus(String.valueOf(status));
+        insOrdersMapper.updateById(insOrders);
     }
 
+
     @Override
     @Transactional
-    public String generateOrders(QuoteVo quoteVo) {
+    public String generateOrders(QuoteVo quoteVo,String companyName) {
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         String orderNo = IdGenerate.nextId();
         // 保存主订单信息
         InsOrders insOrders = new InsOrders();
         insOrders.setId(orderNo);
-        insOrders.setQuoteNo(String.valueOf(SnowFlakeUtil.getSnowFlakeId()));
+        insOrders.setQuoteNo(quoteVo.getOrder().getQuoteNo());
         insOrders.setAgreementId(quoteVo.getOrder().getAgreementId());
         insOrders.setOrderStatus(InsOrderStatusEnum.QUOTE_ING.getCode()); // 订单状态 报价中
         insOrders.setApiType(String.valueOf(quoteVo.getOrder().getApiType()));
         insOrders.setCompanyId(quoteVo.getOrder().getInsuranceCompanyCode());
-        String companyName = CompanyConstants.getCompanyNameByCode(quoteVo.getOrder().getInsuranceCompanyCode());
         insOrders.setCompanyName(companyName);
         insOrders.setProductId(quoteVo.getOrder().getProductsCode());
+        insOrders.setProductName(ProductsType.getProductNameByCode(quoteVo.getOrder().getProductsCode()));
         String productName = ProductsType.getProductNameByCode(quoteVo.getOrder().getProductsCode());
         insOrders.setProductName(productName);
         insOrdersMapper.insert(insOrders);
@@ -546,4 +561,35 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         return orderNo;
     }
 
+    @Override
+    public Page<QuoteEchoVo> queryList(InsOrdersParam insOrdersParam){
+        Page<InsOrdersVo> insOrdersVoPage = insOrdersMapper.queryList(insOrdersParam.getPage(), insOrdersParam);
+        Page<QuoteEchoVo> quoteEchoVoPage = new Page<>();
+        List<QuoteEchoVo> quoteEchoVos = new ArrayList<>();
+        quoteEchoVoPage.setPages(insOrdersVoPage.getPages());
+        quoteEchoVoPage.setCurrent(insOrdersVoPage.getCurrent());
+        quoteEchoVoPage.setSize(insOrdersVoPage.getSize());
+        quoteEchoVoPage.setTotal(insOrdersVoPage.getTotal());
+        insOrdersVoPage.getRecords().forEach(insOrdersVo -> {
+            if (CollectionUtil.isNotEmpty(insOrdersVo.getCarUserInfoList())) {
+                for (InsOrdersCarUserInfo carUserInfo : insOrdersVo.getCarUserInfoList()) {
+                    // 使用映射逻辑处理用户信息
+                    CustomerInfoVo customerInfoVo = mapCarUserInfoToCustomerInfo(carUserInfo);
+                    setPolicyPersonInfo(insOrdersVo, carUserInfo.getPolicyPersonType(), customerInfoVo);
+                }
+                insOrdersVo.setCarUserInfoList(null);
+            }
+            quoteEchoVos.add(new QuoteEchoVo(insOrdersVo));
+        });
+        quoteEchoVoPage.setRecords(quoteEchoVos);
+        return quoteEchoVoPage;
+    }
+
+    @Override
+    public QuoteVo getOrderDetail(String ordersNo) {
+        InsOrdersVo insOrdersVo = selectById(Long.parseLong(ordersNo));
+        AssertionUtils.isFail(Objects.isNull(insOrdersVo),"订单不存在");
+        return new QuoteEchoVo(insOrdersVo);
+    }
+
 }

+ 2 - 2
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsTaskImagesServiceImpl.java

@@ -59,8 +59,8 @@ public class  InsTaskImagesServiceImpl extends ServiceImpl<InsTaskImagesMapper,
     public boolean imageSave(InsuranceUploadImageVo insuranceUploadImageVo) {
         String quoteNo = insuranceUploadImageVo.getOrder().getQuoteNo();
         List<InsTaskImages> images = new ArrayList<>();
-        baseMapper.delete(new LambdaUpdateWrapper<InsTaskImages>()
-                .eq(InsTaskImages::getQuoteNo,quoteNo));
+        int delete = baseMapper.delete(new LambdaUpdateWrapper<InsTaskImages>()
+                .eq(InsTaskImages::getQuoteNo, quoteNo));
         insuranceUploadImageVo.getImageVoList().forEach(imageVo -> {
             imageVo.getImageBase64List().forEach(base64 ->{
                 InsTaskImages insTaskImages = new InsTaskImages();

+ 38 - 1
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml

@@ -91,6 +91,17 @@
         <result property="syRatio" column="sy_ratio" jdbcType="VARCHAR"/>
     </resultMap>
 
+    <!-- 投保号 -->
+    <resultMap id="InsOrdersPolicyMap" type="com.jzg.commons.entity.orders.po.InsOrdersPolicy">
+        <id property="orderNo" column="order_no" jdbcType="VARCHAR"/>
+        <result property="jqApplyNo" column="jq_apply_no" jdbcType="VARCHAR"/>
+        <result property="syApplyNo" column="sy_apply_no" jdbcType="VARCHAR"/>
+        <result property="jyApplyNo" column="jy_apply_no" jdbcType="VARCHAR"/>
+        <result property="jqPolicyNo" column="jq_policy_no" jdbcType="VARCHAR"/>
+        <result property="syPolicyNo" column="sy_policy_no" jdbcType="VARCHAR"/>
+        <result property="jyPolicyNo" column="jy_policy_no" jdbcType="VARCHAR"/>
+    </resultMap>
+
     <!--订单 险种表-->
     <resultMap id="OrdersKindMap" type="com.jzg.commons.entity.orders.po.InsOrdersKind">
         <id property="orderNo" column="order_no" jdbcType="VARCHAR"/>
@@ -176,6 +187,8 @@
         <collection property="insOrdersRiskList"  column="{orderNo=id}" select="selectOrdersRisk" />
         <collection property="carUserInfoList"  column="{orderNo=id}"  select="selectCarUserInfo" />
         <collection property="kindInfoVo" column="{orderNo=id}" select="selectKindMap" />
+        <collection property="insOrdersCosts" column="{orderNo=id}" select="selectOrdersCostsByOrderNo" />
+        <collection property="insOrdersPolicy" column="{orderNo=id}" select="selectOrdersPolicyByOrderNo" />
     </resultMap>
 
     <resultMap id="InsOrdersExternalPolicyMap" type="com.jzg.commons.entity.orders.po.InsOrdersExternalPolicy">
@@ -213,6 +226,18 @@
         <result property="noOtherCostsProportion" column="no_other_costs_proportion" jdbcType="VARCHAR"/>
     </resultMap>
 
+    <!-- 费用-->
+    <resultMap id="insOrdersCostsMap" type="com.jzg.commons.entity.orders.po.InsOrdersCosts">
+        <id property="orderNo" column="order_no" jdbcType="VARCHAR"/>
+        <result property="jqPremium" column="jq_premium" jdbcType="VARCHAR"/>
+        <result property="syPremium" column="sy_premium" jdbcType="VARCHAR"/>
+        <result property="jyPremium" column="jy_premium" jdbcType="VARCHAR"/>
+        <result property="sumPremium" column="sum_premium" jdbcType="VARCHAR"/>
+        <result property="taxPremium" column="tax_premium" jdbcType="VARCHAR"/>
+        <result property="jqRatio" column="jq_ratio" jdbcType="VARCHAR"/>
+        <result property="syRatio" column="sy_ratio" jdbcType="VARCHAR"/>
+    </resultMap>
+
     <resultMap id="sys_upload_files_map" type="com.jzg.commons.entity.po.SysUploadFiles">
         <result property="id" column="id" jdbcType="VARCHAR"/>
         <result property="fileName" column="file_name" jdbcType="VARCHAR"/>
@@ -262,6 +287,10 @@
     <select id="selectOrdersTaxMap" resultMap="OrdersTaxMap">
         select order_no, extend_char2, tax_relief, relif_reason, tax_com_code, tax_com_name, tax_document_date, tax_paid_area_code, paid_free_certificate, taxpayer_name, taxpayer_identifier, identify_number, tax_relif_flag from ins_orders_tax where order_no = #{orderNo}
     </select>
+
+    <select id="selectOrdersPolicyByOrderNo" resultMap="InsOrdersPolicyMap">
+        select order_no,jq_apply_no,jq_policy_no,sy_apply_no,sy_policy_no,jy_apply_no,jy_policy_no from ins_orders_policy where order_no =  #{orderNo}
+    </select>
     
     <select id="selectExternalPolicyMap" resultMap="InsOrdersExternalPolicyMap">
         select order_no, jq_policy, sy_policy, no_policy, jq_sign,
@@ -277,6 +306,10 @@
         select order_no, cost_flag, cost_id, jq_supervise_costs_proportion, jq_other_costs_proportion, sy_supervise_costs_proportion, sy_other_costs_proportion, no_supervise_costs_proportion, no_other_costs_proportion from ins_orders_external_fee where order_no = #{orderNo}
     </select>
 
+    <select id="selectOrdersCostsByOrderNo" resultMap="insOrdersCostsMap">
+        select order_no,jq_premium,sy_premium,jy_premium,sum_premium,tax_premium,jq_ratio,sy_ratio from ins_orders_costs where order_no = #{orderNo}
+    </select>
+
     <select id="selectOrdersRisk" resultMap="InsOrdersRiskMap">
         select id,order_no,risk_name,amount,commission_rate,premium,risk_code,no_tax_premium,commission_amount,start_date,end_date from  ins_orders_risk where order_no = #{orderNo}
     </select>
@@ -299,6 +332,7 @@
             o.company_name,
             o.create_by,
             o.create_time,
+            o.order_status,
             c.license_no,
             s.jq_premium,
             s.sy_premium,
@@ -380,9 +414,12 @@
          where ot.order_no = #{orderNo}
     </select>
     
-    <select id="selectById" resultMap="InsOrdersVoMap">
+    <select id="getById" resultMap="InsOrdersVoMap">
         select id, quote_no,company_name,audit_status,audit_comments,create_by,audit_id,audit_name from ins_orders where id = #{id}
     </select>
 
+    <select id="queryList" resultMap="InsOrdersVoMap">
+        select id, quote_no,company_name,audit_status,audit_comments,create_by,audit_id,audit_name from ins_orders order by create_time desc
+    </select>
 
 </mapper>

+ 4 - 1
tenant/insurance/quotation-summary/src/main/resources/mapper/InsTaskImagesMapper.xml

@@ -30,6 +30,9 @@
             f.bucket_name
         FROM
             ins_task_images t
-                LEFT JOIN sys_upload_files f ON f.id = t.image_id where t.quote_no = #{quoteNo}
+                LEFT JOIN sys_upload_files f ON f.id = t.image_id
+        where t.quote_no = #{quoteNo}
+            and t.is_delete = 0
+
     </select>
 </mapper>

+ 1 - 1
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKQuotationBaseServiceImpl.java

@@ -436,7 +436,7 @@ public class TKQuotationBaseServiceImpl implements QuotationBaseService {
     }
 
     @Override
-    public void queryOrderState(OrderBase orderBase) {
+    public void queryOrderState(OrderStatusVo orderStatusVo) {
         TKLoginSession session = login("Tgengchenjie", "Gcj123456#");
 
         String orderId = "";

+ 1 - 1
tenant/insurance/quotation-yangguang/src/main/java/com/jzg/quotation/yangguang/api/service/impl/YangGuangApiRequestImpl.java

@@ -194,7 +194,7 @@ public class YangGuangApiRequestImpl implements YangGuangApiRequest {
     }
 
     @Override
-    public void queryOrderState(OrderBase orderBase) {
+    public void queryOrderState(OrderStatusVo orderStatusVo) {
 
     }
 

+ 9 - 9
tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/components/YcRequestApiComponents.java

@@ -190,15 +190,15 @@ public class YcRequestApiComponents {
 //        return post(accident, RequestUrl.API_UNDERWRITING_RETURNS, AccidentResponse.class);
 //    }
 //
-//    /**
-//     * 补传回调及订单信息查询接口
-//     *
-//     * @param callbackAnOrder 补传回调及订单信息查询接口 入参实体
-//     * @return 出参实体
-//     */
-//    public String payCallback(CallbackAnOrder callbackAnOrder) throws JsonProcessingException {
-//        return post(callbackAnOrder, RequestUrl.API_ORDER_QUERY, String.class);
-//    }
+    /**
+     * 补传回调及订单信息查询接口
+     *
+     * @param callbackAnOrder 补传回调及订单信息查询接口 入参实体
+     * @return 出参实体
+     */
+    public String payCallback(CallbackRequest callbackRequest) throws JsonProcessingException {
+        return post(callbackRequest, RequestUrl.API_ORDER_QUERY, String.class);
+    }
 //
 //    /**
 //     * 意外险确保接口

+ 7 - 7
tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/request/AuditRequest.java

@@ -375,25 +375,25 @@ public class AuditRequest {
 
         underwritingVo.getInsOrdersCarUserInfoList().forEach(userInfo -> {
             //车主
-            if(userInfo.getPolicyPersonType().equals("1")){
+            if(userInfo.getPolicyPersonType() == 1){
                 customer.setOwnerAddress(userInfo.getAddr());
             }
             //投保人
-            if(userInfo.getPolicyPersonType().equals("2")){
+            if(userInfo.getPolicyPersonType() == 2){
                 //投保人年收入
                 customer.setAppcIncome("0");
-                if(userInfo.getPersonType().equals("1")){
+                if(userInfo.getPersonType() == 1){
                     taxATion.setCTaxType("338001");
                     taxATion.setTaxpayerComid(userInfo.getIdentifyNumber());
-                }else if(userInfo.getPersonType().equals("2")){
+                }else if(userInfo.getPersonType() == 2){
                     taxATion.setCTaxType("338003");
                     taxATion.setTaxpayerComid(userInfo.getIdentifyNumber());
                 }
             }
             //被保人
-            if(userInfo.getPolicyPersonType().equals("2")){
+            if(userInfo.getPolicyPersonType() == 3){
                 //被保人年收入
-                if(userInfo.getPersonType().equals("1"))
+                if(userInfo.getPersonType() == 1)
                 {
                     customer.setBenefitCustType("1");
                     customer.setBenefitCertiType("120001");
@@ -401,7 +401,7 @@ public class AuditRequest {
                     customer.setBenefitAge(IDCardUtils.GetBirthday(userInfo.getIdentifyNumber()));
                     customer.setBenefitSex(IDCardUtils.GetYcSex(userInfo.getIdentifyNumber()));
                     customer.setBenefitName(userInfo.getName());
-                }else if(userInfo.getPersonType().equals("2")) {
+                }else if(userInfo.getPersonType() == 2) {
                     customer.setInsuredcIncome("0");
                     customer.setBenefitCustType("0");
                     customer.setBenefitCertiType("110004");

+ 60 - 0
tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/request/CallbackRequest.java

@@ -0,0 +1,60 @@
+package com.jzg.quotation.yongcheng.api.entity.request;
+
+
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
+import com.jzg.quotation.yongcheng.api.properties.AuthorityDataXml;
+import lombok.Data;
+
+
+/**
+ * 补传回调及订单信息查询接口 请求参数
+ *
+ * @author: lig
+ * @date: 2023-04-06
+ */
+@Data
+@JacksonXmlRootElement(localName = "tns:thirdPartycallBack")
+public class CallbackRequest {
+
+    /**
+     * 订单号
+     * 申请核保时返回
+     */
+    @JacksonXmlProperty(localName = "ordercode")
+    private String ordercode;
+    /**
+     * 回调类型
+     * 0 支付回调 1核保回调 5直接返回字符串信息
+     */
+    @JacksonXmlProperty(localName = "type")
+    private String type;
+    /**
+     * 用户名
+     * 接口授权用户名
+     */
+    @JacksonXmlProperty(localName = "creator")
+    private String creator;
+
+
+    /**
+     * 构造 请求参数
+     *
+     * @author: lig
+     * @date: 2023-04-06
+     */
+    public static CallbackRequest buildCallbackAnOrderParam(String companyOrderNo, AuthorityDataXml authorityDataXml, String type) {
+
+        CallbackRequest m = new CallbackRequest();
+
+        m.setOrdercode(companyOrderNo);
+
+        m.setType(type);
+
+        m.setCreator(authorityDataXml.getUserName());
+
+        return m;
+    }
+
+
+}

+ 157 - 0
tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/response/CallBackResponse.java

@@ -0,0 +1,157 @@
+package com.jzg.quotation.yongcheng.api.entity.response;
+
+import com.jzg.commons.util.Base64Utils;
+import com.jzg.commons.util.StringUtils;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 回调请求参数
+ *
+ * @author: lig
+ * @date: 2023年02月17日 0017
+ */
+@Data
+public class CallBackResponse implements Serializable {
+
+
+    /**
+     * 交易流水号
+     * 与支付时相同  支付使用
+     */
+    private String transNo;
+
+    /**
+     * 回调类型
+     * 0 支付回调 1承保回调
+     */
+    private String type;
+
+    /**
+     * 回调结果
+     * 0 成功,1 失败
+     */
+    private String result;
+
+    /**
+     * 商业险保单号
+     * Type为1 且投保商业险时有值
+     */
+    private String bizPolicyNo;
+
+    /**
+     * 交强险保单号
+     * Type为1 且投保交强险时有值
+     */
+    private String ciPolicyNo;
+
+    /**
+     * 失败原因
+     * 回调结果失败时有值
+     */
+    private String message;
+
+    /**
+     * 商业险投保单号
+     * 报价时产生
+     */
+    private String bizPolicyAppNo;
+
+    /**
+     * 交强险投保单号
+     * 报价时产生
+     */
+    private String ciPolicyAppNo;
+
+    /**
+     * 意外险保单号
+     * 报价时产生
+     */
+    private String ywPolicyNo;
+
+    /**
+     * 意外险投保单号
+     * 报价时产生
+     */
+    private String ywPolicyAppNo;
+
+    /**
+     * 投保单状态
+     * 0待核保   5上报复核   9已核保未交费   3退回修改    1已核保且交费
+     */
+    private String status;
+    /**
+     * 交强 投保单状态
+     * 0待核保   5上报复核   9已核保未交费   3退回修改    1已核保且交费
+     */
+    private String jqstatus;
+    /**
+     * 交强 消息
+     */
+    private String jqmessage;
+    /**
+     * 商业 投保单状态
+     * 0待核保   5上报复核   9已核保未交费   3退回修改    1已核保且交费
+     */
+    private String systatus;
+    /**
+     * 商业 消息
+     */
+    private String symessage;
+    /**
+     * 支付时间
+     */
+    private String pay_date;
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+    public static CallBackResponse buildCallBackParam(String str) {
+        CallBackResponse cbr = new CallBackResponse();
+        if (StringUtils.isNotEmpty(str)) {
+            String str222 = Base64Utils.getBase64Decode(str);
+            String str333 = str222.replaceAll("\n", "");
+            String paramStr = Base64Utils.getBase64Decode(str333);
+            String[] paramArr = paramStr.split("&");
+
+            Map<String, String> reqMap = new HashMap<>();
+            Arrays.stream(paramArr).forEach(a -> {
+                String[] pArr = a.split("=");
+                reqMap.put(pArr[0], pArr.length > 1 ? pArr[1] : "");
+
+            });
+
+            cbr.setTransNo(StringUtils.toString(reqMap.get("transNo")));
+            cbr.setType(StringUtils.toString(reqMap.get("type")));
+            cbr.setResult(StringUtils.toString(reqMap.get("result")));
+            cbr.setBizPolicyNo(StringUtils.toString(reqMap.get("biz_policy_no")));
+            cbr.setCiPolicyNo(StringUtils.toString(reqMap.get("ci_policy_no")));
+            cbr.setMessage(StringUtils.toString(reqMap.get("message")));
+            cbr.setBizPolicyAppNo(StringUtils.toString(reqMap.get("biz_policy_app_no")));
+            cbr.setCiPolicyAppNo(StringUtils.toString(reqMap.get("ci_policy_app_no")));
+            cbr.setStatus(StringUtils.toString(reqMap.get("status")));
+            cbr.setRemark(StringUtils.toString(reqMap.get("remark")));
+            cbr.setJqstatus(StringUtils.toString(reqMap.get("jqstatus")));
+            cbr.setSystatus(StringUtils.toString(reqMap.get("systatus")));
+            cbr.setJqmessage(StringUtils.toString(reqMap.get("jqmessage")));
+            cbr.setSymessage(StringUtils.toString(reqMap.get("symessage")));
+            cbr.setYwPolicyNo(StringUtils.toString(reqMap.get("yw_policy_no")));
+            cbr.setYwPolicyAppNo(StringUtils.toString(reqMap.get("yw_policy_app_no")));
+            cbr.setPay_date(StringUtils.toString(reqMap.get("pay_date")));
+
+        }
+        return cbr;
+    }
+
+    public static void main(String[] args) {
+        String s = "ZEhKaGJuTk9iejB4TkRBd01EZ3pNVEV5TURjME9UQTRKblI1Y0dVOU5TWnlaWE4xYkhROU1DWmlhWHBmY0c5c2FXTjVYMjV2UFNaagphVjl3YjJ4cFkzbGZibTg5TVRFMFFqZ3dNekkyTWpBeU16QXdNVEF4TmpjbVltbDZYM0J2YkdsamVWOWhjSEJmYm04OUptTnBYM0J2CmJHbGplVjloY0hCZmJtODlOVEUwUWpnd016STJNakF5TXpBd01UQXhOamNtZVhkZmNHOXNhV041WDJGd2NGOXViejBtZVhkZmNHOXMKYVdONVgyNXZQU1pxY1hOMFlYUjFjejB4Sm5ONWMzUmhkSFZ6UFNacWNXMWxjM05oWjJVOVFWVlVUenJqZ0pEbW9Mamt2NTNwZ0pybwp2NGZqZ0pFajU1UzE1YTJRNVpXRzVZcWg1TGlhNVlxaExlZTlrZW1VZ0NaemVXMWxjM05oWjJVOUpuQmhlVjlrWVhSbFBUSXdNak10Ck1EZ3RNekVnTVRRNk1USTZOVGM9";
+
+        CallBackResponse cbr = CallBackResponse.buildCallBackParam(s);
+    }
+}

+ 79 - 28
tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/service/impl/YongChengApiRequestImpl.java

@@ -2,6 +2,8 @@ package com.jzg.quotation.yongcheng.api.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ArrayUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.core.page.HttpResult;
@@ -157,7 +159,6 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
 
         QuoteResultsVo quoteResultsVo = buildQuoteRespVo(order.getOrdersNo(), quoteResponse, quoteVo);
 
-
         return quoteResultsVo;
     }
 
@@ -187,13 +188,10 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
 
     @Override
     public UnderwritingResultsVo underwriting(UnderwritingVo underwritingVo) {
-        //子订单
-        // 获取协议配置信息
+        UnderwritingResultsVo underwritingResultsVo = new UnderwritingResultsVo();
         //组装参数
         AuditRequest m = AuditRequest.buildAuditParam(underwritingVo);
 
-
-
         try {
             AuditResponse auditResponse = ycRequestApiComponents.newXnyUnderwritingService(m);
             if (auditResponse.getResponseHead().getReturnCode().equals("0000")) {
@@ -201,27 +199,27 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
                 String statusSy = auditResponse.getStatusSY();
                 if ("0".equals(statusJq) || "0".equals(statusSy)) {
                     //人工核保
-
+                    underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.STAFF_PROCESS);
+                    underwritingResultsVo.setUnderwritingResult("人工核保");
                 } else if ("3".equals(statusJq) || "3".equals(statusSy)) {
                     //核保退回
-//                    insSubOrderUpdateDetailService.insertData(iac,iac.getOrderstatus(),InsOrderStatusEnum.TO_BACK.getCode(),"1");
-//                    iac.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());
-//                    StringBuilder sb = new StringBuilder();
-//                    if (null != rd.getSailResponseMessagedate()) {
-//                        sb.append(String.format("交强险提示信息:s%", rd.getSailResponseMessagedate().getCMessage()));
-//                    }
-//                    if (null != rd.getCiResponseMessagedate()) {
-//                        sb.append(String.format("   商业险提示信息:s%", rd.getCiResponseMessagedate().getCMessage()));
-//                    }
-//                    iac.setAuditopinion(sb.toString());
+                    underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
+                    StringBuilder sb = new StringBuilder();
+                    if (null != auditResponse.getSailResponseMessagedate()) {
+                        sb.append(String.format("交强险提示信息:s%", auditResponse.getSailResponseMessagedate().getCMessage()));
+                    }
+                    if (null != auditResponse.getCiResponseMessagedate()) {
+                        sb.append(String.format(" 商业险提示信息:s%", auditResponse.getCiResponseMessagedate().getCMessage()));
+                    }
+                    underwritingResultsVo.setUnderwritingResult(sb.toString());
+
+
                 } else if (statusJq.equals("9") || statusSy.equals("9")) {
-                    //已核保代缴费
-//                    insSubOrderUpdateDetailService.insertData(iac,iac.getOrderstatus(),InsOrderStatusEnum.WAIT_PAY.getCode(),"1");
-//                    iac.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
                     //获取缴费地址
                     PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
                     paymentLinkVo.setOrder(underwritingVo.getOrder());
                     getPaymentLink(paymentLinkVo);
+                    underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
                 }
 
             } else {
@@ -231,7 +229,7 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
         } catch (JsonProcessingException jsonProcessingException) {
             throw new SystemException(jsonProcessingException.getMessage());
         }
-        return null;
+        return underwritingResultsVo;
     }
 
     @Override
@@ -247,13 +245,14 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
                 PaymentLinkResultsVo paymentLinkResultsVo = new PaymentLinkResultsVo();
                 paymentLinkResultsVo.setPaymentLink(payResp.getPayTransUrl());
                 return paymentLinkResultsVo;
+            }else{
+                throw new SystemException(payResp.getReturnMessage());
             }
 
         } catch (JsonProcessingException e) {
             e.printStackTrace();
             throw new SystemException("获取支付连接失败");
         }
-        return null;
     }
 
     @Override
@@ -263,7 +262,6 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
         //获取协议配置信息
         HashMap<String, String> map = new HashMap<>();
         for (InsuranceImageVo imageVo : insuranceUploadImageVo.getImageVoList()) {
-            //组装参数
             //接口请求
             for (InsuranceImageVo.ImageDTO imageDTO : imageVo.getImageBase64List()){
                 ImageRequest iUp = ImageRequest.buildImageUpParam(insuranceUploadImageVo.getCarInfo(), configurationProperties, imageDTO.getImageBase64Str(), imageVo.getImageType());
@@ -271,7 +269,6 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
                     ycRequestApiComponents.newImageUp(iUp);
                     map.put(imageVo.getImageType(), imageDTO.getImageId());
                 } catch (Exception e) {
-//                    log.error("===永诚API方式--上传影像报错:{}", e.getMessage());
                     String picTureName = iUp.getNewImgUpLoadInfoRequest().getRequestBase().getPicTureName();
                     throw new SystemException(picTureName + "上传途中异常,请重新上传或截取图片上传");
                 }
@@ -287,7 +284,58 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
     }
 
     @Override
-    public void queryOrderState(OrderBase orderBase) {
+    public void queryOrderState(OrderStatusVo orderStatusVo) {
+
+        YcApiConfigurationProperties configurationProperties = ConfigureParametersConversion.conversionEntity(YcApiConfigurationProperties.class, orderStatusVo.getOrder().getAttributionInformationVo().getConfigInfo());
+        //0 支付回调 1核保回调 5直接返回字符串信息
+        String type = "5";
+        CallbackRequest callbackRequest = CallbackRequest.buildCallbackAnOrderParam(orderStatusVo.getInsorders().getCompanyOrderNo(), configurationProperties.gainAuthorityDataXml(), type);
+        try{
+            String cleanStr = ycRequestApiComponents.payCallback(callbackRequest);
+            CallBackResponse response = CallBackResponse.buildCallBackParam(cleanStr);
+            if (response.getResult().equals("0")) {
+
+//                if (orderStatusVo.getInsorders().getOrderStatus().equals(InsOrderStatusEnum.WAIT_PAY.getCode())) {
+//                    buildCallBackStatus(iac, param.getJqstatus());
+//                    if (StringUtils.isNotEmpty(param.getBizPolicyNo())) {
+//                        iac.setSypolicyno(param.getBizPolicyNo());
+//                    }
+//
+//                    if (StringUtils.isNotEmpty(param.getCiPolicyNo())) {
+//                        iac.setJqpolicyno(param.getCiPolicyNo());
+//                    }
+//
+//                    if (StringUtils.isNotEmpty(param.getYwPolicyAppNo())) {
+//                        DrivingInsuranceDto drivingInsuranceDto = new DrivingInsuranceDto();
+//                        drivingInsuranceDto.setPolicyNumber(param.getYwPolicyNo());
+//                        drivingInsuranceDto.setApplicationNumber(param.getYwPolicyAppNo());
+//                        JSONArray objects = JSON.parseArray(JSON.toJSONString(Collections.singletonList(drivingInsuranceDto)));
+//                        iac.setCrossInsurance(objects);
+//                    }
+//
+//                    if (StringUtils.isNotEmpty(param.getPay_date()) && !"null".equals(param.getPay_date())) {
+//                        iac.setPayDate(LocalDateTime.parse(param.getPay_date(), DateTimeFormatter.ofPattern("yyyy-MM" + "-dd HH:mm:ss")));
+//                    }
+//
+//                } else {
+//                    iac = buildCallBack(iac, param);
+//                }
+//
+//                if (iac.getOrderstatus().equals(InsOrderStatusEnum.TO_BACK.getCode())) {
+//                    iac.setAuditopinion("交强审核意见:" + param.getJqmessage() + "| 商业审核意见:" + param.getSymessage());
+//                }
+//                //  add  by  hxl  添加自动更新状态
+//                insSubOrderUpdateDetailService.insertData(iac,oldStatus,iac.getOrderstatus(),"1");
+//                insAreaCompanyService.updateCompanyAndOrdersMessage(iac, iac.getAuditopinion());
+
+            } else {
+                //失败原因
+//                return HttpResult.error(response.getMessage());
+            }
+//            return HttpResult.ok("操作成功,状态已更新。");
+        } catch (JsonProcessingException jsonProcessingException) {
+            jsonProcessingException.printStackTrace();
+        }
 
     }
 
@@ -299,7 +347,7 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
 
         if (!"000000".equals(rd.getHead().getErrorCode())) {
             //保存报价失败的子订单
-            InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
+            InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAIL;
 
             //错误信息
             StringBuilder errorInfo = getErrorInfo(rd);
@@ -342,9 +390,12 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
         }
 
 
-//        if (null != rd.getPrmCoef()) {
-//            quoteRespVo.setTotalAdjustRate(StringUtils.toDouble(rd.getPrmCoef().getNTotDisc()));
-//        }
+        //投保单号交强
+        quoteRespVo.setCiPolicyNumber(rd.getVhl().getCQryCdeJQ());
+
+        //投保单号商业
+        quoteRespVo.setBiPolicyNumber(rd.getVhl().getCQryCdeSY());
+
         quoteRespVo.getScoreVo().setScore(rd.getBase().getCWeRisk());//评分
         quoteRespVo.setOrdersNo(ordersNo); //订单号
         quoteRespVo.setCiPremium(String.valueOf(jqPremium));

+ 0 - 6
tenant/organization/src/main/java/com/jzg/organization/controller/AgreementController.java

@@ -226,10 +226,4 @@ public class AgreementController extends BaseController {
         agreementService.contactEdit(param);
         return HttpResult.ok("修改成功");
     }
-
-    @Operation(summary = "根据保险公司查找协议")
-    @GetMapping("/getByCompanyId")
-    public HttpResult getByCompanyCode(String companyId) {
-        return HttpResult.ok(agreementService.getByCompanyId(companyId));
-    }
 }