Commit 30167ba0 by 李小惠

修改除湿机报表接口以及测试,修改装备号型消息推送接口(可能有待改动优化,现在只是初版)

parent cd80f9bd
...@@ -9,4 +9,5 @@ public class MQDto { ...@@ -9,4 +9,5 @@ public class MQDto {
private String api; private String api;
private Integer type; private Integer type;
private List<String> idList; private List<String> idList;
private String message;
} }
...@@ -49,4 +49,6 @@ public class WarehouseReq extends BaseRequest { ...@@ -49,4 +49,6 @@ public class WarehouseReq extends BaseRequest {
private Long orderId; private Long orderId;
private String IncludeLowerLevel; private String IncludeLowerLevel;
private Date startTime;
private Date endTime;
} }
\ No newline at end of file
...@@ -33,7 +33,7 @@ public enum EquipmentExceptionEnum implements IExceptionEnum { ...@@ -33,7 +33,7 @@ public enum EquipmentExceptionEnum implements IExceptionEnum {
/** /**
* 装备名称和编号重复 * 装备名称和编号重复
*/ */
EQUIPMENT_NAME_CODE_EXIST(CommonConstant.DEFAULT_USER_ERROR_CODE,"装备名称和编号重复"), EQUIPMENT_NAME_CODE_EXIST(CommonConstant.DEFAULT_USER_ERROR_CODE,"装备名称重复"),
; ;
......
...@@ -4,6 +4,7 @@ import com.junmp.jyzb.api.constant.JYZBConstant; ...@@ -4,6 +4,7 @@ import com.junmp.jyzb.api.constant.JYZBConstant;
import com.junmp.jyzb.entity.Temp.HumidityAndtemperature; import com.junmp.jyzb.entity.Temp.HumidityAndtemperature;
import com.junmp.v2.cache.AbstractRedisCache; import com.junmp.v2.cache.AbstractRedisCache;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -29,16 +30,18 @@ public class TemperatureRedisCache extends AbstractRedisCache<Object> { ...@@ -29,16 +30,18 @@ public class TemperatureRedisCache extends AbstractRedisCache<Object> {
data.setCreateTime(timestamp); data.setCreateTime(timestamp);
data.setWarehouseId(warehouseId); data.setWarehouseId(warehouseId);
data.setWarehouseName(warehouseName); data.setWarehouseName(warehouseName);
String key = warehouseId; // String key = warehouseId;
getRedisTemplate().opsForZSet().add(key, data, timestamp); // Long size = getRedisTemplate().opsForZSet().size(key);
getRedisTemplate().opsForZSet().add(warehouseId, data, timestamp);
put(key, data); put(warehouseId, data);
} }
public List<Object> getDataByTimestampRange(String warehouseId, long startTimestamp, long endTimestamp) { public List<Object> getDataByTimestampRange(String warehouseId, long startTimestamp, long endTimestamp) {
String key = warehouseId; // String key = warehouseId;
boolean exists = getRedisTemplate().hasKey(key); // boolean exists = getRedisTemplate().hasKey(key);
Long size = getRedisTemplate().opsForZSet().size(key); // Long size = getRedisTemplate().opsForZSet().size(key);
Set<Object> dataInRange = getRedisTemplate().opsForZSet().rangeByScore(key, startTimestamp, endTimestamp); Set<Object> dataInRange = getRedisTemplate().opsForZSet().rangeByScore(warehouseId, startTimestamp, endTimestamp);
// getRedisTemplate().opsForZSet().rangeByScoreWithScores(key, startTimestamp, endTimestamp)
// Set<Object> dataInRange1= getRedisTemplate().opsForZSet ().reverseRange(key, startTimestamp, endTimestamp); // Set<Object> dataInRange1= getRedisTemplate().opsForZSet ().reverseRange(key, startTimestamp, endTimestamp);
return new ArrayList<>(dataInRange); return new ArrayList<>(dataInRange);
} }
......
...@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.junmp.jyzb.Repository.SizeRepository; import com.junmp.jyzb.Repository.SizeRepository;
import com.junmp.jyzb.api.bean.dto.EquipmentSizeDto; import com.junmp.jyzb.api.bean.dto.EquipmentSizeDto;
import com.junmp.jyzb.api.bean.dto.FetchingDataDto.SizeDto; import com.junmp.jyzb.api.bean.dto.FetchingDataDto.SizeDto;
import com.junmp.jyzb.api.bean.dto.MQDto;
import com.junmp.jyzb.api.bean.query.QueryEquipmentSizeReq; import com.junmp.jyzb.api.bean.query.QueryEquipmentSizeReq;
import com.junmp.jyzb.api.bean.query.QueryEquipmentTypeReq; import com.junmp.jyzb.api.bean.query.QueryEquipmentTypeReq;
import com.junmp.jyzb.api.bean.req.UpdateEquipmentSizeReq; import com.junmp.jyzb.api.bean.req.UpdateEquipmentSizeReq;
...@@ -16,12 +17,14 @@ import com.junmp.jyzb.api.exception.enums.ProductExceptionEnum; ...@@ -16,12 +17,14 @@ import com.junmp.jyzb.api.exception.enums.ProductExceptionEnum;
import com.junmp.jyzb.entity.EquipmentSize; import com.junmp.jyzb.entity.EquipmentSize;
import com.junmp.jyzb.entity.EquipmentType; import com.junmp.jyzb.entity.EquipmentType;
import com.junmp.jyzb.entity.InventorySummary; import com.junmp.jyzb.entity.InventorySummary;
import com.junmp.jyzb.entity.WarehouseDev;
import com.junmp.jyzb.mapper.EquipmentCountSummaryMapper; import com.junmp.jyzb.mapper.EquipmentCountSummaryMapper;
import com.junmp.jyzb.mapper.EquipmentTypeMapper; import com.junmp.jyzb.mapper.EquipmentTypeMapper;
import com.junmp.jyzb.mapper.PriceSumSummaryMapper; import com.junmp.jyzb.mapper.PriceSumSummaryMapper;
import com.junmp.jyzb.service.EquipmentSizeService; import com.junmp.jyzb.service.EquipmentSizeService;
import com.junmp.jyzb.service.EquipmentTypeService; import com.junmp.jyzb.service.EquipmentTypeService;
import com.junmp.jyzb.service.InventorySummaryService; import com.junmp.jyzb.service.InventorySummaryService;
import com.junmp.jyzb.service.WarehouseDevService;
import com.junmp.jyzb.utils.DateTimeUtil; import com.junmp.jyzb.utils.DateTimeUtil;
import com.junmp.jyzb.utils.RabbitMQSendMsg; import com.junmp.jyzb.utils.RabbitMQSendMsg;
import com.junmp.v2.common.exception.base.ServiceException; import com.junmp.v2.common.exception.base.ServiceException;
...@@ -29,6 +32,9 @@ import com.junmp.v2.common.util.BeanPlusUtil; ...@@ -29,6 +32,9 @@ import com.junmp.v2.common.util.BeanPlusUtil;
import com.junmp.v2.db.api.factory.PageFactory; import com.junmp.v2.db.api.factory.PageFactory;
import com.junmp.v2.db.api.factory.PageResultFactory; import com.junmp.v2.db.api.factory.PageResultFactory;
import com.junmp.v2.db.api.page.PageResult; import com.junmp.v2.db.api.page.PageResult;
import com.rabbitmq.client.AMQP;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -37,6 +43,8 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -37,6 +43,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
@Service @Service
public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, EquipmentSize> implements EquipmentSizeService { public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, EquipmentSize> implements EquipmentSizeService {
...@@ -62,9 +70,17 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E ...@@ -62,9 +70,17 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E
@Resource @Resource
private PriceSumSummaryMapper priceSumSummaryMapper; private PriceSumSummaryMapper priceSumSummaryMapper;
@Resource
private WarehouseDevService warehouseDevService;
@Autowired @Autowired
private RabbitMQSendMsg MQ; private RabbitMQSendMsg MQ;
@Resource
private RabbitTemplate rabbitTemplate;
@Resource
private RabbitAdmin rabbitAdmin;
@Override @Override
public Object addEs() { public Object addEs() {
QueryEquipmentTypeReq req =new QueryEquipmentTypeReq(); QueryEquipmentTypeReq req =new QueryEquipmentTypeReq();
...@@ -73,6 +89,7 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E ...@@ -73,6 +89,7 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E
return sizeRepository.saveAll(esDto); return sizeRepository.saveAll(esDto);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public String addSize(UpdateEquipmentSizeReq req) { public String addSize(UpdateEquipmentSizeReq req) {
//判断输入的typeId是否存在,如果不存在抛出异常 //判断输入的typeId是否存在,如果不存在抛出异常
EquipmentType one = equipmentTypeService.getById(req.getTypeId()); EquipmentType one = equipmentTypeService.getById(req.getTypeId());
...@@ -81,11 +98,16 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E ...@@ -81,11 +98,16 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E
} }
//判断同一个typeId下面是否有相同的name,如果有则添加失败 //判断同一个typeId下面是否有相同的name,如果有则添加失败
List<EquipmentSize> list = list(new LambdaQueryWrapper<EquipmentSize>() List<EquipmentSize> list = list(new LambdaQueryWrapper<EquipmentSize>()
.eq(EquipmentSize::getTypeId,req.getTypeId()) .eq(EquipmentSize::getTypeId,req.getTypeId()));
.orderByDesc(EquipmentSize::getCode)); //将列表查询出来之后,将code码从string类型转成int类型,因为string类型比较code码会出现问题,只有转成int才能保证我能取道该装备类型的最大code然后在最大code的基础上新增一个号型
List<String> collect = list.stream().map(EquipmentSize::getCode).collect(Collectors.toList());
List<Integer> integerList = collect.stream()
.map(Integer::parseInt)
.sorted((a, b) -> Integer.compare(b, a)) // 按降序排列
.collect(Collectors.toList());
String code="1"; String code="1";
if (list.size()>0){ if (integerList.size()>0){
int i = Integer.parseInt(list.get(0).getCode()); int i = integerList.get(0);
code=String.valueOf(i+1); code=String.valueOf(i+1);
for (EquipmentSize size: list) { for (EquipmentSize size: list) {
if (size.getName().equals(req.getName())){ if (size.getName().equals(req.getName())){
...@@ -103,6 +125,46 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E ...@@ -103,6 +125,46 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E
size.setUpdateTime(DateTimeUtil.getCurrentDateTime()); size.setUpdateTime(DateTimeUtil.getCurrentDateTime());
this.save(size); this.save(size);
sizeRepository.save(size); sizeRepository.save(size);
//新增信息之后,将消息推送给所有本地主机
LambdaQueryWrapper<WarehouseDev> queryWrapper = new LambdaQueryWrapper<WarehouseDev>()
.select(WarehouseDev::getOrgId)
.groupBy(WarehouseDev::getOrgId);
List<WarehouseDev> list1 = warehouseDevService.list(queryWrapper);
List<String> orgIdsList = list1.stream()
.map(WarehouseDev::getOrgId)
.collect(Collectors.toList());
String exchangeName="baseInfoChangeExchange";
MQDto mqDto = new MQDto();
mqDto.setApi("InfoChange");
//更改类别,1为号型
mqDto.setType(1);
mqDto.setMessage("Adding sizeInfo");
List<String> MQList=new ArrayList<>();
for (String orgId:orgIdsList) {
String queueName=orgId+"InfoChange";
int messageCount = rabbitTemplate.execute(channel -> {
AMQP.Queue.DeclareOk declareOk = channel.queueDeclarePassive(queueName);
return declareOk.getMessageCount();
});
if (messageCount==0){
MQList.add(queueName);
}
}
//将需要发送消息的队列通过add出来之后,将通过异步的方式分别将消息推送到指定的队列中去
List<CompletableFuture<Void>> futures = MQList.stream()
.map(queueName -> CompletableFuture.runAsync(() -> {
// 执行推送消息的逻辑
// pushMessage(orgId);
MQ.SendMsg(exchangeName,queueName,mqDto);
}))
.collect(Collectors.toList());
// 等待所有 CompletableFuture 完成
CompletableFuture<Void> allOf = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]));
allOf.join();
return sizeID+"||"+code; return sizeID+"||"+code;
} }
......
...@@ -957,7 +957,7 @@ public class TjServiceImpl implements TjService { ...@@ -957,7 +957,7 @@ public class TjServiceImpl implements TjService {
CompletableFuture<Void> allOf = CompletableFuture.allOf( futures.toArray(new CompletableFuture[0])); CompletableFuture<Void> allOf = CompletableFuture.allOf( futures.toArray(new CompletableFuture[0]));
// allOf.join();
// tjOrgCountList = futures.stream() // tjOrgCountList = futures.stream()
// .map(CompletableFuture::join) // .map(CompletableFuture::join)
// .collect(Collectors.toList()); // .collect(Collectors.toList());
...@@ -978,7 +978,7 @@ public class TjServiceImpl implements TjService { ...@@ -978,7 +978,7 @@ public class TjServiceImpl implements TjService {
} }
}); });
// 等待所有 CompletableFuture 完成 //等待所有 CompletableFuture 完成
allOf.join(); allOf.join();
if (req.getOrgId()!=1369509498032808905L){ if (req.getOrgId()!=1369509498032808905L){
......
...@@ -182,12 +182,13 @@ public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper,Warehouse> ...@@ -182,12 +182,13 @@ public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper,Warehouse>
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean updateHumidityAndtemperature(HumidityAndtemperature req) { public boolean updateHumidityAndtemperature(HumidityAndtemperature req) {
Date date = new Date(req.getCreateTime()); Date date = new Date(req.getCreateTime()*1000);
//查询数据库仓库id取到仓库名称 //查询数据库仓库id取到仓库名称
Warehouse warehouse = getById(req.getWarehouseId()); Warehouse warehouse = getById(req.getWarehouseId());
//将数据放入redis //将数据放入redis
temperatureRedisCache.addTemperatureHumidity(req.getWarehouseId(),warehouse.getName(), temperatureRedisCache.addTemperatureHumidity(req.getWarehouseId(),warehouse.getName(),
req.getCreateTime(),req.getHumidity(),req.getTemperature()); req.getCreateTime()*1000,req.getHumidity(),req.getTemperature());
//更新仓库的温度和湿度 //更新仓库的温度和湿度
warehouse.setHumidity(req.getHumidity()); warehouse.setHumidity(req.getHumidity());
warehouse.setTemperature(req.getTemperature()); warehouse.setTemperature(req.getTemperature());
...@@ -197,9 +198,11 @@ public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper,Warehouse> ...@@ -197,9 +198,11 @@ public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper,Warehouse>
//获取redis中的温湿度记录 //获取redis中的温湿度记录
@Override @Override
public List<HumidityAndtemperature> showHumidityAndtemperature(WarehouseReq req) { public List<HumidityAndtemperature> showHumidityAndtemperature(WarehouseReq req) {
String date="2023-12-01 00:00:00"; // String date="2023-12-01 00:00:00";
Long startTimeStamp = DateTimeUtil.TimeStringToLong(date); // Long startTimeStamp = DateTimeUtil.TimeStringToLong(date);
Long endTimeStamp = DateTimeUtil.getCurrentDateTime().toInstant().toEpochMilli(); // Long endTimeStamp = DateTimeUtil.getCurrentDateTime().toInstant().toEpochMilli();
Long startTimeStamp = DateTimeUtil.TimeDateToLong(req.getStartTime());
Long endTimeStamp = DateTimeUtil.TimeDateToLong(req.getEndTime());
List<Object> dataByTimestampRange = temperatureRedisCache.getDataByTimestampRange(req.getId(), startTimeStamp, endTimeStamp); List<Object> dataByTimestampRange = temperatureRedisCache.getDataByTimestampRange(req.getId(), startTimeStamp, endTimeStamp);
List<HumidityAndtemperature> collect = dataByTimestampRange.stream() List<HumidityAndtemperature> collect = dataByTimestampRange.stream()
.map(obj -> (HumidityAndtemperature) obj) .map(obj -> (HumidityAndtemperature) obj)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论