嘉禾二期

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. 343
      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. 13
      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();
QueryWrapper<ProductClass> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", name);
queryWrapper.eq("create_dept",AuthUtil.getDeptId());
List<ProductClass> 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<ProductClass> queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq("name", name);
queryWrapper1.eq("create_dept",AuthUtil.getDeptId());
List<ProductClass> list2 = productClassService.list(queryWrapper1);
if (list2 != null && list2.size() > 1) {
throw new Exception("名称重复!");

@ -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<String> lstProvinces = Func.toStrList(supplier.getProvinces());

@ -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());

@ -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 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<Object> page(InspectionTask entry, Query query) {
return R.data(service.findPage(entry, query));
}

@ -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

@ -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<String,String> entry : periodMap.entrySet()){
boolean flag = false;
List<String> 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<String,String> entry : periodMap.entrySet()){
boolean flag = false;
List<String> 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<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){
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<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());
}
if (StringUtils.isNotBlank(entry.getName())) {
wrapper.eq(CheckItem::getName, entry.getName());
wrapper.like(CheckItem::getName, entry.getName());
}
if(entry.getCreateDept() != null){
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.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.lims.entry.*;
import org.springblade.lims.mapper.InspectionPlanMapper;
@ -175,9 +176,15 @@ public class InspectionPlanServiceImpl extends BaseServiceImpl<InspectionPlanMap
InspectionPointPos pointPos = pointPosService.getById(point.getPosId());
InspectionRoute route = routeService.getById(point.getRouteId());
Instrument instrument = instrumentService.getById(point.getAssetId());
point.setPosHierarchy(pointPos.getHierarchyName());
point.setRouteName(route.getName());
point.setAssetName(instrument.getName());
if(ObjectUtil.isNotEmpty(pointPos)){
point.setPosHierarchy(pointPos.getHierarchyName());
}
if(ObjectUtil.isNotEmpty(route)){
point.setRouteName(route.getName());
}
if(ObjectUtil.isNotEmpty(instrument)){
point.setAssetName(instrument.getName());
}
List<InspectionPointItem> itemList = inspectionPointItemService.list(new LambdaQueryWrapper<InspectionPointItem>().eq(InspectionPointItem::getPointId,point.getId()));
if(CollectionUtils.isNotEmpty(itemList)){
point.setItemSize(itemList.size());

@ -78,9 +78,6 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
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(","));
if(!roles.contains("admin") && !roles.contains("政府")){
/*if(roles.contains("巡检管理")){
@ -88,7 +85,7 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
}*/
if(roles.contains("巡检人员")){
List<String> groupIdList = Arrays.asList(AuthUtil.getDeptId().split(","));
entry.setGroupIdList(groupIdList);
wrapper.in(InspectionTask::getGroupId,groupIdList);
}else{
List<Long> deptIds = new ArrayList<>();
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());
}
if(CollectionUtils.isNotEmpty(entry.getGroupIdList())){
wrapper.in(MaintainTask::getGroupId,entry.getGroupIdList());
}
List<String> roles = Arrays.asList(AuthUtil.getUserRole().split(","));
if(!roles.contains("admin") && !roles.contains("政府")){
/*if(roles.contains("保养管理")){
@ -100,7 +97,7 @@ public class MaintainTaskServiceImpl extends BaseServiceImpl<MaintainTaskMapper,
}*/
if(roles.contains("保养人员")){
List<String> groupIdList = Arrays.asList(AuthUtil.getDeptId().split(","));
entry.setGroupIdList(groupIdList);
wrapper.in(MaintainTask::getGroupId,groupIdList);
}else{
List<Long> deptIds = new ArrayList<>();
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