Răsfoiți Sursa

新增订单信息导出excel表接口 2023年12月29日15:48:20

y 2 ani în urmă
părinte
comite
9f3f715044

+ 148 - 0
src/main/java/com/ydtech/modules/ins/model/InsOrdersExcel.java

@@ -0,0 +1,148 @@
+package com.ydtech.modules.ins.model;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import io.swagger.annotations.ApiOperation;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author jianlong
+ * @date 2023-12-28 16:14
+ */
+@Data
+public class InsOrdersExcel{
+    @Excel(name = "保险公司名称")
+    private String insCompany;
+
+    @Excel(name = "工号")
+    private String userId;
+
+    @Excel(name = "用户名")
+    private String userName;
+
+    @Excel(name = "订单号")
+    private String orderNo;
+
+    @Excel(name = "车牌")
+    private String licenseNo;
+
+    @Excel(name = "车架号")
+    private String fraMeno;
+
+    private JSONObject carInfo;
+
+    @Excel(name = "车型")
+    private String modelcName;
+
+    @Excel(name = "座位数")
+    private String seatCount;
+
+    @Excel(name = "是否过户")
+    private String transferFlag;
+
+    @Excel(name = "商业险是否过户")
+    private String transferFlagBi;
+
+
+
+    private JSONObject ownerInfo;
+
+    @Excel(name = "车主姓名")
+    private String ownerName;
+
+    @Excel(name = "车主身份证号")
+    private String ownerIdentifyNumber;
+
+    @Excel(name = "车主年龄")
+    private String ownerAge;
+
+    @Excel(name = "车主手机号")
+    private String ownerMobile;
+
+
+
+
+    private JSONObject applyInfo;
+
+    @Excel(name = "投保人姓名")
+    private String applyName;
+
+    @Excel(name = "投保人身份证号")
+    private String applyIdentifyNumber;
+
+    @Excel(name = "投保人年龄")
+    private String applyAge;
+
+    @Excel(name = "投保人手机号")
+    private String applyMobile;
+
+
+
+    private JSONObject insureInfo;
+
+    @Excel(name = "投保人姓名")
+    private String insureName;
+
+    @Excel(name = "投保人身份证号")
+    private String insureIdentifyNumber;
+
+    @Excel(name = "投保人年龄")
+    private String insureAge;
+
+    @Excel(name = "投保人手机号")
+    private String insureMobile;
+
+
+    private JSONArray kindInfo;
+
+    @Excel(name = "第三责任险")
+    private String third;
+
+    @Excel(name = "乘客责任险")
+    private String sit;
+
+    @Excel(name = "司机责任险")
+    private String driver;
+
+    @Excel(name = "交强险费用")
+    private String jqpRemIum;
+
+    @Excel(name = "商业险费用")
+    private String sypRemIum;
+
+    @Excel(name = "驾意险费用")
+    private String jypRemIum;
+
+    @Excel(name = "车船税费用")
+    private  String taxaMount;
+
+    @Excel(name = "交强险起期")
+    private String jqStartDate;
+
+    @Excel(name = "交强险止期")
+    private String jqEndDate;
+
+    @Excel(name = "商业险起期")
+    private String syStartDate;
+
+    @Excel(name = "商业险止期")
+    private String syEndDate;
+
+    @Excel(name = "评分")
+    private String score;
+
+    @Excel(name = "交强类型评分")
+    private  String jqScore;
+
+    @Excel(name = "商业类型评分")
+    private String syScore;
+
+    @Excel(name = "交强赔付率")
+    private String jqLossRation;
+
+    @Excel(name = "商业赔付率")
+    private String syLossRation;
+}

+ 27 - 0
src/main/java/com/ydtech/modules/ins/model/InsOrdersExcelVo.java

@@ -0,0 +1,27 @@
+package com.ydtech.modules.ins.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author jianlong
+ * @date 2023-12-29 10:27
+ */
+@Data
+public class InsOrdersExcelVo {
+
+    @ApiModelProperty(value = "订单状态默认是已承保")
+    private String orderstatus;
+
+    @ApiModelProperty(value = "开始时间")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date startDate;
+
+    @ApiModelProperty(value = "结束时间")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date endDate;
+
+}

+ 23 - 0
src/main/java/com/ydtech/modules/order/controller/InsOrdersController.java

@@ -1,10 +1,19 @@
 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.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.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;
@@ -24,10 +33,16 @@ 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.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
@@ -87,6 +102,14 @@ public class InsOrdersController extends BaseController {
         return HttpResult.ok("success", quoteResult);
     }
 
+    @PostMapping("/orderExportExcel")
+    @ApiOperation(value = "订单导出excel接口")
+    public void orderExportExcel(@RequestBody InsOrdersExcelVo insOrdersExcelVo, HttpServletRequest request, HttpServletResponse response){
+
+        this.insOrdersService.orderExportExcel(insOrdersExcelVo,request,response);
+    }
+
+
     @PostMapping("/querySuborder")
     @ApiOperation(value = "[2]通过订单号查询子订单")
     public HttpResult<List<InsAreaCompanyQueryDto>> querySuborder(@RequestSingleParam(value = "orderNo") String orderNo) {

+ 3 - 0
src/main/java/com/ydtech/modules/order/dao/InsOrdersMapper.java

@@ -2,6 +2,8 @@ package com.ydtech.modules.order.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.modules.ins.model.InsOrdersExcel;
+import com.ydtech.modules.ins.model.InsOrdersExcelVo;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.vo.OrderQueryVo;
 import com.ydtech.modules.order.entity.vo.OrderVo;
@@ -27,4 +29,5 @@ public interface InsOrdersMapper extends BaseMapper<InsOrders> {
     Page<InsOrders> queryPageOrder(@Param("page") Page page,@Param("orderQueryVo") OrderQueryVo orderQueryVo,
                                    @Param("isTeamLeader") Boolean isTeamLeader,@Param("isCdy")Boolean isCdy);
 
+    List<InsOrdersExcel> queryOrderList(InsOrdersExcelVo insOrdersExcelVo);
 }

+ 15 - 0
src/main/java/com/ydtech/modules/order/service/InsOrdersService.java

@@ -2,6 +2,8 @@ package com.ydtech.modules.order.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.ins.model.InsOrdersExcel;
+import com.ydtech.modules.ins.model.InsOrdersExcelVo;
 import com.ydtech.modules.ins.model.ya.CarModelDTO;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.modules.order.entity.InsAreaCompany;
@@ -10,6 +12,8 @@ import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
 import com.ydtech.modules.order.entity.vo.*;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
@@ -70,6 +74,17 @@ public interface InsOrdersService extends IService<InsOrders> {
      */
     BasePageResult<InsOrders> queryPageOrder(OrderQueryVo orderQueryVo);
 
+    /**
+     * 订单信息导出excel
+     *
+     * @param insOrdersExcelVo
+     * @param request
+     * @param response
+     * @return
+     */
+    void orderExportExcel(InsOrdersExcelVo insOrdersExcelVo, HttpServletRequest request, HttpServletResponse response);
+
+
     /**
      * @param companyId
      * @return

+ 93 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -1,14 +1,18 @@
 package com.ydtech.modules.order.service.impl;
 
+import cn.afterturn.easypoi.excel.entity.ExportParams;
+import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
 import cn.dev33.satoken.session.SaSession;
 import cn.dev33.satoken.stp.StpUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.components.OrderComponents;
 import com.ydtech.constants.InsuranceEnum;
+import com.ydtech.constants.enums.InsurKind;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.constants.sys.SystemConstant;
 import com.ydtech.core.page.HttpResult;
@@ -23,10 +27,15 @@ import com.ydtech.modules.esm.service.EsmUserReferrerService;
 import com.ydtech.modules.fee.service.impl.FeeRuleSchemeServiceImpl;
 import com.ydtech.modules.fnc.entity.InsFeeAudit;
 import com.ydtech.modules.fnc.service.InsFeeAuditService;
+import com.ydtech.modules.ins.model.InsOrdersExcel;
+import com.ydtech.modules.ins.model.InsOrdersExcelVo;
 import com.ydtech.modules.ins.model.vo.CarInfoVo;
+import com.ydtech.modules.ins.model.vo.res.InsSettleResVo;
 import com.ydtech.modules.ins.model.ya.CarModelDTO;
 import com.ydtech.modules.ins.model.ya.ExtendInfoDto;
 import com.ydtech.modules.ins.model.ya.ResponseDataC2;
+import com.ydtech.modules.ins.utils.ExcelStyleUtil;
+import com.ydtech.modules.ins.utils.ExcelUtils2;
 import com.ydtech.modules.order.convert.CarModelDTOConvert;
 import com.ydtech.modules.order.convert.MapToYaExtendInfoDto;
 import com.ydtech.modules.order.dao.InsOrdersMapper;
@@ -53,7 +62,11 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.NotBlank;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -381,6 +394,86 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 page.getPages(), insOrdersPage.getRecords());
     }
 
+    /**
+     * 订单信息导出excel
+     *
+     * @param insOrdersExcelVo
+     * @param request
+     * @param response
+     * @return
+     */
+    @Override
+    public void orderExportExcel(InsOrdersExcelVo insOrdersExcelVo, HttpServletRequest request, HttpServletResponse response) {
+        List<InsOrdersExcel> insOrdersExcels = baseMapper.queryOrderList(insOrdersExcelVo);
+
+        for (InsOrdersExcel insOrdersExcel : insOrdersExcels) {
+            // 设置车辆信息
+            JSONObject carInfo = insOrdersExcel.getCarInfo();
+            insOrdersExcel.setModelcName(carInfo.getString("modelcname"));
+            insOrdersExcel.setSeatCount(carInfo.getString("seatCount"));
+            insOrdersExcel.setTransferFlag(carInfo.getString("transferFlag").equals("true") ? "是" : "否");
+            insOrdersExcel.setTransferFlagBi(carInfo.getString("noLicenseFlag").equals("true") ? "是" : "否");
+
+            // 设置车主信息
+            JSONObject ownerInfo = insOrdersExcel.getOwnerInfo();
+            insOrdersExcel.setOwnerName(ownerInfo.getString("name"));
+            insOrdersExcel.setOwnerAge(ownerInfo.getString("age"));
+            insOrdersExcel.setOwnerMobile(ownerInfo.getString("mobile"));
+            insOrdersExcel.setOwnerIdentifyNumber(ownerInfo.getString("identifyNumber"));
+
+            // 设置申请人信息
+            JSONObject applyInfo = insOrdersExcel.getApplyInfo();
+            insOrdersExcel.setApplyName(applyInfo.getString("name"));
+            insOrdersExcel.setApplyAge(applyInfo.getString("age"));
+            insOrdersExcel.setApplyMobile(applyInfo.getString("mobile"));
+            insOrdersExcel.setApplyIdentifyNumber(applyInfo.getString("identifyNumber"));
+
+            // 设置被保险人信息
+            JSONObject insureInfo = insOrdersExcel.getInsureInfo();
+            insOrdersExcel.setInsureName(insureInfo.getString("name"));
+            insOrdersExcel.setInsureAge(insureInfo.getString("age"));
+            insOrdersExcel.setInsureMobile(insureInfo.getString("mobile"));
+            insOrdersExcel.setInsureIdentifyNumber(insureInfo.getString("identifyNumber"));
+
+            // 设置险种信息
+            JSONArray kindInfo = insOrdersExcel.getKindInfo();
+            if (kindInfo != null) {
+                for (int i = 0; i < kindInfo.size(); i++) {
+                    String kindCode = kindInfo.getJSONObject(i).getString("kindCode");
+                    String amount = kindInfo.getJSONObject(i).getString("amount");
+                    if (kindCode != null) {
+                        switch (kindCode) {
+                            case "B":
+                                insOrdersExcel.setThird(amount);
+                                break;
+                            case "D4":
+                                insOrdersExcel.setSit(amount);
+                                break;
+                            case "D3":
+                                insOrdersExcel.setDriver(amount);
+                                break;
+                        }
+                    }
+                }
+            }
+        }
+
+
+
+        Date now = new Date();
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+        String fileName = "orders";
+        // 导出
+        ExportParams exportParams = new ExportParams("订单信息表"+simpleDateFormat.format(now), null, ExcelType.HSSF);
+        // 设置
+        exportParams.setStyle(ExcelStyleUtil.class);
+
+        try {
+            ExcelUtils2.exportExcel(insOrdersExcels, InsOrdersExcel.class, fileName, exportParams, request, response);
+        } catch (IOException e) {
+            log.error(String.valueOf(e));
+        }
+    }
 
 
     @Override

+ 73 - 0
src/main/resources/mapper/modules/order/InsOrdersMapper.xml

@@ -110,6 +110,37 @@
                 typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
     </resultMap>
 
+
+    <resultMap id="OrderExcelResultMap" type="com.ydtech.modules.ins.model.InsOrdersExcel">
+        <id property="orderNo" column="orderno" jdbcType="VARCHAR"/>
+        <result property="licenseNo" column="licenseno" jdbcType="VARCHAR"/>
+        <result property="fraMeno" column="frameno" jdbcType="VARCHAR"/>
+        <result property="carInfo" column="carinfo" javaType="com.alibaba.fastjson.JSONObject"  typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+        <result property="score" column="score" jdbcType="VARCHAR"/>
+        <result property="ownerInfo" column="ownerinfo" javaType="com.alibaba.fastjson.JSONObject"  typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+        <result property="jqpRemIum" column="jqpremium" jdbcType="VARCHAR"/>
+        <result property="sypRemIum" column="sypremium" jdbcType="VARCHAR"/>
+        <result property="jypRemIum" column="jypremium" jdbcType="VARCHAR"/>
+        <result property="taxaMount" column="taxamount" jdbcType="VARCHAR"/>
+        <result property="jqStartDate" column="jq_start_date" jdbcType="VARCHAR"/>
+        <result property="jqEndDate" column="jq_end_date" jdbcType="VARCHAR"/>
+        <result property="syStartDate" column="sy_start_date" jdbcType="VARCHAR"/>
+        <result property="syEndDate" column="sy_end_date" jdbcType="VARCHAR"/>
+        <result property="jqScore" column="jq_score" jdbcType="VARCHAR"/>
+        <result property="syScore" column="sy_score" jdbcType="VARCHAR"/>
+        <result property="jqLossRation" column="jq_loss_ration" jdbcType="VARCHAR"/>
+        <result property="syLossRation" column="sy_loss_ration" jdbcType="VARCHAR"/>
+        <result property="insCompany" column="ins_company" jdbcType="VARCHAR"/>
+        <result property="userId" column="userid" jdbcType="VARCHAR"/>
+        <result property="userName" column="username" jdbcType="VARCHAR"/>
+        <result property="applyInfo" column="applyinfo" javaType="com.alibaba.fastjson.JSONObject"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+        <result property="insureInfo" column="insureinfo" javaType="com.alibaba.fastjson.JSONObject"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+        <result property="kindInfo" column="kindinfo" javaType="com.alibaba.fastjson.JSONArray"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+    </resultMap>
+
     <sql id="Base_Column_List">
         orderno,quoteno,orderstatus,
         carinfo,userid,username,
@@ -302,4 +333,46 @@
         order by io.createtime desc
     </select>
 
+
+    <select id="queryOrderList" parameterType="com.ydtech.modules.ins.model.InsOrdersExcelVo" resultMap="OrderExcelResultMap">
+        select
+            a.orderno,
+            a.licenseno,
+            a.frameno,
+            a.carinfo,
+            b.score,
+            a.ownerinfo,
+            b.jqpremium,
+            b.sypremium,
+            b.jypremium,
+            b.taxamount,
+            b.jq_start_date,
+            b.jq_end_date,
+            b.sy_start_date,
+            b.sy_end_date,
+            b.jq_score,
+            b.sy_score,
+            b.jq_loss_ration,
+            b.sy_loss_ration,
+            b.score,
+            a.ins_company,
+            a.userid,
+            a.username,
+            a.applyinfo,
+            a.insureinfo,
+            b.kindinfo
+        FROM ins_orders a LEFT JOIN ins_area_company b on a.orderno = b.orderno
+        WHERE
+            1 = 1
+        <if test="orderstatus != null and orderstatus != '' ">
+           and b.orderstatus = #{orderstatus}
+        </if>
+        <if test="startDate != null and startDate != '' ">
+            and a.createtime > #{startDate}
+        </if>
+        <if test="endDate != null and endDate != '' ">
+            and #{endDate} > a.endDate
+        </if>
+    </select>
+
 </mapper>

BIN
target/classes/com/ydtech/modules/ins/model/InsOrdersExcel.class


BIN
target/classes/com/ydtech/modules/ins/model/InsOrdersExcelVo.class