【HZERO】报表服务

报表服务

参考文档

https://open.hand-china.com/document-center/doc/component/181/12455?doc_id=10088&_back=%2Fdocument-center%3Fs%3D%25E6%258A%25A5%25E8%25A1%25A8&doc_code=10088#SQL校验
https://open.hand-china.com/community/detail/602321568030396416

数据集

//输入参数进行需要打印的数据查询,用于维护数据集,维护报表模板时的字段也来源于此
//数据集需要用page来接
    @ApiOperation(value = "查询合同数据集")
    @Permission(level = ResourceLevel.ORGANIZATION)
    @ProcessLovValue(targetField = BaseConstants.FIELD_BODY)
    @GetMapping("/searchContractData")
    public ResponseEntity<Page<ContractDataDTO>> searchContractData(
            @RequestParam(value = "contractNum") String contractNum, @RequestParam(required = false) Long orderId, @PathVariable Long organizationId) {
        Page<ContractDataDTO> accountBillHeaders =
                this.contractService.searchContractData(contractNum, orderId, organizationId);
        return Results.success(accountBillHeaders);
    }
    /**
     * 查询合同数据集
     * @param contractNum
     * @param orderId
     * @return
     */
    Page<ContractDataDTO> searchContractData(String contractNum, Long orderId, Long organizationId);
//查询出的数据作为content来set到page返回
@Override
    public Page<ContractDataDTO> searchContractData(String contractNum, Long orderId, Long organizationId) {
        ContractDataDTO contractData = new ContractDataDTO();
        //获取头信息
        Contract tempContract = new Contract();
        tempContract.setContractNum(contractNum);
        Contract contract = contractService.selectOne(tempContract);
        String contractType = contract.getContractType();
        BeanUtils.copyProperties(contract, contractData);
        // 获取运单信息
        if (orderId != null) {
            IfpShipment ifpShipment = ifpShipmentService.selectByPrimaryKey(orderId);
            BeanUtils.copyProperties(ifpShipment, contractData);
            Company company = companyService.selectByPrimaryKey(ifpShipment.getShipperCompanyId());
            contractData.setShipperCompanyName(company.getName());
            IfpVehicle ifpVehicle = iIfpVehicleService.selectByPrimaryKey(ifpShipment.getVehicleGid());
            contractData.setVehicleLpn(ifpVehicle.getLpn());
            contractData.setXid(ifpShipment.getXid());
        }
        Long driverId = 0L;
        //承运人合同司机id取承运人id
        if ("FREIGHTER".equals(contractType)) {
            driverId = contract.getFreighterId();
        } else {
            driverId = contract.getDriverId();
        }
        IfpDriver driver = iIfpDriverService.selectByPrimaryKey(driverId);
        contractData.setDriverName(driver.getName());
        contractData.setDriverIdCard(driver.getIdCardNo());
        contractData.setDriverPhone(driver.getPhone());
        contractData.setDriverIdCardAddress(driver.getIdCardAddress());
        //修改时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        contractData.setEndTime(sdf.format(contract.getContractEndTime()));
        contractData.setStartTime(sdf.format(contract.getContractStartTime()));
        contractData.setSignTime(sdf.format(contract.getContractSignTime()));
        List<ContractDataDTO> contractDataList = new ArrayList<>();
        contractDataList.add(contractData);
        Page<ContractDataDTO> page = new Page<>();
        page.setContent(contractDataList);
        return page;
    }



维护数据集查询接口,输入参数进行需要打印的数据查询,用于维护数据集,后续维护报表模板时的字段也来源于此。报表打印数据源最好新建VO进行查询,勿与其它查询接口混用,需要进行隔离。目前支持SQL类型和URL类型数据集,需要对数据集头信息和参数进行配置。

打印方法(实际走的不是printHelper)



维护打印配置接口,对应报表查询功能,入参需要和数据集入参保持相同。若有多个模板需要在此进行维护,需要对PDF、EXCEL、WORD的打印配置进行维护。

报表模板管理


维护rtf模板后导入,用于维护报表的模板。

报表定义


用于后续报表查询,一个报表可对应多个模板。

报表查询



此功能用于查询报表、生成报表以及导出报表。

rtf模板维护


维护基础的模板格式

安装BI Publisher插件,进行示例XML导入,示例XML从数据集页面获取。导入之后使用BI Publisher的“字段”功能,对模板上的字段进行设置,最后可以通过预览方式进行本地预览。可通过“字段浏览器”来查看字段是否显示正常,若字段加载不出来可以新建rtf文件,把文本拷贝过来再新加字段。


XML文件获取。







字段维护及本地预览。

posted on 2022-05-30 11:04  舟山婠贞  阅读(131)  评论(0编辑  收藏  举报

导航