关于页面信息导出

页面效果就是如下

在这里插入图片描述
当我们对其点击订单导出 及信息导出

重点开始 可能逻辑有点麻烦,请注意每一个细节 有些代码无法上传完整,但只是倾诉一个过程和一个思想

Controller 接口一马当先

@RequestMapping(name = "导出订单详情", value = {"/download"}, method = RequestMethod.GET)
    public void download(WebRequest request, HttpServletResponse response) throws IOException {
        foOrderService.downLoadOrderInfo(request,response);
    }

接口不是最难的 最难的才刚刚开始

Service

    public void downLoadOrderInfo(WebRequest request, HttpServletResponse response) throws IOException {
        String fileName = ConstantsInfo.EXCEL_TITLE_PREFIX + "_" + CommonsUtils.getDate() + ".xls";
        String[] headers = {"入库单号", "箱号", "产品码", "收货状态", "预期数量", "中转仓收货数", "目的仓收货数", "上架数量", "头程运输方式", "跟踪号", "参考号", "目的仓库", "交货仓库", "币种", "金额"};
        String[] fieldNames = {"orderCode", "boxNo", "productCode", "status", "deliveryCount", "transferCount", "receiveCount",
                "shelvesCount", "busiProductCode", "trackNo", "referenceNo", "beginWarehouse", "endWarehouse", "currency", "orderAmt"};
        Map <String, Object> searchParams = Servlets.getParametersStartingWith(request, "search_");
        Collection <SearchFilter> filters = SearchFilter.parse(searchParams);
        Specification <FoOrders> specification = DynamicSpecifications.bySearchFilter(filters);
        **List <FoOrders> list = this.findAllData(specification);
        List <OrderExport> orderExportList = new ArrayList <>();**
        if (CollectionUtils.isNotEmpty(list)) {
            List <String> foOrderNos = list.stream().map(FoOrders::getFoOrderNo).collect(Collectors.toList());
            List <Map <String, Object>> foProducts = ***this.findFoProductByFoOrderNo(foOrderNos);***
            if (org.apache.commons.collections.CollectionUtils.isNotEmpty(foProducts)) {
                for (Map <String, Object> map : foProducts) {
                    OrderExport orderExport = new OrderExport();
                    orderExport.setOrderCode(String.valueOf(map.get("fo_order_no")));
                    orderExport.setBoxNo(String.valueOf(map.get("fo_box_no")));
                    orderExport.setProductCode(String.valueOf(map.get("standard_code")));
                    orderExport.setStatus(String.valueOf(map.get("param_detail_cname")));
                    orderExport.setDeliveryCount(Integer.valueOf(String.valueOf(map.get("fo_delivery_count"))));
                    orderExport.setTransferCount(Integer.valueOf(String.valueOf(map.get("fo_transfer_count"))));
                    orderExport.setReceiveCount(Integer.valueOf(String.valueOf(map.get("fo_receive_count"))));
                    orderExport.setShelvesCount(Integer.valueOf(String.valueOf(map.get("fo_shelves_count"))));
                    orderExport.setBusiProductCode(String.valueOf(map.get("busi_product_code")));
                    orderExport.setTrackNo(String.valueOf(map.get("fo_track_no")));
                    orderExport.setReferenceNo(String.valueOf(map.get("fo_reference_no")));
                    orderExport.setEndWarehouse(String.valueOf(map.get("fo_end_warehouse")));
                    orderExport.setBeginWarehouse(String.valueOf(map.get("fo_begin_warehouse")));
                    orderExport.setCurrency(String.valueOf(map.get("currency")));
                    orderExport.setOrderAmt(new BigDecimal(String.valueOf(map.get("order_amt"))));
                    orderExportList.add(orderExport);
                }
            }
        }
        new ExportExcel <OrderExport>().exportExcel(fileName, headers, orderExportList, fieldNames, response, null);
    }

service方法中存在 this.findFoProductByFoOrderNo

public List <Map <String, Object>> findFoProductByFoOrderNo(List <String> foOrderNos) {
        return foProductDao.findByFoOrderNosAndDeleteFlag(foOrderNos);
    }

Dao所用到的方法以及数据 findByFoOrderNosAndDeleteFlag(方法)

    @Query(value = "select fp.fo_order_no,fp.fo_box_no,fp.standard_code,pd.param_detail_cname,IFNULL(fp.fo_delivery_count,'0') fo_delivery_count, IFNULL(fp.fo_transfer_count,'0') fo_transfer_count,IFNULL(fp.fo_receive_count,'0') fo_receive_count,IFNULL(fp.fo_shelves_count,'0') fo_shelves_count,fo.busi_product_code,fo.fo_track_no,fo.fo_reference_no,fo.fo_end_warehouse,fo.fo_begin_warehouse,fo.currency,fo.order_amt from fo_product fp " +
            "LEFT JOIN fo_orders fo on fo.fo_order_no = fp.fo_order_no " +
            "LEFT JOIN param_detail pd on pd.param_detail_code = fo.fo_order_status_customer and pd.delete_flag = 0 " +
            "where fp.fo_order_no in (:orderNos) and fp.delete_flag = 0 ",nativeQuery = true)
    List<Map<String,Object>> findByFoOrderNosAndDeleteFlag(@Param("orderNos") List<String> orderNos);

可能上面不是很清楚大致的数据是什么情况

在这里插入图片描述

pojo 表格最终展示的数据

public class OrderExport {
    @ApiModelProperty(value = "入库单号")
    /** 入库单号 */
    private String orderCode;
    @ApiModelProperty(value = "箱号")
    /** 箱号 */
    private String boxNo;
    @ApiModelProperty(value = "产品码")
    /** 产品码 */
    private String productCode;
    @ApiModelProperty(value = "收货状态")
    /** 收货状态 */
    private String status;
    @ApiModelProperty(value = "预期数量(送货数)")
    /** 预期数量 */
    private Integer deliveryCount;
    @ApiModelProperty(value = "中转仓收货数")
    /** 中转仓收货数 */
    private Integer transferCount;
    @ApiModelProperty(value = "目的仓收货数")
    /** 目的仓收货数 */
    private Integer receiveCount;
    @ApiModelProperty(value = "上架数量")
    /** 上架数量 */
    private Integer shelvesCount;
    @ApiModelProperty(value = "头程运输方式")
    /** 头程运输方式 */
    private String busiProductCode;
    @ApiModelProperty(value = "跟踪号")
    /** 跟踪号 */
    private String trackNo;
    @ApiModelProperty(value = "参考号")
    /** 参考号 */
    private String referenceNo;
    @ApiModelProperty(value = "目的仓库")
    /** 目的仓库 */
    private String beginWarehouse;
    @ApiModelProperty(value = "交货仓库")
    /** 交货仓库 */
    private String endWarehouse;
    @ApiModelProperty(value = "币种")
    /** 币种 */
    private String currency;
    @ApiModelProperty(value = "金额")
    /** 金额 */
    private BigDecimal orderAmt;

pojo **FoOrders **

@DynamicInsert
@DynamicUpdate
@Entity
@Table(name = "fo_orders", schema = "sdorder")
public class FoOrders extends OrderListenerEntity {
    @JsonView(View.class)
    @ApiModelProperty(value="订单编号")
    private String foOrderNo;
    @JsonView(View.class)
    @ApiModelProperty(value="父级订单编号")
    private String foParentNo;
    @JsonView(View.class)
    @ApiModelProperty(value="马帮FBA号码")
    private String foFbaNo;
    @JsonView(View.class)
    @ApiModelProperty(value="参考编码(顺丰等)")
    private String foReferenceNo;
    @JsonView(View.class)
    @ApiModelProperty(value="物流运单号")
    private String foTrackNo;
    @JsonView(View.class)
    @ApiModelProperty(value="JW号")
    private String jwNo;
    @JsonView(View.class)
    @ApiModelProperty(value="物流承运商")
    private String foTrackMerchant;


工具类

@DynamicInsert
@DynamicUpdate
@MappedSuperclass
@EntityListeners({OrderPersistenceListener.class})
public abstract class OrderListenerEntity implements java.io.Serializable {
    //protected Integer createrId;//创建人id
    /**
     * 创建时间
     */
    @JsonView(View.class)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08")
    protected Date createTime;
    //protected Integer updaterId;

    @JsonView(View.class)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08")
    protected Date updateTime;

    @JsonView(View.class)
    protected Integer deleteFlag;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "create_time", columnDefinition = "datetime", updatable = false)
    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    @Audited
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "update_time", columnDefinition = "datetime")
    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    @Audited
    @Column(name = "delete_flag", columnDefinition = "tinyint")
    public Integer getDeleteFlag() {
        return deleteFlag;
    }

    public void setDeleteFlag(Integer deleteFlag) {
        this.deleteFlag = deleteFlag;

}
    }

数据库表fo_product fp所有字段

在这里插入图片描述

数据库表fa_orders 表结构

在这里插入图片描述

实际上在fo_orders表中才有数据

在这里插入图片描述

数据库读取的表中并没有数据 Dao进行sql读取数据

在这里插入图片描述

浏览器所携带的数据 以及参数

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值