【HZERO】数据导出

数据导出

https://open.hand-china.com/document-center/doc/component/109/14155?doc_id=135658&doc_code=2909#数据导出组件

导出注释使用注意事项

数据格式

导出组件如果要小数可以用这个参数:
image

主数据示例

实体类进行注释

@ApiModel("商品表")
@VersionAudit
@ModifyAudit
@JsonInclude(value = JsonInclude.Include.NON_NULL)
@Table(name = "mdm_md_goods_report")
@ExcelSheet(
        zh = "商品提报表导出",
        en = "goodsReport list",
        pageSize = 100000
)
public class MdmMdGoodsReport extends AuditDomain {

    public static final String FIELD_GOODS_ID = "goodsId";
    public static final String FIELD_GOODS_CODE = "goodsCode";
    public static final String FIELD_GOODS_NAME = "goodsName";
    public static final String FIELD_GOODS_SOURSE = "goodsSourse";
    public static final String FIELD_GOODS_SPEC = "goodsSpec";
    public static final String FIELD_MATERIAL_CODE = "materialCode";
    public static final String FIELD_GOOD_CLASS_CODE = "goodClassCode";
    public static final String FIELD_UNIT_ID = "unitId";
    @ApiModelProperty("表ID,主键,供其他表做外键,商品id")
    @Id
    @GeneratedValue(generator = "goods_id")
    private Long goodsId;
    @ApiModelProperty(value = "商品编码  编码规则(租户内唯一)", required = true)
    @ExcelColumn(
            zh = "商品编码",
            en = "goodsCode"
    )
    private String goodsCode;
    @ApiModelProperty(value = "商品名称", required = true)
    @NotBlank
    @ExcelColumn(
            zh = "商品名称",
            en = "goodsName"
    )
    private String goodsName;
    @ApiModelProperty(value = "商品来源", required = true)
    @NotBlank
    @LovValue(lovCode = "MDM.MD.GOODS_SOURSE")
    private String goodsSourse;
    @Transient
    private String goodsSourseMeaning;
    @ApiModelProperty(value = "商品规格", required = true)
    @NotBlank
    @ExcelColumn(
            zh = "商品规格",
            en = "goodsSpec"
    )
    private String goodsSpec;
    @ApiModelProperty(value = "物料编码")
    @ExcelColumn(
            zh = "物料编码",
            en = "materialCode"
    )
    private String materialCode;
    @ApiModelProperty(value = "商品分类")
    @ExcelColumn(
            zh = "商品分类",
            en = "goodClassCode"
    )
    private String goodClassCode;
    @ApiModelProperty(value = "计量单位id", required = true)
    @NotNull
    @Translation(primaryKey = "unit_id", tableName = "mdm_bf_unit", translationName = "unit_name")
    private Long unitId;
    @Transient
    @ExcelColumn(
            zh = "计量单位",
            en = "unitName"
    )
    private String unitName;
    @ApiModelProperty(value = "运输计价类别", required = true)
    @NotBlank
    @ExcelColumn(
            zh = "运输计价类别编码",
            en = "tranpricetypeCode"
    )
    @Translation(primaryKey = "tranpricetype_code", tableName = "mdm_bf_tranpricetype", translationName = "tranpricetype_name")
    private String tranpricetypeCode;
    @Transient
    @ExcelColumn(
            zh = "运输计价类别",
            en = "tranpricetypeName"
    )
}

Controller加注释

  @ApiOperation("商品提报导出")
    @Permission(level = ResourceLevel.ORGANIZATION)
    @GetMapping({"/exportGoodsReport"})
    @ExcelExport(MdmMdGoodsReport.class)
    public ResponseEntity<List<MdmMdGoodsReport>> export(@PathVariable("organizationId") Long tenantId, GoodsReportQueryDTO goodsReportQueryDTO, PageRequest pageRequest, HttpServletResponse response, ExportParam exportParam) {
        return Results.success(mdmMdGoodsReportRepository.pageAndSortGoodsReport(pageRequest, goodsReportQueryDTO));
    }
    /**
     * 根据条件查询商品提报
     * @param pageRequest
     * @param goodsReportQueryDTO
     * @return
     */
    Page<MdmMdGoodsReport> pageAndSortGoodsReport(PageRequest pageRequest, GoodsReportQueryDTO goodsReportQueryDTO);
  @Override
    public Page<MdmMdGoodsReport> pageAndSortGoodsReport(PageRequest pageRequest, GoodsReportQueryDTO goodsReportQueryDTO) {

        //获取用户信息,当前用户只能查到自己提报的商品
        CustomUserDetails userDetails = DetailsHelper.getUserDetails();
        Long userId = userDetails.getUserId();
        goodsReportQueryDTO.setCreatedBy(userId);
        return PageHelper.doPage(pageRequest, () -> mdmMdGoodsReportMapper.selectGoodsReport(goodsReportQueryDTO));
    }
    /**
     * 根据条件查询商品提报
     * @param goodsReportQueryDTO
     * @return
     */
    List<MdmMdGoodsReport> selectGoodsReport(GoodsReportQueryDTO goodsReportQueryDTO);
<select id="selectGoodsReport" resultType="com.inja.mdm.domain.entity.MdmMdGoodsReport">
        SELECT
            mmgr.*,
            mbu.unit_name,
            mbt.tranpricetype_name,
            mbtax.taxtype_name material_tax_name,
            mbcoo.country_of_origin_name origin_country_name,
            mbncu.net_content_unit_name,
            mbb.brand_name,
            eachpt.packaging_type_name each_packaging_type_name,
            packpt.packaging_type_name pack_packaging_type_name,
            casept.packaging_type_name case_packaging_type_name
        FROM
            mdm_md_goods_report mmgr
        LEFT JOIN mdm_bf_unit mbu ON mmgr.unit_id = mbu.unit_id
        LEFT JOIN mdm_bf_tranpricetype mbt ON mmgr.tranpricetype_code = mbt.tranpricetype_code
        LEFT JOIN mdm_bf_taxtype mbtax ON mmgr.material_tax_id = mbtax.taxtype_id
        LEFT JOIN mdm_bf_country_of_origin mbcoo ON mmgr.origin_country_id = mbcoo.country_of_origin_id
        LEFT JOIN mdm_bf_net_content_unit mbncu ON mmgr.net_content_unit_id = mbncu.net_content_unit_id
        LEFT JOIN mdm_bf_brand mbb ON mmgr.brand_id = mbb.brand_id
        LEFT JOIN mdm_bf_packaging_type eachpt ON mmgr.each_packaging_type_id = eachpt.packaging_type_id
        LEFT JOIN mdm_bf_packaging_type packpt ON mmgr.pack_packaging_type_id = packpt.packaging_type_id
        LEFT JOIN mdm_bf_packaging_type casept ON mmgr.case_packaging_type_id = casept.packaging_type_id
        WHERE
            1 =1
        AND mmgr.delete_flag = 'N'
        <if test="goodsId != null and goodsId != ''">
            and mmgr.goods_id = #{goodsId}
        </if>
        <if test="goodsCode != null and goodsCode != ''">
            <bind name="goodsCodeLike" value="'%' + goodsCode + '%'"/>
            and mmgr.goods_code like #{goodsCodeLike}
        </if>
        <if test="goodsName != null and goodsName != ''">
            <bind name="goodsNameLike" value="'%' + goodsName + '%'"/>
            and mmgr.goods_name like #{goodsNameLike}
        </if>
        <if test="goodsSpec != null and goodsSpec != ''">
            <bind name="goodsSpecLike" value="'%' + goodsSpec + '%'"/>
            and mmgr.goods_spec like #{goodsSpecLike}
        </if>
        <if test="model != null and model != ''">
            <bind name="modelLike" value="'%' + model + '%'"/>
            and mmgr.model like #{modelLike}
        </if>
        <if test="unitId != null and unitId != ''">
            and mmgr.unit_id = #{unitId}
        </if>
        <if test="tranpricetypeCode != null and tranpricetypeCode != ''">
            <bind name="tranpricetypeCodeLike" value="'%' + tranpricetypeCode + '%'"/>
            and mmgr.tranpricetype_code like #{tranpricetypeCodeLike}
        </if>
        <if test="materialTaxId != null and materialTaxId != ''">
            and mmgr.material_tax_id = #{materialTaxId}
        </if>
        <if test="status != null and status != ''">
            and mmgr.status = #{status}
        </if>
        <if test="remark != null and remark != ''">
            <bind name="remarkLike" value="'%' + remark + '%'"/>
            and mmgr.remark like #{remarkLike}
        </if>
        <if test="returnReason != null and returnReason != ''">
            <bind name="returnReasonLike" value="'%' + returnReason + '%'"/>
            and mmgr.return_reason like #{returnReasonLike}
        </if>
        <if test="createdBy != null">
            and mmgr.created_by = #{createdBy}
        </if>
        <if test="creationBeginDate != null">
            and date_format(mmgr.creation_date,'%Y-%m-%d') &gt;= #{creationBeginDate}
        </if>
        <if test="creationEndDate != null">
            and date_format(mmgr.creation_date,'%Y-%m-%d') &lt;= #{creationEndDate}
        </if>
        ORDER BY mmgr.creation_date DESC
    </select>

产品交付示例

直接在网址路径上拼接参数

    @ApiOperation(value = "付款单列表导出")
    @Permission(level = ResourceLevel.ORGANIZATION)
    @PostMapping("/export")
    @ExcelExport(PaymentExportDTO.class)
    public ResponseEntity<Page<PaymentExportDTO>> paymentListExport(@PathVariable Long organizationId, @RequestBody ExportParam exportParam, HttpServletResponse response, PaymentDTO paymentDTO, PageRequest pageRequest) {
        paymentDTO.setTenantId(organizationId);
        paymentDTO.setDelFlag(BaseConstants.Flag.NO);
        List<PaymentDTO> paymentList = paymentService.selectList(organizationId, pageRequest, paymentDTO).getContent();
        List<PaymentExportDTO> paymentExportList = paymentService.paymentExportList(paymentList);
        PageInfo pageInfo = new PageInfo(pageRequest.getPage(),pageRequest.getSize());
        Page<PaymentExportDTO> pagePaymentExportDTO = new Page<>(paymentExportList, pageInfo, pageRequest.getTotalElements());
        //PageHelper.doPageAndSort(pageRequest, () -> paymentExportList;
        return Results.success(pagePaymentExportDTO);
    }

    List<PaymentExportDTO> paymentExportList(List<PaymentDTO> paymentList);
    @Override
    @ProcessLovValue
    @ProcessCacheValue
    public List<PaymentExportDTO> paymentExportList(List<PaymentDTO> paymentList) {
        lovValueHandle.process(null,paymentList);
        List<PaymentExportDTO> exportList = paymentList.stream().map(payment -> {
            PaymentExportDTO paymentExportDTO = new PaymentExportDTO();
            BeanUtils.copyProperties(payment, paymentExportDTO);
            paymentExportDTO.setCreatedby(payment.getCreatedBy());
            return paymentExportDTO;
        }).collect(Collectors.toList());
        return exportList;
    }

image

在exportParam的CustomData中放置参数

    @ApiOperation(value = "付款单列表导出")
    @Permission(level = ResourceLevel.ORGANIZATION)
    @PostMapping("/export")
    @ExcelExport(PaymentExportDTO.class)
    public ResponseEntity<Page<PaymentExportDTO>> paymentListExport(@PathVariable Long organizationId, @RequestBody ExportParam exportParam, HttpServletResponse response, PageRequest pageRequest) {
        List<PaymentExportDTO> paymentExportList = paymentService.paymentExportList(organizationId, pageRequest, exportParam);
        PageInfo pageInfo = new PageInfo(pageRequest.getPage(),pageRequest.getSize());
        Page<PaymentExportDTO> pagePaymentExportDTO = new Page<>(paymentExportList, pageInfo, pageRequest.getTotalElements());
        //PageHelper.doPageAndSort(pageRequest, () -> paymentExportList;
        return Results.success(pagePaymentExportDTO);
    }
    List<PaymentExportDTO> paymentExportList(Long organizationId, PageRequest pageRequest, ExportParam exportParam);
   @Override
    @ProcessLovValue
    @ProcessCacheValue
    public List<PaymentExportDTO> paymentExportList(Long organizationId, PageRequest pageRequest, ExportParam exportParam) {
        //取查询参数
        String customData = exportParam.getCustomData();
        PaymentDTO paymentDTO;
        if (StringUtils.isBlank(customData)) {
            paymentDTO = new PaymentDTO();
        } else {
            try {
                paymentDTO = objectMapper.readValue(customData, PaymentDTO.class);
            } catch (JsonProcessingException e) {
                log.error("json转换失败");
                throw new CommonException(e);
            }
        }
        paymentDTO.setTenantId(organizationId);
        paymentDTO.setDelFlag(BaseConstants.Flag.NO);
        List<PaymentDTO> paymentList = selectList(organizationId, pageRequest, paymentDTO).getContent();
        lovValueHandle.process(null,paymentList);
        List<PaymentExportDTO> exportList = paymentList.stream().map(payment -> {
            PaymentExportDTO paymentExportDTO = new PaymentExportDTO();
            BeanUtils.copyProperties(payment, paymentExportDTO);
            paymentExportDTO.setCreatedby(payment.getCreatedBy());
            return paymentExportDTO;
        }).collect(Collectors.toList());
        return exportList;
    }

posted on 2024-12-02 09:23  舟山婠贞  阅读(29)  评论(0)    收藏  举报

导航