|
@@ -17,6 +17,8 @@ import com.bz.smart_city.excel.download.column.GeneralDownload;
|
|
import com.bz.smart_city.excel.download.template.GdDeviceDownloadExcelTemplate;
|
|
import com.bz.smart_city.excel.download.template.GdDeviceDownloadExcelTemplate;
|
|
import com.bz.smart_city.excel.download.template.GeneralDownloadExcelTemplate;
|
|
import com.bz.smart_city.excel.download.template.GeneralDownloadExcelTemplate;
|
|
import com.bz.smart_city.excel.download.template.WaterDownloadExcelTemplate;
|
|
import com.bz.smart_city.excel.download.template.WaterDownloadExcelTemplate;
|
|
|
|
+import com.bz.smart_city.rabbitmq.model.RabbitDeviceParamData;
|
|
|
|
+import com.bz.smart_city.rabbitmq.model.RabbitInstallParamData;
|
|
import com.bz.smart_city.service.*;
|
|
import com.bz.smart_city.service.*;
|
|
import com.bz.smart_city.service.udip.*;
|
|
import com.bz.smart_city.service.udip.*;
|
|
import com.github.pagehelper.PageHelper;
|
|
import com.github.pagehelper.PageHelper;
|
|
@@ -28,6 +30,8 @@ import org.jdom.Document;
|
|
import org.jdom.Element;
|
|
import org.jdom.Element;
|
|
import org.jdom.output.Format;
|
|
import org.jdom.output.Format;
|
|
import org.jdom.output.XMLOutputter;
|
|
import org.jdom.output.XMLOutputter;
|
|
|
|
+import org.springframework.amqp.rabbit.connection.SimpleResourceHolder;
|
|
|
|
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
@@ -40,6 +44,7 @@ import java.io.File;
|
|
import java.math.BigInteger;
|
|
import java.math.BigInteger;
|
|
import java.net.URLEncoder;
|
|
import java.net.URLEncoder;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
|
|
@@ -125,6 +130,20 @@ public class DeviceServiceImpl implements DeviceService {
|
|
private MessageService messageService;
|
|
private MessageService messageService;
|
|
@Autowired
|
|
@Autowired
|
|
private ChannelDeviceTypeUseMapper channelDeviceTypeUseMapper;
|
|
private ChannelDeviceTypeUseMapper channelDeviceTypeUseMapper;
|
|
|
|
+ @Autowired
|
|
|
|
+ private RabbitTemplate rabbitTemplate;
|
|
|
|
+
|
|
|
|
+ @Value("${spring.rabbitmq.exchange}")
|
|
|
|
+ private String exchange;
|
|
|
|
+ @Value("${spring.rabbitmq.download-device-queue}")
|
|
|
|
+ private String deviceQueue;
|
|
|
|
+ @Value("${spring.rabbitmq.download-install-queue}")
|
|
|
|
+ private String installQueue;
|
|
|
|
+ @Value("${service.domain}")
|
|
|
|
+ private String domain;
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private TaskMapper taskMapper;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public int insert(Device device) {
|
|
public int insert(Device device) {
|
|
@@ -196,14 +215,111 @@ public class DeviceServiceImpl implements DeviceService {
|
|
@Override
|
|
@Override
|
|
public void getDeviceListExcel(String alias, Integer sysId, Integer buildingId, String deviceNo, Integer status, Integer floor, String locDesc, Integer province, Integer city, Integer region, Integer community, Integer concentratorId, String concentratorNo, Integer collectorId, String collectorNo,Integer channelNumberId, String errorType, Integer customerId, Integer days, Integer deviceTypeId, Integer valveStatus, Integer registerStatus, Integer issueStatus, Integer syncStatus, Double startReading, Double endReading, String sortColumn, String sortOrder, HttpServletResponse httpServletResponse) {
|
|
public void getDeviceListExcel(String alias, Integer sysId, Integer buildingId, String deviceNo, Integer status, Integer floor, String locDesc, Integer province, Integer city, Integer region, Integer community, Integer concentratorId, String concentratorNo, Integer collectorId, String collectorNo,Integer channelNumberId, String errorType, Integer customerId, Integer days, Integer deviceTypeId, Integer valveStatus, Integer registerStatus, Integer issueStatus, Integer syncStatus, Double startReading, Double endReading, String sortColumn, String sortOrder, HttpServletResponse httpServletResponse) {
|
|
LoginUser loginUser = UserUtil.getCurrentUser();
|
|
LoginUser loginUser = UserUtil.getCurrentUser();
|
|
-
|
|
|
|
- List<DeviceDto> list = deviceMapper.getList(sysId, buildingId, loginUser.getSiteId(), UserUtil.getCurrentSiteProgramItems(loginUser), deviceNo, status,
|
|
|
|
- floor, locDesc, province, city, region, community, concentratorId, concentratorNo, collectorId, collectorNo, null, errorType, customerId,
|
|
|
|
- days, deviceTypeId, valveStatus, registerStatus, issueStatus, syncStatus, startReading, endReading, sortColumn, sortOrder);
|
|
|
|
String title = "设备列表";
|
|
String title = "设备列表";
|
|
|
|
|
|
|
|
+ RabbitDeviceParamData paramData = new RabbitDeviceParamData();
|
|
|
|
+ paramData.setAlias(alias);
|
|
|
|
+ paramData.setUserId(loginUser.getId());
|
|
|
|
+ paramData.setSysId(sysId);
|
|
|
|
+ paramData.setBuildingId(buildingId);
|
|
|
|
+ paramData.setSiteId(loginUser.getSiteId());
|
|
|
|
+ paramData.setDeviceNo(deviceNo);
|
|
|
|
+ paramData.setStatus(status);
|
|
|
|
+ paramData.setFloor(floor);
|
|
|
|
+ paramData.setLocDesc(locDesc);
|
|
|
|
+ paramData.setProvince(province);
|
|
|
|
+ paramData.setCity(city);
|
|
|
|
+ paramData.setRegion(region);
|
|
|
|
+ paramData.setCommunity(community);
|
|
|
|
+ paramData.setConcentratorId(concentratorId);
|
|
|
|
+ paramData.setConcentratorNo(concentratorNo);
|
|
|
|
+ paramData.setCollectorId(collectorId);
|
|
|
|
+ paramData.setCollectorNo(collectorNo);
|
|
|
|
+ paramData.setErrorType(errorType);
|
|
|
|
+ paramData.setCustomerId(customerId);
|
|
|
|
+ paramData.setDays(days);
|
|
|
|
+ paramData.setDeviceTypeId(deviceTypeId);
|
|
|
|
+ paramData.setValveStatus(valveStatus);
|
|
|
|
+ paramData.setRegisterStatus(registerStatus);
|
|
|
|
+ paramData.setIssueStatus(issueStatus);
|
|
|
|
+ paramData.setSyncStatus(syncStatus);
|
|
|
|
+ paramData.setStartReading(startReading);
|
|
|
|
+ paramData.setEndReading(endReading);
|
|
|
|
+ paramData.setSortColumn(sortColumn);
|
|
|
|
+ paramData.setSortOrder(sortOrder);
|
|
|
|
+ paramData.setProgramItemList(UserUtil.getCurrentSiteProgramItems(loginUser));
|
|
|
|
+ paramData.setTitle(title);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ Channel channel = channelMapper.findById(sysId);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
|
|
|
+ LocalDateTime date = LocalDateTime.now();
|
|
|
|
+ String fileName = channel.getChannelName()+ title + "-" + date.format(f) + ".xls";
|
|
|
|
+
|
|
|
|
+ Task task = new Task();
|
|
|
|
+ task.setName(fileName);
|
|
|
|
+ task.setType(1);
|
|
|
|
+ task.setStatus(1);
|
|
|
|
+ task.setCreateDate(LocalDateTime.now());
|
|
|
|
+ task.setUpdateDate(LocalDateTime.now());
|
|
|
|
+ taskMapper.insertSelective(task);
|
|
|
|
+ paramData.setTaskId(task.getId());
|
|
|
|
+
|
|
|
|
+ String message = JSON.toJSONString(paramData);
|
|
|
|
+
|
|
|
|
+ //设置当前线程lookupKey,内部由ThreadLocal实现
|
|
|
|
+ SimpleResourceHolder.bind(rabbitTemplate.getConnectionFactory(), "platform");
|
|
|
|
+ //业务操作会根据线程中的lookupKey从routeConnectionFactory的targetConnectionFactories中选择对应的connectionFactory
|
|
|
|
+ rabbitTemplate.convertAndSend(exchange,deviceQueue, message);
|
|
|
|
+ //操作完以后记得解绑。不影响线程的后序其他工厂操作
|
|
|
|
+ SimpleResourceHolder.unbind(rabbitTemplate.getConnectionFactory());
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
|
|
- generalDownload.export(title,alias,list,httpServletResponse);
|
|
|
|
|
|
+ public void executeDeviceListExcel(RabbitDeviceParamData paramData){
|
|
|
|
+ List<DeviceDto> list = deviceMapper.getList(paramData.getSysId(), paramData.getBuildingId(), paramData.getSiteId(), paramData.getProgramItemList(), paramData.getDeviceNo(), paramData.getStatus(),
|
|
|
|
+ paramData.getFloor(), paramData.getLocDesc(), paramData.getProvince(), paramData.getCity(), paramData.getRegion(), paramData.getCommunity(), paramData.getConcentratorId(), paramData.getConcentratorNo(), paramData.getCollectorId(), paramData.getCollectorNo(), null, paramData.getErrorType(), paramData.getCustomerId(),
|
|
|
|
+ paramData.getDays(), paramData.getDeviceTypeId(), paramData.getValveStatus(), paramData.getRegisterStatus(), paramData.getIssueStatus(), paramData.getSyncStatus(), paramData.getStartReading(), paramData.getEndReading(), paramData.getSortColumn(), paramData.getSortOrder());
|
|
|
|
+ Task taskTemp = taskMapper.findById(paramData.getTaskId());
|
|
|
|
+ try {
|
|
|
|
+ String filePath = generalDownload.export(paramData.getTitle(),paramData.getAlias(),list,null);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //生成下载文件
|
|
|
|
+ Task task = new Task();
|
|
|
|
+ task.setId(paramData.getTaskId());
|
|
|
|
+ task.setPath(filePath);
|
|
|
|
+ task.setUpdateDate(LocalDateTime.now());
|
|
|
|
+ taskMapper.updateByPrimaryKeySelective(task);
|
|
|
|
+
|
|
|
|
+ //生成消息
|
|
|
|
+ Message message = new Message();
|
|
|
|
+ message.setSiteId(paramData.getSiteId());
|
|
|
|
+ message.setUserId(paramData.getUserId());
|
|
|
|
+ message.setMessageType(2);
|
|
|
|
+ message.setMessageTitle(paramData.getTitle()+"-导出");
|
|
|
|
+ message.setMessageContent(taskTemp.getName()+"导出完成");
|
|
|
|
+ message.setMessageUrl(domain+"/api/file/task/download?objId="+paramData.getTaskId());
|
|
|
|
+ message.setObjId(paramData.getTaskId());
|
|
|
|
+ message.setRead(0);
|
|
|
|
+ messageService.insertSelective(message);
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ log.info("Exception {},{}",e.getMessage(),e);
|
|
|
|
+ Message message = new Message();
|
|
|
|
+ message.setSiteId(paramData.getSiteId());
|
|
|
|
+ message.setUserId(paramData.getUserId());
|
|
|
|
+ message.setMessageType(2);
|
|
|
|
+ message.setMessageTitle(paramData.getTitle()+"-导出");
|
|
|
|
+ message.setMessageContent(taskTemp.getName()+"导出失败");
|
|
|
|
+ message.setObjId(paramData.getTaskId());
|
|
|
|
+ message.setRead(0);
|
|
|
|
+ messageService.insertSelective(message);
|
|
|
|
+ }
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1124,16 +1240,114 @@ public class DeviceServiceImpl implements DeviceService {
|
|
public void exportInstallList(Integer channelId, String deviceNo, Integer status, String errorType, Integer customerId, Integer province, Integer city, Integer region, Integer community, Integer buildingId, String locDesc, Integer deviceTypeId, Integer registerStatus, Integer issueStatus, Integer concentratorId, Integer channelNumberId, String collectorNo, LocalDateTime startDate, LocalDateTime endDate, String sortColumn, String sortOrder, HttpServletResponse httpServletResponse) {
|
|
public void exportInstallList(Integer channelId, String deviceNo, Integer status, String errorType, Integer customerId, Integer province, Integer city, Integer region, Integer community, Integer buildingId, String locDesc, Integer deviceTypeId, Integer registerStatus, Integer issueStatus, Integer concentratorId, Integer channelNumberId, String collectorNo, LocalDateTime startDate, LocalDateTime endDate, String sortColumn, String sortOrder, HttpServletResponse httpServletResponse) {
|
|
String title = "已装水表列表";
|
|
String title = "已装水表列表";
|
|
LoginUser loginUser = UserUtil.getCurrentUser();
|
|
LoginUser loginUser = UserUtil.getCurrentUser();
|
|
- List<Integer> deviceTypeIdList = channelDeviceTypeUseMapper.findDeviceTypeByChannelId(channelId);
|
|
|
|
- List<DeviceDto> rtnList = deviceMapper.getInstallList(loginUser.getSiteId(), channelId, deviceNo, status, errorType, customerId, province, city, region, community, buildingId, locDesc, deviceTypeId, registerStatus, issueStatus, concentratorId, channelNumberId, collectorNo, startDate, endDate,UserUtil.getCurrentSiteProgramItems(loginUser), deviceTypeIdList, sortColumn,sortOrder);
|
|
|
|
- if(55 == channelId){
|
|
|
|
- generalDownload.export(title,"installRemoteMeter",rtnList,httpServletResponse);
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ RabbitInstallParamData data = new RabbitInstallParamData();
|
|
|
|
+ data.setUserId(loginUser.getId());
|
|
|
|
+ data.setSiteId(loginUser.getSiteId());
|
|
|
|
+ data.setChannelId(channelId);
|
|
|
|
+ data.setDeviceNo(deviceNo);
|
|
|
|
+ data.setStatus(status);
|
|
|
|
+ data.setErrorType(errorType);
|
|
|
|
+ data.setCustomerId(customerId);
|
|
|
|
+ data.setProvince(province);
|
|
|
|
+ data.setCity(city);
|
|
|
|
+ data.setRegion(region);
|
|
|
|
+ data.setCommunity(community);
|
|
|
|
+ data.setBuildingId(buildingId);
|
|
|
|
+ data.setLocDesc(locDesc);
|
|
|
|
+ data.setDeviceTypeId(deviceTypeId);
|
|
|
|
+ data.setRegisterStatus(registerStatus);
|
|
|
|
+ data.setIssueStatus(issueStatus);
|
|
|
|
+ data.setConcentratorId(concentratorId);
|
|
|
|
+ data.setChannelNumberId(channelNumberId);
|
|
|
|
+ data.setCollectorNo(collectorNo);
|
|
|
|
+ data.setStartDate(startDate);
|
|
|
|
+ data.setEndDate(endDate);
|
|
|
|
+ data.setSortColumn(sortColumn);
|
|
|
|
+ data.setSortOrder(sortOrder);
|
|
|
|
+ data.setTitle(title);
|
|
|
|
+ data.setProgramItemList(UserUtil.getCurrentSiteProgramItems(loginUser));
|
|
|
|
+
|
|
|
|
+ Channel channel = channelMapper.findById(channelId);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
|
|
|
+ LocalDateTime date = LocalDateTime.now();
|
|
|
|
+ String fileName = channel.getChannelName()+ title + "-" + date.format(f) + ".xls";
|
|
|
|
+
|
|
|
|
+ Task task = new Task();
|
|
|
|
+ task.setName(fileName);
|
|
|
|
+ task.setType(1);
|
|
|
|
+ task.setStatus(1);
|
|
|
|
+ task.setCreateDate(LocalDateTime.now());
|
|
|
|
+ task.setUpdateDate(LocalDateTime.now());
|
|
|
|
+ taskMapper.insertSelective(task);
|
|
|
|
+ data.setTaskId(task.getId());
|
|
|
|
+
|
|
|
|
+ String message = JSON.toJSONString(data);
|
|
|
|
+
|
|
|
|
+ //设置当前线程lookupKey,内部由ThreadLocal实现
|
|
|
|
+ SimpleResourceHolder.bind(rabbitTemplate.getConnectionFactory(), "platform");
|
|
|
|
+ //业务操作会根据线程中的lookupKey从routeConnectionFactory的targetConnectionFactories中选择对应的connectionFactory
|
|
|
|
+ rabbitTemplate.convertAndSend(exchange,installQueue, message);
|
|
|
|
+ //操作完以后记得解绑。不影响线程的后序其他工厂操作
|
|
|
|
+ SimpleResourceHolder.unbind(rabbitTemplate.getConnectionFactory());
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void executeExportInstallList(RabbitInstallParamData data) {
|
|
|
|
+ String title = "已装水表列表";
|
|
|
|
+
|
|
|
|
+ List<Integer> deviceTypeIdList = channelDeviceTypeUseMapper.findDeviceTypeByChannelId(data.getChannelId());
|
|
|
|
+ List<DeviceDto> rtnList = deviceMapper.getInstallList(data.getSiteId(), data.getChannelId(), data.getDeviceNo(), data.getStatus(), data.getErrorType(), data.getCustomerId(), data.getProvince(), data.getCity(), data.getRegion(), data.getCommunity(), data.getBuildingId(), data.getLocDesc(),
|
|
|
|
+ data.getDeviceTypeId(), data.getRegisterStatus(), data.getIssueStatus(), data.getConcentratorId(), data.getChannelNumberId(), data.getCollectorNo(), data.getStartDate(), data.getEndDate(),data.getProgramItemList(), deviceTypeIdList, data.getSortColumn(),data.getSortOrder());
|
|
|
|
+ String filePath = null;
|
|
|
|
+ if(55 == data.getChannelId()){
|
|
|
|
+ filePath = generalDownload.export(title,"installRemoteMeter",rtnList,null);
|
|
}
|
|
}
|
|
- if(40 == channelId){
|
|
|
|
- generalDownload.export(title,"installLoraMeter",rtnList,httpServletResponse);
|
|
|
|
|
|
+ if(40 == data.getChannelId()){
|
|
|
|
+ filePath = generalDownload.export(title,"installLoraMeter",rtnList,null);
|
|
}
|
|
}
|
|
- if(58 == channelId){
|
|
|
|
- generalDownload.export(title,"installNbiotMeter",rtnList,httpServletResponse);
|
|
|
|
|
|
+ if(58 == data.getChannelId()){
|
|
|
|
+ filePath = generalDownload.export(title,"installNbiotMeter",rtnList,null);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Task taskTemp = taskMapper.findById(data.getTaskId());
|
|
|
|
+ try {
|
|
|
|
+
|
|
|
|
+ //生成下载文件
|
|
|
|
+ Task task = new Task();
|
|
|
|
+ task.setId(data.getTaskId());
|
|
|
|
+ task.setPath(filePath);
|
|
|
|
+ task.setUpdateDate(LocalDateTime.now());
|
|
|
|
+ taskMapper.updateByPrimaryKeySelective(task);
|
|
|
|
+
|
|
|
|
+ //生成消息
|
|
|
|
+ Message message = new Message();
|
|
|
|
+ message.setSiteId(data.getSiteId());
|
|
|
|
+ message.setUserId(data.getUserId());
|
|
|
|
+ message.setMessageType(2);
|
|
|
|
+ message.setMessageTitle(data.getTitle()+"-导出");
|
|
|
|
+ message.setMessageContent(taskTemp.getName()+"导出完成");
|
|
|
|
+ message.setMessageUrl(domain+"/api/file/task/download?objId="+data.getTaskId());
|
|
|
|
+ message.setObjId(data.getTaskId());
|
|
|
|
+ message.setRead(0);
|
|
|
|
+ messageService.insertSelective(message);
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ log.info("Exception {},{}",e.getMessage(),e);
|
|
|
|
+ Message message = new Message();
|
|
|
|
+ message.setSiteId(data.getSiteId());
|
|
|
|
+ message.setUserId(data.getUserId());
|
|
|
|
+ message.setMessageType(2);
|
|
|
|
+ message.setMessageTitle(data.getTitle()+"-导出");
|
|
|
|
+ message.setMessageContent(taskTemp.getName()+"导出失败");
|
|
|
|
+ message.setObjId(data.getTaskId());
|
|
|
|
+ message.setRead(0);
|
|
|
|
+ messageService.insertSelective(message);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|