Browse Source

Merge remote-tracking branch 'origin/20210223' into 20210223

wangyangyang 3 years ago
parent
commit
45a6e28c55

+ 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>