diff --git a/src/main/java/com/glxp/api/controller/dev/DeviceBusinessProjectController.java b/src/main/java/com/glxp/api/controller/dev/DeviceBusinessProjectController.java index 0ee5dc558..dbd0ddad5 100644 --- a/src/main/java/com/glxp/api/controller/dev/DeviceBusinessProjectController.java +++ b/src/main/java/com/glxp/api/controller/dev/DeviceBusinessProjectController.java @@ -1,9 +1,13 @@ package com.glxp.api.controller.dev; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; +import com.alibaba.excel.EasyExcel; +import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; import com.glxp.api.common.enums.ResultEnum; @@ -20,6 +24,7 @@ import com.glxp.api.entity.dev.DeviceInfoEntity; import com.glxp.api.req.dev.DeviceBusinessProjectRequest; import com.glxp.api.req.dev.DeviceCheckQuery; import com.glxp.api.res.PageSimpleResponse; +import com.glxp.api.res.dev.DeviceBusinessProjectExportVo; import com.glxp.api.res.dev.DeviceBusinessProjectVo; import com.glxp.api.service.thrsys.DeviceBusinessProjectDeviceService; import com.glxp.api.service.thrsys.DeviceBusinessProjectService; @@ -27,13 +32,14 @@ import com.glxp.api.vo.dev.DeviceCheckVo; import com.glxp.api.vo.dev.DeviceInfoVo; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.lang.reflect.Array; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.Date; import java.util.List; import java.util.Map; @@ -142,6 +148,9 @@ public class DeviceBusinessProjectController extends BaseController { @AuthRuleAnnotation("") @PostMapping("/udi/device/businessProject/businessPage") public BaseResponse businessPage(@RequestBody DeviceBusinessProjectRequest query) { + if (query.getPage() != null) { + PageHelper.startPage(query.getPage(), query.getLimit()); + } List list = deviceBusinessProjectService.businessPage(query); PageInfo pageInfo = new PageInfo<>(list); PageSimpleResponse page = new PageSimpleResponse(); @@ -150,4 +159,37 @@ public class DeviceBusinessProjectController extends BaseController { return ResultVOUtils.success(page); } + + + + @PostMapping("/udi/device/businessProject/selectExportExcel") + public void orderDeptProductOutSelectExportExcel(@RequestBody DeviceBusinessProjectRequest request, HttpServletResponse response) throws IOException { + // 模拟数据库获取数据 + List list = request.getList(); + + List orderDetailVos = BeanUtil.copyToList(list, DeviceBusinessProjectExportVo.class); + response.setCharacterEncoding(StandardCharsets.UTF_8.name()); + response.setHeader("content-Type", "application/vnd.ms-excel"); + response.setHeader("Content-Disposition", + "attachment;filename=" + URLEncoder.encode("效益分析统计" + DateUtil.format(new Date(), "yyyy-MM-dd") + ".xlsx", StandardCharsets.UTF_8.name())); + + EasyExcel.write(response.getOutputStream(), DeviceBusinessProjectExportVo.class).sheet().doWrite(orderDetailVos); + } + + + + @GetMapping("/udi/device/businessProject/exportExcel") + public void orderDeptProductOutExportTemplate(DeviceBusinessProjectRequest request, HttpServletResponse response) throws IOException { + // 模拟数据库获取数据 + List list = deviceBusinessProjectService.businessPage(request); + List orderDetailVos = BeanUtil.copyToList(list, DeviceBusinessProjectExportVo.class); + response.setCharacterEncoding(StandardCharsets.UTF_8.name()); + response.setHeader("content-Type", "application/vnd.ms-excel"); + response.setHeader("Content-Disposition", + "attachment;filename=" + URLEncoder.encode("效益分析统计" + DateUtil.format(new Date(), "yyyy-MM-dd") + ".xlsx", StandardCharsets.UTF_8.name())); + + EasyExcel.write(response.getOutputStream(), DeviceBusinessProjectExportVo.class).sheet().doWrite(orderDetailVos); + } + + } diff --git a/src/main/java/com/glxp/api/req/dev/DeviceBusinessProjectRequest.java b/src/main/java/com/glxp/api/req/dev/DeviceBusinessProjectRequest.java index 1fae2cd33..06b3ecfc4 100644 --- a/src/main/java/com/glxp/api/req/dev/DeviceBusinessProjectRequest.java +++ b/src/main/java/com/glxp/api/req/dev/DeviceBusinessProjectRequest.java @@ -3,12 +3,14 @@ package com.glxp.api.req.dev; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; +import com.glxp.api.res.dev.DeviceBusinessProjectVo; import com.glxp.api.util.page.ListPageRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; @Data public class DeviceBusinessProjectRequest extends ListPageRequest { @@ -94,6 +96,8 @@ public class DeviceBusinessProjectRequest extends ListPageRequest { @ApiModelProperty(value="更新时间") private Date updateTime; - + private String startChargTime; + private String endChargTime; private String key; + private List list; } diff --git a/src/main/java/com/glxp/api/res/dev/DeviceBusinessProjectExportVo.java b/src/main/java/com/glxp/api/res/dev/DeviceBusinessProjectExportVo.java new file mode 100644 index 000000000..8acebf8fc --- /dev/null +++ b/src/main/java/com/glxp/api/res/dev/DeviceBusinessProjectExportVo.java @@ -0,0 +1,100 @@ +package com.glxp.api.res.dev; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.NumberFormat; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class DeviceBusinessProjectExportVo { + + + @TableField(value = "deptName") + @ExcelProperty(value = "部门名称", index = 0) + @ColumnWidth(30) + private String deptName; + + /** + * 收费项目 + */ + @TableField(value = "sfxm") + @ExcelProperty(value = "收费项目", index = 1) + @ApiModelProperty(value="收费项目") + @ColumnWidth(30) + private String sfxm; + + /** + * 收费名称 + */ + @TableField(value = "sfmc") + @ExcelProperty(value = "收费名称", index = 2) + @ApiModelProperty(value="收费名称") + @ColumnWidth(30) + private String sfmc; + + + /** + * 项目总收益 + */ + @TableField(value = "totalProjectRevenue") + @ApiModelProperty(value="项目总收益") + @ExcelProperty(value = "项目总收益", index = 3) + @ColumnWidth(30) + private BigDecimal totalProjectRevenue; + + /** + * 项目总成本 + */ + @TableField(value = "totalProjectCost") + @ExcelProperty(value = "项目总成本", index = 4) + @ApiModelProperty(value="项目总成本") + @ColumnWidth(30) + private BigDecimal totalProjectCost; + + + /** + * 总投资回报率ROI + */ + @TableField(value = "totalROI") + @ExcelProperty(value = "总投资回报率ROI", index = 5) + @ApiModelProperty(value="总投资回报率ROI") + @NumberFormat("#0.00%") + @ColumnWidth(30) + private BigDecimal totalROI; + +// /** +// * 平均年收益 +// */ +// @TableField(value = "averageAnnualRevenue") +// @ExcelProperty(value = "平均年收益", index = 6) +// @ApiModelProperty(value="平均年收益") +// @ColumnWidth(30) +// private BigDecimal averageAnnualRevenue; + + +// /** +// * 设备利用率 +// */ +// @TableField(value = "deviceUtilizationRate") +// @ExcelProperty(value = "设备利用率", index = 7) +// @ApiModelProperty(value="设备利用率") +// @NumberFormat("#0.00%") +// @ColumnWidth(30) +// private BigDecimal deviceUtilizationRate; + + /** + * 设备效益 + */ + @TableField(value = "totalDeviceBenefit") + @ApiModelProperty(value="设备效益") + @ExcelProperty(value = "设备效益", index = 6) + @NumberFormat("#0.00%") + @ColumnWidth(30) + private BigDecimal totalDeviceBenefit; + + +} diff --git a/src/main/java/com/glxp/api/service/thrsys/DeviceBusinessProjectService.java b/src/main/java/com/glxp/api/service/thrsys/DeviceBusinessProjectService.java index 06632f447..47cf42717 100644 --- a/src/main/java/com/glxp/api/service/thrsys/DeviceBusinessProjectService.java +++ b/src/main/java/com/glxp/api/service/thrsys/DeviceBusinessProjectService.java @@ -11,6 +11,7 @@ import com.glxp.api.vo.dev.DeviceInfoVo; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.MathContext; import java.math.RoundingMode; import java.util.List; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -32,9 +33,6 @@ public class DeviceBusinessProjectService extends ServiceImpl businessPage(DeviceBusinessProjectRequest query) { - if (query.getPage() != null) { - PageHelper.startPage(query.getPage(), query.getLimit()); - } List list = this.baseMapper.businessPage(query); if (CollUtil.isNotEmpty(list)){ list.forEach( item -> { @@ -62,7 +60,7 @@ public class DeviceBusinessProjectService extends ServiceImpl - + select sfxm, + sfmc, + deptCode, + deptName, + ( + SELECT IFNULL (SUM(je),0) + from device_business_project a2 + + a2.sfxm = device_business_project.sfxm + AND a2.deptCode = device_business_project.deptCode + + AND date_format(a2.chargTime, '%Y-%m-%d') between date_format(#{startChargTime}, '%Y-%m-%d') and date_format(#{endChargTime}, '%Y-%m-%d') + + + ) + AS totalProjectRevenue from device_business_project @@ -51,8 +65,12 @@ AND deptName like concat('%', #{deptName}, '%') + + AND sfxm like concat('%', #{sfxm}, '%') + - group by sfxm,sfmc,deptCode, deptName + group by sfxm, sfmc, deptCode, deptName order by createTime desc + \ No newline at end of file