package com.ydtech.modules.order.controller; import cn.keking.anti_reptile.annotation.AntiReptile; 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.ins.model.InsOrdersExcelVo; import com.ydtech.modules.order.components.InsOrdersComponents; import com.ydtech.modules.order.constants.OrderLinkTypeConstants; 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 com.ydtech.utils.StringUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; 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; import java.util.stream.Collectors; @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(@RequestParam(required = false) String deptId) { if (StringUtils.isEmpty(deptId)) { deptId = getDeptId(); } String userId = getUserId(); return this.insOrdersService.getAgreementInsCompany(deptId, userId); } @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) { InsOrdersEditingVo 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.newQueryPageOrder(orderQueryVo); return HttpResult.ok("success", quoteResult); } @PostMapping("/orderExportExcel") @ApiOperation(value = "订单导出excel接口") public HttpResult orderExportExcel(@RequestBody InsOrdersExcelVo insOrdersExcelVo) { return this.insOrdersService.orderExportExcel(insOrdersExcelVo); } @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("/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) { InsOrders insOrders = 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()).orderByDesc(InsAreaCompany::getCreatetime); List insAreaCompanies = this.insAreaCompanyService.getBaseMapper().selectList(wrapper); List collect = insAreaCompanies.stream().map(a -> { InsAreaCompanyHistoryVo insAreaCompanyHistoryVo = new InsAreaCompanyHistoryVo(); BeanUtils.copyProperties(a, insAreaCompanyHistoryVo); insAreaCompanyHistoryVo.setLicenseno(insOrders.getLicenseno()); insAreaCompanyHistoryVo.setUserName(insOrders.getUsername()); insAreaCompanyHistoryVo.setUserId(insOrders.getUserid()); return insAreaCompanyHistoryVo; }).collect(Collectors.toList()); return HttpResult.ok("success", collect); } @PostMapping("/getByCompanyId") @ApiOperation(value = "通过子订单查询订单信息") public HttpResult getByCompanyId(@RequestSingleParam(value = "companyId") String companyId) { String userId = getUserId(); return this.insOrdersService.getByCompanyId(companyId, userId); } @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); } @PostMapping("/getPolicyInsuranceReport") @ApiOperation(value = "分页获取保单清单数据") public HttpResult> getPolicyInsuranceReport(@RequestBody PolicyInsuranceReportReqVo policyInsuranceReportReqVo) { String userId = getUserId(); BasePageResult quoteResult = insOrdersService.getPolicyInsuranceReport(policyInsuranceReportReqVo, userId); return HttpResult.ok("success", quoteResult); } @PostMapping("/exportPolicyInsuranceReport") @ApiOperation(value = "导出保单清单数据") public HttpResult exportPolicyInsuranceReport(@RequestBody PolicyInsuranceReportReqVo policyInsuranceReportReqVo) { String userId = getUserId(); return insOrdersService.exportPolicyInsuranceReport(policyInsuranceReportReqVo, userId); } /** * @version * @author: hxl * @Date: 2024/4/17 15:32 * @Description: 添加待客录单查询订单接口 */ @PostMapping("/queryPageHospitalityOrder") @ApiOperation(value = "通过用户id和订单状态查询待客录单接口+分页") public HttpResult> queryPageHospitalityOrder(@RequestBody OrderQueryVo orderQueryVo) { if(orderQueryVo.getUserId()==null || "".equals(orderQueryVo.getUserId())){ return HttpResult.error("待客录单人员id不能为空"); } try{ BasePageResult quoteResult = this.insOrdersService.queryPageHospitalityOrder(orderQueryVo); return HttpResult.ok("success", quoteResult); }catch (Exception e){ return HttpResult.error("查询失败"+e.getMessage()); } } /** * @version * @author: hxl * @Date: 2024/4/17 15:32 * @Description: 通过用户id和订单状态查询关联渠道的订单数据+分页 */ @AntiReptile @PostMapping("/queryPageHospitalityByChannel") @ApiOperation(value = "通过用户id和订单状态查询关联渠道的订单数据+分页") public HttpResult queryPageHospitalityByChannel(@RequestBody OrderQueryVo orderQueryVo) { if(orderQueryVo.getUserId()==null || "".equals(orderQueryVo.getUserId())){ return HttpResult.error("待客录单人员id不能为空"); } try{ BasePageResult quoteResult = this.insOrdersService.queryPageOrderByLinkType(orderQueryVo, OrderLinkTypeConstants.ORDER_LINK_TYPE_CONSTANTS_1.getCode()); return HttpResult.ok("success", quoteResult); }catch (Exception e){ return HttpResult.error("查询失败"+e.getMessage()); } } /** * @version * @author: hxl * @Date: 2024/4/17 15:32 * @Description: 通过用户id和订单状态查询关联代理人的订单数据+分页 */ @AntiReptile @PostMapping("/queryPageHospitalityLinkagent") @ApiOperation(value = "通过用户id和订单状态查询关联代理人的订单数据+分页") public HttpResult queryPageHospitalityLinkagent(@RequestBody OrderQueryVo orderQueryVo) { if(orderQueryVo.getUserId()==null || "".equals(orderQueryVo.getUserId())){ return HttpResult.error("待客录单人员id不能为空"); } try{ BasePageResult quoteResult = this.insOrdersService.queryPageOrderByLinkType(orderQueryVo,OrderLinkTypeConstants.ORDER_LINK_TYPE_CONSTANTS_2.getCode()); return HttpResult.ok("success", quoteResult); }catch (Exception e){ return HttpResult.error("查询失败"+e.getMessage()); } } /** * @version * @author: hxl * @Date: 2024/4/17 15:32 * @Description: 通过用户id和订单状态查询关联保险公司的订单数据+分页 */ @AntiReptile @PostMapping("/queryPageHospitalityByInsuranceCompany") @ApiOperation(value = "通过用户id和订单状态查询关联保险公司的订单数据+分页") public HttpResult queryPageHospitalityByInsuranceCompany(@RequestBody OrderQueryVo orderQueryVo) { if(orderQueryVo.getUserId()==null || "".equals(orderQueryVo.getUserId())){ return HttpResult.error("待客录单人员id不能为空"); } //if(orderQueryVo.getOrderStatus()==null || "".equals(orderQueryVo.getOrderStatus())){ // return HttpResult.error("订单状态不能为空"); // } try{ BasePageResult quoteResult = this.insOrdersService.queryPageOrderByLinkType(orderQueryVo,OrderLinkTypeConstants.ORDER_LINK_TYPE_CONSTANTS_3.getCode()); return HttpResult.ok("success", quoteResult); }catch (Exception e){ return HttpResult.error("查询失败"+e.getMessage()); } } @PostMapping("/getTaskByCompanyId") @ApiOperation(value = "通过子订单查询订单信息(任务管理)") public HttpResult getTaskByCompanyId(@RequestSingleParam(value = "companyId") String companyId) { String userId = getUserId(); return this.insOrdersService.getTaskByCompanyId(companyId, userId); } /** * @version * @author: hxl * @Date: 2024/5/13 8:41 * @Description: 批量更新子订单的险种信息 */ @PostMapping("/updateBatchPruductById") @ApiOperation(value = "updateBatchPruductById") public HttpResult updateBatchPruductById() { return this.insAreaCompanyService.updateBatchPruductById(); } }