InsOrdersController.java 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. package com.ydtech.modules.order.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.ydtech.aop.request.RequestSingleParam;
  4. import com.ydtech.core.page.HttpResult;
  5. import com.ydtech.exception.SystemException;
  6. import com.ydtech.modules.base.controller.BaseController;
  7. import com.ydtech.modules.order.components.InsOrdersComponents;
  8. import com.ydtech.modules.order.entity.BasePageResult;
  9. import com.ydtech.modules.order.entity.InsAccidentalDriving;
  10. import com.ydtech.modules.order.entity.InsAreaCompany;
  11. import com.ydtech.modules.order.entity.InsOrders;
  12. import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
  13. import com.ydtech.modules.order.entity.vo.*;
  14. import com.ydtech.modules.order.service.InsAccidentalDrivingService;
  15. import com.ydtech.modules.order.service.InsAreaCompanyService;
  16. import com.ydtech.modules.order.service.InsOrdersService;
  17. import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
  18. import com.ydtech.utils.StringUtils;
  19. import io.swagger.annotations.Api;
  20. import io.swagger.annotations.ApiOperation;
  21. import org.springframework.beans.BeanUtils;
  22. import org.springframework.util.ObjectUtils;
  23. import org.springframework.validation.annotation.Validated;
  24. import org.springframework.web.bind.annotation.*;
  25. import javax.validation.Valid;
  26. import java.util.List;
  27. import java.util.stream.Collectors;
  28. @Api(tags = "订单")
  29. @RequestMapping("/insurance/order")
  30. @RestController
  31. public class InsOrdersController extends BaseController {
  32. private final InsOrdersService insOrdersService;
  33. private final InsAreaCompanyService insAreaCompanyService;
  34. private final InsOrdersComponents insOrdersComponents;
  35. private final InsAccidentalDrivingService insAccidentalDrivingService;
  36. public InsOrdersController(InsAreaCompanyService insAreaCompanyService, InsOrdersService insOrdersService,
  37. InsOrdersComponents insOrdersComponents, InsAccidentalDrivingService insAccidentalDrivingService) {
  38. this.insAreaCompanyService = insAreaCompanyService;
  39. this.insOrdersService = insOrdersService;
  40. this.insOrdersComponents = insOrdersComponents;
  41. this.insAccidentalDrivingService = insAccidentalDrivingService;
  42. }
  43. @GetMapping("/getAgreementInsCompany")
  44. @ApiOperation(value = "获取协议报价保险公司")
  45. public HttpResult<List<PtlAgreementInsCompanyDto>> getAgreementInsCompany(@RequestParam(required = false) String deptId) {
  46. if (StringUtils.isEmpty(deptId)) {
  47. deptId = getDeptId();
  48. }
  49. return this.insOrdersService.getAgreementInsCompany(deptId);
  50. }
  51. @PostMapping("/generateOrder")
  52. @ApiOperation(value = "生成订单")
  53. public HttpResult<InsOrders> generateOrder(@Validated @RequestBody BaseQuoteInfoVo quoteInfoVo) {
  54. String userId = getUserId();
  55. InsOrders insOrders = this.insOrdersService.generateOrder(userId, quoteInfoVo);
  56. return HttpResult.ok("success", insOrders);
  57. }
  58. @PostMapping("/getByOrderNo")
  59. @ApiOperation(value = "通过订单ID查询订单信息")
  60. public HttpResult<BaseQuoteInfoVo> getByOrderNo(@RequestSingleParam(value = "orderNo") String orderNo) {
  61. BaseQuoteInfoVo quoteInfo = insOrdersComponents.getQuoteInfo(orderNo);
  62. return HttpResult.ok("success", quoteInfo);
  63. }
  64. @PostMapping("/revise")
  65. @ApiOperation(value = "查询订单和子订单")
  66. public HttpResult<InsOrdersEditingVo> revise(@RequestSingleParam(value = "orderNo") String orderNo) {
  67. InsOrdersEditingVo insOrders = this.insOrdersService.revise(orderNo);
  68. return HttpResult.ok("success", insOrders);
  69. }
  70. @PostMapping("/queryPageOrder")
  71. @ApiOperation(value = "[1]分页查询订单接口")
  72. public HttpResult<BasePageResult<InsOrders>> queryPageOrder(@RequestBody @Valid OrderQueryVo orderQueryVo) {
  73. BasePageResult<InsOrders> quoteResult = this.insOrdersService.queryPageOrder(orderQueryVo);
  74. return HttpResult.ok("success", quoteResult);
  75. }
  76. @PostMapping("/querySuborder")
  77. @ApiOperation(value = "[2]通过订单号查询子订单")
  78. public HttpResult<List<InsAreaCompanyQueryDto>> querySuborder(@RequestSingleParam(value = "orderNo") String orderNo) {
  79. List<InsAreaCompanyQueryDto> quoteResult = this.insOrdersService.querySuborder(orderNo);
  80. return HttpResult.ok("success", quoteResult);
  81. }
  82. @PostMapping("/queryInsAreaCompany")
  83. @ApiOperation(value = "通过主订单ID查询子订单")
  84. public HttpResult<List<InsAreaCompany>> queryInsAreaCompany(@RequestSingleParam(value = "orderNo") String orderNo) {
  85. this.insOrdersService.existOrder(orderNo);
  86. List<InsAreaCompany> insAreaCompanies = this.insAreaCompanyService.lambdaQuery().eq(InsAreaCompany::getOrderno, orderNo).list();
  87. return HttpResult.ok("success", insAreaCompanies);
  88. }
  89. @PostMapping("/queryQuoteHistory")
  90. @ApiOperation(value = "查询报价历史")
  91. public HttpResult<List<InsAreaCompanyHistoryVo>> queryQuoteHistory(@RequestBody QuoteHistoryVo quoteHistoryVo) {
  92. InsOrders insOrders = this.insOrdersService.existOrder(quoteHistoryVo.getOrderNo());
  93. LambdaQueryWrapper<InsAreaCompany> wrapper = new LambdaQueryWrapper<>();
  94. wrapper.eq(!ObjectUtils.isEmpty(quoteHistoryVo.getOrderNo()), InsAreaCompany::getOrderno, quoteHistoryVo.getOrderNo())
  95. .eq(!ObjectUtils.isEmpty(quoteHistoryVo.getOrderStatus()), InsAreaCompany::getOrderstatus, quoteHistoryVo.getOrderStatus())
  96. .orderByAsc(InsAreaCompany::getCreatetime);
  97. List<InsAreaCompany> insAreaCompanies = this.insAreaCompanyService.getBaseMapper().selectList(wrapper);
  98. List<InsAreaCompanyHistoryVo> collect = insAreaCompanies.stream().map(a -> {
  99. InsAreaCompanyHistoryVo insAreaCompanyHistoryVo = new InsAreaCompanyHistoryVo();
  100. BeanUtils.copyProperties(a, insAreaCompanyHistoryVo);
  101. insAreaCompanyHistoryVo.setLicenseno(insOrders.getLicenseno());
  102. insAreaCompanyHistoryVo.setUserName(insOrders.getUsername());
  103. insAreaCompanyHistoryVo.setUserId(insOrders.getUserid());
  104. return insAreaCompanyHistoryVo;
  105. }).collect(Collectors.toList());
  106. return HttpResult.ok("success", collect);
  107. }
  108. @PostMapping("/getByCompanyId")
  109. @ApiOperation(value = "通过子订单查询订单信息")
  110. public HttpResult<OrderVo> getByCompanyId(@RequestSingleParam(value = "companyId") String companyId) {
  111. String userId = getUserId();
  112. return this.insOrdersService.getByCompanyId(companyId,userId);
  113. }
  114. @PostMapping("/getAccidentalDriving")
  115. @ApiOperation(value = "获取驾意险")
  116. public HttpResult<List<InsAccidentalDriving>> getAccidentalDriving(@RequestBody @Valid AccidentalDrivingQueryVo accidentalDrivingVo) {
  117. LambdaQueryWrapper<InsAccidentalDriving> wrapper = new LambdaQueryWrapper<>();
  118. wrapper.eq(InsAccidentalDriving::getCompanyCode, accidentalDrivingVo.getCompanyCode())
  119. .and(i -> i.eq(InsAccidentalDriving::getSeatNumMax, accidentalDrivingVo.getSeatNum())
  120. .or(j -> j.le(InsAccidentalDriving::getSeatNumMax, accidentalDrivingVo.getSeatNum())
  121. .ge(InsAccidentalDriving::getSeatNumMax, accidentalDrivingVo.getSeatNum())));
  122. List<InsAccidentalDriving> insAccidentalDrivings = insAccidentalDrivingService.list(wrapper);
  123. if (insAccidentalDrivings.isEmpty()) {
  124. throw new SystemException("查询结果为空");
  125. }
  126. return HttpResult.ok(insAccidentalDrivings);
  127. }
  128. @PostMapping("/verifyOrders")
  129. @ApiOperation(value = "验证近期是否出过单")
  130. public HttpResult<InsOrders> verifyOrders(@RequestBody VerifyOrdersVo verifyOrdersVo) {
  131. return insOrdersService.verifyOrders(verifyOrdersVo);
  132. }
  133. }