InsOrdersController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. package com.ydtech.modules.order.controller;
  2. import cn.keking.anti_reptile.annotation.AntiReptile;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.ydtech.aop.request.RequestSingleParam;
  5. import com.ydtech.core.page.HttpResult;
  6. import com.ydtech.exception.SystemException;
  7. import com.ydtech.modules.base.controller.BaseController;
  8. import com.ydtech.modules.ins.model.InsOrdersExcelVo;
  9. import com.ydtech.modules.order.components.InsOrdersComponents;
  10. import com.ydtech.modules.order.constants.OrderLinkTypeConstants;
  11. import com.ydtech.modules.order.entity.BasePageResult;
  12. import com.ydtech.modules.order.entity.InsAccidentalDriving;
  13. import com.ydtech.modules.order.entity.InsAreaCompany;
  14. import com.ydtech.modules.order.entity.InsOrders;
  15. import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
  16. import com.ydtech.modules.order.entity.vo.*;
  17. import com.ydtech.modules.order.service.InsAccidentalDrivingService;
  18. import com.ydtech.modules.order.service.InsAreaCompanyService;
  19. import com.ydtech.modules.order.service.InsOrdersService;
  20. import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
  21. import com.ydtech.utils.StringUtils;
  22. import io.swagger.annotations.Api;
  23. import io.swagger.annotations.ApiOperation;
  24. import org.springframework.beans.BeanUtils;
  25. import org.springframework.util.ObjectUtils;
  26. import org.springframework.validation.annotation.Validated;
  27. import org.springframework.web.bind.annotation.*;
  28. import javax.validation.Valid;
  29. import java.util.List;
  30. import java.util.stream.Collectors;
  31. @Api(tags = "订单")
  32. @RequestMapping("/insurance/order")
  33. @RestController
  34. public class InsOrdersController extends BaseController {
  35. private final InsOrdersService insOrdersService;
  36. private final InsAreaCompanyService insAreaCompanyService;
  37. private final InsOrdersComponents insOrdersComponents;
  38. private final InsAccidentalDrivingService insAccidentalDrivingService;
  39. public InsOrdersController(InsAreaCompanyService insAreaCompanyService, InsOrdersService insOrdersService,
  40. InsOrdersComponents insOrdersComponents, InsAccidentalDrivingService insAccidentalDrivingService) {
  41. this.insAreaCompanyService = insAreaCompanyService;
  42. this.insOrdersService = insOrdersService;
  43. this.insOrdersComponents = insOrdersComponents;
  44. this.insAccidentalDrivingService = insAccidentalDrivingService;
  45. }
  46. @GetMapping("/getAgreementInsCompany")
  47. @ApiOperation(value = "获取协议报价保险公司")
  48. public HttpResult<List<PtlAgreementInsCompanyDto>> getAgreementInsCompany(@RequestParam(required = false) String deptId) {
  49. if (StringUtils.isEmpty(deptId)) {
  50. deptId = getDeptId();
  51. }
  52. String userId = getUserId();
  53. return this.insOrdersService.getAgreementInsCompany(deptId, userId);
  54. }
  55. @PostMapping("/generateOrder")
  56. @ApiOperation(value = "生成订单")
  57. public HttpResult<InsOrders> generateOrder(@Validated @RequestBody BaseQuoteInfoVo quoteInfoVo) {
  58. String userId = getUserId();
  59. InsOrders insOrders = this.insOrdersService.generateOrder(userId, quoteInfoVo);
  60. return HttpResult.ok("success", insOrders);
  61. }
  62. @PostMapping("/getByOrderNo")
  63. @ApiOperation(value = "通过订单ID查询订单信息")
  64. public HttpResult<BaseQuoteInfoVo> getByOrderNo(@RequestSingleParam(value = "orderNo") String orderNo) {
  65. BaseQuoteInfoVo quoteInfo = insOrdersComponents.getQuoteInfo(orderNo);
  66. return HttpResult.ok("success", quoteInfo);
  67. }
  68. @PostMapping("/revise")
  69. @ApiOperation(value = "查询订单和子订单")
  70. public HttpResult<InsOrdersEditingVo> revise(@RequestSingleParam(value = "orderNo") String orderNo) {
  71. InsOrdersEditingVo insOrders = this.insOrdersService.revise(orderNo);
  72. return HttpResult.ok("success", insOrders);
  73. }
  74. @PostMapping("/queryPageOrder")
  75. @ApiOperation(value = "[1]分页查询订单接口")
  76. public HttpResult<BasePageResult<InsOrders>> queryPageOrder(@RequestBody @Valid OrderQueryVo orderQueryVo) {
  77. BasePageResult<InsOrders> quoteResult = this.insOrdersService.newQueryPageOrder(orderQueryVo);
  78. return HttpResult.ok("success", quoteResult);
  79. }
  80. @PostMapping("/orderExportExcel")
  81. @ApiOperation(value = "订单导出excel接口")
  82. public HttpResult<String> orderExportExcel(@RequestBody InsOrdersExcelVo insOrdersExcelVo) {
  83. return this.insOrdersService.orderExportExcel(insOrdersExcelVo);
  84. }
  85. @PostMapping("/querySuborder")
  86. @ApiOperation(value = "[2]通过订单号查询子订单")
  87. public HttpResult<List<InsAreaCompanyQueryDto>> querySuborder(@RequestSingleParam(value = "orderNo") String orderNo) {
  88. List<InsAreaCompanyQueryDto> quoteResult = this.insOrdersService.querySuborder(orderNo);
  89. return HttpResult.ok("success", quoteResult);
  90. }
  91. @PostMapping("/queryInsAreaCompany")
  92. @ApiOperation(value = "通过主订单ID查询子订单")
  93. public HttpResult<List<InsAreaCompany>> queryInsAreaCompany(@RequestSingleParam(value = "orderNo") String orderNo) {
  94. this.insOrdersService.existOrder(orderNo);
  95. List<InsAreaCompany> insAreaCompanies = this.insAreaCompanyService.lambdaQuery().eq(InsAreaCompany::getOrderno, orderNo).list();
  96. return HttpResult.ok("success", insAreaCompanies);
  97. }
  98. @PostMapping("/queryQuoteHistory")
  99. @ApiOperation(value = "查询报价历史")
  100. public HttpResult<List<InsAreaCompanyHistoryVo>> queryQuoteHistory(@RequestBody QuoteHistoryVo quoteHistoryVo) {
  101. InsOrders insOrders = this.insOrdersService.existOrder(quoteHistoryVo.getOrderNo());
  102. LambdaQueryWrapper<InsAreaCompany> wrapper = new LambdaQueryWrapper<>();
  103. wrapper.eq(!ObjectUtils.isEmpty(quoteHistoryVo.getOrderNo()), InsAreaCompany::getOrderno, quoteHistoryVo.getOrderNo()).eq(!ObjectUtils.isEmpty(quoteHistoryVo.getOrderStatus()), InsAreaCompany::getOrderstatus, quoteHistoryVo.getOrderStatus()).orderByDesc(InsAreaCompany::getCreatetime);
  104. List<InsAreaCompany> insAreaCompanies = this.insAreaCompanyService.getBaseMapper().selectList(wrapper);
  105. List<InsAreaCompanyHistoryVo> collect = insAreaCompanies.stream().map(a -> {
  106. InsAreaCompanyHistoryVo insAreaCompanyHistoryVo = new InsAreaCompanyHistoryVo();
  107. BeanUtils.copyProperties(a, insAreaCompanyHistoryVo);
  108. insAreaCompanyHistoryVo.setLicenseno(insOrders.getLicenseno());
  109. insAreaCompanyHistoryVo.setUserName(insOrders.getUsername());
  110. insAreaCompanyHistoryVo.setUserId(insOrders.getUserid());
  111. return insAreaCompanyHistoryVo;
  112. }).collect(Collectors.toList());
  113. return HttpResult.ok("success", collect);
  114. }
  115. @PostMapping("/getByCompanyId")
  116. @ApiOperation(value = "通过子订单查询订单信息")
  117. public HttpResult<OrderVo> getByCompanyId(@RequestSingleParam(value = "companyId") String companyId) {
  118. String userId = getUserId();
  119. return this.insOrdersService.getByCompanyId(companyId, userId);
  120. }
  121. @PostMapping("/getAccidentalDriving")
  122. @ApiOperation(value = "获取驾意险")
  123. public HttpResult<List<InsAccidentalDriving>> getAccidentalDriving(@RequestBody @Valid AccidentalDrivingQueryVo accidentalDrivingVo) {
  124. LambdaQueryWrapper<InsAccidentalDriving> wrapper = new LambdaQueryWrapper<>();
  125. 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())));
  126. List<InsAccidentalDriving> insAccidentalDrivings = insAccidentalDrivingService.list(wrapper);
  127. if (insAccidentalDrivings.isEmpty()) {
  128. throw new SystemException("查询结果为空");
  129. }
  130. return HttpResult.ok(insAccidentalDrivings);
  131. }
  132. @PostMapping("/verifyOrders")
  133. @ApiOperation(value = "验证近期是否出过单")
  134. public HttpResult<InsOrders> verifyOrders(@RequestBody VerifyOrdersVo verifyOrdersVo) {
  135. return insOrdersService.verifyOrders(verifyOrdersVo);
  136. }
  137. @PostMapping("/getPolicyInsuranceReport")
  138. @ApiOperation(value = "分页获取保单清单数据")
  139. public HttpResult<BasePageResult<PolicyInsuranceReportResVo>> getPolicyInsuranceReport(@RequestBody PolicyInsuranceReportReqVo policyInsuranceReportReqVo) {
  140. String userId = getUserId();
  141. BasePageResult<PolicyInsuranceReportResVo> quoteResult = insOrdersService.getPolicyInsuranceReport(policyInsuranceReportReqVo,
  142. userId);
  143. return HttpResult.ok("success", quoteResult);
  144. }
  145. @PostMapping("/exportPolicyInsuranceReport")
  146. @ApiOperation(value = "导出保单清单数据")
  147. public HttpResult<String> exportPolicyInsuranceReport(@RequestBody PolicyInsuranceReportReqVo policyInsuranceReportReqVo) {
  148. String userId = getUserId();
  149. return insOrdersService.exportPolicyInsuranceReport(policyInsuranceReportReqVo, userId);
  150. }
  151. /**
  152. * @version
  153. * @author: hxl
  154. * @Date: 2024/4/17 15:32
  155. * @Description: 添加待客录单查询订单接口
  156. */
  157. @PostMapping("/queryPageHospitalityOrder")
  158. @ApiOperation(value = "通过用户id和订单状态查询待客录单接口+分页")
  159. public HttpResult<BasePageResult<InsOrders>> queryPageHospitalityOrder(@RequestBody OrderQueryVo orderQueryVo) {
  160. if(orderQueryVo.getUserId()==null || "".equals(orderQueryVo.getUserId())){
  161. return HttpResult.error("待客录单人员id不能为空");
  162. }
  163. try{
  164. BasePageResult<InsOrders> quoteResult = this.insOrdersService.queryPageHospitalityOrder(orderQueryVo);
  165. return HttpResult.ok("success", quoteResult);
  166. }catch (Exception e){
  167. return HttpResult.error("查询失败"+e.getMessage());
  168. }
  169. }
  170. /**
  171. * @version
  172. * @author: hxl
  173. * @Date: 2024/4/17 15:32
  174. * @Description: 通过用户id和订单状态查询关联渠道的订单数据+分页
  175. */
  176. @AntiReptile
  177. @PostMapping("/queryPageHospitalityByChannel")
  178. @ApiOperation(value = "通过用户id和订单状态查询关联渠道的订单数据+分页")
  179. public HttpResult<Object> queryPageHospitalityByChannel(@RequestBody OrderQueryVo orderQueryVo) {
  180. if(orderQueryVo.getUserId()==null || "".equals(orderQueryVo.getUserId())){
  181. return HttpResult.error("待客录单人员id不能为空");
  182. }
  183. try{
  184. BasePageResult<InsOrders> quoteResult = this.insOrdersService.queryPageOrderByLinkType(orderQueryVo, OrderLinkTypeConstants.ORDER_LINK_TYPE_CONSTANTS_1.getCode());
  185. return HttpResult.ok("success", quoteResult);
  186. }catch (Exception e){
  187. return HttpResult.error("查询失败"+e.getMessage());
  188. }
  189. }
  190. /**
  191. * @version
  192. * @author: hxl
  193. * @Date: 2024/4/17 15:32
  194. * @Description: 通过用户id和订单状态查询关联代理人的订单数据+分页
  195. */
  196. @AntiReptile
  197. @PostMapping("/queryPageHospitalityLinkagent")
  198. @ApiOperation(value = "通过用户id和订单状态查询关联代理人的订单数据+分页")
  199. public HttpResult<Object> queryPageHospitalityLinkagent(@RequestBody OrderQueryVo orderQueryVo) {
  200. if(orderQueryVo.getUserId()==null || "".equals(orderQueryVo.getUserId())){
  201. return HttpResult.error("待客录单人员id不能为空");
  202. }
  203. try{
  204. BasePageResult<InsOrders> quoteResult = this.insOrdersService.queryPageOrderByLinkType(orderQueryVo,OrderLinkTypeConstants.ORDER_LINK_TYPE_CONSTANTS_2.getCode());
  205. return HttpResult.ok("success", quoteResult);
  206. }catch (Exception e){
  207. return HttpResult.error("查询失败"+e.getMessage());
  208. }
  209. }
  210. /**
  211. * @version
  212. * @author: hxl
  213. * @Date: 2024/4/17 15:32
  214. * @Description: 通过用户id和订单状态查询关联保险公司的订单数据+分页
  215. */
  216. @AntiReptile
  217. @PostMapping("/queryPageHospitalityByInsuranceCompany")
  218. @ApiOperation(value = "通过用户id和订单状态查询关联保险公司的订单数据+分页")
  219. public HttpResult<Object> queryPageHospitalityByInsuranceCompany(@RequestBody OrderQueryVo orderQueryVo) {
  220. if(orderQueryVo.getUserId()==null || "".equals(orderQueryVo.getUserId())){
  221. return HttpResult.error("待客录单人员id不能为空");
  222. }
  223. //if(orderQueryVo.getOrderStatus()==null || "".equals(orderQueryVo.getOrderStatus())){
  224. // return HttpResult.error("订单状态不能为空");
  225. // }
  226. try{
  227. BasePageResult<InsOrders> quoteResult = this.insOrdersService.queryPageOrderByLinkType(orderQueryVo,OrderLinkTypeConstants.ORDER_LINK_TYPE_CONSTANTS_3.getCode());
  228. return HttpResult.ok("success", quoteResult);
  229. }catch (Exception e){
  230. return HttpResult.error("查询失败"+e.getMessage());
  231. }
  232. }
  233. @PostMapping("/getTaskByCompanyId")
  234. @ApiOperation(value = "通过子订单查询订单信息(任务管理)")
  235. public HttpResult<OrderVo> getTaskByCompanyId(@RequestSingleParam(value = "companyId") String companyId) {
  236. String userId = getUserId();
  237. return this.insOrdersService.getTaskByCompanyId(companyId, userId);
  238. }
  239. /**
  240. * @version
  241. * @author: hxl
  242. * @Date: 2024/5/13 8:41
  243. * @Description: 批量更新子订单的险种信息
  244. */
  245. @PostMapping("/updateBatchPruductById")
  246. @ApiOperation(value = "updateBatchPruductById")
  247. public HttpResult updateBatchPruductById() {
  248. return this.insAreaCompanyService.updateBatchPruductById();
  249. }
  250. }