Ver Fonte

版本更新

lihui001 há 3 anos atrás
pai
commit
ed04a510dc

+ 1 - 1
zoniot-rmcp/zoniot-rmcp-api/src/main/java/com/zcxk/rmcp/api/vo/MeterReadRecordExcelVo.java

@@ -37,7 +37,7 @@ public class MeterReadRecordExcelVo {
 
     @ApiModelProperty(value="读数")
     @ExcelProperty(value = {"当前读数"}, index = 4)
-    private String readData;
+    private Double readData;
 
     @ApiModelProperty(value="抄表状态/读表状态 : 1未抄 2已抄")
     @ExcelProperty(value = {"抄表状态"}, index = 5)

+ 5 - 10
zoniot-rmcp/zoniot-rmcp-api/src/main/java/com/zcxk/rmcp/api/vo/MeterReadRecordVo.java

@@ -1,17 +1,12 @@
 package com.zcxk.rmcp.api.vo;
 
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.alibaba.excel.converters.Converter;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.zcxk.rmcp.api.enums.ReadStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
 import java.util.Date;
-import java.util.List;
 
 /**
  * @author Andy
@@ -80,11 +75,11 @@ public class MeterReadRecordVo {
     public static class MeterReadInfo implements Serializable {
 
         @ApiModelProperty(value="读表日期")
-        private String readDate;
+        private int readDate;
 
         @ApiModelProperty(value="抄表时间/读表时间")
         @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
-        private LocalDateTime readTime;
+        private Date readTime;
 
         @ApiModelProperty(value="阀门状态")
         private Integer valveStatus;
@@ -93,13 +88,13 @@ public class MeterReadRecordVo {
         private String readStatus;
 
         @ApiModelProperty(value="读数")
-        private String readData;
+        private Double readData;
 
         @ApiModelProperty(value="最近有效数据")
-        private BigDecimal lastValid;
+        private Double lastValid;
 
         @ApiModelProperty(value="距离上次的消耗/当天用水量")
-        private BigDecimal lastCost;
+        private Double lastCost;
 
         public String getReadStatus(){
             return ReadStatusEnum.getMessage(readStatus);

+ 5 - 5
zoniot-rmcp/zoniot-rmcp-core/src/main/java/com/zcxk/rmcp/core/dao/mongo/MeterReadRecordDao.java

@@ -201,7 +201,7 @@ public class MeterReadRecordDao extends BaseDao<MeterReadRecord, String> impleme
     * @param id, endDate
     * @return java.util.List<com.zcxk.rmcp.core.mongo.MeterReadRecord>
     **/
-    public List<MeterReadRecord> queryDeviceMeterReadRecordWithCondtion(Long id, int endDate) {
+    public List<MeterReadRecordVo> queryDeviceMeterReadRecordWithCondtion(Long id, int endDate) {
         return listSingleDeviceTimeData(id, null, endDate);
     }
 
@@ -212,7 +212,7 @@ public class MeterReadRecordDao extends BaseDao<MeterReadRecord, String> impleme
     * @param id, startDate, endDate
     * @return java.util.List<com.zcxk.rmcp.core.mongo.MeterReadRecord>
     **/
-    public List<MeterReadRecord> queryDeviceMeterReadRecordWithCondtion(Long id, Integer startDate, Integer endDate) {
+    public List<MeterReadRecordVo> queryDeviceMeterReadRecordWithCondtion(Long id, Integer startDate, Integer endDate) {
         return listSingleDeviceTimeData(id, startDate, endDate);
     }
 
@@ -223,7 +223,7 @@ public class MeterReadRecordDao extends BaseDao<MeterReadRecord, String> impleme
     * @param deviceId, startDate, endDate
     * @return java.util.List<com.zcxk.rmcp.core.mongo.MeterReadRecord>
     **/
-    public List<MeterReadRecord> listSingleDeviceTimeData(Long deviceId, Integer startDate, Integer endDate){
+    public List<MeterReadRecordVo> listSingleDeviceTimeData(Long deviceId, Integer startDate, Integer endDate){
         Criteria criteria = new Criteria();
         criteria.and("deviceId").is(deviceId);
         Criteria dayCritera = new Criteria();
@@ -238,8 +238,8 @@ public class MeterReadRecordDao extends BaseDao<MeterReadRecord, String> impleme
                 dayCritera,null);
         countQuery.add(Aggregation.sort(Sort.Direction.DESC,"data.readTime"));
         AggregationOptions aggregationOptions = AggregationOptions.builder().allowDiskUse(true).build();
-        AggregationResults<MeterReadRecord> aggregate = mongoTemplate.aggregate(Aggregation.newAggregation(countQuery).withOptions(aggregationOptions)
-                , MeterReadRecord.class, MeterReadRecord.class);
+        AggregationResults<MeterReadRecordVo> aggregate = mongoTemplate.aggregate(Aggregation.newAggregation(countQuery).withOptions(aggregationOptions)
+                , MeterReadRecord.class, MeterReadRecordVo.class);
         return aggregate.getMappedResults();
     }
 

+ 1 - 1
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/controller/MeterReadRecordController.java

@@ -77,7 +77,7 @@ public class MeterReadRecordController extends BaseController {
         for (MeterReadRecordVo meterReadRecordVo : list) {
             MeterReadRecordExcelVo excelVo = new MeterReadRecordExcelVo();
             BeanCopyUtils.copyProperties(meterReadRecordVo, excelVo,MeterReadRecordExcelVo.class);
-            excelVo.setReadTime(DateUtil.format(meterReadRecordVo.getData().getReadTime()));
+            excelVo.setReadTime(DateUtil.format(meterReadRecordVo.getData().getReadTime(), "yyyy-MM-dd HH:mm:ss"));
             excelVo.setReadStatus(meterReadRecordVo.getData().getReadStatus());
             excelVo.setReadData(meterReadRecordVo.getData().getReadData());
             dataList.add(excelVo);

+ 23 - 5
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/controller/ReadRateController.java

@@ -1,20 +1,26 @@
 package com.zcxk.rmcp.web.controller;
 
+import com.zcxk.core.common.exception.BusinessException;
 import com.zcxk.core.common.pojo.AjaxMessage;
+import com.zcxk.core.mysql.pageing.Pagination;
 import com.zcxk.core.utils.export.EasyExcelUtil;
 import com.zcxk.rmcp.api.dto.readrate.ReadRateDto;
 import com.zcxk.rmcp.api.enums.ReadRateEnum;
+import com.zcxk.rmcp.api.enums.RmcpErrorEnum;
 import com.zcxk.rmcp.api.vo.ReadRatePageVo;
 import com.zcxk.rmcp.api.vo.ReadRateVo;
+import com.zcxk.rmcp.api.vo.StatisticsReadRateVo;
 import com.zcxk.rmcp.web.factory.ReadRateFactory;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import org.apache.http.HttpResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.util.List;
 
@@ -42,22 +48,34 @@ public class ReadRateController extends BaseController{
 
     @RequestMapping(value = "/page", method = RequestMethod.POST)
     @ApiOperation(value = "分页查询")
-    public AjaxMessage<ReadRatePageVo> page(@RequestBody @Valid ReadRateDto dto) {
+    public AjaxMessage<Pagination> page(@RequestBody @Valid ReadRateDto dto) {
         if (ReadRateEnum.getReadRateEnum(dto.getStatDaysCode()) == null) {
             return AjaxMessage.success(null);
         }
         return AjaxMessage.success(readRateFactory.getReadRateService(dto.getStatDaysCode()).pageReadRate(dto));
     }
 
+    @RequestMapping(value = "/count", method = RequestMethod.POST)
+    @ApiOperation(value = "统计抄表总数")
+    public AjaxMessage<StatisticsReadRateVo> countReadRate(@RequestBody @Valid ReadRateDto dto) {
+        if (ReadRateEnum.getReadRateEnum(dto.getStatDaysCode()) == null) {
+            return AjaxMessage.success(null);
+        }
+        return AjaxMessage.success(readRateFactory.getReadRateService(dto.getStatDaysCode()).countReadRate(dto));
+    }
+
     @RequestMapping(value="export/excel" , method = RequestMethod.POST)
     @ApiOperation(value = "excel导出")
-    public AjaxMessage<String> exportExcel(@RequestBody @Valid ReadRateDto dto) {
+    public void exportExcel(@RequestBody @Valid ReadRateDto dto, HttpServletResponse response) {
         ReadRateEnum readRateEnum = ReadRateEnum.getReadRateEnum(dto.getStatDaysCode());
         List<ReadRateVo> list = readRateFactory.getReadRateService(dto.getStatDaysCode()).listReadRate(dto);
         if (CollectionUtils.isEmpty(list)) {
-            return AjaxMessage.success(null);
+            throw BusinessException.builder(RmcpErrorEnum.RMCP_NOT_FOUND);
+        }
+        try {
+            EasyExcelUtil.excelWrite(response, ReadRateVo.class, readRateEnum.getMessage() +"抄表率记录", list);
+        } catch (Exception e) {
+            throw BusinessException.builder(RmcpErrorEnum.RMCP_DOWNLOAD_ERROR);
         }
-        String filePath = EasyExcelUtil.excelWrite(baseDir, ReadRateVo.class, readRateEnum.getMessage() +"抄表率记录", list);
-        return AjaxMessage.success(filePath);
     }
 }

+ 11 - 12
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/service/AbstractReadRateService.java

@@ -2,6 +2,7 @@ package com.zcxk.rmcp.web.service;
 
 import com.github.pagehelper.PageHelper;
 import com.zcxk.core.common.pojo.UserCondition;
+import com.zcxk.core.mysql.pageing.Pagination;
 import com.zcxk.core.oauth2.util.UserUtil;
 import com.zcxk.core.utils.BigDecimalUtils;
 import com.zcxk.rmcp.api.dto.readrate.ReadRateDto;
@@ -46,28 +47,26 @@ public abstract class AbstractReadRateService implements ReadRateService{
     }
 
     @Override
-    public ReadRatePageVo<ReadRateVo> pageReadRate(ReadRateDto dto) {
+    public Pagination<ReadRateVo> pageReadRate(ReadRateDto dto) {
         PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
         UserCondition userCondition = UserUtil.getCurrentUser().getUserCondition();
         List<ReadRateVo> list = this.listReadRate(dto, userCondition);
         if (CollectionUtils.isEmpty(list)){
-            return new ReadRatePageVo<>();
+            return new Pagination<>();
         }
-        StatisticsReadRateVo statisticsReadRateVo = this.countReadRate(dto, userCondition);
-        ReadRatePageVo<ReadRateVo> result = new ReadRatePageVo<>(list);
-        if (statisticsReadRateVo != null) {
-            result.setReadRate(statisticsReadRateVo.getReadRate());
-            result.setReadTimes(statisticsReadRateVo.getReadTimes());
-            result.setRealReadTimes(statisticsReadRateVo.getRealReadTimes());
-        }
-        return result;
+        return new Pagination<>(list);
     }
 
     @Override
-    public  List<ReadRateVo> listReadRate(ReadRateDto dto){
+    public List<ReadRateVo> listReadRate(ReadRateDto dto){
         return this.listReadRate(dto, UserUtil.getCurrentUser().getUserCondition());
     }
 
+    @Override
+    public StatisticsReadRateVo countReadRate(ReadRateDto dto){
+        return this.countReadRate(dto, UserUtil.getCurrentUser().getUserCondition());
+    }
+
     /**
     * @author Andy
     * @description 统计抄表率
@@ -88,7 +87,7 @@ public abstract class AbstractReadRateService implements ReadRateService{
 
     /**
      * @author Andy
-     * @description 统计抄表
+     * @description 统计抄表总数
      * @date 11:31 2021/7/26
      * @param
      * @return java.util.List<com.zcxk.rmcp.api.vo.StatisticsReadRateVo>

+ 1 - 1
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/service/MeterReadRecordService.java

@@ -61,5 +61,5 @@ public interface MeterReadRecordService {
     * @param dto:
     * @return java.util.List<com.zcxk.rmcp.core.mongo.MeterReadRecord>
     **/
-    List<MeterReadRecord> listSingleDeviceTimeWaterConsumption(MeterReadRecordDeviceDto dto);
+    List<MeterReadRecordVo> listSingleDeviceTimeWaterConsumption(MeterReadRecordDeviceDto dto);
 }

+ 13 - 1
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/service/ReadRateService.java

@@ -1,5 +1,7 @@
 package com.zcxk.rmcp.web.service;
 
+import com.zcxk.core.common.pojo.UserCondition;
+import com.zcxk.core.mysql.pageing.Pagination;
 import com.zcxk.rmcp.api.dto.readrate.ReadRateDto;
 import com.zcxk.rmcp.api.enums.ReadRateEnum;
 import com.zcxk.rmcp.api.vo.ReadRatePageVo;
@@ -32,7 +34,7 @@ public interface ReadRateService {
     * @param dto:
     * @return com.zcxk.rmcp.api.vo.ReadRatePageVo<com.zcxk.rmcp.api.vo.ReadRateVo>
     **/
-    ReadRatePageVo<ReadRateVo> pageReadRate(ReadRateDto dto);
+    Pagination<ReadRateVo> pageReadRate(ReadRateDto dto);
 
     /**
     * 集合查询
@@ -43,6 +45,16 @@ public interface ReadRateService {
     **/
     List<ReadRateVo> listReadRate(ReadRateDto dto);
 
+
+    /**
+    * 统计抄表率
+    * @author Andy
+    * @date 14:05 2021/8/11
+    * @param dto:
+    * @return com.zcxk.rmcp.api.vo.StatisticsReadRateVo
+    **/
+    StatisticsReadRateVo countReadRate(ReadRateDto dto);
+
     /**
     * 获取统计天数类型
     * @author Andy

+ 1 - 1
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/service/impl/MeterReadRecordServiceImpl.java

@@ -60,7 +60,7 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService {
     }
 
     @Override
-    public List<MeterReadRecord> listSingleDeviceTimeWaterConsumption(MeterReadRecordDeviceDto dto) {
+    public List<MeterReadRecordVo> listSingleDeviceTimeWaterConsumption(MeterReadRecordDeviceDto dto) {
         return meterReadRecordDao.queryDeviceMeterReadRecordWithCondtion(dto.getDeviceId(), dto.getStartDate(),dto.getEndDate());
     }
 }

+ 9 - 8
zoniot-rmcp/zoniot-xxljob-client/src/main/java/com/zcxk/xxljob/jobs/MeasurementSettlementRecordHander.java

@@ -4,6 +4,7 @@ import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import com.zcxk.core.utils.DateUtil;
 import com.zcxk.rmcp.api.dto.measurementsettlement.MeasurementSettlementDto;
+import com.zcxk.rmcp.api.vo.MeterReadRecordVo;
 import com.zcxk.rmcp.core.dao.DeviceMapper;
 import com.zcxk.rmcp.core.dao.MeasurementInstanceMapper;
 import com.zcxk.rmcp.core.dao.MeasurementRecordMapper;
@@ -197,7 +198,7 @@ public class MeasurementSettlementRecordHander {
             }
             // 没有上一期数据则取距离结算开始日期最近的数据
             else {
-                List<MeterReadRecord> mrs = meterReadRecordDao.queryDeviceMeterReadRecordWithCondtion(
+                List<MeterReadRecordVo> mrs = meterReadRecordDao.queryDeviceMeterReadRecordWithCondtion(
                         device.getId(), Integer.parseInt(DateUtil.formatDate(clearingStartDate, dateFormat))
                 );
                 // 获取不到数据,从取距离结算结束日期最远的数据
@@ -213,9 +214,9 @@ public class MeasurementSettlementRecordHander {
                     }
                 }
                 else {
-                    MeterReadRecord mr = mrs.get(0);
-                    r.setReadDateTime(mr.getData().get(0).getReadTime());
-                    r.setReadData(mr.getData().get(0).getReadData());
+                    MeterReadRecordVo mr = mrs.get(0);
+                    r.setReadDateTime(mr.getData().getReadTime());
+                    r.setReadData(mr.getData().getReadData());
                 }
             }
         }
@@ -245,16 +246,16 @@ public class MeasurementSettlementRecordHander {
                 }
                 // 无上期数据时,则取距离结算结束日期最近的数据
                 else {
-                    List<MeterReadRecord> mrs = meterReadRecordDao.queryDeviceMeterReadRecordWithCondtion( device.getId()
+                    List<MeterReadRecordVo> mrs = meterReadRecordDao.queryDeviceMeterReadRecordWithCondtion( device.getId()
                             , Integer.parseInt(DateUtil.formatDate(clearingEndDate, dateFormat)));
                     if(CollectionUtils.isEmpty(mrs)) {
                         r.setReadDateTime(clearingEndDate);
                         r.setReadData(0D);
                     }
                     else {
-                        MeterReadRecord mr = mrs.get(0);
-                        r.setReadDateTime(mr.getData().get(0).getReadTime());
-                        r.setReadData(mr.getData().get(0).getReadData());
+                        MeterReadRecordVo mr = mrs.get(0);
+                        r.setReadDateTime(mr.getData().getReadTime());
+                        r.setReadData(mr.getData().getReadData());
                     }
                 }
             }