package com.ydtech.modules.order.controller; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; 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.admin.model.SysUserRole; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.ins.model.InsOrdersExcel; import com.ydtech.modules.ins.model.InsOrdersExcelVo; import com.ydtech.modules.ins.model.vo.res.InsSettleResVo; import com.ydtech.modules.ins.utils.EasyExcelUtils; import com.ydtech.modules.ins.utils.ExcelStyleUtil; import com.ydtech.modules.ins.utils.ExcelUtils2; import com.ydtech.modules.order.components.InsOrdersComponents; 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.beans.factory.annotation.Value; import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.stream.Collectors; import static com.alibaba.fastjson.JSON.parseObject; @Api(tags = "订单") @RequestMapping("/insurance/order") @RestController public class InsOrdersController extends BaseController { @Value("${upload.file.path}") private String uploadFilePath; 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); } }