123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- package com.huaxu.zoniot.service.impl;
- import cn.hutool.core.date.DateUtil;
- import com.alibaba.fastjson.JSON;
- import com.huaxu.zoniot.dao.BuildingMapper;
- import com.huaxu.zoniot.dao.CustomerMapper;
- import com.huaxu.zoniot.dao.PushLogMapper;
- import com.huaxu.zoniot.entity.PushLog;
- import com.huaxu.zoniot.model.BuildingData;
- import com.huaxu.zoniot.model.DeviceData;
- import com.huaxu.zoniot.service.BuildingSyncService;
- import com.huaxu.zoniot.service.CcrcService;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.amqp.rabbit.core.RabbitTemplate;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import java.nio.charset.Charset;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- @Slf4j
- @Service
- public class BuildingSyncServiceImpl implements BuildingSyncService {
- @Autowired
- PushLogMapper pushLogMapper;
- @Autowired
- CustomerMapper customerMapper;
- @Autowired
- BuildingMapper buildingMapper;
- @Resource
- private RabbitTemplate rabbitTemplate;
- @Value("${spring.rabbitmq.exchange}")
- private String exchange;
- @Value("${spring.rabbitmq.building.queue}")
- private String queue;
- @Autowired
- private CcrcService ccrcService;
- @Override
- public int rabbitSync() {
- List<Integer> customerIds = ccrcService.getCustomerIds();
- if (customerIds != null && customerIds.size() > 0) {
- for (Integer customerId : customerIds) {
- // 1,查询推送记录,1档案;2数据
- PushLog lastLog = pushLogMapper.findLastRecordBycustomerId(customerId,5);
- // 2,计算推送数据时间;如果为首次推送,则判断是否需要将历史数据推送给对方;
- Date beginDate = null ;
- Date endDate = new Date();
- Integer status = null ;
- if(lastLog != null) {
- beginDate = lastLog.getPushTime() ;
- }
- else {
- // 首次推送,只推送有效的设备
- status = 1 ;
- beginDate = DateUtil.parse("1900-01-01", "yyyy-MM-dd");
- }
- // 3,根据推送数据时间进行数据查询
- List<Integer> cIds = customerMapper.getSubId(customerId);
- String pushCustomers = StringUtils.join(cIds, ",");
- log.info("begin query push device list , beginDate={}, endDate={}",
- beginDate, endDate);
- List<BuildingData> dataList = buildingMapper.getPushBuildingList(pushCustomers,
- status,
- beginDate,
- endDate);
- log.info("end query push device list , size = {}",dataList.size());
- if(dataList.size() != 0) {
- sendRabbitData(dataList);
- }
- // 4,定义push日志
- PushLog pushLog = new PushLog();
- pushLog.setDataSize(dataList.size());
- pushLog.setCustomerId(customerId);
- pushLog.setDateCreate(new Date());
- pushLog.setPushTime(endDate);
- pushLog.setPushContent(5);
- pushLogMapper.insertSelective(pushLog);
- }
- }
- return 0;
- }
- private void sendRabbitData(List<BuildingData> dataList) {
- for (BuildingData data : dataList) {
- String msg = JSON.toJSONString(data);
- log.info("transfer mq msg:{}",msg);
- rabbitTemplate.convertAndSend(exchange, queue,msg.getBytes(Charset.forName("UTF-8")));
- }
- }
- }
|