嘉禾二期

master
sunjianxi 2 years ago
parent 85c49116df
commit b68b199dd2
  1. 2
      lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/ProductClassController.java
  2. 3
      lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/SupplierController.java
  3. 1
      lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/GoodsController.java
  4. 46
      lab-service/lab-lims/src/main/java/org/springblade/lims/config/RedissonConfig.java
  5. 5
      lab-service/lab-lims/src/main/java/org/springblade/lims/controller/InspectionTaskController.java
  6. 6
      lab-service/lab-lims/src/main/java/org/springblade/lims/demo/DataAcquisition.java
  7. 41
      lab-service/lab-lims/src/main/java/org/springblade/lims/mqtt/callback/MyMQTTCallback.java
  8. 2
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CheckItemServiceImpl.java
  9. 7
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/InspectionPlanServiceImpl.java
  10. 5
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/InspectionTaskServiceImpl.java
  11. 5
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/MaintainTaskServiceImpl.java
  12. 79
      lab-service/lab-lims/src/main/java/org/springblade/lims/tools/RedisLock.java

@ -98,6 +98,7 @@ public class ProductClassController extends BladeController {
String name = productClass.getName(); String name = productClass.getName();
QueryWrapper<ProductClass> queryWrapper = new QueryWrapper<>(); QueryWrapper<ProductClass> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", name); queryWrapper.eq("name", name);
queryWrapper.eq("create_dept",AuthUtil.getDeptId());
List<ProductClass> list1 = productClassService.list(queryWrapper); List<ProductClass> list1 = productClassService.list(queryWrapper);
if (list1 != null && list1.size() > 0) { if (list1 != null && list1.size() > 0) {
throw new Exception("名称重复!"); throw new Exception("名称重复!");
@ -148,6 +149,7 @@ public class ProductClassController extends BladeController {
String name = productClass.getName(); String name = productClass.getName();
QueryWrapper<ProductClass> queryWrapper1 = new QueryWrapper<>(); QueryWrapper<ProductClass> queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq("name", name); queryWrapper1.eq("name", name);
queryWrapper1.eq("create_dept",AuthUtil.getDeptId());
List<ProductClass> list2 = productClassService.list(queryWrapper1); List<ProductClass> list2 = productClassService.list(queryWrapper1);
if (list2 != null && list2.size() > 1) { if (list2 != null && list2.size() > 1) {
throw new Exception("名称重复!"); throw new Exception("名称重复!");

@ -92,6 +92,9 @@ public class SupplierController extends BladeController {
@ApiOperationSupport(order = 4) @ApiOperationSupport(order = 4)
@ApiOperation(value = "新增", notes = "传入supplier") @ApiOperation(value = "新增", notes = "传入supplier")
public R save(@Valid @RequestBody Supplier supplier) throws Exception { public R save(@Valid @RequestBody Supplier supplier) throws Exception {
if(StringUtil.isBlank(supplier.getName())){
throw new Exception("请填写供应商单位名称!");
}
// 获取 // 获取
if(StringUtil.isNotBlank(supplier.getProvinces())){ if(StringUtil.isNotBlank(supplier.getProvinces())){
List<String> lstProvinces = Func.toStrList(supplier.getProvinces()); List<String> lstProvinces = Func.toStrList(supplier.getProvinces());

@ -150,6 +150,7 @@ public class GoodsController extends BladeController {
wrapper.eq(Goods::getName, goods.getName()); wrapper.eq(Goods::getName, goods.getName());
// wrapper.eq(Goods::getCompanyId, goods.getCompanyId()); // wrapper.eq(Goods::getCompanyId, goods.getCompanyId());
wrapper.eq(Goods::getBrand, goods.getBrand()); wrapper.eq(Goods::getBrand, goods.getBrand());
wrapper.eq(BaseEntity::getCreateDept,AuthUtil.getDeptId());
// wrapper.eq(Goods::getBigClassId, goods.getBigClassId()); // wrapper.eq(Goods::getBigClassId, goods.getBigClassId());
// wrapper.eq(Goods::getXh, goods.getXh()); // wrapper.eq(Goods::getXh, goods.getXh());
// wrapper.eq(Goods::getRule, goods.getRule()); // wrapper.eq(Goods::getRule, goods.getRule());

@ -0,0 +1,46 @@
package org.springblade.lims.config;
import lombok.extern.slf4j.Slf4j;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* redisson配置类
* @author ytl
* @since 2022-10-13 15:11
*/
@Slf4j
@Configuration
public class RedissonConfig {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private String port;
@Value("${spring.redis.password}")
private String password;
@Bean
public RedissonClient redissonClient(){
Config config = new Config();
config.useSingleServer()
.setAddress("redis://" + host + ":" + port)
.setDatabase(0)
.setPingConnectionInterval(2000);
config.useSingleServer().setPassword(password);
config.setLockWatchdogTimeout(10000L);
try{
return Redisson.create(config);
}catch (Exception e){
log.error("创建redisson连接错误");
return null;
}
}
}

@ -7,15 +7,11 @@ import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.lims.entry.InspectionTask; import org.springblade.lims.entry.InspectionTask;
import org.springblade.lims.service.IInspectionTaskService; import org.springblade.lims.service.IInspectionTaskService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/** /**
* @author sjx * @author sjx
@ -31,7 +27,6 @@ public class InspectionTaskController extends BladeController {
@GetMapping("/page") @GetMapping("/page")
public R<Object> page(InspectionTask entry, Query query) { public R<Object> page(InspectionTask entry, Query query) {
return R.data(service.findPage(entry, query)); return R.data(service.findPage(entry, query));
} }

@ -1,22 +1,18 @@
package org.springblade.lims.demo; package org.springblade.lims.demo;
import com.alibaba.fastjson.JSONObject;
import com.jnrsmcu.sdk.netdevice.*; import com.jnrsmcu.sdk.netdevice.*;
import org.springblade.core.cache.utils.CacheUtil; import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.lims.tools.RedisUtil;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import static org.springblade.core.cache.constant.CacheConstant.*; import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
public class DataAcquisition implements Runnable { public class DataAcquisition implements Runnable {
private RSServer rsServer; private RSServer rsServer;
private RedisUtil redisUtil;
private static final String DATA_ACQUISITION_ID = "dataAcquisition:id:"; private static final String DATA_ACQUISITION_ID = "dataAcquisition:id:";
@Override @Override

@ -17,18 +17,19 @@ import org.springblade.core.tool.utils.Charsets;
import org.springblade.core.tool.utils.SpringUtil; import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.lims.entry.Instrument; import org.springblade.lims.entry.Instrument;
import org.springblade.lims.entry.InstrumentData; import org.springblade.lims.entry.InstrumentData;
import org.springblade.lims.entry.InstrumentStatus;
import org.springblade.lims.entry.LargeScreenVO; import org.springblade.lims.entry.LargeScreenVO;
import org.springblade.lims.mqtt.client.MyMQTTClient; import org.springblade.lims.mqtt.client.MyMQTTClient;
import org.springblade.lims.mqtt.config.MqttConfiguration; import org.springblade.lims.mqtt.config.MqttConfiguration;
import org.springblade.lims.service.IInstrumentDataService; import org.springblade.lims.service.IInstrumentDataService;
import org.springblade.lims.service.IInstrumentService; import org.springblade.lims.service.IInstrumentService;
import org.springblade.lims.service.IInstrumentStatusService;
import org.springblade.lims.service.ILargeScreenService; import org.springblade.lims.service.ILargeScreenService;
import org.springblade.lims.tools.RedisLock;
import org.springblade.system.cache.DictCache; import org.springblade.system.cache.DictCache;
import org.springblade.system.entity.Dict; import org.springblade.system.entity.Dict;
import java.text.ParseException;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
/** /**
* @author WXY * @author WXY
@ -40,9 +41,10 @@ public class MyMQTTCallback implements MqttCallbackExtended {
private MqttConfiguration mqttConfiguration = SpringUtil.getBean(MqttConfiguration.class); private MqttConfiguration mqttConfiguration = SpringUtil.getBean(MqttConfiguration.class);
private IInstrumentDataService instrumentDataService = SpringUtil.getBean(IInstrumentDataService.class); private IInstrumentDataService instrumentDataService = SpringUtil.getBean(IInstrumentDataService.class);
private IInstrumentStatusService instrumentStatusService = SpringUtil.getBean(IInstrumentStatusService.class); //private IInstrumentStatusService instrumentStatusService = SpringUtil.getBean(IInstrumentStatusService.class);
private IInstrumentService instrumentService = SpringUtil.getBean(IInstrumentService.class); private IInstrumentService instrumentService = SpringUtil.getBean(IInstrumentService.class);
private ILargeScreenService largeScreenService = SpringUtil.getBean(ILargeScreenService.class); private ILargeScreenService largeScreenService = SpringUtil.getBean(ILargeScreenService.class);
private RedisLock redisLock = SpringUtil.getBean(RedisLock.class);
private static final Logger log = LoggerFactory.getLogger(MyMQTTCallback.class); private static final Logger log = LoggerFactory.getLogger(MyMQTTCallback.class);
private MyMQTTClient mqttClient; private MyMQTTClient mqttClient;
@ -111,6 +113,9 @@ public class MyMQTTCallback implements MqttCallbackExtended {
InstrumentData data = new InstrumentData(); InstrumentData data = new InstrumentData();
Map map = (Map) JSON.parse(new String(mqttMessage.getPayload(), Charsets.UTF_8.name())); Map map = (Map) JSON.parse(new String(mqttMessage.getPayload(), Charsets.UTF_8.name()));
Map map1 = (Map) JSON.parse(map.get("vals").toString()); Map map1 = (Map) JSON.parse(map.get("vals").toString());
String lockKey = map.get("imei").toString();
if(redisLock.tryLock(lockKey, TimeUnit.SECONDS,10,60)){
try {
data.setSendTime(DateUtils.parseDate(map.get("tsstr").toString(),"yyyy-MM-dd hh:mm:ss")); data.setSendTime(DateUtils.parseDate(map.get("tsstr").toString(),"yyyy-MM-dd hh:mm:ss"));
data.setCurrentYear(map.get("tsstr").toString().substring(0,4)); data.setCurrentYear(map.get("tsstr").toString().substring(0,4));
data.setCurrentMonth(map.get("tsstr").toString().substring(0,7)); data.setCurrentMonth(map.get("tsstr").toString().substring(0,7));
@ -164,6 +169,9 @@ public class MyMQTTCallback implements MqttCallbackExtended {
} }
data.setLoadRate(loadRate); data.setLoadRate(loadRate);
data.setLoadLevel(loadLevel); data.setLoadLevel(loadLevel);
}else{
data.setLoadRate(0);
data.setLoadLevel("空载");
} }
} }
if(map1.containsKey("总无功功率")){ if(map1.containsKey("总无功功率")){
@ -265,6 +273,15 @@ public class MyMQTTCallback implements MqttCallbackExtended {
//你自己的业务接口 //你自己的业务接口
log.info(map1.toString()); log.info(map1.toString());
dataList.add(data); dataList.add(data);
} catch (ParseException e) {
throw new RuntimeException(e);
} catch (NumberFormatException e) {
throw new RuntimeException(e);
} finally {
redisLock.unlock(lockKey);
}
}
} }
if(dataList.size() ==100){ if(dataList.size() ==100){
instrumentDataService.saveBatch(dataList); instrumentDataService.saveBatch(dataList);
@ -285,14 +302,14 @@ public class MyMQTTCallback implements MqttCallbackExtended {
instrumentService.update(instrument,wrapper); instrumentService.update(instrument,wrapper);
//保存数据 //保存数据
//根据网关编号、推送时间查询数据是否已存在 //根据网关编号、推送时间查询数据是否已存在
InstrumentStatus oldStatus = instrumentStatusService.getOne(new LambdaQueryWrapper<InstrumentStatus>().eq(InstrumentStatus::getImei,map.get("imei").toString()).eq(InstrumentStatus::getSendTime,DateUtils.parseDate(map.get("tsstr").toString(),"yyyy-MM-dd hh:mm:ss"))); /*InstrumentStatus oldStatus = instrumentStatusService.getOne(new LambdaQueryWrapper<InstrumentStatus>().eq(InstrumentStatus::getImei,map.get("imei").toString()).eq(InstrumentStatus::getSendTime,DateUtils.parseDate(map.get("tsstr").toString(),"yyyy-MM-dd hh:mm:ss")));
if(oldStatus == null){ if(oldStatus == null){
InstrumentStatus instrumentStatus = new InstrumentStatus(); InstrumentStatus instrumentStatus = new InstrumentStatus();
instrumentStatus.setImei(map.get("imei").toString()); instrumentStatus.setImei(map.get("imei").toString());
instrumentStatus.setRunStatus(map.get("status").toString()); instrumentStatus.setRunStatus(map.get("status").toString());
instrumentStatus.setSendTime(DateUtils.parseDate(map.get("tsstr").toString(),"yyyy-MM-dd hh:mm:ss")); instrumentStatus.setSendTime(DateUtils.parseDate(map.get("tsstr").toString(),"yyyy-MM-dd hh:mm:ss"));
instrumentStatusService.save(instrumentStatus); instrumentStatusService.save(instrumentStatus);
} }*/
} }
} }
@ -332,20 +349,6 @@ public class MyMQTTCallback implements MqttCallbackExtended {
periodlist.forEach(dict -> { periodlist.forEach(dict -> {
periodMap.put(dict.getDictValue(),dict.getDictKey()); periodMap.put(dict.getDictValue(),dict.getDictKey());
}); });
/*for(Dict dict : periodlist){
List<String> timeList1 = Arrays.asList(dict.getDictKey().split(","));
timeList1.forEach(s -> {
String[] times = s.split("-");
Map<String,Date> map1 = new HashMap<>();
try {
map1.put("startTime",DateUtils.parseDate(today+" "+times[0]));
map1.put("endTime",DateUtils.parseDate(today+" "+times[1]));
} catch (ParseException e) {
throw new RuntimeException(e);
}
});
}*/
} }
/** /**

@ -44,7 +44,7 @@ public class CheckItemServiceImpl extends BaseServiceImpl<CheckItemMapper, Check
wrapper.eq(CheckItem::getCode, entry.getCode()); wrapper.eq(CheckItem::getCode, entry.getCode());
} }
if (StringUtils.isNotBlank(entry.getName())) { if (StringUtils.isNotBlank(entry.getName())) {
wrapper.eq(CheckItem::getName, entry.getName()); wrapper.like(CheckItem::getName, entry.getName());
} }
if(entry.getCreateDept() != null){ if(entry.getCreateDept() != null){
wrapper.eq(BaseEntity::getCreateDept,entry.getCreateDept()); wrapper.eq(BaseEntity::getCreateDept,entry.getCreateDept());

@ -17,6 +17,7 @@ import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.core.tool.utils.StringUtil; import org.springblade.core.tool.utils.StringUtil;
import org.springblade.lims.entry.*; import org.springblade.lims.entry.*;
import org.springblade.lims.mapper.InspectionPlanMapper; import org.springblade.lims.mapper.InspectionPlanMapper;
@ -175,9 +176,15 @@ public class InspectionPlanServiceImpl extends BaseServiceImpl<InspectionPlanMap
InspectionPointPos pointPos = pointPosService.getById(point.getPosId()); InspectionPointPos pointPos = pointPosService.getById(point.getPosId());
InspectionRoute route = routeService.getById(point.getRouteId()); InspectionRoute route = routeService.getById(point.getRouteId());
Instrument instrument = instrumentService.getById(point.getAssetId()); Instrument instrument = instrumentService.getById(point.getAssetId());
if(ObjectUtil.isNotEmpty(pointPos)){
point.setPosHierarchy(pointPos.getHierarchyName()); point.setPosHierarchy(pointPos.getHierarchyName());
}
if(ObjectUtil.isNotEmpty(route)){
point.setRouteName(route.getName()); point.setRouteName(route.getName());
}
if(ObjectUtil.isNotEmpty(instrument)){
point.setAssetName(instrument.getName()); point.setAssetName(instrument.getName());
}
List<InspectionPointItem> itemList = inspectionPointItemService.list(new LambdaQueryWrapper<InspectionPointItem>().eq(InspectionPointItem::getPointId,point.getId())); List<InspectionPointItem> itemList = inspectionPointItemService.list(new LambdaQueryWrapper<InspectionPointItem>().eq(InspectionPointItem::getPointId,point.getId()));
if(CollectionUtils.isNotEmpty(itemList)){ if(CollectionUtils.isNotEmpty(itemList)){
point.setItemSize(itemList.size()); point.setItemSize(itemList.size());

@ -78,9 +78,6 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
wrapper.le(InspectionTask::getActStartTime,entry.getActStartTimeEnd()); wrapper.le(InspectionTask::getActStartTime,entry.getActStartTimeEnd());
} }
if(CollectionUtils.isNotEmpty(entry.getGroupIdList())){
wrapper.in(InspectionTask::getGroupId,entry.getGroupIdList());
}
List<String> roles = Arrays.asList(AuthUtil.getUserRole().split(",")); List<String> roles = Arrays.asList(AuthUtil.getUserRole().split(","));
if(!roles.contains("admin") && !roles.contains("政府")){ if(!roles.contains("admin") && !roles.contains("政府")){
/*if(roles.contains("巡检管理")){ /*if(roles.contains("巡检管理")){
@ -88,7 +85,7 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
}*/ }*/
if(roles.contains("巡检人员")){ if(roles.contains("巡检人员")){
List<String> groupIdList = Arrays.asList(AuthUtil.getDeptId().split(",")); List<String> groupIdList = Arrays.asList(AuthUtil.getDeptId().split(","));
entry.setGroupIdList(groupIdList); wrapper.in(InspectionTask::getGroupId,groupIdList);
}else{ }else{
List<Long> deptIds = new ArrayList<>(); List<Long> deptIds = new ArrayList<>();
List<Dept> depts = SysCache.getDeptChild(Long.parseLong(AuthUtil.getDeptId())); List<Dept> depts = SysCache.getDeptChild(Long.parseLong(AuthUtil.getDeptId()));

@ -90,9 +90,6 @@ public class MaintainTaskServiceImpl extends BaseServiceImpl<MaintainTaskMapper,
wrapper.le(MaintainTask::getActStartTime,entry.getActStartTimeEnd()); wrapper.le(MaintainTask::getActStartTime,entry.getActStartTimeEnd());
} }
if(CollectionUtils.isNotEmpty(entry.getGroupIdList())){
wrapper.in(MaintainTask::getGroupId,entry.getGroupIdList());
}
List<String> roles = Arrays.asList(AuthUtil.getUserRole().split(",")); List<String> roles = Arrays.asList(AuthUtil.getUserRole().split(","));
if(!roles.contains("admin") && !roles.contains("政府")){ if(!roles.contains("admin") && !roles.contains("政府")){
/*if(roles.contains("保养管理")){ /*if(roles.contains("保养管理")){
@ -100,7 +97,7 @@ public class MaintainTaskServiceImpl extends BaseServiceImpl<MaintainTaskMapper,
}*/ }*/
if(roles.contains("保养人员")){ if(roles.contains("保养人员")){
List<String> groupIdList = Arrays.asList(AuthUtil.getDeptId().split(",")); List<String> groupIdList = Arrays.asList(AuthUtil.getDeptId().split(","));
entry.setGroupIdList(groupIdList); wrapper.in(MaintainTask::getGroupId,groupIdList);
}else{ }else{
List<Long> deptIds = new ArrayList<>(); List<Long> deptIds = new ArrayList<>();
List<Dept> depts = SysCache.getDeptChild(Long.parseLong(AuthUtil.getDeptId())); List<Dept> depts = SysCache.getDeptChild(Long.parseLong(AuthUtil.getDeptId()));

@ -0,0 +1,79 @@
package org.springblade.lims.tools;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
@Component
@ConditionalOnBean(RedissonClient.class)
public class RedisLock {
@Autowired
private RedissonClient redissonClient;
/**
* lock(), 拿不到lock就不罢休不然线程就一直block
*/
public RLock lock(String lockKey) {
RLock lock = redissonClient.getLock(lockKey);
lock.lock();
return lock;
}
/**
* leaseTime为加锁时间单位为秒
*/
public RLock lock(String lockKey, long leaseTime) {
RLock lock = redissonClient.getLock(lockKey);
lock.lock(leaseTime, TimeUnit.SECONDS);
return null;
}
/**
* timeout为加锁时间时间单位由unit确定
*/
public RLock lock(String lockKey, TimeUnit unit, long timeout) {
RLock lock = redissonClient.getLock(lockKey);
lock.lock(timeout, unit);
return lock;
}
/**
* @param lockKey key
* @param unit 单位
* @param waitTime 等待时间
* @param leaseTime 锁有效时间
* @return 加锁成功? true:成功 false: 失败
*/
public boolean tryLock(String lockKey, TimeUnit unit, long waitTime, long leaseTime) {
RLock lock = redissonClient.getLock(lockKey);
try {
return lock.tryLock(waitTime, leaseTime, unit);
} catch (InterruptedException e) {
return false;
}
}
/**
* unlock
*/
public void unlock(String lockKey) {
RLock lock = redissonClient.getLock(lockKey);
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
/**
* unlock
* @param lock
*/
public void unlock(RLock lock) {
lock.unlock();
}
}
Loading…
Cancel
Save