Browse Source

版本更新

lihui001 3 years ago
parent
commit
1e1fe1ceb8

+ 29 - 0
zoniot-common/zoniot-core-mongo/src/main/java/com/zcxk/core/mongo/base/BaseDao.java

@@ -8,6 +8,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.aggregation.Aggregation;
+import org.springframework.data.mongodb.core.aggregation.AggregationOperation;
+import org.springframework.data.mongodb.core.aggregation.GroupOperation;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.data.mongodb.core.query.Update;
@@ -206,4 +209,30 @@ public class BaseDao<T, PK extends Serializable> {
     public List<T> findAll() {
         return mongoTemplate.findAll(entityClass);
     }
+
+    /**
+    * @author Andy
+    * @description 聚合查询
+    * @date 18:44 2021/7/27
+    * @param mainCriteria : 主文档查询
+    * @param unwind:需要拆开的子文档
+    * @param unwindCriteria :子文档查询,
+    * @param groupOperation : 分组查询
+    * @return java.util.List<org.springframework.data.mongodb.core.aggregation.AggregationOperation>
+    **/
+    public List<AggregationOperation> aggrQueryCondition(Criteria mainCriteria, String unwind, Criteria unwindCriteria, GroupOperation groupOperation) {
+        List<AggregationOperation> commonOperations = new ArrayList<>();
+        // 1. 添加主查询条件
+        commonOperations.add(Aggregation.match(mainCriteria));
+        // 2.拆开
+        commonOperations.add(Aggregation.unwind(unwind));
+        // 3.子文档查询
+        commonOperations.add(Aggregation.match(unwindCriteria));
+        // 4.分组
+        if (groupOperation != null) {
+            commonOperations.add(groupOperation);
+        }
+        return commonOperations;
+    }
+
 }

+ 40 - 0
zoniot-rmcp/zoniot-rmcp-api/src/main/java/com/zcxk/rmcp/api/vo/MeterReadRecordAggregaVo.java

@@ -0,0 +1,40 @@
+package com.zcxk.rmcp.api.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.math.BigDecimal;
+
+/**
+ * @author Andy
+ * @version V1.0
+ * @description: TODO
+ * @date 2021/7/28
+ **/
+@Data
+@ToString
+public class MeterReadRecordAggregaVo {
+
+    @ApiModelProperty(value="id")
+    private String id;
+
+    @ApiModelProperty(value="租户ID")
+    private String tenantId;
+
+    @ApiModelProperty(value="公司ID")
+    private Integer companyOrgId;
+
+    @ApiModelProperty(value="部门ID")
+    private Integer deptOrgId;
+
+    @ApiModelProperty(value="小区ID")
+    private Integer communityId;
+
+    @ApiModelProperty(value="日期")
+    private String readDate;
+
+    @ApiModelProperty(value="汇总用水量")
+    private BigDecimal sumCost;
+
+}

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

@@ -11,6 +11,7 @@ import com.zcxk.core.utils.ZoniotStringUtils;
 import com.zcxk.rmcp.api.dto.meterReadRecord.MeterReadRecordDto;
 import com.zcxk.rmcp.api.dto.meterReadRecord.MeterReadRecordUpdateDto;
 import com.zcxk.rmcp.api.enums.ReadStatusEnum;
+import com.zcxk.rmcp.api.vo.MeterReadRecordAggregaVo;
 import com.zcxk.rmcp.api.vo.MeterReadRecordVo;
 import com.zcxk.rmcp.core.mongo.MeterReadRecord;
 import org.springframework.data.domain.Pageable;
@@ -146,6 +147,27 @@ public class MeterReadRecordDao extends BaseDao<MeterReadRecord, String> impleme
         return PageResult.builder(durationData.getMappedResults(), pageable.getPageNumber() + 1, pageable.getPageSize(), total);
     }
 
+    /**
+    * @author Andy 
+    * @description 聚合小区每天用水量
+    * @date 9:27 2021/7/28 
+    * @param year :年, statDay:具体日期
+    * @return void 
+    **/
+    public List<MeterReadRecordAggregaVo> aggregationCommunityWaterConsumption(int year, String statDay){
+        AggregationOptions aggregationOptions = AggregationOptions.builder().allowDiskUse(true).build();
+        List<AggregationOperation> queryCondition = groupCondition(year, statDay, statDay,
+                Aggregation.group("tenantId", "companyOrgId", "deptOrgId", "communityId", "data.readDate")
+                        .sum("$data.lastCost").as("cost"));
+        AggregationResults<MeterReadRecordAggregaVo> durationData =
+                mongoTemplate.aggregate(Aggregation.newAggregation(queryCondition).withOptions(aggregationOptions),
+                        MeterReadRecord.class, MeterReadRecordAggregaVo.class);
+        for (MeterReadRecordAggregaVo mappedResult : durationData.getMappedResults()) {
+            System.out.println(mappedResult.toString());
+        }
+        return durationData.getMappedResults();
+    }
+
     /**
     * @author Andy
     * @description 查询条件
@@ -200,6 +222,26 @@ public class MeterReadRecordDao extends BaseDao<MeterReadRecord, String> impleme
         return commonOperations;
     }
 
+
+    /**
+    * @author Andy
+    * @description 分组查询
+    * @date 18:36 2021/7/27
+    * @param year, beginDate, endDate, groupOperation
+    * @return java.util.List<org.springframework.data.mongodb.core.aggregation.AggregationOperation>
+    **/
+    private List<AggregationOperation> groupCondition(int year, String readDateBeginDate, String readDateEndDate, GroupOperation groupOperation){
+        Criteria criteria = new Criteria();
+        criteria.and("year").is(year);
+        Criteria unwindCriteria = null;
+        if (readDateBeginDate.equals(readDateEndDate)) {
+            unwindCriteria = Criteria.where("data.readDate").is(readDateBeginDate);
+        } else {
+            unwindCriteria = Criteria.where("data.readDate").gte(readDateBeginDate).lte(readDateEndDate);
+        }
+        return aggrQueryCondition(criteria, "data", unwindCriteria, groupOperation);
+    }
+
     /**
     * @author Andy
     * @description 获取总条数

+ 3 - 3
zoniot-rmcp/zoniot-rmcp-core/src/main/java/com/zcxk/rmcp/core/mongo/MeterReadRecord.java

@@ -101,13 +101,13 @@ public class MeterReadRecord extends BaseDO {
         private Integer valveStatus;
 
         @ApiModelProperty(value="读数")
-        private String readData;
+        private Double readData;
 
         @ApiModelProperty(value="最近有效数据")
-        private BigDecimal lastValid;
+        private Double lastValid;
 
         @ApiModelProperty(value="距离上次的消耗/当天用水量")
-        private BigDecimal lastCost;
+        private Double lastCost;
     }
 
 

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

@@ -40,6 +40,13 @@ public class MeterReadRecordController extends BaseController {
     @Resource
     private MeterReadRecordServcie meterReadRecordServcie;
 
+    @RequestMapping(value = "/test", method = RequestMethod.POST)
+    @ApiOperation(value = "抄表记录添加")
+    public AjaxMessage<Void> test() {
+        meterReadRecordServcie.test();
+        return AjaxMessage.success();
+    }
+
     @RequestMapping(value = "/add", method = RequestMethod.POST)
     @ApiOperation(value = "抄表记录添加")
     public AjaxMessage<Void> addMeterReadRecord(@RequestBody @Valid MeterReadRecord readRecord) {

+ 9 - 0
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/service/MeterReadRecordServcie.java

@@ -16,6 +16,15 @@ import java.util.List;
  **/
 public interface MeterReadRecordServcie {
 
+    /**
+     * @author Andy
+     * @description 保存抄表记录
+     * @date 16:34 2021/7/22
+     * @param
+     * @return void
+     **/
+    void test();
+
     /**
     * @author Andy
     * @description 保存抄表记录

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

@@ -29,6 +29,11 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordServcie {
     @Resource
     private MeterReadRecordDao meterReadRecordDao;
 
+    @Override
+    public void test() {
+        meterReadRecordDao.aggregationCommunityWaterConsumption(2021, "2021-07-10");
+    }
+
     @Override
     public void saveMeterReadRecord(MeterReadRecord readRecord) {
         for (MeterReadRecord.MeterReadInfo datum : readRecord.getData()) {

+ 13 - 11
zoniot-rmcp/zoniot-xxljob-client/pom.xml

@@ -16,18 +16,12 @@
         <dependency>
             <groupId>com.xuxueli</groupId>
             <artifactId>xxl-job-core</artifactId>
-            <version>2.1.2</version>
+            <version>2.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.zcxk</groupId>
+            <artifactId>zoniot-core-common</artifactId>
         </dependency>
-            <dependency>
-                <groupId>com.zcxk</groupId>
-                <artifactId>zoniot-core-common</artifactId>
-                <exclusions>
-                    <exclusion>
-                        <groupId>org.springframework.security.oauth.boot</groupId>
-                        <artifactId>spring-security-oauth2-autoconfigure</artifactId>
-                    </exclusion>
-                </exclusions>
-            </dependency>
         <dependency>
             <groupId>com.zcxk</groupId>
             <artifactId>zoniot-core-mongo</artifactId>
@@ -36,5 +30,13 @@
             <groupId>com.zcxk</groupId>
             <artifactId>zoniot-rmcp-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.zcxk</groupId>
+            <artifactId>zoniot-rmcp-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.zcxk</groupId>
+            <artifactId>zoniot-core-common</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 1 - 1
zoniot-rmcp/zoniot-xxljob-client/src/main/java/com/zcxk/xxljob/config/XxlJobConfig.java

@@ -43,7 +43,7 @@ public class XxlJobConfig {
         logger.info(">>>>>>>>>>> xxl-job config init.");
         XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
         xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
-        xxlJobSpringExecutor.setAppName(appName);
+        xxlJobSpringExecutor.setAppname(appName);
         xxlJobSpringExecutor.setIp(ip);
         xxlJobSpringExecutor.setPort(port);
         xxlJobSpringExecutor.setAccessToken(accessToken);

+ 6 - 6
zoniot-rmcp/zoniot-xxljob-client/src/main/java/com/zcxk/xxljob/jobs/TestHandler.java

@@ -1,19 +1,19 @@
 package com.zcxk.xxljob.jobs;
 
 import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.handler.IJobHandler;
-import com.xxl.job.core.handler.annotation.JobHandler;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import lombok.extern.slf4j.Slf4j;
+import com.xxl.job.core.log.XxlJobLogger;
 import org.springframework.stereotype.Component;
 
-@Slf4j
 @Component
 public class TestHandler {
 
     @XxlJob("demoJobHandler")
-    public ReturnT<String> execute(String s) throws Exception {
-        log.info("开始执行分发任务");
+    public ReturnT<String> execute(String string) throws Exception {
+        XxlJobLogger.log("hello world.");
+        for (int i = 0; i < 1; i++) {
+            System.out.println("111");
+        }
         return ReturnT.SUCCESS;
     }
 

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

@@ -5,7 +5,7 @@ logging.path=./logs/zoniot-xxljob-client
 files.path=E:/test
 
 #xxl-job µ÷¶ÈÖÐÐŤ³ÌµÄµØÖ·
-xxl.job.admin.addresses=http://10.0.0.153:8082/xxl-job-admin
+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.port=9999