package com.ydtech.modules.order.controller; import com.ydtech.constants.enums.dict.InsOrderStatusEnum; import com.ydtech.core.page.HttpResult; import com.ydtech.exception.SystemException; import com.ydtech.modules.admin.model.SysUser; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.order.entity.InsAreaCompany; import com.ydtech.modules.order.entity.InsOrdersTrack; import com.ydtech.modules.order.service.InsAreaCompanyService; import com.ydtech.modules.order.service.InsOrderQrCodeService; import com.ydtech.modules.order.service.InsOrdersTrackService; import com.ydtech.modules.order.service.InsuranceCompanyPolymerizationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/subOrder") @Api(tags = "子订单") @Slf4j @RequiredArgsConstructor public class InsAreaCompanyController { private final InsAreaCompanyService insAreaCompanyService; private final InsOrdersTrackService insOrdersTrackService; private final InsOrderQrCodeService insOrderQrCodeService; private final InsuranceCompanyPolymerizationService insuranceCompanyPolymerizationService; @GetMapping("/statusInquiry/{subOrderNo}") @ApiOperation("状态查询") public HttpResult statusInquiry(@PathVariable String subOrderNo) { InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(subOrderNo); return HttpResult.ok(insAreaCompany.getOrderstatus()); } @GetMapping("/close/{subOrderNo}") @ApiOperation("关闭订单") public HttpResult close(@PathVariable String subOrderNo) { InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(subOrderNo); if (InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insAreaCompany.getOrderstatus())) { throw new SystemException("已承保订单不允许关闭"); } insAreaCompany.setDelFlag("0"); insAreaCompanyService.updateById(insAreaCompany); return HttpResult.ok(); } @GetMapping("/cancelUnderwriting/{subOrderNo}") @ApiOperation("取消核保") public HttpResult cancelUnderwriting(@PathVariable String subOrderNo) { InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(subOrderNo); if (InsOrderStatusEnum.WAIT_PAY.getCode().equals(insAreaCompany.getOrderstatus())) { insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode()); insAreaCompanyService.updateById(insAreaCompany); // 撤销二维码 insOrderQrCodeService.updateQrCode(insAreaCompany.getId(), 0); return HttpResult.ok(); } throw new SystemException("只有[已核保待缴费]状态下允许取消核保"); } @GetMapping("/statusRestored/{subOrderNo}") @ApiOperation("恢复核保状态") @Transactional public HttpResult statusRestored(@PathVariable String subOrderNo) { InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(subOrderNo); if (InsOrderStatusEnum.QUOTE_ING.getCode().equals(insAreaCompany.getOrderstatus())) { SysUser user = BaseController.getUser(); List list = insOrdersTrackService.lambdaQuery().eq(InsOrdersTrack::getOrderStatus, InsOrderStatusEnum.WAIT_PAY.getCode()).list(); if (!list.isEmpty()) { insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode()); InsOrdersTrack insOrdersTrack = new InsOrdersTrack(insAreaCompany, user.getId(), user.getName()); insAreaCompanyService.updateById(insAreaCompany); insOrdersTrackService.save(insOrdersTrack); insuranceCompanyPolymerizationService.cancelOrder(insAreaCompany); return HttpResult.ok(); } throw new SystemException("此订单未到达已核保待缴费,无法跟新状态"); } throw new SystemException("订单状态无法恢复"); } }