InsOrdersController.java 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. package com.ydtech.modules.order.controller;
  2. import cn.afterturn.easypoi.excel.entity.ExportParams;
  3. import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
  4. import com.alibaba.fastjson.JSON;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  7. import com.ydtech.aop.request.RequestSingleParam;
  8. import com.ydtech.core.page.HttpResult;
  9. import com.ydtech.exception.SystemException;
  10. import com.ydtech.modules.admin.model.SysUserRole;
  11. import com.ydtech.modules.base.controller.BaseController;
  12. import com.ydtech.modules.ins.model.InsOrdersExcel;
  13. import com.ydtech.modules.ins.model.InsOrdersExcelVo;
  14. import com.ydtech.modules.ins.model.vo.res.InsSettleResVo;
  15. import com.ydtech.modules.ins.utils.EasyExcelUtils;
  16. import com.ydtech.modules.ins.utils.ExcelStyleUtil;
  17. import com.ydtech.modules.ins.utils.ExcelUtils2;
  18. import com.ydtech.modules.order.components.InsOrdersComponents;
  19. import com.ydtech.modules.order.entity.BasePageResult;
  20. import com.ydtech.modules.order.entity.InsAccidentalDriving;
  21. import com.ydtech.modules.order.entity.InsAreaCompany;
  22. import com.ydtech.modules.order.entity.InsOrders;
  23. import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
  24. import com.ydtech.modules.order.entity.vo.*;
  25. import com.ydtech.modules.order.service.InsAccidentalDrivingService;
  26. import com.ydtech.modules.order.service.InsAreaCompanyService;
  27. import com.ydtech.modules.order.service.InsOrdersService;
  28. import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
  29. import com.ydtech.utils.StringUtils;
  30. import io.swagger.annotations.Api;
  31. import io.swagger.annotations.ApiOperation;
  32. import org.springframework.beans.BeanUtils;
  33. import org.springframework.beans.factory.annotation.Value;
  34. import org.springframework.util.ObjectUtils;
  35. import org.springframework.validation.annotation.Validated;
  36. import org.springframework.web.bind.annotation.*;
  37. import javax.servlet.http.HttpServletRequest;
  38. import javax.servlet.http.HttpServletResponse;
  39. import javax.validation.Valid;
  40. import java.io.IOException;
  41. import java.text.SimpleDateFormat;
  42. import java.util.Date;
  43. import java.util.List;
  44. import java.util.stream.Collectors;
  45. import static com.alibaba.fastjson.JSON.parseObject;
  46. @Api(tags = "订单")
  47. @RequestMapping("/insurance/order")
  48. @RestController
  49. public class InsOrdersController extends BaseController {
  50. @Value("${upload.file.path}")
  51. private String uploadFilePath;
  52. private final InsOrdersService insOrdersService;
  53. private final InsAreaCompanyService insAreaCompanyService;
  54. private final InsOrdersComponents insOrdersComponents;
  55. private final InsAccidentalDrivingService insAccidentalDrivingService;
  56. public InsOrdersController(InsAreaCompanyService insAreaCompanyService, InsOrdersService insOrdersService,
  57. InsOrdersComponents insOrdersComponents, InsAccidentalDrivingService insAccidentalDrivingService) {
  58. this.insAreaCompanyService = insAreaCompanyService;
  59. this.insOrdersService = insOrdersService;
  60. this.insOrdersComponents = insOrdersComponents;
  61. this.insAccidentalDrivingService = insAccidentalDrivingService;
  62. }
  63. @GetMapping("/getAgreementInsCompany")
  64. @ApiOperation(value = "获取协议报价保险公司")
  65. public HttpResult<List<PtlAgreementInsCompanyDto>> getAgreementInsCompany(@RequestParam(required = false) String deptId) {
  66. if (StringUtils.isEmpty(deptId)) {
  67. deptId = getDeptId();
  68. }
  69. String userId = getUserId();
  70. return this.insOrdersService.getAgreementInsCompany(deptId, userId);
  71. }
  72. @PostMapping("/generateOrder")
  73. @ApiOperation(value = "生成订单")
  74. public HttpResult<InsOrders> generateOrder(@Validated @RequestBody BaseQuoteInfoVo quoteInfoVo) {
  75. String userId = getUserId();
  76. InsOrders insOrders = this.insOrdersService.generateOrder(userId, quoteInfoVo);
  77. return HttpResult.ok("success", insOrders);
  78. }
  79. @PostMapping("/getByOrderNo")
  80. @ApiOperation(value = "通过订单ID查询订单信息")
  81. public HttpResult<BaseQuoteInfoVo> getByOrderNo(@RequestSingleParam(value = "orderNo") String orderNo) {
  82. BaseQuoteInfoVo quoteInfo = insOrdersComponents.getQuoteInfo(orderNo);
  83. return HttpResult.ok("success", quoteInfo);
  84. }
  85. @PostMapping("/revise")
  86. @ApiOperation(value = "查询订单和子订单")
  87. public HttpResult<InsOrdersEditingVo> revise(@RequestSingleParam(value = "orderNo") String orderNo) {
  88. InsOrdersEditingVo insOrders = this.insOrdersService.revise(orderNo);
  89. return HttpResult.ok("success", insOrders);
  90. }
  91. @PostMapping("/queryPageOrder")
  92. @ApiOperation(value = "[1]分页查询订单接口")
  93. public HttpResult<BasePageResult<InsOrders>> queryPageOrder(@RequestBody @Valid OrderQueryVo orderQueryVo) {
  94. BasePageResult<InsOrders> quoteResult = this.insOrdersService.newQueryPageOrder(orderQueryVo);
  95. return HttpResult.ok("success", quoteResult);
  96. }
  97. @PostMapping("/orderExportExcel")
  98. @ApiOperation(value = "订单导出excel接口")
  99. public HttpResult<String> orderExportExcel(@RequestBody InsOrdersExcelVo insOrdersExcelVo){
  100. return this.insOrdersService.orderExportExcel(insOrdersExcelVo);
  101. }
  102. @PostMapping("/querySuborder")
  103. @ApiOperation(value = "[2]通过订单号查询子订单")
  104. public HttpResult<List<InsAreaCompanyQueryDto>> querySuborder(@RequestSingleParam(value = "orderNo") String orderNo) {
  105. List<InsAreaCompanyQueryDto> quoteResult = this.insOrdersService.querySuborder(orderNo);
  106. return HttpResult.ok("success", quoteResult);
  107. }
  108. @PostMapping("/queryInsAreaCompany")
  109. @ApiOperation(value = "通过主订单ID查询子订单")
  110. public HttpResult<List<InsAreaCompany>> queryInsAreaCompany(@RequestSingleParam(value = "orderNo") String orderNo) {
  111. this.insOrdersService.existOrder(orderNo);
  112. List<InsAreaCompany> insAreaCompanies = this.insAreaCompanyService.lambdaQuery().eq(InsAreaCompany::getOrderno, orderNo).list();
  113. return HttpResult.ok("success", insAreaCompanies);
  114. }
  115. @PostMapping("/queryQuoteHistory")
  116. @ApiOperation(value = "查询报价历史")
  117. public HttpResult<List<InsAreaCompanyHistoryVo>> queryQuoteHistory(@RequestBody QuoteHistoryVo quoteHistoryVo) {
  118. InsOrders insOrders = this.insOrdersService.existOrder(quoteHistoryVo.getOrderNo());
  119. LambdaQueryWrapper<InsAreaCompany> wrapper = new LambdaQueryWrapper<>();
  120. wrapper.eq(!ObjectUtils.isEmpty(quoteHistoryVo.getOrderNo()), InsAreaCompany::getOrderno, quoteHistoryVo.getOrderNo())
  121. .eq(!ObjectUtils.isEmpty(quoteHistoryVo.getOrderStatus()), InsAreaCompany::getOrderstatus, quoteHistoryVo.getOrderStatus())
  122. .orderByDesc(InsAreaCompany::getCreatetime);
  123. List<InsAreaCompany> insAreaCompanies = this.insAreaCompanyService.getBaseMapper().selectList(wrapper);
  124. List<InsAreaCompanyHistoryVo> collect = insAreaCompanies.stream().map(a -> {
  125. InsAreaCompanyHistoryVo insAreaCompanyHistoryVo = new InsAreaCompanyHistoryVo();
  126. BeanUtils.copyProperties(a, insAreaCompanyHistoryVo);
  127. insAreaCompanyHistoryVo.setLicenseno(insOrders.getLicenseno());
  128. insAreaCompanyHistoryVo.setUserName(insOrders.getUsername());
  129. insAreaCompanyHistoryVo.setUserId(insOrders.getUserid());
  130. return insAreaCompanyHistoryVo;
  131. }).collect(Collectors.toList());
  132. return HttpResult.ok("success", collect);
  133. }
  134. @PostMapping("/getByCompanyId")
  135. @ApiOperation(value = "通过子订单查询订单信息")
  136. public HttpResult<OrderVo> getByCompanyId(@RequestSingleParam(value = "companyId") String companyId) {
  137. String userId = getUserId();
  138. return this.insOrdersService.getByCompanyId(companyId,userId);
  139. }
  140. @PostMapping("/getAccidentalDriving")
  141. @ApiOperation(value = "获取驾意险")
  142. public HttpResult<List<InsAccidentalDriving>> getAccidentalDriving(@RequestBody @Valid AccidentalDrivingQueryVo accidentalDrivingVo) {
  143. LambdaQueryWrapper<InsAccidentalDriving> wrapper = new LambdaQueryWrapper<>();
  144. wrapper.eq(InsAccidentalDriving::getCompanyCode, accidentalDrivingVo.getCompanyCode())
  145. .and(i -> i.eq(InsAccidentalDriving::getSeatNumMax, accidentalDrivingVo.getSeatNum())
  146. .or(j -> j.le(InsAccidentalDriving::getSeatNumMax, accidentalDrivingVo.getSeatNum())
  147. .ge(InsAccidentalDriving::getSeatNumMax, accidentalDrivingVo.getSeatNum())));
  148. List<InsAccidentalDriving> insAccidentalDrivings = insAccidentalDrivingService.list(wrapper);
  149. if (insAccidentalDrivings.isEmpty()) {
  150. throw new SystemException("查询结果为空");
  151. }
  152. return HttpResult.ok(insAccidentalDrivings);
  153. }
  154. @PostMapping("/verifyOrders")
  155. @ApiOperation(value = "验证近期是否出过单")
  156. public HttpResult<InsOrders> verifyOrders(@RequestBody VerifyOrdersVo verifyOrdersVo) {
  157. return insOrdersService.verifyOrders(verifyOrdersVo);
  158. }
  159. @PostMapping("/getPolicyInsuranceReport")
  160. @ApiOperation(value = "分页获取保单清单数据")
  161. public HttpResult<BasePageResult<PolicyInsuranceReportResVo>> getPolicyInsuranceReport(@RequestBody PolicyInsuranceReportReqVo policyInsuranceReportReqVo) {
  162. String userId = getUserId();
  163. BasePageResult<PolicyInsuranceReportResVo> quoteResult = insOrdersService.getPolicyInsuranceReport(policyInsuranceReportReqVo,userId);
  164. return HttpResult.ok("success", quoteResult);
  165. }
  166. @PostMapping("/exportPolicyInsuranceReport")
  167. @ApiOperation(value = "导出保单清单数据")
  168. public HttpResult<String> exportPolicyInsuranceReport(@RequestBody PolicyInsuranceReportReqVo policyInsuranceReportReqVo) {
  169. String userId = getUserId();
  170. return insOrdersService.exportPolicyInsuranceReport(policyInsuranceReportReqVo,userId);
  171. }
  172. }