package com.ydtech.modules.order.controller; import cn.keking.anti_reptile.annotation.AntiReptile; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydtech.aop.request.RequestSingleParam; import com.ydtech.core.page.HttpResult; import com.ydtech.exception.SystemException; import com.ydtech.modules.admin.model.SysUser; import com.ydtech.modules.admin.model.po.SysUserIsDial; import com.ydtech.modules.admin.service.SysUserIsDialService; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.ins.model.InsOrdersExcelVo; import com.ydtech.modules.inv.utils.EasyExcelUtils; import com.ydtech.modules.order.components.InsOrdersComponents; import com.ydtech.modules.order.constants.OrderLinkTypeConstants; import com.ydtech.modules.order.entity.*; import com.ydtech.modules.order.entity.dto.InquiryDetalsQueryDto; import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto; import com.ydtech.modules.order.entity.vo.*; import com.ydtech.modules.order.service.*; 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.beans.factory.annotation.Value; import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; 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; private final SysUserIsDialService sysUserIsDialService; private final BatchOrderService batchOrderService; private final InsAreaCompanyPositionService insAreaCompanyPositionService; @Value("${upload.file.path}") private String uploadPath; @Value("${upload.file.url}") private String uploadUrl; public InsOrdersController(InsAreaCompanyService insAreaCompanyService, InsOrdersService insOrdersService, InsOrdersComponents insOrdersComponents, InsAccidentalDrivingService insAccidentalDrivingService, SysUserIsDialService sysUserIsDialService, BatchOrderService batchOrderService, InsAreaCompanyPositionService insAreaCompanyPositionService) { this.insAreaCompanyService = insAreaCompanyService; this.insOrdersService = insOrdersService; this.insOrdersComponents = insOrdersComponents; this.insAccidentalDrivingService = insAccidentalDrivingService; this.sysUserIsDialService = sysUserIsDialService; this.batchOrderService = batchOrderService; this.insAreaCompanyPositionService = insAreaCompanyPositionService; } @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) { SysUser user = getUser(); InsOrders insOrders = this.insOrdersService.generateOrder(user, 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{ //前台传的部门不对赋值null orderQueryVo.setDeptId(null); 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: 批量更新子订单的险种信息 */ @GetMapping("/updateBatchPruductById") @ApiOperation(value = "批量更新子订单的险种信息") public HttpResult updateBatchPruductById( String subOrderId) { return this.insAreaCompanyService.updateBatchPruductById(subOrderId); } @GetMapping("/getMobileByOrderNo") @ApiOperation(value = "通过订单号查询手机号码") public HttpResult getMobileByOrderNo(String orderNo,String type){ JSONObject result = new JSONObject(); String phone = insOrdersService.getMobileByOrderNo(orderNo,type); result.put("phone",phone); SysUserIsDial sysUserIsDial = sysUserIsDialService.getByUserId(getUserId()); if(sysUserIsDial != null) { if (sysUserIsDial.getIsDial().equals("1")) { result.put("username",sysUserIsDial.getDialUserName()); result.put("password",sysUserIsDial.getDialPassWord()); } } return HttpResult.ok(result); } /** * 获取快到期的保单 * @return */ @PostMapping("/getExpirationInsure") @ApiOperation(value = "获取快到期的保单") public HttpResult getExpirationInsure(@RequestBody OrderExpirationQueryVo orderExpirationQueryVo){ Page page = buildPageRequest(orderExpirationQueryVo.getPageDto()); orderExpirationQueryVo.setUserid(getUserId()); return HttpResult.ok(insOrdersService.getExpirationInsure(page,orderExpirationQueryVo)); } /** * 获取快到期的保单的数量 * @return */ @PostMapping("/getExpirationInsureCount") @ApiOperation(value = "获取快到期的保单数量") public HttpResult getExpirationInsureCount(@RequestBody OrderExpirationQueryVo orderExpirationQueryVo){ orderExpirationQueryVo.setUserid(getUserId()); return HttpResult.ok(insOrdersService.getExpirationInsureCount(orderExpirationQueryVo)); } /** * 批单操作 * @param batchOrderVo * @return */ @PostMapping("/batchOrder") @ApiOperation(value = "批单") public HttpResult batchOrder(@RequestBody BatchOrderVo batchOrderVo){ boolean result = batchOrderService.batchOrder(batchOrderVo); if(result){ return HttpResult.ok("批单修改成功,等待审核"); }else{ return HttpResult.error("批单修改失败"); } } /** * 获取批单信息 * @param subOrderNo * @return */ @GetMapping("/getBatchOrder") @ApiOperation(value = "获取批单信息") public HttpResult getBatchOrder(String subOrderNo){ BatchOrder batchOrderBySubOrderNo = batchOrderService.getBatchOrderBySubOrderNo(subOrderNo); if(batchOrderBySubOrderNo != null){ return HttpResult.ok(batchOrderBySubOrderNo); }else{ return HttpResult.error("获取批单失败"); } } @PostMapping("/getBatchOrderList") @ApiOperation(value = "获取批单列表") public HttpResult getBatchOrderList(@RequestBody BatchOrderQueryVo batchOrderQueryVo){ Page page = buildPageRequest(batchOrderQueryVo.getPageDto()); if(batchOrderQueryVo.getIsAudit() == null){ batchOrderQueryVo.setIsAudit(0); } return HttpResult.ok(batchOrderService.getBatchOrderList(page,batchOrderQueryVo)); } @PostMapping("/getBtachOrderRejectList") @ApiOperation(value = "获取批单驳回列表") public HttpResult getBatchOrderRejectList(@RequestBody BatchOrderQueryVo batchOrderQueryVo){ Page page = buildPageRequest(batchOrderQueryVo.getPageDto()); batchOrderQueryVo.setUserId(getUserId()); if(batchOrderQueryVo.getIsAudit() == null){ batchOrderQueryVo.setIsAudit(2); } return HttpResult.ok(batchOrderService.getBatchOrderRejectList(page,batchOrderQueryVo)); } @PostMapping("/auditBatchOrder") @ApiOperation(value = "批单审核") public HttpResult auditBatchOrder(@RequestBody BatchOrderAuditVo batchOrderAuditVo){ boolean result = batchOrderService.auditBatchOrder(batchOrderAuditVo); if(result){ return HttpResult.ok("批单审核成功"); }else{ return HttpResult.error("批单审核失败"); } } @PostMapping("/savePosition") @ApiOperation(value = "保存位置信息") public HttpResult savePosition(@RequestBody InsAreaCompanyPosition insAreaCompanyPosition){ return HttpResult.ok(insAreaCompanyPositionService.save(insAreaCompanyPosition)); } /** * @version * @author: hxl * @Date: 2024/6/24 18:07 * @Description: 通过子订单ids获取比价信息 */ @PostMapping("/getInquiryDetalsBySubOrderNos") @ApiOperation(value = "通过子订单ids获取比价信息") public HttpResult getInquiryDetalsBySubOrderNos(@RequestBody InquiryDetalsQueryDto inquiryDetalsDto){ return HttpResult.ok(insOrdersService.getInquiryDetalsBySubOrderIds(inquiryDetalsDto)); } @PostMapping("/queryHxOrdersCount") @ApiOperation(value = "查询后线人员代课录单次数") public HttpResult> queryHxOrdersCount(@RequestBody QueryHxOrdersCountVo queryHxOrdersCountVo){ IPage result = insOrdersService.queryHxOrdersCount(queryHxOrdersCountVo); return HttpResult.ok("success", result); } @PostMapping("/exportHxOrdersCount") @ApiOperation(value = "导出后线人员代课录单次数") public HttpResult exportHxOrdersCount(@RequestBody QueryHxOrdersCountVo queryHxOrdersCountVo) throws IOException { List result = insOrdersService.exportHxOrdersCount(queryHxOrdersCountVo); String uploadPath = this.uploadPath + "/excel/"; Path path = Paths.get(uploadPath); if (!Files.exists(path)) { Files.createDirectories(path); } String fileName = EasyExcelUtils.downExcel(uploadPath, "后线人员代课录单统计报表", QueryHxOrdersCountExcel.class, result); return HttpResult.ok("",uploadUrl + "excel/" + fileName); } }