lihui001 3 vuotta sitten
vanhempi
commit
7aa4ffddb3

+ 32 - 0
zoniot-common/zoniot-core-common/src/main/java/com/zcxk/core/common/pojo/TotalResult.java

@@ -0,0 +1,32 @@
+package com.zcxk.core.common.pojo;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author Andy
+ * @description: 带数据汇总返回
+ * @date 2021/7/16
+ * @version V1.0
+ **/
+@ApiModel(value = "带数据汇总返回")
+@Data
+public class TotalResult<T> {
+
+    @ApiModelProperty(value = "汇总", name = "totalSize")
+    private BigDecimal total;
+
+    @ApiModelProperty(value = "数据", name = "rows")
+    private List<T> rows;
+
+    public TotalResult(List<T> rows, BigDecimal total) {
+        this.rows = rows;
+        this.total = total;
+    }
+
+}

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

@@ -35,7 +35,7 @@ public class MeterReadRecordAggregationVo {
     private Integer communityId;
 
     @ApiModelProperty(value="日期")
-    private Integer statDay;
+    private Integer readDate;
 
     @ApiModelProperty(value="汇总用水量")
     private BigDecimal waterConsumption;

+ 25 - 0
zoniot-rmcp/zoniot-rmcp-api/src/main/java/com/zcxk/rmcp/api/vo/MeterReadWaterRecordVo.java

@@ -0,0 +1,25 @@
+package com.zcxk.rmcp.api.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author Andy
+ * @version V1.0
+ * @description: 用水量
+ * @date 2021/7/28
+ **/
+@Data
+public class MeterReadWaterRecordVo {
+
+    @ApiModelProperty(value="用水量")
+    private BigDecimal waterConsumption;
+
+    @ApiModelProperty(value="小区ID")
+    private int communityId;
+
+    @ApiModelProperty(value="日期")
+    private int statDay;
+}

+ 11 - 0
zoniot-rmcp/zoniot-rmcp-core/src/main/java/com/zcxk/rmcp/core/dao/MeterReadWaterRecordMapper.java

@@ -1,5 +1,7 @@
 package com.zcxk.rmcp.core.dao;
 
+import com.zcxk.core.common.pojo.UserCondition;
+import com.zcxk.rmcp.api.vo.MeterReadWaterRecordVo;
 import com.zcxk.rmcp.core.entity.MeterReadWaterRecord;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -32,4 +34,13 @@ public interface MeterReadWaterRecordMapper {
     * @return void
     **/
     void batchInsert(@Param("waterRecordList") List<MeterReadWaterRecord> meterReadWaterRecord);
+
+    /**
+    * @author Andy
+    * @description 查询小区用水量
+    * @date 15:38 2021/7/28
+    * @param beginDate, endDate, condition
+    * @return java.util.List<com.zcxk.rmcp.api.vo.MeterReadWaterRecordVo>
+    **/
+    List<MeterReadWaterRecordVo> listWaterRecord(@Param("beginDate")int beginDate, @Param("endDate")int endDate, @Param("userCondition") UserCondition condition);
 }

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

@@ -161,7 +161,7 @@ public class MeterReadRecordDao extends BaseDao<MeterReadRecord, String> impleme
         AggregationOptions aggregationOptions = AggregationOptions.builder().allowDiskUse(true).build();
         List<AggregationOperation> queryCondition = groupCondition(year, statDay, statDay,
                 Aggregation.group("tenantId", "companyOrgId", "deptOrgId",  "communityId", "categoryId", "data.readDate")
-                        .sum("$data.lastCost").as("sumCost"));
+                        .sum("$data.lastCost").as("waterConsumption"));
         // 分页条件
         queryCondition.add(Aggregation.skip(pageNum > 1 ?(pageNum-1) * pageSzie : 0));
         queryCondition.add(Aggregation.limit(pageSzie));

+ 5 - 6
zoniot-rmcp/zoniot-rmcp-core/src/main/java/com/zcxk/rmcp/core/entity/MeterReadWaterRecord.java

@@ -1,5 +1,6 @@
 package com.zcxk.rmcp.core.entity;
 
+import com.zcxk.core.mysql.base.BaseDO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -15,7 +16,7 @@ import java.util.Date;
  **/
 @ApiModel(value="用水记录")
 @Data
-public class MeterReadWaterRecord {
+public class MeterReadWaterRecord extends BaseDO {
 
     @ApiModelProperty(value="统计日期")
     private Integer statDay;
@@ -32,13 +33,11 @@ public class MeterReadWaterRecord {
     @ApiModelProperty(value="部门ID")
     private Integer deptOrgId;
 
+    @ApiModelProperty(value="部门ID")
+    private Integer communityId;
+
     @ApiModelProperty(value="用水量")
     private BigDecimal waterConsumption;
 
-    @ApiModelProperty(value="创建日期")
-    private Date dateCreate;
-
-    @ApiModelProperty(value="更新日期")
-    private Date dateUpdate;
 
 }

+ 11 - 3
zoniot-rmcp/zoniot-rmcp-core/src/main/java/com/zcxk/rmcp/core/mapper/MeterReadWaterRecordMapper.xml

@@ -106,9 +106,17 @@
     date_update)
     values
     <foreach collection="waterRecordList" item="item" index="index" separator=",">
-      (
-      #{item.statDay}, #{item.tenantId}, #{item.companyOrgId}, #{item.deptOrgId}, #{item.categoryId}, #{item.communityId},
-      #{item.waterConsumption}, #{item.createDate}, #{item.updateDate}
+      (#{item.statDay}, #{item.tenantId}, #{item.companyOrgId}, #{item.deptOrgId}, #{item.categoryId}, #{item.communityId},
+      #{item.waterConsumption}, #{item.createDate}, #{item.updateDate})
     </foreach>
   </insert>
+
+  <select id="listWaterRecord" resultType="com.zcxk.rmcp.api.vo.MeterReadWaterRecordVo">
+  select sum(rd.water_consumption) waterConsumption, community_id, stat_day
+  from rmcp_meter_read_water_record rd
+  where
+  rd.stat_day BETWEEN #{beginDate} and #{endDate}
+  <include refid="permissionCondition"></include>
+  group by community_id, stat_day
+  </select>
 </mapper>

+ 41 - 0
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/controller/WaterRecordController.java

@@ -0,0 +1,41 @@
+package com.zcxk.rmcp.web.controller;
+
+import com.zcxk.core.common.pojo.AjaxMessage;
+import com.zcxk.core.common.pojo.TotalResult;
+import com.zcxk.core.utils.DateUtil;
+import com.zcxk.rmcp.web.service.MeterReadWaterRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.time.LocalDate;
+import java.util.Date;
+
+/**
+ * @author Andy
+ * @version V1.0
+ * @description: 用水记录
+ * @date 2021/7/22
+ **/
+@Controller
+@ResponseBody
+@RequestMapping("/water/record")
+@Api(tags = "用水记录")
+public class WaterRecordController extends BaseController {
+
+    @Resource
+    private MeterReadWaterRecordService meterReadWaterRecordService;
+
+    @RequestMapping(value = "/statistics/recent15days", method = RequestMethod.POST)
+    @ApiOperation(value = "统计近15天用水量")
+    public AjaxMessage<TotalResult> statisticsRecent15Days() {
+        return AjaxMessage.success(meterReadWaterRecordService.statisticsRecent15Days());
+    }
+
+}

+ 34 - 0
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/service/MeterReadWaterRecordService.java

@@ -0,0 +1,34 @@
+package com.zcxk.rmcp.web.service;
+
+import com.zcxk.core.common.pojo.TotalResult;
+import com.zcxk.rmcp.api.vo.MeterReadRecordVo;
+
+import java.util.List;
+
+/**
+ * @author Andy
+ * @version V1.0
+ * @description: 用水记录
+ * @date 2021/7/21
+ **/
+public interface MeterReadWaterRecordService {
+
+    /**
+    * @author Andy
+    * @description 统计近15天用水量
+    * @date 16:05 2021/7/28
+    * @param
+    * @return com.zcxk.core.common.pojo.TotalResult
+    **/
+    TotalResult statisticsRecent15Days();
+
+    /**
+    * @author Andy
+    * @description 查询集合
+    * @date 11:26 2021/7/23
+    * @param beginDate,endDate
+    * @return java.util.List<com.zcxk.rmcp.api.vo.MeterReadRecordVo>
+    **/
+    TotalResult listWaterRecord(int beginDate, int endDate);
+
+}

+ 46 - 0
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/service/impl/MeterReadWaterRecordServiceImpl.java

@@ -0,0 +1,46 @@
+package com.zcxk.rmcp.web.service.impl;
+
+import com.zcxk.core.common.pojo.TotalResult;
+import com.zcxk.core.oauth2.util.UserUtil;
+import com.zcxk.core.utils.DateUtil;
+import com.zcxk.rmcp.api.vo.MeterReadWaterRecordVo;
+import com.zcxk.rmcp.core.dao.MeterReadWaterRecordMapper;
+import com.zcxk.rmcp.web.service.MeterReadWaterRecordService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author Andy
+ * @version V1.0
+ * @description: 抄表记录
+ * @date 2021/7/22
+ **/
+@Service
+public class MeterReadWaterRecordServiceImpl implements MeterReadWaterRecordService {
+
+    @Resource
+    private MeterReadWaterRecordMapper meterReadWaterRecordMapper;
+
+    @Override
+    public TotalResult statisticsRecent15Days() {
+        LocalDate localDate = DateUtil.parseLocalDate(new Date());
+        int endDate   = Integer.parseInt(localDate.plusDays(-1).toString().replaceAll("-",""));
+        int beginDate = Integer.parseInt(localDate.plusDays(-16).toString().replaceAll("-",""));
+        return listWaterRecord(beginDate, endDate);
+    }
+
+    @Override
+    public TotalResult listWaterRecord(int beginDate, int endDate) {
+        BigDecimal total = new BigDecimal("0");
+        List<MeterReadWaterRecordVo> list = meterReadWaterRecordMapper.listWaterRecord(beginDate, endDate, UserUtil.getCurrentUser().getUserCondition());
+        for (MeterReadWaterRecordVo meterReadWaterRecordVo : list) {
+            total = total.add(meterReadWaterRecordVo.getWaterConsumption());
+        }
+        return new TotalResult<>(list, total);
+    }
+}

+ 22 - 4
zoniot-rmcp/zoniot-xxljob-client/src/main/java/com/zcxk/xxljob/jobs/MeterReadWaterRecordHandler.java

@@ -14,6 +14,8 @@ import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -45,7 +47,7 @@ public class MeterReadWaterRecordHandler {
     private MeterReadWaterRecordMapper meterReadWaterRecordMapper;
 
     @XxlJob("meterReadWaterRecordHandler")
-    public ReturnT<String> execute(String string) throws Exception {
+    public ReturnT<String> execute(String string) {
         int page = 1;
         int total = 0;
         LocalDate date = DateUtil.parseLocalDate(new Date());
@@ -61,16 +63,18 @@ public class MeterReadWaterRecordHandler {
             for (MeterReadRecordAggregationVo meterReadRecordVo : list) {
                 MeterReadWaterRecord meterReadWaterRecord = new MeterReadWaterRecord();
                 BeanCopyUtils.copyProperties(meterReadRecordVo, meterReadWaterRecord, MeterReadWaterRecord.class);
-                meterReadWaterRecord.setDateCreate(new Date());
+                meterReadWaterRecord.setCreateDate(LocalDateTime.now());
+                meterReadWaterRecord.setStatDay(meterReadRecordVo.getReadDate());
+                meterReadWaterRecord.setUpdateDate(LocalDateTime.now());
                 waterRecord.add(meterReadWaterRecord);
                 total++;
                 if (waterRecord.size() >=  BATCH_SIZE) {
-                    meterReadWaterRecordMapper.batchInsert(waterRecord);
+                    batchInsert(waterRecord);
                     waterRecord.clear();
                 }
             }
             if (waterRecord.size() > 0 ){
-                meterReadWaterRecordMapper.batchInsert(waterRecord);
+                batchInsert(waterRecord);
             }
             page++;
         }
@@ -78,5 +82,19 @@ public class MeterReadWaterRecordHandler {
         return ReturnT.SUCCESS;
     }
 
+    /**
+    * @author Andy
+    * @description 批量插入
+    * @date 15:17 2021/7/28
+    * @param list
+    * @return void
+    **/
+    private void batchInsert(List<MeterReadWaterRecord> list){
+        try {
+            meterReadWaterRecordMapper.batchInsert(list);
+        } catch (Exception e) {
+            log.error("【汇总小区每天相同类型表的用水量】报错error", e);
+        }
+    }
 
 }

+ 40 - 2
zoniot-rmcp/zoniot-xxljob-client/src/main/resources/application-dev.properties

@@ -7,8 +7,46 @@ files.path=E:/test
 #xxl-job µ÷¶ÈÖÐÐŤ³ÌµÄµØÖ·
 xxl.job.admin.addresses=http://192.168.0.121:8080/xxl-job-admin/
 xxl.job.executor.appname=zoniot-xxljob-client
-xxl.job.executor.ip=192.168.0.124
+xxl.job.executor.ip=
 xxl.job.executor.port=9999
 xxl.job.executor.logpath=/opt/sit/meter-reading-job/xxl-job/jobhandler
 xxl.job.accessToken=
-xxl.job.executor.logretentiondays=30
+xxl.job.executor.logretentiondays=30
+
+
+# mysql
+spring.datasource.url=jdbc:mysql://114.135.61.188:33306/rmcp_v2?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull
+spring.datasource.username=root
+spring.datasource.password=100Zone@123
+spring.datasource.driver-class-name=com.mysql.jdbc.Driver
+spring.datasource.hikari.max-lifetime=30000
+
+# druid
+spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
+spring.datasource.druid.initial-size=5
+spring.datasource.druid.min-idle=5
+spring.datasource.druid.max-active=20
+spring.datasource.druid.max-wait=60000
+spring.datasource.druid.time-between-eviction-runs-millis=60000
+spring.datasource.druid.min-evictable-idle-time-millis=300000
+spring.datasource.druid.validation-query=SELECT 1
+spring.datasource.druid.test-while-idle=true
+spring.datasource.druid.test-on-borrow=true
+spring.datasource.druid.test-on-return=false
+spring.datasource.druid.pool-prepared-statements=true
+spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
+spring.datasource.druid.filters=stat,wall
+spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
+
+# mybatis
+mybatis.mapper-locations=classpath:com/zcxk/rmcp/core/mapper/*.xml
+mybatis.type-aliases-package=com.zcxk.rmcp.core.entity
+mybatis.configuration.map-underscore-to-camel-case=true
+mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
+mybatis.configuration.use-column-label=true
+
+spring.jackson.time-zone=GMT+8
+
+#mongodb url
+spring.data.mongodb.uri=mongodb://114.135.61.188:17017/meter-reading-database
+logging.level.org.springframework.data.mongodb.core=DEBUG