package com.ydtech.modules.order.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ydtech.aop.request.RequestSingleParam; import com.ydtech.core.page.HttpResult; import com.ydtech.exception.SystemException; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.order.components.InsOrdersComponents; import com.ydtech.modules.order.entity.BasePageResult; import com.ydtech.modules.order.entity.InsAccidentalDriving; import com.ydtech.modules.order.entity.InsAreaCompany; import com.ydtech.modules.order.entity.InsOrders; import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto; import com.ydtech.modules.order.entity.vo.*; import com.ydtech.modules.order.service.InsAccidentalDrivingService; import com.ydtech.modules.order.service.InsAreaCompanyService; import com.ydtech.modules.order.service.InsOrdersService; import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; @Api(tags = "订单") @RequestMapping("/insurance/order") @RestController public class InsOrdersController extends BaseController { private final InsOrdersService insOrdersService; private final InsAreaCompanyService insAreaCompanyService; private final InsOrdersComponents insOrdersComponents; private final InsAccidentalDrivingService insAccidentalDrivingService; public InsOrdersController(InsAreaCompanyService insAreaCompanyService, InsOrdersService insOrdersService, InsOrdersComponents insOrdersComponents, InsAccidentalDrivingService insAccidentalDrivingService) { this.insAreaCompanyService = insAreaCompanyService; this.insOrdersService = insOrdersService; this.insOrdersComponents = insOrdersComponents; this.insAccidentalDrivingService = insAccidentalDrivingService; } @GetMapping("/getAgreementInsCompany") @ApiOperation(value = "获取协议报价保险公司") public HttpResult> getAgreementInsCompany() { return this.insOrdersService.getAgreementInsCompany(getDeptId()); } @PostMapping("/generateOrder") @ApiOperation(value = "生成订单") public HttpResult generateOrder(@Validated @RequestBody BaseQuoteInfoVo quoteInfoVo) { String userId = getUserId(); InsOrders insOrders = this.insOrdersService.generateOrder(userId, quoteInfoVo); return HttpResult.ok("success", insOrders); } @PostMapping("/getByOrderNo") @ApiOperation(value = "通过订单ID查询订单信息") public HttpResult getByOrderNo(@RequestSingleParam(value = "orderNo") String orderNo) { BaseQuoteInfoVo quoteInfo = insOrdersComponents.getQuoteInfo(orderNo); return HttpResult.ok("success", quoteInfo); } @PostMapping("/revise") @ApiOperation(value = "查询订单和子订单") public HttpResult revise(@RequestSingleParam(value = "orderNo") String orderNo) { InsOrders insOrders = this.insOrdersService.revise(orderNo); return HttpResult.ok("success", insOrders); } @PostMapping("/queryPageOrder") @ApiOperation(value = "[1]分页查询订单接口") public HttpResult> queryPageOrder(@RequestBody @Valid OrderQueryVo orderQueryVo) { BasePageResult quoteResult = this.insOrdersService.queryPageOrder(orderQueryVo); return HttpResult.ok("success", quoteResult); } @PostMapping("/querySuborder") @ApiOperation(value = "[2]通过订单号查询子订单") public HttpResult> querySuborder(@RequestSingleParam(value = "orderNo") String orderNo) { List quoteResult = this.insOrdersService.querySuborder(orderNo); return HttpResult.ok("success", quoteResult); } @PostMapping("/queryOrders") @ApiOperation(value = "查询订单和子订单") public HttpResult> queryOrders(@RequestBody @Valid OrderQueryVo orderQueryVo) { BasePageResult quoteResult = this.insOrdersService.queryOrders(orderQueryVo); return HttpResult.ok("success", quoteResult); } @PostMapping("/queryInsAreaCompany") @ApiOperation(value = "通过主订单ID查询子订单") public HttpResult> queryInsAreaCompany(@RequestSingleParam(value = "orderNo") String orderNo) { this.insOrdersService.existOrder(orderNo); List insAreaCompanies = this.insAreaCompanyService.lambdaQuery().eq(InsAreaCompany::getOrderno, orderNo).list(); return HttpResult.ok("success", insAreaCompanies); } @PostMapping("/queryQuoteHistory") @ApiOperation(value = "查询报价历史") public HttpResult> queryQuoteHistory(@RequestBody QuoteHistoryVo quoteHistoryVo) { this.insOrdersService.existOrder(quoteHistoryVo.getOrderNo()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(!ObjectUtils.isEmpty(quoteHistoryVo.getOrderNo()), InsAreaCompany::getOrderno, quoteHistoryVo.getOrderNo()).eq(!ObjectUtils.isEmpty(quoteHistoryVo.getOrderStatus()), InsAreaCompany::getOrderstatus, quoteHistoryVo.getOrderStatus()).orderByAsc(InsAreaCompany::getCreatetime); List insAreaCompanies = this.insAreaCompanyService.getBaseMapper().selectList(wrapper); return HttpResult.ok("success", insAreaCompanies); } @PostMapping("/getByCompanyId") @ApiOperation(value = "通过子订单查询订单信息") public HttpResult getByCompanyId(@RequestSingleParam(value = "companyId") String companyId) { return this.insOrdersService.getByCompanyId(companyId); } @PostMapping("/getAccidentalDriving") @ApiOperation(value = "获取驾意险") public HttpResult> getAccidentalDriving(@RequestBody @Valid AccidentalDrivingQueryVo accidentalDrivingVo) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(InsAccidentalDriving::getCompanyCode, accidentalDrivingVo.getCompanyCode()) .and(i -> i.eq(InsAccidentalDriving::getSeatNumMax, accidentalDrivingVo.getSeatNum()) .or(j -> j.le(InsAccidentalDriving::getSeatNumMax, accidentalDrivingVo.getSeatNum()) .ge(InsAccidentalDriving::getSeatNumMax, accidentalDrivingVo.getSeatNum()))); List insAccidentalDrivings = insAccidentalDrivingService.list(wrapper); if (insAccidentalDrivings.isEmpty()) { throw new SystemException("查询结果为空"); } return HttpResult.ok(insAccidentalDrivings); } @PostMapping("/verifyOrders") @ApiOperation(value = "验证近期是否出过单") public HttpResult verifyOrders(@RequestBody VerifyOrdersVo verifyOrdersVo) { return insOrdersService.verifyOrders(verifyOrdersVo); } }