Browse Source

Merge branch '20210223' of http://114.135.61.188:53000/UIMS/Code into 20210223

lihui007 4 năm trước cách đây
mục cha
commit
6751775223

+ 26 - 0
readme.md

@@ -194,6 +194,32 @@ CREATE TABLE `sc_evaluation_result_details` (
   `UPDATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '更新人',
   PRIMARY KEY (`ID`)
 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 COMMENT='考评结果任务详情';
+CREATE TABLE `sms_device_setup_record` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `ATTRIBUTE_ID` int(11) DEFAULT NULL COMMENT '属性ID',
+  `SETUP_METHOD_ID` int(11) DEFAULT NULL COMMENT '设置指令ID',
+  `STATE` varchar(200) DEFAULT NULL COMMENT '执行状态(0执行中 1执行成功 2执行失败)',
+  `PARAMS` varchar(200) DEFAULT NULL COMMENT '参数',
+  `STATUS` smallint(6) DEFAULT NULL COMMENT '数据删除标记',
+  `DATE_CREATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `CREATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '创建人',
+  `DATE_UPDATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  `UPDATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '更新人',
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='参数设置指令记录';
+CREATE TABLE `sms_device_setup_method` (
+  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `ATTRIBUTE_ID` int(11) DEFAULT NULL COMMENT '属性ID',
+  `TYPE` int(11) DEFAULT NULL COMMENT '类型(0水泵控制 1压力调节 2水表开关阀)',
+  `METHOD` varchar(200) DEFAULT NULL COMMENT '方法名',
+  `PARAMS` varchar(200) DEFAULT NULL COMMENT '参数(json)',
+  `STATUS` smallint(6) DEFAULT NULL COMMENT '数据删除标记',
+  `DATE_CREATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `CREATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '创建人',
+  `DATE_UPDATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  `UPDATE_BY` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '更新人',
+  PRIMARY KEY (`ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='参数设置指令';
 
 
 

+ 10 - 5
sms_water/src/main/java/com/huaxu/controller/MonitorInfoController.java

@@ -87,16 +87,21 @@ public class MonitorInfoController {
         SceneUsageDto sceneUsageDto = new SceneUsageDto();
 
         //查询场景下的所有设备信息
-        sceneUsageDto.setYieldWaterUsage(monitorDataReportService.getAmountCount(null, id.intValue(), null, 3, 1).doubleValue());
-        sceneUsageDto.setIntakeWaterUsage(monitorDataReportService.getAmountCount(null, id.intValue(), null, 4, 1).doubleValue());
-        sceneUsageDto.setPowerUsage(monitorDataReportService.getAmountCount(null, id.intValue(), null, 5, 1).doubleValue());
-        sceneUsageDto.setDrugUsage(monitorDataReportService.getAmountCount(null, id.intValue(), null, 6, 1).doubleValue());
+        BigDecimal amount1 = monitorDataReportService.getAmountCount(null, id.intValue(), null, 3, 1);
+        sceneUsageDto.setYieldWaterUsage(amount1 != null ? amount1.doubleValue() : 0);
+
+        BigDecimal amount2 = monitorDataReportService.getAmountCount(null, id.intValue(), null, 4, 1);
+        sceneUsageDto.setIntakeWaterUsage(amount2 != null ? amount2.doubleValue() : 0);
+        BigDecimal amount3 = monitorDataReportService.getAmountCount(null, id.intValue(), null, 5, 1);
+        sceneUsageDto.setPowerUsage(amount3 != null ? amount3.doubleValue() : 0);
+        BigDecimal amount4 = monitorDataReportService.getAmountCount(null, id.intValue(), null, 6, 1);
+        sceneUsageDto.setDrugUsage(amount4 != null ? amount4.doubleValue() : 0);
         sceneUsageDto.setCollectDate(monitorDataReportService.getLastCollectTime(null, id.intValue(), null, 3, 1));
         if (type.equals(1) || type.equals(0)) {
             sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getYieldWaterUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
             sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getIntakeWaterUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
             sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getPowerUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
-            sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getDrugUsage()).setScale( 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
+            sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getDrugUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
         } else {
             sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getYieldWaterUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
             sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getIntakeWaterUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);

+ 19 - 3
sms_water/src/main/java/com/huaxu/controller/RevenueController.java

@@ -3,10 +3,9 @@ package com.huaxu.controller;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.huaxu.common.StringUtils;
-import com.huaxu.dto.AlarmSettingDto;
-import com.huaxu.dto.MonthRevenueDto;
-import com.huaxu.dto.MonthSellwaterDto;
+import com.huaxu.dto.*;
 import com.huaxu.entity.AlarmSetting;
+import com.huaxu.entity.MonthRevenueEntity;
 import com.huaxu.entity.SceneEntity;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.LoginUser;
@@ -21,9 +20,14 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.client.RestTemplate;
 
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 营收控制层
@@ -44,6 +48,11 @@ public class RevenueController {
     @Autowired
     private OrgInfoUtil orgInfoUtil;
 
+    @Autowired
+    private RestTemplate restTemplate;
+    @Value("${http_pool.meterRequesturl}")
+    private  String meterRequestUrl;
+
     /**
      * 查询本月售水信息
      *
@@ -98,4 +107,11 @@ public class RevenueController {
         }
         return new AjaxMessage<>(ResultStatus.OK, result);
     }
+    @RequestMapping(value = "syncMeterCount", method = RequestMethod.GET)
+    @ApiOperation(value = "同步水表数量")
+    public AjaxMessage<Integer> syncMeterCount() {
+        revenueService.syncMeterCount();
+        return new AjaxMessage<>(ResultStatus.OK);
+    }
+
 }

+ 25 - 0
sms_water/src/main/java/com/huaxu/dao/RevenueMapper.java

@@ -3,6 +3,7 @@ package com.huaxu.dao;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.huaxu.dto.*;
 import com.huaxu.entity.AlarmDetailsEntity;
+import com.huaxu.entity.MonthRevenueEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -49,4 +50,28 @@ public interface RevenueMapper {
 
     List<MonthRevenueDto> selectRevenueByDate(MonthRevenueDto monthRevenueDto);
 
+    /**
+     * 查询是否当月有营收数据
+     * @return
+     */
+    Integer isExistThisMonthRevenue(String tenantId);
+
+    /**
+     * 插入营收数据
+     * @return
+     */
+    Integer insert(MonthRevenueEntity monthRevenueEntity);
+
+    /**
+     * 修改营收数据
+     * @return
+     */
+    Integer update(MonthRevenueEntity monthRevenueEntity);
+
+    /**
+     * 查询该租户一级公司id
+     * @return
+     */
+    Integer selectCompanyIdByTenant(String tenantId);
+
 }

+ 13 - 0
sms_water/src/main/java/com/huaxu/dto/MeterCountDto.java

@@ -0,0 +1,13 @@
+package com.huaxu.dto;
+
+import com.huaxu.entity.MonthRevenueEntity;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class MeterCountDto {
+    private int status;
+    private String msg;
+    private List<MonthRevenueEntity> data;
+}

+ 38 - 0
sms_water/src/main/java/com/huaxu/quartz/job/SyncMeterCountJob.java

@@ -0,0 +1,38 @@
+package com.huaxu.quartz.job;
+
+import com.huaxu.service.RevenueService;
+import lombok.extern.slf4j.Slf4j;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.io.Serializable;
+
+/**
+ * @author Administrator
+ * @create 2020-05-06
+ */
+@Slf4j
+@Component
+public  class SyncMeterCountJob implements Job, Serializable {
+
+    private static final long serialVersionUID = 3336891083300321324L;
+
+    @Autowired
+    private RevenueService revenueService;
+
+    @Override
+    public void execute(JobExecutionContext context) throws JobExecutionException {
+        try{
+            log.info("同步水表数量执行开始");
+            revenueService.syncMeterCount();
+            log.info("同步水表数量执行结束");
+        }catch (Exception e){
+            e.printStackTrace();
+            log.info("同步水表数量执行异常,{}", e.getMessage());
+        }
+    }
+
+}

+ 29 - 0
sms_water/src/main/java/com/huaxu/service/RevenueService.java

@@ -3,6 +3,7 @@ package com.huaxu.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.huaxu.dto.*;
 import com.huaxu.entity.AlarmDetailsEntity;
+import com.huaxu.entity.MonthRevenueEntity;
 
 import java.util.List;
 
@@ -44,4 +45,32 @@ public interface RevenueService {
     //查询App总览售水环比
     List<MonthRevenueDto> selectRevenueByDate(Integer companyOrgId, String startDate, String endDate);
 
+    /**
+     * 查询是否当月有营收数据
+     * @return
+     */
+    Integer isExistThisMonthRevenue(String tenantId);
+
+    /**
+     * 插入营收数据
+     * @return
+     */
+    Integer insert(MonthRevenueEntity monthRevenueEntity);
+    /**
+     * 修改营收数据
+     * @return
+     */
+    Integer update(MonthRevenueEntity monthRevenueEntity);
+    /**
+     * 查询该租户一级公司id
+     * @return
+     */
+    Integer selectCompanyIdByTenant(String tenantId);
+    /**
+     * 同步水表数量
+     * @return
+     */
+    void syncMeterCount();
+
+
 }

+ 87 - 15
sms_water/src/main/java/com/huaxu/service/impl/RevenueServiceImpl.java

@@ -1,30 +1,23 @@
 package com.huaxu.service.impl;
 
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.huaxu.client.OperationManagerClient;
-import com.huaxu.client.UserCenterClient;
-import com.huaxu.dao.AlarmDetailMapper;
 import com.huaxu.dao.RevenueMapper;
 import com.huaxu.dto.*;
-import com.huaxu.entity.AlarmDetailsEntity;
-import com.huaxu.entity.Message;
+import com.huaxu.entity.MonthRevenueEntity;
 import com.huaxu.model.LoginUser;
-import com.huaxu.service.AlarmDetailsService;
+import com.huaxu.quartz.entity.QuartzEntity;
+import com.huaxu.quartz.job.SyncMeterCountJob;
+import com.huaxu.quartz.service.JobAndTriggerService;
 import com.huaxu.service.RevenueService;
-import com.huaxu.util.DatesUtil;
-import com.huaxu.util.MessageSendUtil;
 import com.huaxu.util.UserUtil;
-import javafx.beans.binding.DoubleExpression;
 import lombok.extern.log4j.Log4j2;
-import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
 import java.util.*;
-import java.util.function.Function;
-import java.util.stream.Collectors;
 
 /**
  * @description
@@ -33,10 +26,37 @@ import java.util.stream.Collectors;
  */
 @Service
 @Log4j2
-public class RevenueServiceImpl implements RevenueService {
+public class RevenueServiceImpl implements RevenueService, InitializingBean {
 
     @Resource
     private RevenueMapper revenueMapper;
+
+    @Autowired
+    private JobAndTriggerService jobAndTriggerService;
+    @Autowired
+    private RestTemplate restTemplate;
+    @Value("${http_pool.meterRequesturl}")
+    private  String meterRequestUrl;
+
+    @Override
+    public void afterPropertiesSet() throws Exception {
+        saveQrtzTask("0 0 1 * * ? ","同步水表数量","smsWaterSyncMeterCountJob", SyncMeterCountJob.class.getName());
+    }
+    public void saveQrtzTask(String cron, String jobGroup ,String jobName,String JobClassName) {
+        // 1,查询需要批量推送的配置项目并构建定时任务
+        // 2,若对应定时任务不存在则创建
+        QuartzEntity entity = new QuartzEntity();
+        entity.setJobGroup(jobGroup);
+        entity.setJobName(jobName);
+        entity.setDescription(jobName);
+        //jobAndTriggerService.deleteJob(entity);
+        boolean exists = jobAndTriggerService.isExists(entity);
+        if(!exists){
+            entity.setCronExpression(cron);
+            entity.setJobClassName(JobClassName);
+            jobAndTriggerService.save(entity);
+        }
+    }
     /**
      * 查询本月售水信息
      * @return
@@ -184,5 +204,57 @@ public class RevenueServiceImpl implements RevenueService {
         return revenueMapper.selectRevenueByDate(monthRevenueDto);
     }
 
+    /**
+     * 查询是否当月有营收数据
+     * @return
+     */
+    @Override
+    public  Integer isExistThisMonthRevenue(String tenantId) {
+        return revenueMapper.isExistThisMonthRevenue(tenantId);
+    }
+    /**
+     * 插入营收数据
+     * @return
+     */
+    @Override
+    public Integer insert(MonthRevenueEntity monthRevenueEntity) {
+        return revenueMapper.insert(monthRevenueEntity);
+    }
+    /**
+     * 修改营收数据
+     * @return
+     */
+    @Override
+    public  Integer update(MonthRevenueEntity monthRevenueEntity) {
+        return revenueMapper.update(monthRevenueEntity);
+    }
+
+    /**
+     * 查询该租户一级公司id
+     * @return
+     */
+    @Override
+    public  Integer selectCompanyIdByTenant(String tenantId) {
+        return revenueMapper.selectCompanyIdByTenant(tenantId);
+    }
 
+    @Override
+    public void syncMeterCount() {
+        MeterCountDto meterCountDto = restTemplate.getForObject(meterRequestUrl, MeterCountDto.class);
+        if(meterCountDto.getStatus()==0){
+            for (MonthRevenueEntity monthRevenueEntity : meterCountDto.getData()) {
+                //查询当月是否有数据 有就更新 没有就插入
+                Integer count =revenueMapper.isExistThisMonthRevenue(monthRevenueEntity.getTenantId());
+                if(count==0){
+                    Calendar thisMonthFirstDateCal = Calendar.getInstance();
+                    thisMonthFirstDateCal.set(Calendar.DAY_OF_MONTH, 1);
+                    monthRevenueEntity.setCollectDate(thisMonthFirstDateCal.getTime());
+                    monthRevenueEntity.setCompanyOrgId(revenueMapper.selectCompanyIdByTenant(monthRevenueEntity.getTenantId()));
+                    revenueMapper.insert(monthRevenueEntity);
+                }else{
+                    revenueMapper.update(monthRevenueEntity);
+                }
+            }
+        }
+    }
 }

+ 1 - 0
sms_water/src/main/resources/application-dev.properties

@@ -85,6 +85,7 @@ http_pool.socket_timeout=65000
 http_pool.validate_after_inactivity=2000
 #devicetype
 http_pool.requesturl=http://114.135.61.188:48322/unit/profiles/list
+http_pool.meterRequesturl=http://114.135.61.188:58080/api/platform/getDeviceStatistics
 
 
 # quartz

+ 1 - 1
sms_water/src/main/resources/application-prd.properties

@@ -84,7 +84,7 @@ http_pool.socket_timeout=65000
 http_pool.validate_after_inactivity=2000
 #devicetype
 http_pool.requesturl=http://47.112.15.78:8322/unit/profiles/list
-
+http_pool.meterRequesturl=http://114.135.61.188:58080/api/platform/getDeviceStatistics
 
 
 # quartz

+ 1 - 1
sms_water/src/main/resources/application-sit.properties

@@ -93,7 +93,7 @@ http_pool.socket_timeout=65000
 http_pool.validate_after_inactivity=2000
 #devicetype
 http_pool.requesturl=http://114.135.61.188:48322/unit/profiles/list
-
+http_pool.meterRequesturl=http://114.135.61.188:58080/api/platform/getDeviceStatistics
 
 
 # quartz

+ 41 - 0
sms_water/src/main/resources/mapper/RevenueMapper.xml

@@ -162,4 +162,45 @@
         group by collect_date_string
         order by collect_date_string
     </select>
+
+    <!--查询是否当月有营收数据-->
+    <select id="isExistThisMonthRevenue" resultType="java.lang.Integer">
+        select count(1)
+        from  sms_month_revenue t1
+        where t1.collect_date>=date_format(curdate(), '%Y-%m' )
+        <if test="tenantId != null and tenantId != ''">
+            and t1.tenant_id=#{tenantId}
+        </if>
+    </select>
+    <!-- 新增所有列 -->
+    <insert id="insert" keyProperty="id" useGeneratedKeys="true">
+        insert into sms_month_revenue(`tenant_id`, `company_org_id`, `collect_date`, `user_meter_count`, `user_meter_add_count`,
+        `meter_reading_count`, `meter_reading_usage`, `charging_usage`, `meter_reading_finished_rate`, `meter_reading_arrival_rate`,
+        `meter_reading_error_rate`, `receivable_total_amount`, `received_total_amount`, `invoiced_total_amount`,
+        `arrears_total_amount`, `general_user_usage`, `big_user_usage`, `remark`, `date_create`, `create_by`, `date_update`, `update_by`)
+        values (#{tenantId},#{companyOrgId},#{collectDate},#{userMeterCount},#{userMeterAddCount},#{meterReadingCount},
+        #{meterReadingUsage},#{chargingUsage},#{meterReadingFinishedRate},#{meterReadingArrivalRate},#{meterReadingErrorRate},
+        #{receivableTotalAmount},#{receivedTotalAmount},#{invoicedTotalAmount},#{arrearsTotalAmount},#{generalUserUsage},
+        #{bigUserUsage},#{remark},now(),null,now(),null)
+    </insert>
+    <!-- 通过租户id修改当月数据 -->
+    <update id="update">
+        update  sms_month_revenue
+        <set>
+            <if test="userMeterCount != null and userMeterCount != 0">
+                user_meter_count  = #{userMeterCount},
+            </if>
+            <if test="userMeterAddCount != null and userMeterAddCount != 0">
+                user_meter_add_count  = #{userMeterAddCount},
+            </if>
+            DATE_UPDATE  = now()
+        </set>
+        where tenant_id  = #{tenantId} and collect_date>=date_format(curdate(), '%Y-%m-1' )
+    </update>
+    <!--查询该租户一级公司id-->
+    <select id="selectCompanyIdByTenant" resultType="java.lang.Integer">
+        select id
+        from  uims.uims_org
+        where parent_org_id=0 and tenant_id=#{tenantId}
+    </select>
 </mapper>