Browse Source

提交用电月报接口实现

lixing 4 years ago
parent
commit
858096a4f9
17 changed files with 370 additions and 184 deletions
  1. 32 0
      src/main/java/com/persagy/apm/energy/report/monthly/config/type/constant/enums/BelongTypeEnum.java
  2. 3 3
      src/main/java/com/persagy/apm/energy/report/monthly/config/type/model/vo/ResponseReportTypeItemVO.java
  3. 1 1
      src/main/java/com/persagy/apm/energy/report/monthly/config/type/model/vo/ResponseReportTypeListItemVO.java
  4. 32 0
      src/main/java/com/persagy/apm/energy/report/monthly/config/type/service/IReportTypeEnumService.java
  5. 47 0
      src/main/java/com/persagy/apm/energy/report/monthly/config/type/service/impl/ReportTypeEnumServiceImpl.java
  6. 47 2
      src/main/java/com/persagy/apm/energy/report/monthly/config/type/service/impl/ReportTypeServiceImpl.java
  7. 55 34
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/controller/ReportBusinessDetailController.java
  8. 2 2
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/vo/ResponseReportBusinessDetailItemVO.java
  9. 1 1
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/service/IReportBusinessDetailService.java
  10. 38 21
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/service/impl/ReportBusinessDetailServiceImpl.java
  11. 0 44
      src/main/java/com/persagy/apm/energy/report/monthly/outline/constants/enums/ReportTypeEnum.java
  12. 59 45
      src/main/java/com/persagy/apm/energy/report/monthly/outline/controller/ReportOutlineController.java
  13. 4 2
      src/main/java/com/persagy/apm/energy/report/monthly/outline/model/dto/DeleteReportOutlineDTO.java
  14. 22 0
      src/main/java/com/persagy/apm/energy/report/monthly/outline/model/dto/QueryAvailableBelongsDTO.java
  15. 0 1
      src/main/java/com/persagy/apm/energy/report/monthly/outline/service/IReportOutlineEnumService.java
  16. 3 3
      src/main/java/com/persagy/apm/energy/report/monthly/outline/service/IReportOutlineService.java
  17. 24 25
      src/main/java/com/persagy/apm/energy/report/monthly/outline/service/impl/ReportOutlineServiceImpl.java

+ 32 - 0
src/main/java/com/persagy/apm/energy/report/monthly/config/type/constant/enums/BelongTypeEnum.java

@@ -0,0 +1,32 @@
+package com.persagy.apm.energy.report.monthly.config.type.constant.enums;
+
+import com.persagy.apm.common.model.annotation.SwaggerDisplayEnum;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 报告所属类型
+ *
+ * @author lixing
+ * @version V1.0 2021/5/17 10:51 上午
+ */
+@SwaggerDisplayEnum
+public enum BelongTypeEnum {
+    /**
+     * 报告所属类型
+     */
+    PROJECT("1", "项目"),
+    AREA("2", "区域");
+
+    @Setter
+    @Getter
+    private String type;
+    @Setter
+    @Getter
+    private String desc;
+
+    BelongTypeEnum(String type, String desc) {
+        this.type = type;
+        this.desc = desc;
+    }
+}

+ 3 - 3
src/main/java/com/persagy/apm/energy/report/monthly/config/type/model/vo/ResponseReportTypeItemVO.java

@@ -20,9 +20,9 @@ public class ResponseReportTypeItemVO {
     @ApiModelProperty("报告类型名称")
     private String name;
 
-    @ApiModelProperty("业态 enum 0-商业;1-酒店")
-    private String businessType;
+    @ApiModelProperty(value = "业态", notes = "com.persagy.apm.energy.report.monthly.config.type.constant.enums.BuildingTypeEnum")
+    private String buildingType;
 
-    @ApiModelProperty("报告所属类型 enum 0-项目;1-大区")
+    @ApiModelProperty(value = "报告所属类型", notes = "com.persagy.apm.energy.report.monthly.config.type.constant.enums.BelongTypeEnum")
     private String belongType;
 }

+ 1 - 1
src/main/java/com/persagy/apm/energy/report/monthly/config/type/model/vo/ResponseReportTypeListItemVO.java

@@ -23,6 +23,6 @@ public class ResponseReportTypeListItemVO {
     @ApiModelProperty(value = "业态", notes = "com.persagy.apm.energy.report.monthly.config.type.constant.enums.BuildingTypeEnum")
     private String buildingType;
 
-    @ApiModelProperty("报告所属类型 enum 0-项目;1-大区")
+    @ApiModelProperty(value = "报告所属类型", notes = "com.persagy.apm.energy.report.monthly.config.type.constant.enums.BelongTypeEnum")
     private String belongType;
 }

+ 32 - 0
src/main/java/com/persagy/apm/energy/report/monthly/config/type/service/IReportTypeEnumService.java

@@ -0,0 +1,32 @@
+package com.persagy.apm.energy.report.monthly.config.type.service;
+
+
+import com.persagy.apm.common.model.vo.EnumVO;
+
+import java.util.List;
+
+/**
+ * 报告类型相关枚举类接口
+ *
+ * @author lixing
+ * @version V1.0 2021/5/17 10:57 上午
+ */
+public interface IReportTypeEnumService {
+    /**
+     * 业态枚举
+     *
+     * @return 业态枚举列表
+     * @author lixing
+     * @version V1.0 2021/5/17 11:32 上午
+     */
+    List<EnumVO> queryBuildingTypeEnum();
+
+    /**
+     * 报告所属枚举
+     *
+     * @return 报告所属枚举列表
+     * @author lixing
+     * @version V1.0 2021/5/17 11:32 上午
+     */
+    List<EnumVO> queryBelongTypeEnum();
+}

+ 47 - 0
src/main/java/com/persagy/apm/energy/report/monthly/config/type/service/impl/ReportTypeEnumServiceImpl.java

@@ -0,0 +1,47 @@
+package com.persagy.apm.energy.report.monthly.config.type.service.impl;
+
+import com.persagy.apm.common.model.vo.EnumVO;
+import com.persagy.apm.energy.report.monthly.config.type.constant.enums.BelongTypeEnum;
+import com.persagy.apm.energy.report.monthly.config.type.constant.enums.BuildingTypeEnum;
+import com.persagy.apm.energy.report.monthly.config.type.service.IReportTypeEnumService;
+import com.persagy.apm.energy.report.monthly.outline.constants.enums.ReportStateEnum;
+import com.persagy.apm.energy.report.monthly.outline.service.IReportOutlineEnumService;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 报告类型相关枚举实现类
+ *
+ * @author lixing
+ * @version V1.0 2021/5/17 11:00 上午
+ **/
+@Service
+public class ReportTypeEnumServiceImpl implements IReportTypeEnumService {
+
+    @Override
+    public List<EnumVO> queryBuildingTypeEnum() {
+        List<EnumVO> resultList = new ArrayList<>(BuildingTypeEnum.values().length);
+        Arrays.asList(BuildingTypeEnum.values()).forEach(enumItem -> {
+            EnumVO enumVO = new EnumVO();
+            enumVO.setKey(enumItem.getType());
+            enumVO.setValue(enumItem.getDesc());
+            resultList.add(enumVO);
+        });
+        return resultList;
+    }
+
+    @Override
+    public List<EnumVO> queryBelongTypeEnum() {
+        List<EnumVO> resultList = new ArrayList<>(BelongTypeEnum.values().length);
+        Arrays.asList(BelongTypeEnum.values()).forEach(enumItem -> {
+            EnumVO enumVO = new EnumVO();
+            enumVO.setKey(enumItem.getType());
+            enumVO.setValue(enumItem.getDesc());
+            resultList.add(enumVO);
+        });
+        return resultList;
+    }
+}

+ 47 - 2
src/main/java/com/persagy/apm/energy/report/monthly/config/type/service/impl/ReportTypeServiceImpl.java

@@ -1,10 +1,19 @@
 package com.persagy.apm.energy.report.monthly.config.type.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.persagy.apm.common.context.poems.PoemsContext;
+import com.persagy.apm.common.model.vo.EnumVO;
+import com.persagy.apm.energy.report.monthly.config.type.constant.enums.BelongTypeEnum;
 import com.persagy.apm.energy.report.monthly.config.type.dao.ReportTypeMapper;
 import com.persagy.apm.energy.report.monthly.config.type.model.vo.ResponseReportTypeListItemVO;
+import com.persagy.apm.energy.report.monthly.config.type.service.IReportTypeEnumService;
 import com.persagy.apm.energy.report.monthly.config.type.service.IReportTypeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.persagy.apm.energy.report.saasweb.model.vo.PartitionVO;
+import com.persagy.apm.energy.report.saasweb.model.vo.SimpleProjectVO;
+import com.persagy.apm.energy.report.saasweb.service.ISaasWebService;
+import org.assertj.core.util.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.apache.commons.lang.StringUtils;
 import com.persagy.apm.common.constant.enums.ValidEnum;
@@ -29,6 +38,10 @@ import org.springframework.util.CollectionUtils;
 @Service
 public class ReportTypeServiceImpl extends ServiceImpl<ReportTypeMapper, ReportType>
         implements IReportTypeService {
+    @Autowired
+    ISaasWebService saasWebService;
+    @Autowired
+    IReportTypeEnumService reportTypeEnumService;
 
     /**
      * 创建报告类型
@@ -206,7 +219,39 @@ public class ReportTypeServiceImpl extends ServiceImpl<ReportTypeMapper, ReportT
 
     @Override
     public IPage<ResponseReportTypeListItemVO> queryAvailableReportTypes() {
-        // TODO: 2021/5/19 根据用户关联的项目,查询用户可选的报告类型
-        return null;
+        IPage<ResponseReportTypeListItemVO> result = new Page<>();
+
+        List<EnumVO> buildingTypes = reportTypeEnumService.queryBuildingTypeEnum();
+        // 当前用户可用的业态
+        List<String> availableBuildingTypes = Lists.newArrayList();
+        // 当前用户可用的所属类型
+        List<String> availableBelongTypes = Lists.newArrayList();
+        for (EnumVO buildingType : buildingTypes) {
+            List<SimpleProjectVO> availableProjects = saasWebService.getAvailableProjects(buildingType.getKey());
+            if (!CollectionUtils.isEmpty(availableProjects)) {
+                availableBuildingTypes.add(buildingType.getKey());
+                availableBelongTypes.add(BelongTypeEnum.PROJECT.getType());
+            }
+            List<PartitionVO> availableAreas = saasWebService.getAvailableAreas(buildingType.getKey());
+            if (!CollectionUtils.isEmpty(availableAreas)) {
+                availableBelongTypes.add(BelongTypeEnum.AREA.getType());
+            }
+        }
+        LambdaQueryWrapper<ReportType> queryWrapper = new LambdaQueryWrapper<>();
+        if (CollectionUtils.isEmpty(availableBuildingTypes) || CollectionUtils.isEmpty(availableBelongTypes)) {
+            result.setTotal(0);
+            result.setRecords(Lists.newArrayList());
+            return result;
+        }
+        queryWrapper.eq(ReportType::getValid, ValidEnum.TRUE.getType());
+        queryWrapper.in(ReportType::getBelongType, availableBelongTypes);
+        queryWrapper.in(ReportType::getBuildingType, availableBuildingTypes);
+
+        List<ReportType> availableReportTypeList = list(queryWrapper);
+        List<ResponseReportTypeListItemVO> listItemVOList = ConvertReportTypeTool.INSTANCE.convert2List(availableReportTypeList);
+        result.setRecords(listItemVOList);
+        result.setTotal(availableBelongTypes.size());
+
+        return result;
     }
 }

+ 55 - 34
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/controller/ReportBusinessDetailController.java

@@ -1,19 +1,30 @@
 package com.persagy.apm.energy.report.monthly.detail.business.controller;
 
+import com.persagy.apm.common.response.ApmResponseUpsertVO;
+import com.persagy.apm.common.response.CommonResult;
+import com.persagy.apm.common.utils.ResultHelper;
+import com.persagy.apm.energy.report.monthly.config.rel.detailstatisticsitem.model.ConvertReportDetailStatisticsItemRelTool;
+import com.persagy.apm.energy.report.monthly.config.rel.detailstatisticsitem.model.ReportDetailStatisticsItemRel;
+import com.persagy.apm.energy.report.monthly.config.rel.detailstatisticsitem.model.dto.QueryReportDetailStatisticsItemRelDTO;
+import com.persagy.apm.energy.report.monthly.config.rel.detailstatisticsitem.model.vo.ResponseReportDetailStatisticsItemRelListItemVO;
+import com.persagy.apm.energy.report.monthly.config.rel.detailstatisticsitem.service.IReportDetailStatisticsItemRelService;
+import com.persagy.apm.energy.report.monthly.detail.business.model.ConvertReportBusinessDetailTool;
+import com.persagy.apm.energy.report.monthly.detail.business.model.ReportBusinessDetail;
+import com.persagy.apm.energy.report.monthly.detail.business.model.dto.GetReportBusinessDetailDTO;
+import com.persagy.apm.energy.report.monthly.detail.business.model.dto.UpdateReportBusinessDetailDTO;
+import com.persagy.apm.energy.report.monthly.detail.business.model.vo.ResponseReportBusinessDetailItemVO;
 import com.persagy.apm.energy.report.monthly.detail.business.service.IReportBusinessDetailService;
-
-import org.springframework.beans.factory.annotation.Autowired;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import com.persagy.apm.energy.report.monthly.detail.business.model.*;
-import com.persagy.apm.energy.report.monthly.detail.business.model.vo.*;
-import com.persagy.apm.energy.report.monthly.detail.business.model.dto.*;
-import com.persagy.apm.common.response.*;
-import com.persagy.apm.common.utils.ResultHelper;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
+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 javax.validation.Valid;
+import java.util.List;
 
 /**
  * 报告详情控制层
@@ -28,21 +39,31 @@ import javax.validation.Valid;
 public class ReportBusinessDetailController {
     @Autowired
     private IReportBusinessDetailService reportBusinessDetailService;
+    @Autowired
+    private IReportDetailStatisticsItemRelService reportDetailStatisticsItemRelService;
 
-//    @ApiOperation(value = "创建报告详情")
-//    @PostMapping("/create")
-//    public CommonResult<ApmResponseUpsertVO> createReportBusinessDetail(
-//            @Valid @RequestBody AddReportBusinessDetailDTO addReportBusinessDetailDTO) {
-//        String id = reportBusinessDetailService.createReportBusinessDetail(addReportBusinessDetailDTO);
-//        return ResultHelper.single(new ApmResponseUpsertVO(id));
-//    }
+    //    @ApiOperation(value = "创建报告详情")
+    //    @PostMapping("/create")
+    //    public CommonResult<ApmResponseUpsertVO> createReportBusinessDetail(
+    //            @Valid @RequestBody AddReportBusinessDetailDTO addReportBusinessDetailDTO) {
+    //        String id = reportBusinessDetailService.createReportBusinessDetail(addReportBusinessDetailDTO);
+    //        return ResultHelper.single(new ApmResponseUpsertVO(id));
+    //    }
 
     @ApiOperation(value = "查看报告详情")
     @PostMapping("/get")
-    public CommonResult<ResponseReportBusinessDetailItemVO> queryReportBusinessDetailDetail(
+    public CommonResult<ResponseReportBusinessDetailItemVO> getReportBusinessDetail(
             @Valid @RequestBody GetReportBusinessDetailDTO getReportBusinessDetailDTO) {
-        ReportBusinessDetail reportBusinessDetail = reportBusinessDetailService.queryReportBusinessDetailDetail(getReportBusinessDetailDTO.getId());
+        ReportBusinessDetail reportBusinessDetail = reportBusinessDetailService.getReportBusinessDetail(getReportBusinessDetailDTO.getId());
         ResponseReportBusinessDetailItemVO responseReportBusinessDetailItemVO = ConvertReportBusinessDetailTool.INSTANCE.convert2ResponseItemDTO(reportBusinessDetail);
+        // 查询统计条目补充信息
+        QueryReportDetailStatisticsItemRelDTO queryReportDetailStatisticsItemRelDTO = new QueryReportDetailStatisticsItemRelDTO();
+        queryReportDetailStatisticsItemRelDTO.setReportDetailId(getReportBusinessDetailDTO.getId());
+        queryReportDetailStatisticsItemRelDTO.setReportTypeId(getReportBusinessDetailDTO.getReportTypeId());
+        List<ReportDetailStatisticsItemRel> reportDetailStatisticsItemRels = reportDetailStatisticsItemRelService.queryReportDetailStatisticsItemRelList(queryReportDetailStatisticsItemRelDTO);
+        List<ResponseReportDetailStatisticsItemRelListItemVO> responseReportDetailStatisticsItemRelListItemVOList = ConvertReportDetailStatisticsItemRelTool.INSTANCE.convert2List(reportDetailStatisticsItemRels);
+        responseReportBusinessDetailItemVO.setStatisticItemsSupplements(responseReportDetailStatisticsItemRelListItemVOList);
+
         return ResultHelper.single(responseReportBusinessDetailItemVO);
     }
 
@@ -56,23 +77,23 @@ public class ReportBusinessDetailController {
     }
 
 
-//    @ApiOperation(value = "删除报告详情")
-//    @PostMapping("/delete")
-//    public CommonResult deleteReportBusinessDetail(
-//            @RequestBody @Valid DeleteReportBusinessDetailDTO deleteReportBusinessDetailDTO) {
-//        reportBusinessDetailService.deleteReportBusinessDetail(deleteReportBusinessDetailDTO.getId());
-//        return ResultHelper.success();
-//    }
-//
-//
-//    @ApiOperation(value = "报告详情列表")
-//    @PostMapping("/query")
-//    public CommonResult<PageList<ResponseReportBusinessDetailListItemVO>> queryReportBusinessDetail(
-//            @Valid @RequestBody QueryReportBusinessDetailDTO queryReportBusinessDetailDTO) {
-//        List<ReportBusinessDetail> reportBusinessDetailList = reportBusinessDetailService.queryReportBusinessDetailList(queryReportBusinessDetailDTO);
-//        List<ResponseReportBusinessDetailListItemVO> resultList = ConvertReportBusinessDetailTool.INSTANCE.convert2List(reportBusinessDetailList);
-//        return ResultHelper.multi(resultList);
-//    }
+    //    @ApiOperation(value = "删除报告详情")
+    //    @PostMapping("/delete")
+    //    public CommonResult deleteReportBusinessDetail(
+    //            @RequestBody @Valid DeleteReportBusinessDetailDTO deleteReportBusinessDetailDTO) {
+    //        reportBusinessDetailService.deleteReportBusinessDetail(deleteReportBusinessDetailDTO.getId());
+    //        return ResultHelper.success();
+    //    }
+    //
+    //
+    //    @ApiOperation(value = "报告详情列表")
+    //    @PostMapping("/query")
+    //    public CommonResult<PageList<ResponseReportBusinessDetailListItemVO>> queryReportBusinessDetail(
+    //            @Valid @RequestBody QueryReportBusinessDetailDTO queryReportBusinessDetailDTO) {
+    //        List<ReportBusinessDetail> reportBusinessDetailList = reportBusinessDetailService.queryReportBusinessDetailList(queryReportBusinessDetailDTO);
+    //        List<ResponseReportBusinessDetailListItemVO> resultList = ConvertReportBusinessDetailTool.INSTANCE.convert2List(reportBusinessDetailList);
+    //        return ResultHelper.multi(resultList);
+    //    }
 
     //@ApiOperation(value = "报告详情列表, 分页查询")
     //@PostMapping("/query")

+ 2 - 2
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/vo/ResponseReportBusinessDetailItemVO.java

@@ -1,7 +1,7 @@
 package com.persagy.apm.energy.report.monthly.detail.business.model.vo;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
-import com.persagy.apm.energy.report.monthly.config.rel.detailstatisticsitem.model.vo.ResponseReportDetailStatisticsItemRelItemVO;
+import com.persagy.apm.energy.report.monthly.config.rel.detailstatisticsitem.model.vo.ResponseReportDetailStatisticsItemRelListItemVO;
 import com.persagy.apm.energy.report.monthly.detail.business.model.*;
 import com.persagy.apm.energy.report.saasweb.model.vo.ReportAreaVO;
 import com.persagy.apm.energy.report.saasweb.model.vo.ReportProjectVO;
@@ -68,5 +68,5 @@ public class ResponseReportBusinessDetailItemVO {
     private String itemExplain;
 
     @ApiModelProperty(value = "模型补充说明")
-    private List<ResponseReportDetailStatisticsItemRelItemVO> statisticItemsSupplements;
+    private List<ResponseReportDetailStatisticsItemRelListItemVO> statisticItemsSupplements;
 }

+ 1 - 1
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/service/IReportBusinessDetailService.java

@@ -35,7 +35,7 @@ public interface IReportBusinessDetailService {
      * @author lixing
      * @version V1.0 2021-05-17 11:08:34
      */
-    ReportBusinessDetail queryReportBusinessDetailDetail(String id);
+    ReportBusinessDetail getReportBusinessDetail(String id);
 
     /**
      * 更新报告详情

+ 38 - 21
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/service/impl/ReportBusinessDetailServiceImpl.java

@@ -1,24 +1,33 @@
 package com.persagy.apm.energy.report.monthly.detail.business.service.impl;
 
-import com.persagy.apm.common.context.poems.PoemsContext;
-import com.persagy.apm.energy.report.monthly.detail.business.dao.ReportBusinessDetailMapper;
-import com.persagy.apm.energy.report.monthly.detail.business.service.IReportBusinessDetailService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-import org.apache.commons.lang.StringUtils;
-import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.persagy.apm.energy.report.monthly.detail.business.model.*;
-import com.persagy.apm.energy.report.monthly.detail.business.model.dto.*;
-
-import java.util.List;
-
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.base.CaseFormat;
+import com.persagy.apm.common.constant.enums.ValidEnum;
+import com.persagy.apm.common.context.poems.PoemsContext;
 import com.persagy.apm.common.model.dto.Sort;
+import com.persagy.apm.energy.report.monthly.config.rel.detailstatisticsitem.model.ReportDetailStatisticsItemRel;
+import com.persagy.apm.energy.report.monthly.config.rel.detailstatisticsitem.model.dto.AddReportDetailStatisticsItemRelDTO;
+import com.persagy.apm.energy.report.monthly.config.rel.detailstatisticsitem.model.dto.QueryReportDetailStatisticsItemRelDTO;
+import com.persagy.apm.energy.report.monthly.config.rel.detailstatisticsitem.service.IReportDetailStatisticsItemRelService;
+import com.persagy.apm.energy.report.monthly.detail.business.dao.ReportBusinessDetailMapper;
+import com.persagy.apm.energy.report.monthly.detail.business.model.ConvertReportBusinessDetailTool;
+import com.persagy.apm.energy.report.monthly.detail.business.model.ReportBusinessDetail;
+import com.persagy.apm.energy.report.monthly.detail.business.model.dto.AddReportBusinessDetailDTO;
+import com.persagy.apm.energy.report.monthly.detail.business.model.dto.PageQueryReportBusinessDetailDTO;
+import com.persagy.apm.energy.report.monthly.detail.business.model.dto.QueryReportBusinessDetailDTO;
+import com.persagy.apm.energy.report.monthly.detail.business.model.dto.UpdateReportBusinessDetailDTO;
+import com.persagy.apm.energy.report.monthly.detail.business.service.IReportBusinessDetailService;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.util.List;
+
 /**
  * 报告详情(ReportBusinessDetail) service层
  *
@@ -28,6 +37,8 @@ import org.springframework.util.CollectionUtils;
 @Service
 public class ReportBusinessDetailServiceImpl extends ServiceImpl<ReportBusinessDetailMapper, ReportBusinessDetail>
         implements IReportBusinessDetailService {
+    @Autowired
+    IReportDetailStatisticsItemRelService reportDetailStatisticsItemRelService;
 
     /**
      * 创建报告详情
@@ -58,16 +69,8 @@ public class ReportBusinessDetailServiceImpl extends ServiceImpl<ReportBusinessD
 
     }
 
-    /**
-     * 报告详情详情
-     *
-     * @param id 主键
-     * @return 部门do类
-     * @author lixing
-     * @version V1.0 2021-05-17 11:08:34
-     */
     @Override
-    public ReportBusinessDetail queryReportBusinessDetailDetail(String id) {
+    public ReportBusinessDetail getReportBusinessDetail(String id) {
         ReportBusinessDetail reportBusinessDetail = getById(id);
         if (reportBusinessDetail == null) {
             throw new IllegalArgumentException("查看ReportBusinessDetail详情时发生异常,找不到要查看的记录,id=" + id);
@@ -82,11 +85,25 @@ public class ReportBusinessDetailServiceImpl extends ServiceImpl<ReportBusinessD
      * @version V1.0 2021-05-17 11:08:34
      */
     @Override
+    @Transactional
     public void updateReportBusinessDetail(UpdateReportBusinessDetailDTO updateReportBusinessDetailDTO) {
         ReportBusinessDetail reportBusinessDetail = getById(updateReportBusinessDetailDTO.getId());
         reportBusinessDetail = ConvertReportBusinessDetailTool.INSTANCE.convertUpdateDto2Entity(reportBusinessDetail, updateReportBusinessDetailDTO);
         reportBusinessDetail.setModifier(PoemsContext.getContext().getUserId());
         updateById(reportBusinessDetail);
+        // 更新统计条目信息,先删后加
+        QueryReportDetailStatisticsItemRelDTO queryReportDetailStatisticsItemRelDTO = new QueryReportDetailStatisticsItemRelDTO();
+        queryReportDetailStatisticsItemRelDTO.setReportDetailId(updateReportBusinessDetailDTO.getId());
+        queryReportDetailStatisticsItemRelDTO.setReportTypeId(updateReportBusinessDetailDTO.getReportTypeId());
+        List<ReportDetailStatisticsItemRel> reportDetailStatisticsItemRels = reportDetailStatisticsItemRelService.queryReportDetailStatisticsItemRelList(queryReportDetailStatisticsItemRelDTO);
+        for (ReportDetailStatisticsItemRel reportDetailStatisticsItemRel : reportDetailStatisticsItemRels) {
+            reportDetailStatisticsItemRelService.deleteReportDetailStatisticsItemRel(reportDetailStatisticsItemRel.getId());
+        }
+
+        List<AddReportDetailStatisticsItemRelDTO> statisticItemsSupplements = updateReportBusinessDetailDTO.getStatisticItemsSupplements();
+        for (AddReportDetailStatisticsItemRelDTO statisticItemsSupplement : statisticItemsSupplements) {
+            reportDetailStatisticsItemRelService.createReportDetailStatisticsItemRel(statisticItemsSupplement);
+        }
     }
 
     /**

+ 0 - 44
src/main/java/com/persagy/apm/energy/report/monthly/outline/constants/enums/ReportTypeEnum.java

@@ -1,44 +0,0 @@
-package com.persagy.apm.energy.report.monthly.outline.constants.enums;
-
-import com.persagy.apm.common.model.annotation.SwaggerDisplayEnum;
-
-/**
- * 报告类型
- *
- * @author lixing
- * @version V1.0 2021/5/17 10:51 上午
- */
-@SwaggerDisplayEnum
-public enum ReportTypeEnum {
-    /**
-     * 报告类型
-     */
-    BUSINESS_PROJECT("1", "商业项目能耗月报"),
-    HOTEL_PROJECT("2", "酒店项目能耗月报"),
-    BUSINESS_AREA("3", "商业大区能耗月报"),
-    HOTEL_AREA("4", "酒店集团能耗月报");
-
-    private String type;
-    private String desc;
-
-    ReportTypeEnum(String type, String desc) {
-        this.type = type;
-        this.desc = desc;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public String getDesc() {
-        return desc;
-    }
-
-    public void setDesc(String desc) {
-        this.desc = desc;
-    }
-}

+ 59 - 45
src/main/java/com/persagy/apm/energy/report/monthly/outline/controller/ReportOutlineController.java

@@ -1,6 +1,7 @@
 package com.persagy.apm.energy.report.monthly.outline.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.persagy.apm.common.response.ApmResponseUpsertVO;
 import com.persagy.apm.common.response.CommonResult;
 import com.persagy.apm.common.response.PageList;
@@ -10,14 +11,16 @@ import com.persagy.apm.energy.report.monthly.config.type.service.IReportTypeServ
 import com.persagy.apm.energy.report.monthly.outline.model.ConvertReportOutlineTool;
 import com.persagy.apm.energy.report.monthly.outline.model.ReportOutline;
 import com.persagy.apm.energy.report.monthly.outline.model.dto.AddReportOutlineDTO;
+import com.persagy.apm.energy.report.monthly.outline.model.dto.DeleteReportOutlineDTO;
 import com.persagy.apm.energy.report.monthly.outline.model.dto.PageQueryReportOutlineDTO;
+import com.persagy.apm.energy.report.monthly.outline.model.dto.QueryAvailableBelongsDTO;
 import com.persagy.apm.energy.report.monthly.outline.model.vo.ResponseReportOutlineListItemVO;
 import com.persagy.apm.energy.report.monthly.outline.service.IReportOutlineService;
 import com.persagy.apm.energy.report.saasweb.model.vo.PartitionVO;
 import com.persagy.apm.energy.report.saasweb.model.vo.SimpleProjectVO;
+import com.persagy.apm.energy.report.saasweb.service.ISaasWebService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.assertj.core.util.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -26,6 +29,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 报告概要控制层
@@ -42,6 +46,8 @@ public class ReportOutlineController {
     private IReportOutlineService reportOutlineService;
     @Autowired
     private IReportTypeService reportTypeService;
+    @Autowired
+    private ISaasWebService saasWebService;
 
     @ApiOperation(value = "创建报告概要")
     @PostMapping("/create")
@@ -51,42 +57,42 @@ public class ReportOutlineController {
         return ResultHelper.single(new ApmResponseUpsertVO(id));
     }
 
-//    @ApiOperation(value = "报告概要详情")
-//    @PostMapping("/get")
-//    public CommonResult<ResponseReportOutlineItemVO> queryReportOutlineDetail(
-//            @Valid @RequestBody QueryReportOutlineDetailDTO queryReportOutlineDetailDTO) {
-//        ReportOutline reportOutline = reportOutlineService.queryReportOutlineDetail(queryReportOutlineDetailDTO.getId());
-//        ResponseReportOutlineItemVO responseReportOutlineItemVO = ConvertReportOutlineTool.INSTANCE.convert2ResponseItemDTO(reportOutline);
-//        return ResultHelper.single(responseReportOutlineItemVO);
-//    }
-
-
-//    @ApiOperation(value = "更新报告概要")
-//    @PostMapping("/update")
-//    public CommonResult<ApmResponseUpsertVO> updateReportOutline(
-//            @Valid @RequestBody UpdateReportOutlineDTO updateReportOutlineDTO) {
-//        reportOutlineService.updateReportOutline(updateReportOutlineDTO);
-//        return ResultHelper.single(new ApmResponseUpsertVO(updateReportOutlineDTO.getId()));
-//    }
-
-
-//    @ApiOperation(value = "删除报告概要")
-//    @PostMapping("/delete")
-//    public CommonResult deleteReportOutline(
-//            @RequestBody @Valid DeleteReportOutlineDTO deleteReportOutlineDTO) {
-//        reportOutlineService.deleteReportOutline(deleteReportOutlineDTO.getId());
-//        return ResultHelper.success();
-//    }
-
-
-//    @ApiOperation(value = "报告概要列表")
-//    @PostMapping("/query")
-//    public CommonResult<PageList<ResponseReportOutlineListItemVO>> queryReportOutline(
-//            @Valid @RequestBody QueryReportOutlineDTO queryReportOutlineDTO) {
-//        List<ReportOutline> reportOutlineList = reportOutlineService.queryReportOutlineList(queryReportOutlineDTO);
-//        List<ResponseReportOutlineListItemVO> resultList = ConvertReportOutlineTool.INSTANCE.convert2List(reportOutlineList);
-//        return ResultHelper.multi(resultList);
-//    }
+    //    @ApiOperation(value = "报告概要详情")
+    //    @PostMapping("/get")
+    //    public CommonResult<ResponseReportOutlineItemVO> queryReportOutlineDetail(
+    //            @Valid @RequestBody QueryReportOutlineDetailDTO queryReportOutlineDetailDTO) {
+    //        ReportOutline reportOutline = reportOutlineService.queryReportOutlineDetail(queryReportOutlineDetailDTO.getId());
+    //        ResponseReportOutlineItemVO responseReportOutlineItemVO = ConvertReportOutlineTool.INSTANCE.convert2ResponseItemDTO(reportOutline);
+    //        return ResultHelper.single(responseReportOutlineItemVO);
+    //    }
+
+
+    //    @ApiOperation(value = "更新报告概要")
+    //    @PostMapping("/update")
+    //    public CommonResult<ApmResponseUpsertVO> updateReportOutline(
+    //            @Valid @RequestBody UpdateReportOutlineDTO updateReportOutlineDTO) {
+    //        reportOutlineService.updateReportOutline(updateReportOutlineDTO);
+    //        return ResultHelper.single(new ApmResponseUpsertVO(updateReportOutlineDTO.getId()));
+    //    }
+
+
+        @ApiOperation(value = "批量删除报告概要")
+        @PostMapping("/batch_delete")
+        public CommonResult deleteReportOutline(
+                @RequestBody @Valid DeleteReportOutlineDTO deleteReportOutlineDTO) {
+            reportOutlineService.batchDeleteReportOutline(deleteReportOutlineDTO.getIds());
+            return ResultHelper.success();
+        }
+
+
+    //    @ApiOperation(value = "报告概要列表")
+    //    @PostMapping("/query")
+    //    public CommonResult<PageList<ResponseReportOutlineListItemVO>> queryReportOutline(
+    //            @Valid @RequestBody QueryReportOutlineDTO queryReportOutlineDTO) {
+    //        List<ReportOutline> reportOutlineList = reportOutlineService.queryReportOutlineList(queryReportOutlineDTO);
+    //        List<ResponseReportOutlineListItemVO> resultList = ConvertReportOutlineTool.INSTANCE.convert2List(reportOutlineList);
+    //        return ResultHelper.multi(resultList);
+    //    }
 
     @ApiOperation(value = "报告概要列表, 分页查询")
     @PostMapping("/query")
@@ -95,7 +101,7 @@ public class ReportOutlineController {
         IPage<ReportOutline> pagedList = reportOutlineService.pageQueryReportOutline(pageQueryReportOutlineDTO);
         IPage<ResponseReportOutlineListItemVO> pagedResultList = pagedList.convert(item -> {
             try {
-               return ConvertReportOutlineTool.INSTANCE.convert2ResponseListItemDTO(item);
+                return ConvertReportOutlineTool.INSTANCE.convert2ResponseListItemDTO(item);
             } catch (Exception e) {
                 throw new IllegalArgumentException("分页查询,ReportOutline实体类转换为列表对象发生异常", e);
             }
@@ -105,21 +111,29 @@ public class ReportOutlineController {
 
     @ApiOperation(value = "查询用户可选项目范围")
     @PostMapping("/queryAvailableProjects")
-    public CommonResult<PageList<SimpleProjectVO>> queryAvailableProjects() {
-        // TODO: 2021/5/17 查询用户可选项目范围
-        return ResultHelper.multi(Lists.newArrayList());
+    public CommonResult<PageList<SimpleProjectVO>> queryAvailableProjects(
+            @Valid @RequestBody QueryAvailableBelongsDTO queryAvailableBelongsDTO) {
+        List<SimpleProjectVO> availableProjects = saasWebService.getAvailableProjects(queryAvailableBelongsDTO.getBuildingType());
+        IPage<SimpleProjectVO> resultList = new Page<>();
+        resultList.setRecords(availableProjects);
+        resultList.setTotal(availableProjects.size());
+        return ResultHelper.multi(resultList);
     }
 
     @ApiOperation(value = "查询用户可选分区范围")
     @PostMapping("/queryAvailableAreas")
-    public CommonResult<PageList<PartitionVO>> queryAvailableAreas() {
-        // TODO: 2021/5/17 查询用户可选分区范围
-        return ResultHelper.multi(Lists.newArrayList());
+    public CommonResult<PageList<PartitionVO>> queryAvailableAreas(
+            @Valid @RequestBody QueryAvailableBelongsDTO queryAvailableBelongsDTO) {
+        List<PartitionVO> availableAreas = saasWebService.getAvailableAreas(queryAvailableBelongsDTO.getBuildingType());
+        IPage<PartitionVO> resultList = new Page<>();
+        resultList.setRecords(availableAreas);
+        resultList.setTotal(availableAreas.size());
+        return ResultHelper.multi(resultList);
     }
 
     @ApiOperation(value = "当前用户可用的报告类型")
     @PostMapping("/availableReportTypes")
-    public CommonResult<PageList<ResponseReportTypeListItemVO>> queryAvaliableReportTypes() {
+    public CommonResult<PageList<ResponseReportTypeListItemVO>> queryAvailableReportTypes() {
         IPage<ResponseReportTypeListItemVO> resultList = reportTypeService.queryAvailableReportTypes();
         return ResultHelper.multi(resultList);
     }

+ 4 - 2
src/main/java/com/persagy/apm/energy/report/monthly/outline/model/dto/DeleteReportOutlineDTO.java

@@ -4,7 +4,9 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
+import java.util.List;
 
 /**
  * @author lixing
@@ -13,8 +15,8 @@ import javax.validation.constraints.NotNull;
 @Data
 @ApiModel(value = "删除报告概要入参")
 public class DeleteReportOutlineDTO {
-    @NotNull(message = "id不能为空")
+    @NotEmpty(message = "报告id不能为空")
     @ApiModelProperty(value = "报告id", required = true)
-    private String id;
+    private List<String> ids;
 
 }

+ 22 - 0
src/main/java/com/persagy/apm/energy/report/monthly/outline/model/dto/QueryAvailableBelongsDTO.java

@@ -0,0 +1,22 @@
+package com.persagy.apm.energy.report.monthly.outline.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-17 11:09:38
+ */
+@Data
+@ApiModel(value = "查询用户可用报告所属入参")
+public class QueryAvailableBelongsDTO {
+
+    @ApiModelProperty(value = "业态", required = true)
+    @NotEmpty(message = "业态不能为空")
+    private String buildingType;
+}

+ 0 - 1
src/main/java/com/persagy/apm/energy/report/monthly/outline/service/IReportOutlineEnumService.java

@@ -1,7 +1,6 @@
 package com.persagy.apm.energy.report.monthly.outline.service;
 
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.persagy.apm.common.model.vo.EnumVO;
 
 import java.util.List;

+ 3 - 3
src/main/java/com/persagy/apm/energy/report/monthly/outline/service/IReportOutlineService.java

@@ -47,13 +47,13 @@ public interface IReportOutlineService {
     void updateReportOutline(UpdateReportOutlineDTO updateReportOutlineDTO);
 
     /**
-     * 删除报告概要
+     * 批量删除报告概要
      *
-     * @param id 主键
+     * @param ids 主键列表
      * @author lixing
      * @version V1.0 2021-05-17 11:09:37
      */
-    void deleteReportOutline(String id);
+    void batchDeleteReportOutline(List<String> ids);
 
     /**
      * 查询报告概要

+ 24 - 25
src/main/java/com/persagy/apm/energy/report/monthly/outline/service/impl/ReportOutlineServiceImpl.java

@@ -1,25 +1,29 @@
 package com.persagy.apm.energy.report.monthly.outline.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.base.CaseFormat;
+import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.persagy.apm.common.context.poems.PoemsContext;
+import com.persagy.apm.common.model.dto.Sort;
 import com.persagy.apm.energy.report.monthly.outline.constants.enums.ReportStateEnum;
 import com.persagy.apm.energy.report.monthly.outline.dao.ReportOutlineMapper;
+import com.persagy.apm.energy.report.monthly.outline.model.ConvertReportOutlineTool;
+import com.persagy.apm.energy.report.monthly.outline.model.ReportOutline;
+import com.persagy.apm.energy.report.monthly.outline.model.dto.AddReportOutlineDTO;
+import com.persagy.apm.energy.report.monthly.outline.model.dto.PageQueryReportOutlineDTO;
+import com.persagy.apm.energy.report.monthly.outline.model.dto.QueryReportOutlineDTO;
+import com.persagy.apm.energy.report.monthly.outline.model.dto.UpdateReportOutlineDTO;
 import com.persagy.apm.energy.report.monthly.outline.service.IReportOutlineService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
 import org.apache.commons.lang.StringUtils;
-import com.persagy.apm.common.constant.enums.ValidEnum;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.persagy.apm.energy.report.monthly.outline.model.*;
-import com.persagy.apm.energy.report.monthly.outline.model.dto.*;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.util.List;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.google.common.base.CaseFormat;
-import com.persagy.apm.common.model.dto.Sort;
-import org.springframework.util.CollectionUtils;
-
 /**
  * 报告概要(ReportOutline) service层
  *
@@ -113,20 +117,15 @@ public class ReportOutlineServiceImpl extends ServiceImpl<ReportOutlineMapper, R
         return reportOutline;
     }
 
-    /**
-     * 删除报告概要
-     *
-     * @param id 主键
-     * @author lixing
-     * @version V1.0 2021-05-17 11:09:37
-     */
     @Override
-    public void deleteReportOutline(String id) {
-        // 校验是否可删除
-        ReportOutline reportOutline = checkDeletable(id);
-
-        reportOutline.setValid(ValidEnum.FALSE.getType());
-        updateById(reportOutline);
+    @Transactional
+    public void batchDeleteReportOutline(List<String> ids) {
+        for (String id : ids) {
+            // 校验是否可删除
+            ReportOutline reportOutline = checkDeletable(id);
+            reportOutline.setValid(ValidEnum.FALSE.getType());
+            updateById(reportOutline);
+        }
     }
 
     /**