Browse Source

补录订单编辑功能

785834757 2 years ago
parent
commit
98cb1aaca0

+ 5 - 0
src/main/java/com/ydtech/modules/fnc/service/InsFeeAuditService.java

@@ -38,6 +38,11 @@ public interface InsFeeAuditService extends IService<InsFeeAudit> {
      InsFeeAudit saveDefaultInsFeeAuditAndHistory(String orderNo, String insOrderNo, String auditstatus, String rejectInfo);
 
 
+     /**
+      * 获取费用审核 根据子订单id
+      * @return
+      */
+     InsFeeAudit getFeeAuditByInsOrderNo(String insOrderNo);
 
 
 }

+ 13 - 0
src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java

@@ -842,4 +842,17 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
 
         return insFeeAudit;
     }
+
+    /**
+     * 获取费用审核 根据子订单id
+     * @return
+     */
+    @Override
+    public InsFeeAudit getFeeAuditByInsOrderNo(String insOrderNo) {
+        LambdaQueryWrapper<InsFeeAudit>  queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(InsFeeAudit::getInsOrderNo,insOrderNo);
+        return this.getOne(queryWrapper);
+    }
+
+
 }

+ 21 - 10
src/main/java/com/ydtech/modules/order/controller/ExternalOrderController.java

@@ -1,15 +1,18 @@
 package com.ydtech.modules.order.controller;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.constants.enums.dict.FeeAuditAuditstatus;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.fnc.entity.InsFeeAudit;
+import com.ydtech.modules.fnc.service.InsFeeAuditService;
 import com.ydtech.modules.ins.model.vo.QuoteRespVo;
 import com.ydtech.modules.order.aop.QuoteVerification;
 import com.ydtech.modules.order.components.InsOrdersComponents;
-import com.ydtech.modules.order.entity.vo.AccidentalDrivingVo;
-import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
-import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
-import com.ydtech.modules.order.entity.vo.RejectPageQueryVo;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.vo.*;
 import com.ydtech.modules.order.service.InsAreaCompanyExternalPolicyService;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsOrdersService;
@@ -41,6 +44,9 @@ public class ExternalOrderController {
     @Autowired
     private InsTaskImagesService insTaskImagesService;
 
+    @Autowired
+    private InsFeeAuditService insFeeAuditService;
+
     @PostMapping("/saveSubOrder")
     @ApiOperation("保存子订单")
     public HttpResult<QuoteRespVo> saveSubOrder(@RequestBody BaseQuoteVo<AccidentalDrivingVo> quoteVo) {
@@ -49,12 +55,17 @@ public class ExternalOrderController {
         return result ? HttpResult.ok("添加订单成功") : HttpResult.error("添加订单失败");
     }
 
-    @PostMapping("/updateSubOrder")
-    @ApiOperation("更新订单")
-    public HttpResult<Object> updateSubOrder(@RequestBody BaseQuoteVo<AccidentalDrivingVo> quoteVo){
-        BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo(), quoteVo.getAgreementId());
-        boolean result = this.insAreaCompanyService.saveSubOrder(quoteInfo, quoteVo);
-        return result ? HttpResult.ok("添加订单成功") : HttpResult.error("添加订单失败");
+    @PostMapping("/updateExternalOrder")
+    @ApiOperation("更新外部订单")
+    public HttpResult<Object> updateSubOrder(@RequestBody InsOrdersEditingVo insOrdersEditingVo){
+//        BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo(), quoteVo.getAgreementId());
+        InsFeeAudit feeAuditByInsOrderNo = insFeeAuditService.getFeeAuditByInsOrderNo(insOrdersEditingVo.getInsAreaCompanyList().get(0).getId());
+        if(feeAuditByInsOrderNo.getAuditstatus().equals(FeeAuditAuditstatus.UNREVICEWED.getCode()))
+        {
+            throw new SystemException("请勿重复修改");
+        }
+        boolean result = this.insAreaCompanyService.updateOrderAndSubOrder(insOrdersEditingVo);
+        return result ? HttpResult.ok("订单修改成功,重新提交审核!") : HttpResult.error("订单修改失败");
     }
 
     /**

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

@@ -18,6 +18,7 @@ import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.ins.model.vo.KindInfoVo;
 import com.ydtech.modules.ins.model.vo.RiskInfoVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.*;
 
 import java.io.Serializable;
@@ -272,6 +273,22 @@ public class InsOrders implements Serializable {
     @TableField(exist = false)
     private String problemOrder;
 
+
+    @ApiModelProperty("交强险总比例")
+    @TableField(exist = false)
+    private BigDecimal jqCostsProportion;
+
+    @ApiModelProperty("商业险总比例")
+    @TableField(exist = false)
+    private BigDecimal syCostsProportion;
+
+    @ApiModelProperty("非车险总比例")
+    @TableField(exist = false)
+    private BigDecimal noCostsProportion;
+
+
+
+
     public InsOrders(SysUser user, SysDept dept, BaseQuoteInfoVo quoteInfoVo) {
         // 2. 组装订单
         this.setQuoteno(String.valueOf(quoteInfoVo.getQuoteno()));

+ 23 - 14
src/main/java/com/ydtech/modules/order/entity/vo/BaseQuoteVo.java

@@ -1,11 +1,13 @@
 package com.ydtech.modules.order.entity.vo;
 
+import com.ydtech.modules.order.entity.InsAreaCompanyExternalPolicy;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Data
 @ApiModel(value = "报价实体")
@@ -58,20 +60,24 @@ public class BaseQuoteVo<T> {
 
     // 24-06-12 新增 外部订单录入字段
 
-    @ApiModelProperty("交强保单号")
-    private String jqpolicyno;
-
-    @ApiModelProperty("交强保单")
-    private String jqPolicy;
-
-    @ApiModelProperty("商业保单")
-    private String syPolicy;
-
-    @ApiModelProperty("非车保单")
-    private String noPolicy;
-
-    @ApiModelProperty("交强电子标志")
-    private String jqSign;
+    @ApiModelProperty("外部订单 保单信息")
+//    private InsAreaCompanyExternalPolicy externalPolicy;
+    private List<InsAreaCompanyExternalPolicyVo> jqPolicyList;
+    private List<InsAreaCompanyExternalPolicyVo> syPolicyList;
+    private List<InsAreaCompanyExternalPolicyVo> noPolicyList;
+    private List<InsAreaCompanyExternalPolicyVo> jqSignList;
+
+//    @ApiModelProperty("交强保单")
+//    private String jqPolicy;
+//
+//    @ApiModelProperty("商业保单")
+//    private String syPolicy;
+//
+//    @ApiModelProperty("非车保单")
+//    private String noPolicy;
+//
+//    @ApiModelProperty("交强电子标志")
+//    private String jqSign;
 
     @ApiModelProperty("评分")
     private String score;
@@ -83,6 +89,9 @@ public class BaseQuoteVo<T> {
     private String syRenewal;
 
 
+    @ApiModelProperty("交强保单号")
+    private String jqpolicyno;
+
     @ApiModelProperty("商业保单号")
     private String sypolicyno;
 

+ 9 - 0
src/main/java/com/ydtech/modules/order/entity/vo/InsAreaCompanyExternalPolicyVo.java

@@ -0,0 +1,9 @@
+package com.ydtech.modules.order.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class InsAreaCompanyExternalPolicyVo {
+    private String name;
+    private String url;
+}

+ 53 - 1
src/main/java/com/ydtech/modules/order/entity/vo/InsOrdersEditingVo.java

@@ -2,15 +2,19 @@ package com.ydtech.modules.order.entity.vo;
 
 
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.ydtech.modules.ins.model.vo.AccidentResponseVo;
 import com.ydtech.modules.ins.model.vo.QuoteKindRespVo;
 import com.ydtech.modules.ins.model.vo.QuoteRiskRespVo;
+import com.ydtech.modules.order.entity.InsAreaCompanyExternalPolicy;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.TaxArrears;
 import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
 
 import java.io.Serializable;
@@ -18,17 +22,55 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 
-@EqualsAndHashCode(callSuper = true)
+
+//@EqualsAndHashCode(callSuper = true)
 @Data
 public class InsOrdersEditingVo extends InsOrders implements Serializable {
 
     private static final long serialVersionUID = 8245987503764357200L;
 
+    @TableField(value = "insAreaCompanyEditingDtos", typeHandler = FastjsonTypeHandler.class)
     private List<InsAreaCompanyEditingDto> insAreaCompanyEditingDtos;
 
+
+    @ApiModelProperty("交强保单号")
+    private String jqpolicyno;
+
+    @ApiModelProperty("商业保单号")
+    private String sypolicyno;
+
+    @ApiModelProperty("非车保单号")
+    private String nopolicyno;
+
+    @ApiModelProperty("评分")
+    private String score;
+
+    @ApiModelProperty("交强续保")
+    private String jqRenewal;
+
+    @ApiModelProperty("商业续保")
+    private String syRenewal;
+
+    @ApiModelProperty("协议id")
+    private String agreementId;
+
+    @ApiModelProperty("外部订单保单信息")
+    @TableField(value = "jqPolicyList", typeHandler = FastjsonTypeHandler.class)
+    private List<InsAreaCompanyExternalPolicyVo> jqPolicyList;
+    @TableField(value = "syPolicyList", typeHandler = FastjsonTypeHandler.class)
+    private List<InsAreaCompanyExternalPolicyVo> syPolicyList;
+    @TableField(value = "noPolicyList", typeHandler = FastjsonTypeHandler.class)
+    private List<InsAreaCompanyExternalPolicyVo> noPolicyList;
+    @TableField(value = "jqSignList", typeHandler = FastjsonTypeHandler.class)
+    private List<InsAreaCompanyExternalPolicyVo> jqSignList;
+
     @Data
     public static class InsAreaCompanyEditingDto implements Serializable {
 
+        public InsAreaCompanyEditingDto(){
+
+        }
+
         private static final long serialVersionUID = 5819731807013343817L;
 
         @ApiModelProperty("编辑状态")
@@ -53,9 +95,11 @@ public class InsOrdersEditingVo extends InsOrders implements Serializable {
         private String tips;
 
         @ApiModelProperty("商业险险种")
+        @TableField(value = "kindList", typeHandler = FastjsonTypeHandler.class)
         private List<QuoteKindRespVo> kindList;
 
         @ApiModelProperty("交强险和商业险")
+        @TableField(value = "riskList", typeHandler = FastjsonTypeHandler.class)
         private List<QuoteRiskRespVo> riskList;
 
 
@@ -75,6 +119,7 @@ public class InsOrdersEditingVo extends InsOrders implements Serializable {
         //add end 交强商业开始结束起保日期 lig 2023-09-12
 
         @ApiModelProperty("驾意险信息")
+        @TableField(value = "accident", typeHandler = FastjsonTypeHandler.class)
         private List<AccidentResponseVo> accident;
 
         @ApiModelProperty("订单号")
@@ -105,6 +150,7 @@ public class InsOrdersEditingVo extends InsOrders implements Serializable {
         private String syAdjustRate;
 
         @ApiModelProperty("欠税明细")
+        @TableField(value = "taxArrears", typeHandler = FastjsonTypeHandler.class)
         private List<TaxArrears> taxArrears;
 
         @ApiModelProperty("扩展字段")
@@ -153,6 +199,11 @@ public class InsOrdersEditingVo extends InsOrders implements Serializable {
         @ApiModelProperty("总共出口费用")
         private BigDecimal sumExportFee;
 
+
+
+
+
+
         public InsAreaCompanyEditingDto(InsAreaCompanyQueryDto insAreaCompany) {
             this.orderno = insAreaCompany.getOrderno();
             this.orderstatus = insAreaCompany.getOrderstatus();
@@ -179,4 +230,5 @@ public class InsOrdersEditingVo extends InsOrders implements Serializable {
         }
     }
 
+
 }

+ 2 - 0
src/main/java/com/ydtech/modules/order/service/InsAreaCompanyService.java

@@ -155,4 +155,6 @@ public interface InsAreaCompanyService extends IService<InsAreaCompany> {
      * @return
      */
     Page<InsAreaCompany> getRejectOrder(Page page,String userId);
+
+    boolean updateOrderAndSubOrder(InsOrdersEditingVo insOrdersEditingVo);
 }

+ 139 - 13
src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java

@@ -31,6 +31,7 @@ import com.ydtech.modules.protocols.entity.vo.AgreementProductQueryVo;
 import com.ydtech.modules.protocols.service.PtlAgreementProductCostsNewService;
 import com.ydtech.utils.idgen.IdGenerate;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -423,11 +424,11 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
         if(quoteVo.getJqpremium() != null && quoteVo.getJqpremium().compareTo(new BigDecimal(0)) <= 0){
             throw new SystemException("交强险保费填写错误请重新填写");
         }
-        if(quoteVo.getJqpolicyno() != null || quoteVo.getJqPolicy() != null || quoteVo.getJqpremium() != null || quoteVo.getJqCostsProportion() != null){
+        if(quoteVo.getJqpolicyno() != null || !quoteVo.getJqPolicyList().isEmpty() || quoteVo.getJqpremium() != null || quoteVo.getJqCostsProportion() != null){
             if(quoteVo.getJqpolicyno() == null){
                 throw new SystemException("交强险保单号不能为空");
             }
-            if(quoteVo.getJqPolicy() == null){
+            if(quoteVo.getJqPolicyList().isEmpty()){
                 throw new SystemException("交强险保单不能为空");
             }
             if(quoteVo.getJqpremium() == null){
@@ -441,11 +442,11 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
         if(quoteVo.getSypremium() != null && quoteVo.getSypremium().compareTo(new BigDecimal(0)) <= 0){
             throw new SystemException("商业险保费填写错误请重新填写");
         }
-        if(quoteVo.getSypolicyno() != null || quoteVo.getSyPolicy() != null || quoteVo.getSypremium() != null || quoteVo.getSyCostsProportion() != null){
+        if(quoteVo.getSypolicyno() != null || !quoteVo.getSyPolicyList().isEmpty() || quoteVo.getSypremium() != null || quoteVo.getSyCostsProportion() != null){
             if(quoteVo.getSypolicyno() == null){
                 throw new SystemException("商业险保单号不能为空");
             }
-            if(quoteVo.getSyPolicy() == null){
+            if(quoteVo.getSyPolicyList().isEmpty()){
                 throw new SystemException("商业险保单不能为空");
             }
             if(quoteVo.getSypremium() == null){
@@ -459,11 +460,11 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
         if(quoteVo.getJypremium() != null && quoteVo.getJypremium().compareTo(new BigDecimal(0)) <= 0){
             throw new SystemException("非车险保费填写错误请重新填写");
         }
-        if(quoteVo.getJypolicyno() != null || quoteVo.getJypremium() != null || quoteVo.getNoPolicy() != null  || quoteVo.getNoCostsProportion() != null){
+        if(quoteVo.getJypolicyno() != null || quoteVo.getJypremium() != null || !quoteVo.getNoPolicyList().isEmpty()  || quoteVo.getNoCostsProportion() != null){
             if(quoteVo.getJypolicyno() == null){
                 throw new SystemException("非车险保单号不能为空");
             }
-            if(quoteVo.getNoPolicy() == null){
+            if(quoteVo.getNoPolicyList().isEmpty()){
                 throw new SystemException("非车险保单不能为空");
             }
             if(quoteVo.getJypremium() == null){
@@ -620,13 +621,24 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
 
 
         //保存保单
-        InsAreaCompanyExternalPolicy insAreaCompanyExternalPolicy = new InsAreaCompanyExternalPolicy();
-        insAreaCompanyExternalPolicy.setSubOrderNo(subOrderNo);
-        insAreaCompanyExternalPolicy.setJqPolicy(quoteVo.getJqPolicy());
-        insAreaCompanyExternalPolicy.setSyPolicy(quoteVo.getSyPolicy());
-        insAreaCompanyExternalPolicy.setNoPolicy(quoteVo.getNoPolicy());
-        insAreaCompanyExternalPolicy.setJqSign(quoteVo.getJqSign());
-        this.insAreaCompanyExternalPolicyService.save(insAreaCompanyExternalPolicy);
+        List<InsAreaCompanyExternalPolicyVo> jqPolicyList = quoteVo.getJqPolicyList();
+        List<InsAreaCompanyExternalPolicyVo> syPolicyList = quoteVo.getSyPolicyList();
+        List<InsAreaCompanyExternalPolicyVo> noPolicyList = quoteVo.getNoPolicyList();
+        List<InsAreaCompanyExternalPolicyVo> jqSignList = quoteVo.getJqSignList();
+        InsAreaCompanyExternalPolicy externalPolicy = new InsAreaCompanyExternalPolicy();
+        if(!jqPolicyList.isEmpty()){
+            externalPolicy.setJqPolicy(jqPolicyList.get(0).getUrl());
+        }
+        if(!syPolicyList.isEmpty()){
+            externalPolicy.setSyPolicy(syPolicyList.get(0).getUrl());
+        }
+        if(!noPolicyList.isEmpty()){
+            externalPolicy.setNoPolicy(noPolicyList.get(0).getUrl());
+        }
+        if(!jqSignList.isEmpty()){
+            externalPolicy.setJqSign(jqSignList.get(0).getUrl());
+        }
+        this.insAreaCompanyExternalPolicyService.save(externalPolicy);
 
 
 
@@ -682,6 +694,120 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
         return rejectOrder;
     }
 
+    @Override
+    @Transactional
+    public boolean updateOrderAndSubOrder(InsOrdersEditingVo insOrdersEditingVo) {
+        InsOrders insOrders = new InsOrders();
+        BeanUtils.copyProperties(insOrdersEditingVo,insOrders);
+        insOrdersService.updateById(insOrders);
+        String subOrderNo = insOrdersEditingVo.getInsAreaCompanyList().get(0).getId();
+        //处理保单
+        InsAreaCompanyExternalPolicy externalPolicy = new InsAreaCompanyExternalPolicy();
+        externalPolicy.setSubOrderNo(subOrderNo);
+        if(!insOrdersEditingVo.getJqPolicyList().isEmpty()){
+            externalPolicy.setJqPolicy(insOrdersEditingVo.getJqPolicyList().get(0).getUrl());
+        }
+        if(!insOrdersEditingVo.getSyPolicyList().isEmpty()){
+            externalPolicy.setSyPolicy(insOrdersEditingVo.getSyPolicyList().get(0).getUrl());
+        }
+        if(!insOrdersEditingVo.getNoPolicyList().isEmpty()){
+            externalPolicy.setNoPolicy(insOrdersEditingVo.getNoPolicyList().get(0).getUrl());
+        }
+        if(!insOrdersEditingVo.getJqSignList().isEmpty()){
+            externalPolicy.setJqSign(insOrdersEditingVo.getJqSignList().get(0).getUrl());
+        }
+        insAreaCompanyExternalPolicyService.updateById(externalPolicy);
+
+        //处理子订单
+        InsAreaCompany insAreaCompany = insOrdersEditingVo.getInsAreaCompanyList().get(0);
+        this.updateById(insAreaCompany);
+
+
+
+        //通过协议id 查询费用
+        PtlAgreement ptlAgreement = ptlAgreementService.getById(insOrdersEditingVo.getAgreementId());
+
+        //查找协议的费用
+        AgreementProductQueryVo agreementProductQueryVo = new AgreementProductQueryVo();
+        List<String> productId = new ArrayList<>();
+        productId.add(insOrders.getProductid());
+        agreementProductQueryVo.setProductCode(productId);
+        agreementProductQueryVo.setIsAudit("1");
+        agreementProductQueryVo.setAgreementId(ptlAgreement.getId());
+
+        List<PtlAgreementProductCostsNew> costsNews = ptlAgreementProductCostsNewService.getByAgreementId(agreementProductQueryVo);
+
+        if(costsNews.isEmpty())
+        {
+            throw new SystemException("没有找到费用信息");
+        }
+        BigDecimal jqSuperviseCostsProportion,sySuperviseCostsProportion,noSuperviseCostsProportion  = new BigDecimal(0);
+        jqSuperviseCostsProportion = (new BigDecimal(costsNews.get(0).getJqCarCostsProportion()));
+        sySuperviseCostsProportion = (new BigDecimal(costsNews.get(0).getSyCarCostsProportion()));
+        noSuperviseCostsProportion = (new BigDecimal(costsNews.get(0).getNoCarCostsProportion()));
+
+
+        InsAreaCompanyExternalFee insAreaCompanyExternalFee = new InsAreaCompanyExternalFee();
+        insAreaCompanyExternalFee.setSubOrderNo(subOrderNo);
+        if(insOrdersEditingVo.getJqCostsProportion() != null) {
+            if (jqSuperviseCostsProportion.compareTo(insOrdersEditingVo.getJqCostsProportion()) > 0) {
+                //总比例等于手续费比例
+                insAreaCompanyExternalFee.setJqSuperviseCostsProportion(insOrdersEditingVo.getJqCostsProportion());
+                insAreaCompanyExternalFee.setJqOtherCostsProportion(new BigDecimal(0));
+            } else {
+                //总比例减去手续费比例 = 跟单比例
+                insAreaCompanyExternalFee.setJqSuperviseCostsProportion(jqSuperviseCostsProportion);
+                insAreaCompanyExternalFee.setJqOtherCostsProportion(insOrdersEditingVo.getJqCostsProportion().subtract(jqSuperviseCostsProportion));
+            }
+        }
+
+        if(insOrdersEditingVo.getSyCostsProportion() != null) {
+            if (sySuperviseCostsProportion.compareTo(insOrdersEditingVo.getSyCostsProportion()) >= 0) {
+                //总比例等于手续费比例
+                insAreaCompanyExternalFee.setSySuperviseCostsProportion(insOrdersEditingVo.getSyCostsProportion());
+                insAreaCompanyExternalFee.setSyOtherCostsProportion(new BigDecimal(0));
+            } else {
+                //总比例减去手续费比例 = 跟单比例
+                insAreaCompanyExternalFee.setSySuperviseCostsProportion(sySuperviseCostsProportion);
+                insAreaCompanyExternalFee.setSyOtherCostsProportion(insOrdersEditingVo.getSyCostsProportion().subtract(sySuperviseCostsProportion));
+            }
+        }
+
+        if(insOrdersEditingVo.getNoCostsProportion() != null) {
+            if (noSuperviseCostsProportion.compareTo(insOrdersEditingVo.getNoCostsProportion()) >= 0) {
+                //总比例等于手续费比例
+                insAreaCompanyExternalFee.setNoSuperviseCostsProportion(insOrdersEditingVo.getNoCostsProportion());
+                insAreaCompanyExternalFee.setNoOtherCostsProportion(new BigDecimal(0));
+            } else {
+                //总比例减去手续费比例 = 跟单比例
+                insAreaCompanyExternalFee.setNoSuperviseCostsProportion(noSuperviseCostsProportion);
+                insAreaCompanyExternalFee.setNoOtherCostsProportion(insOrdersEditingVo.getNoCostsProportion().subtract(noSuperviseCostsProportion));
+            }
+        }
+        insAreaCompanyExternalFee.setJqSuperviseCostsProportion(insAreaCompanyExternalFee.getJqSuperviseCostsProportion()!=null ? insAreaCompanyExternalFee.getJqSuperviseCostsProportion() : new BigDecimal(0));
+        insAreaCompanyExternalFee.setJqOtherCostsProportion(insAreaCompanyExternalFee.getJqOtherCostsProportion()!=null ? insAreaCompanyExternalFee.getJqOtherCostsProportion() : new BigDecimal(0));
+        insAreaCompanyExternalFee.setSySuperviseCostsProportion(insAreaCompanyExternalFee.getSySuperviseCostsProportion()!=null ? insAreaCompanyExternalFee.getSySuperviseCostsProportion() : new BigDecimal(0));
+        insAreaCompanyExternalFee.setSyOtherCostsProportion(insAreaCompanyExternalFee.getSyOtherCostsProportion()!=null ? insAreaCompanyExternalFee.getSyOtherCostsProportion() : new BigDecimal(0));
+        insAreaCompanyExternalFee.setNoSuperviseCostsProportion(insAreaCompanyExternalFee.getNoSuperviseCostsProportion()!=null ? insAreaCompanyExternalFee.getNoSuperviseCostsProportion() : new BigDecimal(0));
+        insAreaCompanyExternalFee.setNoOtherCostsProportion(insAreaCompanyExternalFee.getNoOtherCostsProportion()!=null ? insAreaCompanyExternalFee.getNoOtherCostsProportion() : new BigDecimal(0));
+        insAreaCompanyExternalFeeService.updateById(insAreaCompanyExternalFee);
+
+
+        costsNews.get(0).setJqCarCostsProportion(insAreaCompanyExternalFee.getJqSuperviseCostsProportion().toString());
+        costsNews.get(0).setJqCarOtherCostsProportion(insAreaCompanyExternalFee.getJqOtherCostsProportion().toString());
+        costsNews.get(0).setSyCarCostsProportion(insAreaCompanyExternalFee.getSySuperviseCostsProportion().toString());
+        costsNews.get(0).setSyCarOtherCostsProportion(insAreaCompanyExternalFee.getSyOtherCostsProportion().toString());
+        costsNews.get(0).setNoCarCostsProportion(insAreaCompanyExternalFee.getNoSuperviseCostsProportion().toString());
+        costsNews.get(0).setNoCarOtherCostsProportion(insAreaCompanyExternalFee.getNoOtherCostsProportion().toString());
+
+        //计算费用
+        feeRuleSchemeNewService.calcCostsExternal(costsNews.get(0),insAreaCompany);
+
+        //重新进入审核状态
+        insFeeAuditService.saveDefaultInsFeeAuditAndHistory(insAreaCompany.getOrderno(), insAreaCompany.getId(), FeeAuditAuditstatus.UNREVICEWED.getCode(),null);
+        return true;
+    }
+
 
 }
 

+ 80 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -29,7 +29,9 @@ import com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto;
 import com.ydtech.modules.admin.model.po.SysUserIsDial;
 import com.ydtech.modules.admin.service.*;
 import com.ydtech.modules.esm.model.EsmUserReferrer;
+import com.ydtech.modules.esm.model.InsTaskImage;
 import com.ydtech.modules.esm.service.EsmUserReferrerService;
+import com.ydtech.modules.esm.service.InsTaskImageService;
 import com.ydtech.modules.fee.service.CostsCalcService;
 import com.ydtech.modules.fee.service.impl.FeeRuleSchemeServiceImpl;
 import com.ydtech.modules.fnc.entity.InsFeeAudit;
@@ -162,6 +164,12 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Autowired
     private InsDrivingIntentionInsuranceService insDrivingIntentionInsuranceService;
 
+    @Autowired
+    private InsAreaCompanyExternalFeeService insAreaCompanyExternalFeeService;
+
+    @Autowired
+    private InsAreaCompanyExternalPolicyService insAreaCompanyExternalPolicyService;
+
     @Autowired
     private InsFeeAuditHistoryService insFeeAuditHistoryService;
 
@@ -705,17 +713,89 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         InsOrdersEditingVo insOrdersEditingVo = new InsOrdersEditingVo();
 
         BeanUtils.copyProperties(insOrders, insOrdersEditingVo);
+
+        //如果是外部订单才回显这些数据
+        if(insAreaCompanyList.size() > 0 && insOrders.getIsExternal() == 1){
+            insOrdersEditingVo.setSigningTime(insAreaCompanyList.get(0).getSigningTime());
+            insOrdersEditingVo.setJqpremium(insAreaCompanyList.get(0).getJqpremium().toString());
+            insOrdersEditingVo.setSypremium(insAreaCompanyList.get(0).getSypremium().toString());
+            insOrdersEditingVo.setJypremium(insAreaCompanyList.get(0).getJypremium().toString());
+            insOrdersEditingVo.setTaxamount(insAreaCompanyList.get(0).getTaxamount().toString());
+            insOrdersEditingVo.setJqpolicyno(insAreaCompanyList.get(0).getJqpolicyno());
+            insOrdersEditingVo.setSypolicyno(insAreaCompanyList.get(0).getSypolicyno());
+
+            insOrdersEditingVo.setScore(insAreaCompanyList.get(0).getScore());
+            insOrdersEditingVo.setJqRenewal(insAreaCompanyList.get(0).getJqRenewal());
+            insOrdersEditingVo.setSyRenewal(insAreaCompanyList.get(0).getSyRenewal());
+
+            InsAreaCompanyExternalPolicy policyByCompanyId = insAreaCompanyExternalPolicyService.getPolicyByCompanyId(insAreaCompanyList.get(0).getId());
+//            insOrdersEditingVo.setExternalPolicy(policyByCompanyId);
+
+            List<InsAreaCompanyExternalPolicyVo> jqPolictList = new ArrayList<>();
+            if(policyByCompanyId.getJqPolicy() != null && !policyByCompanyId.getJqPolicy().equals("")) {
+                InsAreaCompanyExternalPolicyVo jqPolict = new InsAreaCompanyExternalPolicyVo();
+                jqPolict.setUrl(policyByCompanyId.getJqPolicy());
+                jqPolict.setName(policyByCompanyId.getJqPolicy().replaceAll("/", "_"));
+                jqPolictList.add(jqPolict);
+            }
+            insOrdersEditingVo.setJqPolicyList(jqPolictList);
+
+            List<InsAreaCompanyExternalPolicyVo> syPolictList = new ArrayList<>();
+            if(policyByCompanyId.getSyPolicy() != null && !policyByCompanyId.getSyPolicy().equals("")) {
+                InsAreaCompanyExternalPolicyVo syPolict = new InsAreaCompanyExternalPolicyVo();
+                syPolict.setUrl(policyByCompanyId.getJqPolicy());
+                syPolict.setName(policyByCompanyId.getJqPolicy().replaceAll("/", "_"));
+                syPolictList.add(syPolict);
+            }
+            insOrdersEditingVo.setSyPolicyList(syPolictList);
+
+            List<InsAreaCompanyExternalPolicyVo> noPolictList = new ArrayList<>();
+            if(policyByCompanyId.getNoPolicy() != null && !policyByCompanyId.getNoPolicy().equals("")) {
+                InsAreaCompanyExternalPolicyVo noPolict = new InsAreaCompanyExternalPolicyVo();
+                noPolict.setUrl(policyByCompanyId.getJqPolicy());
+                noPolict.setName(policyByCompanyId.getJqPolicy().replaceAll("/", "_"));
+                noPolictList.add(noPolict);
+            }
+            insOrdersEditingVo.setNoPolicyList(noPolictList);
+
+            List<InsAreaCompanyExternalPolicyVo> jqSignList = new ArrayList<>();
+            if(policyByCompanyId.getJqSign() != null && !policyByCompanyId.getJqSign().equals("")) {
+                InsAreaCompanyExternalPolicyVo jqSign = new InsAreaCompanyExternalPolicyVo();
+                jqSign.setUrl(policyByCompanyId.getJqSign());
+                jqSign.setName(policyByCompanyId.getJqPolicy().replaceAll("/", "_"));
+                jqSignList.add(jqSign);
+            }
+            insOrdersEditingVo.setJqSignList(jqSignList);
+        }
+
         List<InsAreaCompanyQueryDto> insAreaCompanyQueryDtos = insAreaCompanyService.getByOrderNo(orderNo);
         List<InsOrdersEditingVo.InsAreaCompanyEditingDto> insAreaCompanyEditingDtos =
                 insAreaCompanyQueryDtos.stream().map(InsOrdersEditingVo.InsAreaCompanyEditingDto::new).collect(Collectors.toList());
 
         List<String> companyIds = insAreaCompanyEditingDtos.stream().map(x -> x.getCompanyId()).collect(Collectors.toList());
 
+        InsAreaCompanyExternalFee insAreaCompanyExternalFee = insAreaCompanyExternalFeeService.getById(insAreaCompanyList.get(0).getId());
+
         List<InsFeeOrderNew> insFeeOrderNews = new ArrayList<>();
         if(!companyIds.isEmpty()) {
             insFeeOrderNews = insFeeOrderNewService.getInsFeeOrderNewListByCompanyId(companyIds);
         }
 
+        if(insFeeOrderNews.size() > 0){
+            if(insFeeOrderNews.get(0).getJqCostsProportion().compareTo(BigDecimal.ZERO) > 0 ||
+                    insFeeOrderNews.get(0).getJqOtherCostsProportion().compareTo(BigDecimal.ZERO) > 0){
+                insOrdersEditingVo.setJqCostsProportion(insAreaCompanyExternalFee.getJqSuperviseCostsProportion().add(insAreaCompanyExternalFee.getJqOtherCostsProportion()));
+            }
+            if(insFeeOrderNews.get(0).getSyCostsProportion().compareTo(BigDecimal.ZERO) > 0 ||
+                    insFeeOrderNews.get(0).getSyOtherCostsProportion().compareTo(BigDecimal.ZERO) > 0){
+                insOrdersEditingVo.setSyCostsProportion(insAreaCompanyExternalFee.getSySuperviseCostsProportion().add(insAreaCompanyExternalFee.getSyOtherCostsProportion()));
+            }
+            if(insFeeOrderNews.get(0).getNoCostsProportion().compareTo(BigDecimal.ZERO) > 0 ||
+                    insFeeOrderNews.get(0).getNoOtherCostsProportion().compareTo(BigDecimal.ZERO) > 0){
+                insOrdersEditingVo.setNoCostsProportion(insAreaCompanyExternalFee.getNoSuperviseCostsProportion().add(insAreaCompanyExternalFee.getNoOtherCostsProportion()));
+            }
+        }
+
         //计算费用
         insFeeOrderNews.forEach(insFeeOrderNew -> {
             SubOrderExportFeeVo subOrderExportFeeVo = costsCalcService.getExportFee(insFeeOrderNew);