diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/ProductClassController.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/ProductClassController.java index ee50191..37856d7 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/ProductClassController.java +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/ProductClassController.java @@ -98,6 +98,7 @@ public class ProductClassController extends BladeController { String name = productClass.getName(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("name", name); + queryWrapper.eq("create_dept",AuthUtil.getDeptId()); List list1 = productClassService.list(queryWrapper); if (list1 != null && list1.size() > 0) { throw new Exception("名称重复!"); @@ -148,6 +149,7 @@ public class ProductClassController extends BladeController { String name = productClass.getName(); QueryWrapper queryWrapper1 = new QueryWrapper<>(); queryWrapper1.eq("name", name); + queryWrapper1.eq("create_dept",AuthUtil.getDeptId()); List list2 = productClassService.list(queryWrapper1); if (list2 != null && list2.size() > 1) { throw new Exception("名称重复!"); diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/SupplierController.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/SupplierController.java index 2bd14ff..a776c2f 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/SupplierController.java +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/controller/SupplierController.java @@ -92,6 +92,9 @@ public class SupplierController extends BladeController { @ApiOperationSupport(order = 4) @ApiOperation(value = "新增", notes = "传入supplier") public R save(@Valid @RequestBody Supplier supplier) throws Exception { + if(StringUtil.isBlank(supplier.getName())){ + throw new Exception("请填写供应商单位名称!"); + } // 获取 if(StringUtil.isNotBlank(supplier.getProvinces())){ List lstProvinces = Func.toStrList(supplier.getProvinces()); diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/GoodsController.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/GoodsController.java index 606e57d..1331b2f 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/GoodsController.java +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/GoodsController.java @@ -150,6 +150,7 @@ public class GoodsController extends BladeController { wrapper.eq(Goods::getName, goods.getName()); // wrapper.eq(Goods::getCompanyId, goods.getCompanyId()); wrapper.eq(Goods::getBrand, goods.getBrand()); + wrapper.eq(BaseEntity::getCreateDept,AuthUtil.getDeptId()); // wrapper.eq(Goods::getBigClassId, goods.getBigClassId()); // wrapper.eq(Goods::getXh, goods.getXh()); // wrapper.eq(Goods::getRule, goods.getRule()); diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/config/RedissonConfig.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/config/RedissonConfig.java new file mode 100644 index 0000000..f4dd480 --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/config/RedissonConfig.java @@ -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; + } + } + +} diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/InspectionTaskController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/InspectionTaskController.java index 30ca1c0..86a367e 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/InspectionTaskController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/InspectionTaskController.java @@ -7,15 +7,11 @@ import io.swagger.annotations.ApiParam; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Query; -import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.lims.entry.InspectionTask; import org.springblade.lims.service.IInspectionTaskService; import org.springframework.web.bind.annotation.*; -import java.util.Arrays; -import java.util.List; - /** * @author sjx @@ -31,7 +27,6 @@ public class InspectionTaskController extends BladeController { @GetMapping("/page") public R page(InspectionTask entry, Query query) { - return R.data(service.findPage(entry, query)); } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/demo/DataAcquisition.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/demo/DataAcquisition.java index 772f1b1..017166f 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/demo/DataAcquisition.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/demo/DataAcquisition.java @@ -1,22 +1,18 @@ package org.springblade.lims.demo; -import com.alibaba.fastjson.JSONObject; import com.jnrsmcu.sdk.netdevice.*; import org.springblade.core.cache.utils.CacheUtil; -import org.springblade.lims.tools.RedisUtil; import java.text.SimpleDateFormat; import java.util.HashMap; 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 { private RSServer rsServer; - private RedisUtil redisUtil; - private static final String DATA_ACQUISITION_ID = "dataAcquisition:id:"; @Override diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/mqtt/callback/MyMQTTCallback.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/mqtt/callback/MyMQTTCallback.java index 7dbf06c..968c06b 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/mqtt/callback/MyMQTTCallback.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/mqtt/callback/MyMQTTCallback.java @@ -17,18 +17,19 @@ import org.springblade.core.tool.utils.Charsets; import org.springblade.core.tool.utils.SpringUtil; import org.springblade.lims.entry.Instrument; import org.springblade.lims.entry.InstrumentData; -import org.springblade.lims.entry.InstrumentStatus; import org.springblade.lims.entry.LargeScreenVO; import org.springblade.lims.mqtt.client.MyMQTTClient; import org.springblade.lims.mqtt.config.MqttConfiguration; import org.springblade.lims.service.IInstrumentDataService; import org.springblade.lims.service.IInstrumentService; -import org.springblade.lims.service.IInstrumentStatusService; import org.springblade.lims.service.ILargeScreenService; +import org.springblade.lims.tools.RedisLock; import org.springblade.system.cache.DictCache; import org.springblade.system.entity.Dict; +import java.text.ParseException; import java.util.*; +import java.util.concurrent.TimeUnit; /** * @author WXY @@ -40,9 +41,10 @@ public class MyMQTTCallback implements MqttCallbackExtended { private MqttConfiguration mqttConfiguration = SpringUtil.getBean(MqttConfiguration.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 ILargeScreenService largeScreenService = SpringUtil.getBean(ILargeScreenService.class); + private RedisLock redisLock = SpringUtil.getBean(RedisLock.class); private static final Logger log = LoggerFactory.getLogger(MyMQTTCallback.class); private MyMQTTClient mqttClient; @@ -111,160 +113,175 @@ public class MyMQTTCallback implements MqttCallbackExtended { InstrumentData data = new InstrumentData(); Map map = (Map) JSON.parse(new String(mqttMessage.getPayload(), Charsets.UTF_8.name())); Map map1 = (Map) JSON.parse(map.get("vals").toString()); - data.setSendTime(DateUtils.parseDate(map.get("tsstr").toString(),"yyyy-MM-dd hh:mm:ss")); - data.setCurrentYear(map.get("tsstr").toString().substring(0,4)); - data.setCurrentMonth(map.get("tsstr").toString().substring(0,7)); - data.setCurrentDay(map.get("tsstr").toString().substring(0,10)); - data.setImei(map.get("imei").toString()); - //计算尖峰平谷 - String today = DateFormatUtils.format(new Date(),"yyyy-MM-dd"); - for(Map.Entry entry : periodMap.entrySet()){ - boolean flag = false; - List timeList = Arrays.asList(entry.getValue().split(",")); - for(String timePeriod : timeList){ - String[] times = timePeriod.split("-"); - Date startTime = DateUtils.parseDate(today + " " + times[0],"yyyy-MM-dd HH:mm:ss"); - Date endTime = DateUtils.parseDate(today + " " + times[1],"yyyy-MM-dd HH:mm:ss"); - if(data.getSendTime().compareTo(startTime) >0 && data.getSendTime().compareTo(endTime) <=0){ - flag = true; - break; + 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.setCurrentYear(map.get("tsstr").toString().substring(0,4)); + data.setCurrentMonth(map.get("tsstr").toString().substring(0,7)); + data.setCurrentDay(map.get("tsstr").toString().substring(0,10)); + data.setImei(map.get("imei").toString()); + //计算尖峰平谷 + String today = DateFormatUtils.format(new Date(),"yyyy-MM-dd"); + for(Map.Entry entry : periodMap.entrySet()){ + boolean flag = false; + List timeList = Arrays.asList(entry.getValue().split(",")); + for(String timePeriod : timeList){ + String[] times = timePeriod.split("-"); + Date startTime = DateUtils.parseDate(today + " " + times[0],"yyyy-MM-dd HH:mm:ss"); + Date endTime = DateUtils.parseDate(today + " " + times[1],"yyyy-MM-dd HH:mm:ss"); + if(data.getSendTime().compareTo(startTime) >0 && data.getSendTime().compareTo(endTime) <=0){ + flag = true; + break; + } + } + if(flag){ + data.setPeriod(entry.getKey()); + break; + } } + if(map1.containsKey("总用电")){ + data.setTotalElectricity(Double.parseDouble(map1.get("总用电").toString())); + //计算电表从上一次到这一次的用电量 + if(totalMap.get(map.get("imei").toString()) == null){ + data.setSingleElectricity(0.0); + }else{ + data.setSingleElectricity(Double.parseDouble(map1.get("总用电").toString())-totalMap.get(map.get("imei").toString())); + } + totalMap.put(map.get("imei").toString(),Double.parseDouble(map1.get("总用电").toString())); + } + if(map1.containsKey("总有功功率")){ + data.setTotalActivePower(Double.parseDouble(map1.get("总有功功率").toString())); + //计算负载率 + if(powerMap.get(map.get("imei").toString()) != null){ + int loadRate = Math.abs((int)Math.round(data.getTotalActivePower()/powerMap.get(map.get("imei").toString())*100)); + String loadLevel = ""; + if(loadRate == loadRateMap.get("空载")){ + loadLevel = "空载"; + }else if(loadRate > loadRateMap.get("空载") && loadRate <= loadRateMap.get("轻载")){ + loadLevel = "轻载"; + }else if (loadRate > loadRateMap.get("轻载") && loadRate <= loadRateMap.get("正常")){ + loadLevel = "正常"; + }else if(loadRate >loadRateMap.get("正常") && loadRate <= loadRateMap.get("过载")){ + loadLevel = "过载"; + }else if(loadRate > loadRateMap.get("过载")){ + loadLevel = "重载"; + } + data.setLoadRate(loadRate); + data.setLoadLevel(loadLevel); + }else{ + data.setLoadRate(0); + data.setLoadLevel("空载"); + } + } + if(map1.containsKey("总无功功率")){ + data.setTotalReactivePower(Double.parseDouble(map1.get("总无功功率").toString())); + } + if(map1.containsKey("总视在功率")){ + data.setTotalApparentPower(Double.parseDouble(map1.get("总视在功率").toString())); + } + if(map1.containsKey("当前正向有功")){ + data.setCurrentPositiveActivePower(Double.parseDouble(map1.get("当前正向有功").toString())); + } + if(map1.containsKey("当前正向无功")){ + data.setCurrentPositiveReactivePower(Double.parseDouble(map1.get("当前正向无功").toString())); + } + if(map1.containsKey("当前反向有功")){ + data.setCurrentReverseActivePower(Double.parseDouble(map1.get("当前反向有功").toString())); + } + if(map1.containsKey("当前反向无功")){ + data.setCurrentReverseReactivePower(Double.parseDouble(map1.get("当前反向无功").toString())); + } + if(map1.containsKey("电流不平衡度")){ + data.setCurrentImbalance(Double.parseDouble(map1.get("电流不平衡度").toString())); + } + if(map1.containsKey("电压不平衡度")){ + data.setVoltageImbalance(Double.parseDouble(map1.get("电压不平衡度").toString())); + } + if(map1.containsKey("总功率因数")){ + data.setTotalPowerFactor(Double.parseDouble(map1.get("总功率因数").toString())); + } + if(map1.containsKey("零序电流")){ + data.setZeroSequenceCurrent(Double.parseDouble(map1.get("零序电流").toString())); + } + if(map1.containsKey("频率")){ + data.setFrequency(Double.parseDouble(map1.get("频率").toString())); + } + if(map1.containsKey("A线电压")){ + data.setALineVoltage(Double.parseDouble(map1.get("A线电压").toString())); + } + if(map1.containsKey("B线电压")){ + data.setBLineVoltage(Double.parseDouble(map1.get("B线电压").toString())); + } + if(map1.containsKey("C线电压")){ + data.setCLineVoltage(Double.parseDouble(map1.get("C线电压").toString())); + } + if(map1.containsKey("A相电流")){ + data.setAPhaseCurrent(Double.parseDouble(map1.get("A相电流").toString())); + } + if(map1.containsKey("B相电流")){ + data.setBPhaseCurrent(Double.parseDouble(map1.get("B相电流").toString())); + } + if(map1.containsKey("C相电流")){ + data.setCPhaseCurrent(Double.parseDouble(map1.get("C相电流").toString())); + } + if(map1.containsKey("A相电压")){ + data.setAPhaseVoltage(Double.parseDouble(map1.get("A相电压").toString())); + } + if(map1.containsKey("B相电压")){ + data.setBPhaseVoltage(Double.parseDouble(map1.get("B相电压").toString())); + } + if(map1.containsKey("C相电压")){ + data.setCPhaseVoltage(Double.parseDouble(map1.get("C相电压").toString())); + } + if(map1.containsKey("A相有功功率")){ + data.setAPhaseActivePower(Double.parseDouble(map1.get("A相有功功率").toString())); + } + if(map1.containsKey("B相有功功率")){ + data.setBPhaseActivePower(Double.parseDouble(map1.get("B相有功功率").toString())); + } + if(map1.containsKey("C相有功功率")){ + data.setCPhaseActivePower(Double.parseDouble(map1.get("C相有功功率").toString())); + } + if(map1.containsKey("A相功率因数")){ + data.setAPhasePowerFactor(Double.parseDouble(map1.get("A相功率因数").toString())); + } + if(map1.containsKey("B相功率因数")){ + data.setBPhasePowerFactor(Double.parseDouble(map1.get("B相功率因数").toString())); + } + if(map1.containsKey("C相功率因数")){ + data.setCPhasePowerFactor(Double.parseDouble(map1.get("C相功率因数").toString())); + } + if(map1.containsKey("A相无功功率")){ + data.setAPhaseReactivePower(Double.parseDouble(map1.get("A相无功功率").toString())); + } + if(map1.containsKey("B相无功功率")){ + data.setBPhaseReactivePower(Double.parseDouble(map1.get("B相无功功率").toString())); + } + if(map1.containsKey("C相无功功率")){ + data.setCPhaseReactivePower(Double.parseDouble(map1.get("C相无功功率").toString())); + } + if(map1.containsKey("A相视在功率")){ + data.setAPhaseApparentPower(Double.parseDouble(map1.get("A相视在功率").toString())); + } + if(map1.containsKey("B相视在功率")){ + data.setBPhaseApparentPower(Double.parseDouble(map1.get("B相视在功率").toString())); + } + if(map1.containsKey("C相视在功率")){ + data.setCPhaseApparentPower(Double.parseDouble(map1.get("C相视在功率").toString())); + } + //你自己的业务接口 + log.info(map1.toString()); + dataList.add(data); + } catch (ParseException e) { + throw new RuntimeException(e); + } catch (NumberFormatException e) { + throw new RuntimeException(e); + } finally { + redisLock.unlock(lockKey); } - if(flag){ - data.setPeriod(entry.getKey()); - break; - } - } - if(map1.containsKey("总用电")){ - data.setTotalElectricity(Double.parseDouble(map1.get("总用电").toString())); - //计算电表从上一次到这一次的用电量 - if(totalMap.get(map.get("imei").toString()) == null){ - data.setSingleElectricity(0.0); - }else{ - data.setSingleElectricity(Double.parseDouble(map1.get("总用电").toString())-totalMap.get(map.get("imei").toString())); - } - totalMap.put(map.get("imei").toString(),Double.parseDouble(map1.get("总用电").toString())); - } - if(map1.containsKey("总有功功率")){ - data.setTotalActivePower(Double.parseDouble(map1.get("总有功功率").toString())); - //计算负载率 - if(powerMap.get(map.get("imei").toString()) != null){ - int loadRate = Math.abs((int)Math.round(data.getTotalActivePower()/powerMap.get(map.get("imei").toString())*100)); - String loadLevel = ""; - if(loadRate == loadRateMap.get("空载")){ - loadLevel = "空载"; - }else if(loadRate > loadRateMap.get("空载") && loadRate <= loadRateMap.get("轻载")){ - loadLevel = "轻载"; - }else if (loadRate > loadRateMap.get("轻载") && loadRate <= loadRateMap.get("正常")){ - loadLevel = "正常"; - }else if(loadRate >loadRateMap.get("正常") && loadRate <= loadRateMap.get("过载")){ - loadLevel = "过载"; - }else if(loadRate > loadRateMap.get("过载")){ - loadLevel = "重载"; - } - data.setLoadRate(loadRate); - data.setLoadLevel(loadLevel); - } - } - if(map1.containsKey("总无功功率")){ - data.setTotalReactivePower(Double.parseDouble(map1.get("总无功功率").toString())); - } - if(map1.containsKey("总视在功率")){ - data.setTotalApparentPower(Double.parseDouble(map1.get("总视在功率").toString())); - } - if(map1.containsKey("当前正向有功")){ - data.setCurrentPositiveActivePower(Double.parseDouble(map1.get("当前正向有功").toString())); - } - if(map1.containsKey("当前正向无功")){ - data.setCurrentPositiveReactivePower(Double.parseDouble(map1.get("当前正向无功").toString())); - } - if(map1.containsKey("当前反向有功")){ - data.setCurrentReverseActivePower(Double.parseDouble(map1.get("当前反向有功").toString())); - } - if(map1.containsKey("当前反向无功")){ - data.setCurrentReverseReactivePower(Double.parseDouble(map1.get("当前反向无功").toString())); - } - if(map1.containsKey("电流不平衡度")){ - data.setCurrentImbalance(Double.parseDouble(map1.get("电流不平衡度").toString())); - } - if(map1.containsKey("电压不平衡度")){ - data.setVoltageImbalance(Double.parseDouble(map1.get("电压不平衡度").toString())); - } - if(map1.containsKey("总功率因数")){ - data.setTotalPowerFactor(Double.parseDouble(map1.get("总功率因数").toString())); - } - if(map1.containsKey("零序电流")){ - data.setZeroSequenceCurrent(Double.parseDouble(map1.get("零序电流").toString())); - } - if(map1.containsKey("频率")){ - data.setFrequency(Double.parseDouble(map1.get("频率").toString())); - } - if(map1.containsKey("A线电压")){ - data.setALineVoltage(Double.parseDouble(map1.get("A线电压").toString())); - } - if(map1.containsKey("B线电压")){ - data.setBLineVoltage(Double.parseDouble(map1.get("B线电压").toString())); - } - if(map1.containsKey("C线电压")){ - data.setCLineVoltage(Double.parseDouble(map1.get("C线电压").toString())); - } - if(map1.containsKey("A相电流")){ - data.setAPhaseCurrent(Double.parseDouble(map1.get("A相电流").toString())); - } - if(map1.containsKey("B相电流")){ - data.setBPhaseCurrent(Double.parseDouble(map1.get("B相电流").toString())); - } - if(map1.containsKey("C相电流")){ - data.setCPhaseCurrent(Double.parseDouble(map1.get("C相电流").toString())); - } - if(map1.containsKey("A相电压")){ - data.setAPhaseVoltage(Double.parseDouble(map1.get("A相电压").toString())); - } - if(map1.containsKey("B相电压")){ - data.setBPhaseVoltage(Double.parseDouble(map1.get("B相电压").toString())); - } - if(map1.containsKey("C相电压")){ - data.setCPhaseVoltage(Double.parseDouble(map1.get("C相电压").toString())); } - if(map1.containsKey("A相有功功率")){ - data.setAPhaseActivePower(Double.parseDouble(map1.get("A相有功功率").toString())); - } - if(map1.containsKey("B相有功功率")){ - data.setBPhaseActivePower(Double.parseDouble(map1.get("B相有功功率").toString())); - } - if(map1.containsKey("C相有功功率")){ - data.setCPhaseActivePower(Double.parseDouble(map1.get("C相有功功率").toString())); - } - if(map1.containsKey("A相功率因数")){ - data.setAPhasePowerFactor(Double.parseDouble(map1.get("A相功率因数").toString())); - } - if(map1.containsKey("B相功率因数")){ - data.setBPhasePowerFactor(Double.parseDouble(map1.get("B相功率因数").toString())); - } - if(map1.containsKey("C相功率因数")){ - data.setCPhasePowerFactor(Double.parseDouble(map1.get("C相功率因数").toString())); - } - if(map1.containsKey("A相无功功率")){ - data.setAPhaseReactivePower(Double.parseDouble(map1.get("A相无功功率").toString())); - } - if(map1.containsKey("B相无功功率")){ - data.setBPhaseReactivePower(Double.parseDouble(map1.get("B相无功功率").toString())); - } - if(map1.containsKey("C相无功功率")){ - data.setCPhaseReactivePower(Double.parseDouble(map1.get("C相无功功率").toString())); - } - if(map1.containsKey("A相视在功率")){ - data.setAPhaseApparentPower(Double.parseDouble(map1.get("A相视在功率").toString())); - } - if(map1.containsKey("B相视在功率")){ - data.setBPhaseApparentPower(Double.parseDouble(map1.get("B相视在功率").toString())); - } - if(map1.containsKey("C相视在功率")){ - data.setCPhaseApparentPower(Double.parseDouble(map1.get("C相视在功率").toString())); - } - //你自己的业务接口 - log.info(map1.toString()); - dataList.add(data); + } if(dataList.size() ==100){ instrumentDataService.saveBatch(dataList); @@ -285,14 +302,14 @@ public class MyMQTTCallback implements MqttCallbackExtended { instrumentService.update(instrument,wrapper); //保存数据 //根据网关编号、推送时间查询数据是否已存在 - InstrumentStatus oldStatus = instrumentStatusService.getOne(new LambdaQueryWrapper().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().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){ InstrumentStatus instrumentStatus = new InstrumentStatus(); instrumentStatus.setImei(map.get("imei").toString()); instrumentStatus.setRunStatus(map.get("status").toString()); instrumentStatus.setSendTime(DateUtils.parseDate(map.get("tsstr").toString(),"yyyy-MM-dd hh:mm:ss")); instrumentStatusService.save(instrumentStatus); - } + }*/ } } @@ -332,20 +349,6 @@ public class MyMQTTCallback implements MqttCallbackExtended { periodlist.forEach(dict -> { periodMap.put(dict.getDictValue(),dict.getDictKey()); }); - /*for(Dict dict : periodlist){ - List timeList1 = Arrays.asList(dict.getDictKey().split(",")); - timeList1.forEach(s -> { - String[] times = s.split("-"); - Map 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); - } - }); - }*/ - } /** diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CheckItemServiceImpl.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CheckItemServiceImpl.java index a121800..4c799a0 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CheckItemServiceImpl.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/CheckItemServiceImpl.java @@ -44,7 +44,7 @@ public class CheckItemServiceImpl extends BaseServiceImpl itemList = inspectionPointItemService.list(new LambdaQueryWrapper().eq(InspectionPointItem::getPointId,point.getId())); if(CollectionUtils.isNotEmpty(itemList)){ point.setItemSize(itemList.size()); diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/InspectionTaskServiceImpl.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/InspectionTaskServiceImpl.java index afad953..b3eea25 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/InspectionTaskServiceImpl.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/InspectionTaskServiceImpl.java @@ -78,9 +78,6 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl roles = Arrays.asList(AuthUtil.getUserRole().split(",")); if(!roles.contains("admin") && !roles.contains("政府")){ /*if(roles.contains("巡检管理")){ @@ -88,7 +85,7 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl groupIdList = Arrays.asList(AuthUtil.getDeptId().split(",")); - entry.setGroupIdList(groupIdList); + wrapper.in(InspectionTask::getGroupId,groupIdList); }else{ List deptIds = new ArrayList<>(); List depts = SysCache.getDeptChild(Long.parseLong(AuthUtil.getDeptId())); diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/MaintainTaskServiceImpl.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/MaintainTaskServiceImpl.java index 72ea5af..26eb3aa 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/MaintainTaskServiceImpl.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/MaintainTaskServiceImpl.java @@ -90,9 +90,6 @@ public class MaintainTaskServiceImpl extends BaseServiceImpl roles = Arrays.asList(AuthUtil.getUserRole().split(",")); if(!roles.contains("admin") && !roles.contains("政府")){ /*if(roles.contains("保养管理")){ @@ -100,7 +97,7 @@ public class MaintainTaskServiceImpl extends BaseServiceImpl groupIdList = Arrays.asList(AuthUtil.getDeptId().split(",")); - entry.setGroupIdList(groupIdList); + wrapper.in(MaintainTask::getGroupId,groupIdList); }else{ List deptIds = new ArrayList<>(); List depts = SysCache.getDeptChild(Long.parseLong(AuthUtil.getDeptId())); diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/tools/RedisLock.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/tools/RedisLock.java new file mode 100644 index 0000000..5460ddb --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/tools/RedisLock.java @@ -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(); + } +} +