785834757 пре 2 година
родитељ
комит
1d4540a919

+ 4 - 1
src/main/java/com/ydtech/constants/enums/dict/FeeAuditAuditstatus.java

@@ -14,7 +14,10 @@ public enum FeeAuditAuditstatus {
 
     PASSED("1","已审核",2,1),
 
-    REJECT("2","驳回",3,1);
+    REJECT("2","驳回",3,1),
+
+    //轨迹中显示 承保信息
+    UNDERWRITING("3","已承保",4,1);
 
     // 编号
     private final String code;

+ 38 - 6
src/main/java/com/ydtech/modules/fnc/controller/CarSettleController.java

@@ -9,6 +9,7 @@ import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.fee.service.FeeRuleSchemeService;
 import com.ydtech.modules.fnc.entity.InsFeeAudit;
 import com.ydtech.modules.fnc.entity.InsFeeAuditHistory;
+import com.ydtech.modules.fnc.entity.vo.ProblemOrderQueryVo;
 import com.ydtech.modules.fnc.service.InsFeeAuditHistoryService;
 import com.ydtech.modules.fnc.service.InsFeeAuditService;
 import com.ydtech.modules.order.entity.BasePageResult;
@@ -25,6 +26,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.ArrayList;
 import java.util.List;
 
 @Api(tags = "财务-车险结算")
@@ -108,12 +110,18 @@ public class CarSettleController extends BaseController {
 
         if (areaList != null && !areaList.isEmpty()) {
             try {
-                if ("1".equals(auditOrderFeeVo.getUpdateFlag())) {
-                    String userId = getUserId();
-                    feeRuleSchemeService.compareAndUpdateFeeOrderInfo(areaList.get(0).getId(), auditOrderFeeVo.getJqCostsProportionStr(),
-                            auditOrderFeeVo.getSyCostsProportionStr(), userId);
+//                if ("1".equals(auditOrderFeeVo.getUpdateFlag())) {
+//                    String userId = getUserId();
+//                    feeRuleSchemeService.compareAndUpdateFeeOrderInfo(areaList.get(0).getId(), auditOrderFeeVo.getJqCostsProportionStr(),
+//                            auditOrderFeeVo.getSyCostsProportionStr(), userId);
+//                }
+                //审核通过
+                if(auditOrderFeeVo.getAuditStatus().equals("1")) {
+                    insFeeAuditService.feeAudit(orderNo, areaList.get(0).getId(), false, FeeAuditAuditstatus.PASSED.getCode());
+                }else if(auditOrderFeeVo.getAuditStatus().equals("0") || auditOrderFeeVo.getAuditStatus().equals("2")) {
+                    insFeeAuditService.saveDefaultInsFeeAuditAndHistory(orderNo, areaList.get(0).getId(),
+                            auditOrderFeeVo.getAuditStatus(), auditOrderFeeVo.getRejectinfo());
                 }
-                insFeeAuditService.feeAudit(orderNo, areaList.get(0).getId(), false,FeeAuditAuditstatus.PASSED.getCode());
             } catch (Exception e) {
                 e.printStackTrace();
                 return HttpResult.error("系统异常");
@@ -129,10 +137,34 @@ public class CarSettleController extends BaseController {
     @GetMapping("/getFeeAuditHistory/{orderno}")
     @ApiOperation(value = "获取费用审核轨迹")
     public HttpResult<List<InsFeeAuditHistory>> getFeeAuditHistory(@PathVariable("orderno") String orderno) {
+        InsAreaCompany underWrittenSubOrder = insAreaCompanyService.getById(orderno);
+        if (underWrittenSubOrder == null) {
+            return HttpResult.error("订单号有误-未承保");
+        }
+        List<InsFeeAuditHistory> list = new ArrayList<>();
+        InsFeeAuditHistory insFeeAuditHistory = new InsFeeAuditHistory();
+        insFeeAuditHistory.setOrderno(underWrittenSubOrder.getOrderno());
+        insFeeAuditHistory.setInsOrderNo(underWrittenSubOrder.getId());
+        insFeeAuditHistory.setInsCompany(underWrittenSubOrder.getInscompany());
+        insFeeAuditHistory.setOperator(underWrittenSubOrder.getUserName());
+        insFeeAuditHistory.setOperatorTime(underWrittenSubOrder.getSigningTime());
+        insFeeAuditHistory.setAuditstatus(FeeAuditAuditstatus.UNDERWRITING.getCode());
+        list.add(insFeeAuditHistory);
         LambdaQueryWrapper<InsFeeAuditHistory> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(InsFeeAuditHistory::getInsOrderNo, orderno);
         wrapper.orderByAsc(InsFeeAuditHistory::getOperatorTime);
-        List<InsFeeAuditHistory> list = insFeeAuditHistoryService.list(wrapper);
+        list.addAll(insFeeAuditHistoryService.list(wrapper));
         return HttpResult.ok("success", list);
     }
+
+    /**
+     * 标注疑问订单
+     * @return
+     */
+    @PostMapping("markProblemOrder")
+    @ApiOperation("标注疑问订单")
+    public HttpResult<Object> markProblemOrder(@RequestBody ProblemOrderQueryVo problemOrderQueryVo){
+        return insAreaCompanyService.markProblemOrder(problemOrderQueryVo) ? HttpResult.ok("标注成功")
+                : HttpResult.error("标注失败");
+    }
 }

+ 4 - 0
src/main/java/com/ydtech/modules/fnc/entity/InsFeeAudit.java

@@ -44,4 +44,8 @@ public class InsFeeAudit implements Serializable {
     @ApiModelProperty("审核人")
     @TableField("audituser")
     private String audituser;
+
+    @ApiModelProperty("驳回详情")
+    @TableField("rejectinfo")
+    private String rejectinfo;
 }

+ 18 - 0
src/main/java/com/ydtech/modules/fnc/entity/vo/ProblemOrderQueryVo.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.fnc.entity.vo;
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "标注疑问订单")
+public class ProblemOrderQueryVo {
+
+    @ApiModelProperty("子订单号")
+    private String subOrder;
+
+    @ApiModelProperty("标注属性")
+    private String problemOrder;
+}

+ 9 - 1
src/main/java/com/ydtech/modules/fnc/service/InsFeeAuditService.java

@@ -27,7 +27,15 @@ public interface InsFeeAuditService extends IService<InsFeeAudit> {
      InsFeeAudit saveInsFeeAuditAndHistory(String orderNo, String insOrderNo, boolean isAutoAudit, String auditstatus);
 
 
-     InsFeeAudit saveDefaultInsFeeAuditAndHistory(String orderNo, String insOrderNo, String auditstatus);
+     /**
+      * 保存审核状态及历史表
+      * @param orderNo
+      * @param insOrderNo
+      * @param auditstatus
+      * @param rejectInfo
+      * @return
+      */
+     InsFeeAudit saveDefaultInsFeeAuditAndHistory(String orderNo, String insOrderNo, String auditstatus, String rejectInfo);
 
 
 

+ 2 - 1
src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java

@@ -808,7 +808,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
     }
 
     @Override
-    public InsFeeAudit saveDefaultInsFeeAuditAndHistory(String orderNo, String insOrderNo, String auditstatus) {
+    public InsFeeAudit saveDefaultInsFeeAuditAndHistory(String orderNo, String insOrderNo, String auditstatus, String rejectInfo) {
         //查询费用审核表
         InsFeeAudit insFeeAudit = getOne(new LambdaQueryWrapper<InsFeeAudit>().eq(InsFeeAudit::getOrderno, orderNo));
 
@@ -824,6 +824,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         } else {
             //状态码为已审核且数据不为空,则更新审核状态
             insFeeAudit.setAuditstatus(auditstatus);
+            insFeeAudit.setRejectinfo(rejectInfo);
             this.update(insFeeAudit, new LambdaUpdateWrapper<InsFeeAudit>().eq(InsFeeAudit::getOrderno, orderNo));
         }
         //复制审核对象的属性

+ 42 - 0
src/main/java/com/ydtech/modules/order/controller/ExternalOrderController.java

@@ -1,21 +1,28 @@
 package com.ydtech.modules.order.controller;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.base.controller.BaseController;
 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.service.InsAreaCompanyExternalPolicyService;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.order.service.InsTaskImagesService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import static com.ydtech.modules.base.model.vo.PageVo.buildPageRequest;
+
 @Api(tags = "外部订单 api")
 @RestController
 @RequestMapping("/api/externalOrder")
@@ -31,6 +38,9 @@ public class ExternalOrderController {
     @Autowired
     private InsAreaCompanyExternalPolicyService insAreaCompanyExternalPolicyService;
 
+    @Autowired
+    private InsTaskImagesService insTaskImagesService;
+
     @PostMapping("/saveSubOrder")
     @ApiOperation("保存子订单")
     public HttpResult<QuoteRespVo> saveSubOrder(@RequestBody BaseQuoteVo<AccidentalDrivingVo> quoteVo) {
@@ -39,9 +49,41 @@ 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("添加订单失败");
+    }
+
+    /**
+     * 获取证件信息
+     * @param quoteNo   报价号
+     * @return
+     */
+    @PostMapping("/getCertificateInfo")
+    @ApiOperation("获取证件信息")
+    public HttpResult getCertificateInfo(String quoteNo){
+        return insTaskImagesService.findByQuoteNo(quoteNo);
+    }
+
+
+
+
     @GetMapping("/getPolicyPrint")
     @ApiOperation("获取保单信息")
     public HttpResult getPolicyPrint(@RequestParam String subOrderNo) {
         return HttpResult.ok(this.insAreaCompanyExternalPolicyService.getPolicyByCompanyId(subOrderNo));
     }
+
+    /**
+     * 驳回分页列表
+     */
+    @PostMapping("/rejectPage")
+    @ApiOperation("驳回分页列表")
+    public HttpResult<Object> getRejectPage(@RequestBody RejectPageQueryVo rejectPageQueryVo){
+        Page page = buildPageRequest(rejectPageQueryVo.getPageDto());
+        return HttpResult.ok(insAreaCompanyService.getRejectOrder(page, BaseController.getUser().getId()));
+    }
 }

+ 8 - 0
src/main/java/com/ydtech/modules/order/dao/InsAreaCompanyMapper.java

@@ -121,6 +121,14 @@ public interface InsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
      *  @Description: 查询总的签单数
      */
     AllpremiumDto getAllpremium(@Param("year") String year,@Param("userId") String userId);
+
+    /**
+     * 获取审核驳回订单
+     * @param page
+     * @param userId
+     * @return
+     */
+    Page<InsAreaCompany> getRejectOrder(Page page,@Param("userId") String userId);
 }
 
 

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

@@ -447,6 +447,12 @@ public class InsAreaCompany implements Serializable {
     @TableField("sy_claims")
     private String syClaims;
 
+    /**
+     * 疑问订单标注
+     */
+    @TableField("problem_order")
+    private String problemOrder;
+
     /**
      * 非车信息
      */

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

@@ -86,6 +86,9 @@ public class InsOrders implements Serializable {
     @TableField(value = "operatorid")
     private String operatorid;
 
+    @TableField(exist = false)
+    private String operatorName;
+
     /**
      * 用户名称
      */
@@ -266,6 +269,9 @@ public class InsOrders implements Serializable {
     @TableField(exist = false)
     private String taxamount;
 
+    @TableField(exist = false)
+    private String problemOrder;
+
     public InsOrders(SysUser user, SysDept dept, BaseQuoteInfoVo quoteInfoVo) {
         // 2. 组装订单
         this.setQuoteno(String.valueOf(quoteInfoVo.getQuoteno()));

+ 6 - 0
src/main/java/com/ydtech/modules/order/entity/vo/AuditOrderFeeVo.java

@@ -24,4 +24,10 @@ public class AuditOrderFeeVo {
     @ApiModelProperty(value = "是否修改过 修改:1 未修改:0")
     private String updateFlag;
 
+    @ApiModelProperty(value = "审核状态")
+    private String auditStatus;
+
+    @ApiModelProperty(value = "驳回消息")
+    private String rejectinfo;
+
 }

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

@@ -73,6 +73,15 @@ public class BaseQuoteVo<T> {
     @ApiModelProperty("交强电子标志")
     private String jqSign;
 
+    @ApiModelProperty("评分")
+    private String score;
+
+    @ApiModelProperty("交强续保")
+    private String jqRenewal;
+
+    @ApiModelProperty("商业续保")
+    private String syRenewal;
+
 
     @ApiModelProperty("商业保单号")
     private String sypolicyno;

+ 3 - 0
src/main/java/com/ydtech/modules/order/entity/vo/OrderQueryVo.java

@@ -139,6 +139,9 @@ public class OrderQueryVo {
     @ApiModelProperty(value = "支付结束时间")
     private String payEndDateStr;
 
+    @ApiModelProperty(value = "是否外部订单")
+    private String isExternal;
+
 
     public LocalDate getEndDatePlusOneDay() {
         if(ObjectUtils.isEmpty(endDate)){

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

@@ -0,0 +1,9 @@
+package com.ydtech.modules.order.entity.vo;
+
+import com.ydtech.core.page.PageRequest;
+import lombok.Data;
+
+@Data
+public class RejectPageQueryVo extends PageRequest {
+
+}

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

@@ -3,6 +3,7 @@ package com.ydtech.modules.order.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.fnc.entity.vo.ProblemOrderQueryVo;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsAreaCompanyAccidentalDriving;
 import com.ydtech.modules.order.entity.InsAreaCompanyPosition;
@@ -133,4 +134,25 @@ public interface InsAreaCompanyService extends IService<InsAreaCompany> {
      * @return
      */
     boolean saveSubOrder(BaseQuoteInfoVo quoteInfo, BaseQuoteVo<AccidentalDrivingVo> quoteVo);
+
+    /**
+     * 根据订单id 获取已承保的子订单信息
+     * @param orderno
+     * @return
+     */
+    InsAreaCompany getUnderWrittenSubOrder(String orderno);
+
+    /**
+     * 标注疑问订单
+     * @param problemOrderQueryVo
+     * @return
+     */
+    boolean markProblemOrder(ProblemOrderQueryVo problemOrderQueryVo);
+
+    /**
+     * 获取审核驳回订单
+     * @param userId
+     * @return
+     */
+    Page<InsAreaCompany> getRejectOrder(Page page,String userId);
 }

+ 55 - 2
src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java

@@ -11,6 +11,7 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.fee.service.FeeRuleSchemeNewService;
+import com.ydtech.modules.fnc.entity.vo.ProblemOrderQueryVo;
 import com.ydtech.modules.fnc.service.InsFeeAuditService;
 import com.ydtech.modules.ins.model.vo.KindInfoVo;
 import com.ydtech.modules.ins.model.vo.RiskInfoVo;
@@ -115,7 +116,7 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
         }else if(ptlAgreement.getAuditType() == 1 && insAreaCompany.getOrderstatus().equals(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode()))
         {
             //添加默认审核 添加审核表及轨迹信息
-            insFeeAuditService.saveDefaultInsFeeAuditAndHistory(insAreaCompany.getOrderno(), insAreaCompany.getId(), FeeAuditAuditstatus.UNREVICEWED.getCode());
+            insFeeAuditService.saveDefaultInsFeeAuditAndHistory(insAreaCompany.getOrderno(), insAreaCompany.getId(), FeeAuditAuditstatus.UNREVICEWED.getCode(),null);
         }
 
         //添加订单消息
@@ -486,6 +487,16 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
 
         validQuoteVo(quoteVo);
 
+        //校验  保单号
+        LambdaQueryWrapper<InsAreaCompany> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(InsAreaCompany::getJqpolicyno,quoteVo.getJqpolicyno())
+                .or()
+                .eq(InsAreaCompany::getSypolicyno,quoteVo.getSypolicyno());
+        List<InsAreaCompany> list = this.list(queryWrapper);
+        if(list.size() > 0){
+            throw new SystemException("已存在订单");
+        }
+
         InsOrders insOrders = insOrdersService.getById(quoteInfo.getOrderNo());
         PtlAgreement byAgreementIdNew = ptlAgreementService.getByAgreementIdNew(quoteVo.getAgreementId());
         quoteVo = checkQuoteVo(quoteVo);
@@ -523,6 +534,10 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
         insAreaCompany.setSyStartDate(insOrders.getSystartdate());
         insAreaCompany.setSyEndDate(insOrders.getSyenddate());
 
+        insAreaCompany.setJqRenewal(quoteVo.getJqRenewal());
+        insAreaCompany.setSyRenewal(quoteVo.getSyRenewal());
+        insAreaCompany.setScore(quoteVo.getScore());
+
         //设置为已承保状态
         insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
         insAreaCompany.setCompanyId(byAgreementIdNew.getInsuranceCompanyId());
@@ -626,10 +641,48 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
         feeRuleSchemeNewService.calcCostsExternal(costsNews.get(0),insAreaCompany);
 
         //审核表数据插入
-        insFeeAuditService.saveDefaultInsFeeAuditAndHistory(insAreaCompany.getOrderno(), insAreaCompany.getId(), FeeAuditAuditstatus.UNREVICEWED.getCode());
+        insFeeAuditService.saveDefaultInsFeeAuditAndHistory(insAreaCompany.getOrderno(), insAreaCompany.getId(), FeeAuditAuditstatus.UNREVICEWED.getCode(),null);
 
         return true;
     }
+
+    /**
+     * 根据订单id 获取已承保的子订单信息
+     * @param orderno
+     * @return
+     */
+    @Override
+    public InsAreaCompany getUnderWrittenSubOrder(String orderno) {
+        LambdaQueryWrapper<InsAreaCompany> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(InsAreaCompany::getOrderno,orderno);
+        queryWrapper.eq(InsAreaCompany::getOrderstatus,InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
+        return this.getOne(queryWrapper);
+    }
+
+    /**
+     * 标注疑问订单
+     * @param problemOrderQueryVo
+     * @return
+     */
+    @Override
+    public boolean markProblemOrder(ProblemOrderQueryVo problemOrderQueryVo) {
+        LambdaQueryWrapper<InsAreaCompany> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(InsAreaCompany::getId,problemOrderQueryVo.getSubOrder());
+        InsAreaCompany insAreaCompany = this.getOne(queryWrapper);
+        if(insAreaCompany == null){
+            throw new SystemException("订单不存在");
+        }
+        insAreaCompany.setProblemOrder(problemOrderQueryVo.getProblemOrder());
+        return this.updateById(insAreaCompany);
+    }
+
+    @Override
+    public Page<InsAreaCompany> getRejectOrder(Page page,String userId) {
+        Page<InsAreaCompany> rejectOrder = baseMapper.getRejectOrder(page, userId);
+        return rejectOrder;
+    }
+
+
 }
 
 

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

@@ -161,7 +161,9 @@
         iac.sy_end_date as syenddate,
         io.vehicle_and_vessel_tax,
         io.operatorid,
+        iac.operator_name,
         sd.management_source,
+        iac.problem_order,
         CASE ifa.audituser
         WHEN '自动审核' THEN ifa.audituser
         ELSE su2.name END
@@ -259,6 +261,10 @@
         <if test="params.payStartDateStr != null and params.payStartDateStr != '' and params.payEndDateStr != null and params.payEndDateStr != ''">
             and DATE_FORMAT(iac.pay_date, '%Y-%m-%d') between #{params.payStartDateStr} AND #{params.payEndDateStr}
         </if>
+
+        <if test="params.isExternal != null and params.isExternal != ''">
+            and iac.is_external = #{params.isExternal}
+        </if>
         order by iac.createtime desc
     </select>
 
@@ -642,4 +648,17 @@
                 and io.userid=#{userId}
                 AND YEAR (iac.createtime) = #{year}
     </select>
+
+    <select id="getRejectOrder" resultType="com.ydtech.modules.order.entity.InsAreaCompany">
+        select
+            *
+        FROM
+            ins_fee_audit ifa
+        LEFT JOIN
+            ins_area_company iac on iac.id = ifa.ins_order_no
+        WHERE
+            iac.operator_id = #{userId}
+        AND
+            ifa.auditstatus = 2
+    </select>
 </mapper>