Commit b524c769 by 赵剑炜

Merge branch 'develop' of http://gitlab.sothing.top/843502640/jyzb_platformV2 into develop-zhaojw

parents baa6b0ac a5f19520
......@@ -9,4 +9,5 @@ public class MQDto {
private String api;
private Integer type;
private List<String> idList;
private String message;
}
......@@ -49,4 +49,6 @@ public class WarehouseReq extends BaseRequest {
private Long orderId;
private String IncludeLowerLevel;
private Date startTime;
private Date endTime;
}
\ No newline at end of file
......@@ -40,6 +40,7 @@ public class UpdatePolicemanReq extends BaseRequest {
/**
* 用户名
*/
@NotBlank(message = "用户名不能为空",groups = {add.class,edit.class})
private String account;
private String password;
......@@ -66,6 +67,7 @@ public class UpdatePolicemanReq extends BaseRequest {
/**
* 0警员,1辅警
*/
@NotBlank(message = "警员类型不能为空",groups = {add.class,edit.class})
private Integer identity;
/**
......@@ -75,10 +77,6 @@ public class UpdatePolicemanReq extends BaseRequest {
//当前登录人的id
private Long createUser;
// /**
// * 人脸照片list
// */
// private List<String> faceInfoList;
/**
* 指纹照片list
*/
......
......@@ -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,"装备名称重复"),
;
......
......@@ -12,7 +12,8 @@ public enum PublicExceptionEnum implements IExceptionEnum {
//设备编号重复
APP_CODE_IS_EXIST(CommonConstant.DEFAULT_USER_ERROR_CODE,"应用代码已存在"),
APP_NAME_IS_EXIST(CommonConstant.DEFAULT_USER_ERROR_CODE,"应用名称已存在")
APP_NAME_IS_EXIST(CommonConstant.DEFAULT_USER_ERROR_CODE,"应用名称已存在"),
APP_IS_NOT_EXIST(CommonConstant.DEFAULT_USER_ERROR_CODE,"应用不存在,请检查应用id是否存在"),
;
/**
......
......@@ -4,6 +4,7 @@ import com.junmp.jyzb.api.constant.JYZBConstant;
import com.junmp.jyzb.entity.Temp.HumidityAndtemperature;
import com.junmp.v2.cache.AbstractRedisCache;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
......@@ -29,16 +30,18 @@ public class TemperatureRedisCache extends AbstractRedisCache<Object> {
data.setCreateTime(timestamp);
data.setWarehouseId(warehouseId);
data.setWarehouseName(warehouseName);
String key = warehouseId;
getRedisTemplate().opsForZSet().add(key, data, timestamp);
put(key, data);
// String key = warehouseId;
// Long size = getRedisTemplate().opsForZSet().size(key);
getRedisTemplate().opsForZSet().add(warehouseId, data, timestamp);
put(warehouseId, data);
}
public List<Object> getDataByTimestampRange(String warehouseId, long startTimestamp, long endTimestamp) {
String key = warehouseId;
boolean exists = getRedisTemplate().hasKey(key);
Long size = getRedisTemplate().opsForZSet().size(key);
Set<Object> dataInRange = getRedisTemplate().opsForZSet().rangeByScore(key, startTimestamp, endTimestamp);
// String key = warehouseId;
// boolean exists = getRedisTemplate().hasKey(key);
// Long size = getRedisTemplate().opsForZSet().size(key);
Set<Object> dataInRange = getRedisTemplate().opsForZSet().rangeByScore(warehouseId, startTimestamp, endTimestamp);
// getRedisTemplate().opsForZSet().rangeByScoreWithScores(key, startTimestamp, endTimestamp)
// Set<Object> dataInRange1= getRedisTemplate().opsForZSet ().reverseRange(key, startTimestamp, endTimestamp);
return new ArrayList<>(dataInRange);
}
......
......@@ -53,28 +53,37 @@ public class ApplicationServiceImpl extends ServiceImpl<ApplicationMapper, Appli
public String AddOrUpdateCfg(ApplicationReq req) {
Application application = new Application();
BeanPlusUtil.copyProperties(req,application);
List<Application> list = list(new LambdaQueryWrapper<Application>()
.eq(Application::getAppCode, req.getAppCode()).or().eq(Application::getName,req.getName()));
//判断应用代码和应用名称是否重复,如果重复直接抛出异常
if (CollectionUtil.isNotEmpty(list)){
for (Application app:list) {
if (app.getName().equals(req.getName())){
throw new ServiceException(PublicExceptionEnum.APP_NAME_IS_EXIST);
}
if (app.getAppCode().equals(req.getAppCode())){
throw new ServiceException(PublicExceptionEnum.APP_CODE_IS_EXIST);
}
}
}
//判断id是否传递,如果传递则默认他是修改,根据数据库对比id,判断是否id传递错误;如果不传递默认新增
if (req.getId()==null || req.getId().trim().isEmpty()){
//判断应用代码和应用名称是否重复,如果重复直接抛出异常
if (CollectionUtil.isNotEmpty(list)){
for (Application app:list) {
if (app.getName().equals(req.getName())){
throw new ServiceException(PublicExceptionEnum.APP_NAME_IS_EXIST);
}
if (app.getAppCode().equals(req.getAppCode())){
throw new ServiceException(PublicExceptionEnum.APP_CODE_IS_EXIST);
}
}
}
application.setCreateTime(DateTimeUtil.getCurrentDateTime());
save(application);
return application.getId();
}else {
Application app = getById(req);
if (ObjectUtil.isNull(app)){
throw new ServiceException(CabinetExceptionEnum.PARAMETER_ERROR);
for (Application app:list) {
if (!req.getId().equals(app.getId())){
if (app.getName().equals(req.getName())){
throw new ServiceException(PublicExceptionEnum.APP_NAME_IS_EXIST);
}
if (app.getAppCode().equals(req.getAppCode())){
throw new ServiceException(PublicExceptionEnum.APP_CODE_IS_EXIST);
}
}
}
application.setUpdateTime(DateTimeUtil.getCurrentDateTime());
updateById(application);
......
......@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.junmp.jyzb.Repository.SizeRepository;
import com.junmp.jyzb.api.bean.dto.EquipmentSizeDto;
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.QueryEquipmentTypeReq;
import com.junmp.jyzb.api.bean.req.UpdateEquipmentSizeReq;
......@@ -16,12 +17,14 @@ import com.junmp.jyzb.api.exception.enums.ProductExceptionEnum;
import com.junmp.jyzb.entity.EquipmentSize;
import com.junmp.jyzb.entity.EquipmentType;
import com.junmp.jyzb.entity.InventorySummary;
import com.junmp.jyzb.entity.WarehouseDev;
import com.junmp.jyzb.mapper.EquipmentCountSummaryMapper;
import com.junmp.jyzb.mapper.EquipmentTypeMapper;
import com.junmp.jyzb.mapper.PriceSumSummaryMapper;
import com.junmp.jyzb.service.EquipmentSizeService;
import com.junmp.jyzb.service.EquipmentTypeService;
import com.junmp.jyzb.service.InventorySummaryService;
import com.junmp.jyzb.service.WarehouseDevService;
import com.junmp.jyzb.utils.DateTimeUtil;
import com.junmp.jyzb.utils.RabbitMQSendMsg;
import com.junmp.v2.common.exception.base.ServiceException;
......@@ -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.PageResultFactory;
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.stereotype.Service;
import javax.annotation.Resource;
......@@ -37,6 +43,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
@Service
public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, EquipmentSize> implements EquipmentSizeService {
......@@ -62,9 +70,17 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E
@Resource
private PriceSumSummaryMapper priceSumSummaryMapper;
@Resource
private WarehouseDevService warehouseDevService;
@Autowired
private RabbitMQSendMsg MQ;
@Resource
private RabbitTemplate rabbitTemplate;
@Resource
private RabbitAdmin rabbitAdmin;
@Override
public Object addEs() {
QueryEquipmentTypeReq req =new QueryEquipmentTypeReq();
......@@ -73,6 +89,7 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E
return sizeRepository.saveAll(esDto);
}
@Override
@Transactional(rollbackFor = Exception.class)
public String addSize(UpdateEquipmentSizeReq req) {
//判断输入的typeId是否存在,如果不存在抛出异常
EquipmentType one = equipmentTypeService.getById(req.getTypeId());
......@@ -81,11 +98,16 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E
}
//判断同一个typeId下面是否有相同的name,如果有则添加失败
List<EquipmentSize> list = list(new LambdaQueryWrapper<EquipmentSize>()
.eq(EquipmentSize::getTypeId,req.getTypeId())
.orderByDesc(EquipmentSize::getCode));
.eq(EquipmentSize::getTypeId,req.getTypeId()));
//将列表查询出来之后,将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";
if (list.size()>0){
int i = Integer.parseInt(list.get(0).getCode());
if (integerList.size()>0){
int i = integerList.get(0);
code=String.valueOf(i+1);
for (EquipmentSize size: list) {
if (size.getName().equals(req.getName())){
......@@ -103,6 +125,46 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E
size.setUpdateTime(DateTimeUtil.getCurrentDateTime());
this.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;
}
......
......@@ -194,6 +194,8 @@ public class PolicemanServiceImpl extends ServiceImpl<PolicemanMapper, Policeman
policeman.setPassword(sysUser.getPassword());
policeman.setState(1);
policeman.setUserId(sysUser.getUserId());
//如果有照片,将警员照片直接复制一下以防万一
policeman.setPhoto(req.getFaceInfo());
policeman.setCreateTime(DateTimeUtil.getCurrentDateTime());
policeman.setUpdateTime(DateTimeUtil.getCurrentDateTime());
save(policeman);
......@@ -562,6 +564,7 @@ public class PolicemanServiceImpl extends ServiceImpl<PolicemanMapper, Policeman
throw new ServiceException(PolicemanExceptionEnum.POLICECODE_IS_EXISTS);
}
}
one.setPhoto(req.getFaceInfo());
one.setUpdateTime(DateTimeUtil.getCurrentDateTime());
//修改角色
if (req.getRolesList().size()>0){
......
......@@ -957,7 +957,7 @@ public class TjServiceImpl implements TjService {
CompletableFuture<Void> allOf = CompletableFuture.allOf( futures.toArray(new CompletableFuture[0]));
// allOf.join();
// tjOrgCountList = futures.stream()
// .map(CompletableFuture::join)
// .collect(Collectors.toList());
......@@ -978,7 +978,7 @@ public class TjServiceImpl implements TjService {
}
});
// 等待所有 CompletableFuture 完成
//等待所有 CompletableFuture 完成
allOf.join();
if (req.getOrgId()!=1369509498032808905L){
......
......@@ -182,12 +182,13 @@ public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper,Warehouse>
@Override
@Transactional(rollbackFor = Exception.class)
public boolean updateHumidityAndtemperature(HumidityAndtemperature req) {
Date date = new Date(req.getCreateTime());
Date date = new Date(req.getCreateTime()*1000);
//查询数据库仓库id取到仓库名称
Warehouse warehouse = getById(req.getWarehouseId());
//将数据放入redis
temperatureRedisCache.addTemperatureHumidity(req.getWarehouseId(),warehouse.getName(),
req.getCreateTime(),req.getHumidity(),req.getTemperature());
req.getCreateTime()*1000,req.getHumidity(),req.getTemperature());
//更新仓库的温度和湿度
warehouse.setHumidity(req.getHumidity());
warehouse.setTemperature(req.getTemperature());
......@@ -197,9 +198,11 @@ public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper,Warehouse>
//获取redis中的温湿度记录
@Override
public List<HumidityAndtemperature> showHumidityAndtemperature(WarehouseReq req) {
String date="2023-12-01 00:00:00";
Long startTimeStamp = DateTimeUtil.TimeStringToLong(date);
Long endTimeStamp = DateTimeUtil.getCurrentDateTime().toInstant().toEpochMilli();
// String date="2023-12-01 00:00:00";
// Long startTimeStamp = DateTimeUtil.TimeStringToLong(date);
// 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<HumidityAndtemperature> collect = dataByTimestampRange.stream()
.map(obj -> (HumidityAndtemperature) obj)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论