package com.ydtech.modules.order.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydtech.constants.enums.InsuranceRisk; import com.ydtech.constants.enums.dict.FeeAuditAuditstatus; import com.ydtech.constants.enums.dict.agreement.ProductsType; 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.InsFeeAudit; import com.ydtech.modules.fnc.service.InsFeeAuditService; import com.ydtech.modules.ins.model.vo.QuoteRespVo; import com.ydtech.modules.order.components.InsOrdersComponents; 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.InsTaskImagesService; import com.ydtech.modules.protocol.entity.po.PtlAgreement; import com.ydtech.modules.protocol.service.PtlAgreementService; import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew; import com.ydtech.modules.protocols.service.PtlAgreementProductCostsNewService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.Objects; import static com.ydtech.modules.base.model.vo.PageVo.buildPageRequest; @Api(tags = "外部订单 api") @RestController @RequestMapping("/api/externalOrder") @RequiredArgsConstructor public class ExternalOrderController { @Autowired private InsAreaCompanyService insAreaCompanyService; @Autowired private InsOrdersComponents insOrdersComponents; @Autowired private InsAreaCompanyExternalPolicyService insAreaCompanyExternalPolicyService; @Autowired private InsTaskImagesService insTaskImagesService; @Autowired private InsFeeAuditService insFeeAuditService; @Autowired private PtlAgreementService ptlAgreementService; @Autowired private PtlAgreementProductCostsNewService ptlAgreementProductCostsNewService; @Autowired private FeeRuleSchemeNewService feeRuleSchemeNewService; @PostMapping("/saveSubOrder") @ApiOperation("保存子订单") public HttpResult saveSubOrder(@RequestBody BaseQuoteVo quoteVo) { BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo(), quoteVo.getAgreementId(),quoteVo.getKinds()); boolean result = this.insAreaCompanyService.saveSubOrder(quoteInfo, quoteVo); String successMsg=""; String errorMsg =""; if(quoteVo.getStageFlag()==1){ successMsg="添加订单成功"; errorMsg="添加订单失败"; }else { successMsg="暂存订单成功"; errorMsg="暂存订单失败"; } return result ? HttpResult.ok(successMsg) : HttpResult.error(errorMsg); } @PostMapping("/updateExternalOrder") @ApiOperation("更新外部订单") public HttpResult updateSubOrder(@RequestBody InsOrdersEditingVo insOrdersEditingVo){ // BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo(), quoteVo.getAgreementId()); if(insOrdersEditingVo.getOrderExternalStatus()==1){ 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); String successMsg=""; String errorMsg =""; if(insOrdersEditingVo.getStageFlag()==1){ successMsg="订单修改成功,重新提交审核!"; errorMsg="订单修改失败"; }else { successMsg="暂存订单成功"; errorMsg="暂存订单失败"; } return result ? HttpResult.ok(successMsg) : HttpResult.error(errorMsg); } /** * 获取证件信息 * @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 getRejectPage(@RequestBody RejectPageQueryVo rejectPageQueryVo){ Page page = buildPageRequest(rejectPageQueryVo.getPageDto()); return HttpResult.ok(insAreaCompanyService.getRejectOrder(page, BaseController.getUser().getId(),rejectPageQueryVo)); } /** * 暂存分页列表 */ @PostMapping("/stagePage") @ApiOperation("暂存分页列表") public HttpResult getStagePage(@RequestBody RejectPageQueryVo rejectPageQueryVo){ Page page = buildPageRequest(rejectPageQueryVo.getPageDto()); return HttpResult.ok(insAreaCompanyService.getStageOrder(page, BaseController.getUser().getId(),rejectPageQueryVo)); } /** * 外部审核通过分页列表 */ @PostMapping("/orderCheckPage") @ApiOperation("外部审核通过分页列表") public HttpResult orderCheckPage(@RequestBody RejectPageQueryVo rejectPageQueryVo){ Page page = buildPageRequest(rejectPageQueryVo.getPageDto()); return HttpResult.ok(insAreaCompanyService.orderCheckPage(page, BaseController.getUser().getId(),rejectPageQueryVo)); } /** * @version * @author: hxl * @Date: 2024/9/18 11:17 * @Description:外部駁回刪除 */ @GetMapping("/orderDelete") @ApiOperation("外部駁回刪除") public HttpResult orderDelete(String id){ if(StringUtils.isBlank(id)){ throw new SystemException("订单号不能为空!!"); } try{ insAreaCompanyService.updateDeleteFalg(id); }catch(Exception e){ return HttpResult.ok("操作失败"); } return HttpResult.ok("操作成功"); } /** * 驳回分页列表 */ @PostMapping("/getAllRejectOrders") @ApiOperation("驳回分页列表") public HttpResult getAllRejectOrders(@RequestBody RejectPageQueryVo rejectPageQueryVo){ Page page = buildPageRequest(rejectPageQueryVo.getPageDto()); return HttpResult.ok(insAreaCompanyService.getAllRejectOrders(page, rejectPageQueryVo)); } /** * 查询外部订单费用 */ @PostMapping("/externalOrderFee") @ApiOperation("外部订单费用") public HttpResult externalOrderFee(@RequestBody ExternalOrderFeeVo externalOrderFeeVo){ //校验是否是外部订单的非现询协议 PtlAgreement ptlAgreement = ptlAgreementService.getById(externalOrderFeeVo.getAgreementId()); ProductsType productsType = InsuranceRisk.determineInsuranceInformation(externalOrderFeeVo.getKinds(), externalOrderFeeVo.getRisks()); externalOrderFeeVo.setProductCode(productsType.getCode()); PtlAgreementProductCostsNew noInquiryNowFee = ptlAgreementProductCostsNewService.getNoInquiryNowFee(externalOrderFeeVo.getAgreementId(), externalOrderFeeVo.getProductCode()); if(Objects.isNull(noInquiryNowFee)){ throw new SystemException("不存在该协议"); } externalOrderFeeVo.blank(); ExternalOrderFeeVo resultExternalOrderFeeVo = feeRuleSchemeNewService.calcCostsExternalExportData(ptlAgreement, noInquiryNowFee, externalOrderFeeVo); return HttpResult.ok(resultExternalOrderFeeVo); } }