【HZERO】数据导出
数据导出
导出注释使用注意事项
数据格式
导出组件如果要小数可以用这个参数:
主数据示例
实体类进行注释
@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') >= #{creationBeginDate}
</if>
<if test="creationEndDate != null">
and date_format(mmgr.creation_date,'%Y-%m-%d') <= #{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;
}
在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;
}