Commit b6640b9a authored by xixinzhao's avatar xixinzhao

装备车辆消码

parent acf7d011
...@@ -12,6 +12,11 @@ import java.util.Map; ...@@ -12,6 +12,11 @@ import java.util.Map;
public class EquipQrDateDto { public class EquipQrDateDto {
/** /**
* 来源
*/
private String source;
/**
* 类型 * 类型
*/ */
private String type; private String type;
......
...@@ -11,7 +11,8 @@ public enum CalculationRulesEnum { ...@@ -11,7 +11,8 @@ public enum CalculationRulesEnum {
GT("gt", "大于"), GT("gt", "大于"),
GE("ge", "大于等于"), GE("ge", "大于等于"),
LT("lt", "小于"), LT("lt", "小于"),
LE("le", "小于等于"); LE("le", "小于等于"),
BE("be", "介于两者之间");
private String code; private String code;
private String type; private String type;
......
...@@ -9,17 +9,18 @@ import com.yeejoin.equipmanage.common.entity.dto.EquipQrDateDto; ...@@ -9,17 +9,18 @@ import com.yeejoin.equipmanage.common.entity.dto.EquipQrDateDto;
import com.yeejoin.equipmanage.common.enums.CalculationRulesEnum; import com.yeejoin.equipmanage.common.enums.CalculationRulesEnum;
import com.yeejoin.equipmanage.common.utils.DateUtils; import com.yeejoin.equipmanage.common.utils.DateUtils;
import com.yeejoin.equipmanage.service.ICarService; import com.yeejoin.equipmanage.service.ICarService;
import com.yeejoin.equipmanage.service.IEquipmentSpecificSerivce;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.*;
import java.util.List; import java.util.regex.Pattern;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -34,7 +35,17 @@ public class UpdateQrCodeAction { ...@@ -34,7 +35,17 @@ public class UpdateQrCodeAction {
@Autowired @Autowired
private ICarService carService; private ICarService carService;
private final String CAR_ID = "carId"; @Autowired
private IEquipmentSpecificSerivce equipmentSpecificSerivce;
private final String SOURCE_ID = "sourceId";
private final String SOURCE_CAR = "car";
private final String SOURCE_EQUIP = "equip";
/**
* 开闭区间正则表达式
*/
private static final Pattern NUM_RANGE_PATTERN = Pattern.compile("[\\[|\\(]\\s?\\d+\\s?,\\s?\\d+\\s?[\\)|\\]]");
@RuleMethod(methodLabel = "更新码", project = "车辆更新码颜色") @RuleMethod(methodLabel = "更新码", project = "车辆更新码颜色")
public void updateCarQrCode(@MethodParam(paramLabel = "判断值") String value, @MethodParam(paramLabel = "赋码颜色") String color, public void updateCarQrCode(@MethodParam(paramLabel = "判断值") String value, @MethodParam(paramLabel = "赋码颜色") String color,
...@@ -45,58 +56,105 @@ public class UpdateQrCodeAction { ...@@ -45,58 +56,105 @@ public class UpdateQrCodeAction {
EquipQrDateDto equipQrDateDtoN = JSONObject.parseObject(equipQrDateDto.toString(), EquipQrDateDto.class); EquipQrDateDto equipQrDateDtoN = JSONObject.parseObject(equipQrDateDto.toString(), EquipQrDateDto.class);
List<Map<String, String>> data = equipQrDateDtoN.getData(); List<Map<String, String>> data = equipQrDateDtoN.getData();
String contrast = equipQrDateDtoN.getContrast(); String contrast = equipQrDateDtoN.getContrast();
String source = equipQrDateDtoN.getSource();
if (!CollectionUtils.isEmpty(data)) { if (!CollectionUtils.isEmpty(data)) {
List<String> collect = data.stream().map(map -> { List<Map<String, String>> collect = data.stream().map(map -> {
try { try {
String carId = null; String compareValue = null;
String s = map.get(contrast).replace("T", " "); switch (source) {
Date date = DateUtils.longStr2Date(s); case SOURCE_CAR:
int i = DateUtils.dateBetween(date, new Date()); Date date;
CalculationRulesEnum anEnum = CalculationRulesEnum.getEnum(rule); String s = map.get(contrast).replace("T", " ");
switch (anEnum) { date = DateUtils.longStr2Date(s);
case EQ: compareValue = String.valueOf(DateUtils.dateBetween(date, new Date()));
if (i == Integer.parseInt(value)) {
carId = String.valueOf(map.get(CAR_ID));
}
break;
case GT:
if (i > Integer.parseInt(value)) {
carId = String.valueOf(map.get(CAR_ID));
}
break; break;
case GE: case SOURCE_EQUIP:
if (i >= Integer.parseInt(value)) { compareValue = map.get(contrast);
carId = String.valueOf(map.get(CAR_ID));
}
break;
case LE:
if (i <= Integer.parseInt(value)) {
carId = String.valueOf(map.get(CAR_ID));
}
break;
case LT:
if (i < Integer.parseInt(value)) {
carId = String.valueOf(map.get(CAR_ID));
}
break;
case NE:
if (i != Integer.parseInt(value)) {
carId = String.valueOf(map.get(CAR_ID));
}
break; break;
default: default:
break; break;
} }
return carId; return StringUtils.isEmpty(compareValue) ? null : getId(map, rule, value, compareValue);
} catch (ParseException e) { } catch (ParseException e) {
log.error("日期转换失败"); log.error("对比失败:{}", e.getMessage());
e.printStackTrace(); e.printStackTrace();
return null; return null;
} }
}).filter(Objects::nonNull).collect(Collectors.toList()); }).filter(Objects::nonNull).collect(Collectors.toList());
carService.updateCarQrCode(collect, color);
if (!CollectionUtils.isEmpty(collect)) {
switch (source) {
case SOURCE_CAR:
carService.updateCarQrCode(collect, color);
break;
case SOURCE_EQUIP:
equipmentSpecificSerivce.updateEquipQrCode(collect, color);
break;
default:
break;
}
}
} }
}
}
private Map<String, String> getId (Map<String, String> map, String rule, String value, String compareValue) {
Map<String, String> mapNew = new HashMap<>();
CalculationRulesEnum anEnum = CalculationRulesEnum.getEnum(rule);
switch (anEnum) {
case EQ:
if (compareValue.equals(value)) {
mapNew = map;
}
break;
case GT:
if (Integer.parseInt(compareValue) > Integer.parseInt(value)) {
mapNew = map;
}
break;
case GE:
if (Integer.parseInt(compareValue) >= Integer.parseInt(value)) {
mapNew = map;
}
break;
case LE:
if (Integer.parseInt(compareValue) <= Integer.parseInt(value)) {
mapNew = map;
}
break;
case LT:
if (Integer.parseInt(compareValue) < Integer.parseInt(value)) {
mapNew = map;
}
break;
case NE:
if (!compareValue.equals(value)) {
mapNew = map;
}
break;
case BE:
int number = Integer.parseInt(compareValue);
if (NUM_RANGE_PATTERN.matcher(value).matches()) {
String[] pairs = value.split(",");
// 获取开闭区间的最小值和最大值
List<String> rangeNums = Arrays.stream(pairs).map(str -> str.replaceAll("[(|)|\\[|\\]]", "").trim()).collect(Collectors.toList());
Integer minValue = "".equals(rangeNums.get(0)) ? null : Integer.valueOf(rangeNums.get(0));
Integer maxValue = "".equals(rangeNums.get(1)) ? null : Integer.valueOf(rangeNums.get(1));
// 判定数值是否大于最小值
boolean minMatched = (minValue == null) || (pairs[0].startsWith("[") ? number >= minValue : number > minValue);
// 判定数值是否小于最大值
boolean maxMatched = (maxValue == null) || (pairs[1].endsWith("]") ? number <= maxValue : number < maxValue);
if (minMatched && maxMatched) {
mapNew = map;
}
}
break;
default:
break;
} }
return mapNew;
} }
} }
...@@ -38,4 +38,10 @@ public interface IdxFeign { ...@@ -38,4 +38,10 @@ public interface IdxFeign {
@RequestParam("bizOrgCode") String bizOrgCode, @RequestParam("bizOrgCode") String bizOrgCode,
@RequestParam("bizOrgCode") String bizOrgName); @RequestParam("bizOrgCode") String bizOrgName);
@RequestMapping(value = "/eventLog/cleanQrcode", method = RequestMethod.GET)
ResponseModel<JSONObject> cleanQrcode(@RequestParam("sourceId") String sourceId,
@RequestParam("equipId") String equipId,
@RequestParam("type") String type);
} }
...@@ -300,4 +300,6 @@ public interface EquipmentSpecificMapper extends BaseMapper<EquipmentSpecific> { ...@@ -300,4 +300,6 @@ public interface EquipmentSpecificMapper extends BaseMapper<EquipmentSpecific> {
Map<String, Object> getMonitoringEquip(String id); Map<String, Object> getMonitoringEquip(String id);
Map<String, Object> getMonitoringOther(String id); Map<String, Object> getMonitoringOther(String id);
void updateEquipQrCode(List<String> ids, String status);
} }
...@@ -37,7 +37,7 @@ public class CarPropertyJob { ...@@ -37,7 +37,7 @@ public class CarPropertyJob {
List<Map<String, String>> list = carService.updateCarStartStatus(); List<Map<String, String>> list = carService.updateCarStartStatus();
EquipQrDateDto equipQrDateDto = new EquipQrDateDto(); EquipQrDateDto equipQrDateDto = new EquipQrDateDto();
equipQrDateDto.setContrast("updateDate"); equipQrDateDto.setContrast("updateDate");
equipQrDateDto.setType("car"); equipQrDateDto.setSource("car");
equipQrDateDto.setData(list); equipQrDateDto.setData(list);
try { try {
ruleTrigger.publish(equipQrDateDto, "中心配置赋码规则/update-qr-code", null); ruleTrigger.publish(equipQrDateDto, "中心配置赋码规则/update-qr-code", null);
......
...@@ -216,7 +216,7 @@ public interface ICarService extends IService<Car> { ...@@ -216,7 +216,7 @@ public interface ICarService extends IService<Car> {
/** /**
* 赋码 * 赋码
*/ */
void updateCarQrCode(List<String> carIds, String status); void updateCarQrCode(List<Map<String, String>> carIds, String status);
} }
...@@ -289,4 +289,9 @@ public interface IEquipmentSpecificSerivce extends IService<EquipmentSpecific> { ...@@ -289,4 +289,9 @@ public interface IEquipmentSpecificSerivce extends IService<EquipmentSpecific> {
IPage<EquipTypeImgAmountVO> getMonitoringUnitList(EquipTypeAmountPageDTO equipTypeAmountPage); IPage<EquipTypeImgAmountVO> getMonitoringUnitList(EquipTypeAmountPageDTO equipTypeAmountPage);
List<Map<String, Object >> getMonitoringCount(String bizOrgCode); List<Map<String, Object >> getMonitoringCount(String bizOrgCode);
/**
* 赋码
*/
void updateEquipQrCode( List<Map<String, String>> ids, String status);
} }
...@@ -1974,7 +1974,10 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS ...@@ -1974,7 +1974,10 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
} }
@Override @Override
public void updateCarQrCode(List<String> carIds, String status) { public void updateCarQrCode(List<Map<String, String>> mapList, String status) {
carMapper.updateStatusByIds(carIds, status); if (!CollectionUtils.isEmpty(mapList)) {
List<String> carIds = mapList.stream().map(m -> m.get("sourceId")).filter(Objects::nonNull).collect(Collectors.toList());
carMapper.updateStatusByIds(carIds, status);
}
} }
} }
...@@ -2162,4 +2162,17 @@ public class EquipmentSpecificSerivceImpl extends ServiceImpl<EquipmentSpecificM ...@@ -2162,4 +2162,17 @@ public class EquipmentSpecificSerivceImpl extends ServiceImpl<EquipmentSpecificM
public List<Map<String, Object >> getMonitoringCount(String bizOrgCode) { public List<Map<String, Object >> getMonitoringCount(String bizOrgCode) {
return equipmentSpecificMapper.getMonitoringCount(bizOrgCode); return equipmentSpecificMapper.getMonitoringCount(bizOrgCode);
} }
@Override
public void updateEquipQrCode(List<Map<String, String>> mapList, String status) {
if (!CollectionUtils.isEmpty(mapList)) {
List<String> ids = mapList.stream().map(m -> m.get("sourceId")).filter(Objects::nonNull).collect(Collectors.toList());
equipmentSpecificMapper.updateEquipQrCode(ids, status);
Map<String, String> map = mapList.get(0);
String equipId = map.get("sourceId");
String specificIndexId = map.get("specificIndexId");
idxFeign.cleanQrcode(specificIndexId, equipId, "equip");
}
}
} }
...@@ -8,12 +8,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ...@@ -8,12 +8,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.component.influxdb.InfluxDbConnection; import com.yeejoin.amos.component.influxdb.InfluxDbConnection;
import com.yeejoin.amos.component.rule.RuleTrigger;
import com.yeejoin.amos.feign.systemctl.model.MessageModel; import com.yeejoin.amos.feign.systemctl.model.MessageModel;
import com.yeejoin.equipmanage.common.datasync.entity.FireEquipmentDefectAlarm; import com.yeejoin.equipmanage.common.datasync.entity.FireEquipmentDefectAlarm;
import com.yeejoin.equipmanage.common.datasync.entity.FireEquipmentFaultAlarm; import com.yeejoin.equipmanage.common.datasync.entity.FireEquipmentFaultAlarm;
import com.yeejoin.equipmanage.common.datasync.entity.FireEquipmentFireAlarm; import com.yeejoin.equipmanage.common.datasync.entity.FireEquipmentFireAlarm;
import com.yeejoin.equipmanage.common.dto.TemperatureAlarmDto; import com.yeejoin.equipmanage.common.dto.TemperatureAlarmDto;
import com.yeejoin.equipmanage.common.entity.*; import com.yeejoin.equipmanage.common.entity.*;
import com.yeejoin.equipmanage.common.entity.dto.EquipQrDateDto;
import com.yeejoin.equipmanage.common.entity.publics.BaseEntity; import com.yeejoin.equipmanage.common.entity.publics.BaseEntity;
import com.yeejoin.equipmanage.common.entity.vo.*; import com.yeejoin.equipmanage.common.entity.vo.*;
import com.yeejoin.equipmanage.common.enums.*; import com.yeejoin.equipmanage.common.enums.*;
...@@ -121,6 +123,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -121,6 +123,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
@Autowired @Autowired
private InfluxDbConnection influxDbConnection; private InfluxDbConnection influxDbConnection;
@Autowired
private RuleTrigger ruleTrigger;
/** /**
* 泡沫罐KEY * 泡沫罐KEY
*/ */
...@@ -693,6 +698,24 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -693,6 +698,24 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
equipmentSpeIndex.setEquipmentType(topicEntity.getType()); equipmentSpeIndex.setEquipmentType(topicEntity.getType());
equipmentSpeIndex.setUUID(UUIDUtils.getUUID()); equipmentSpeIndex.setUUID(UUIDUtils.getUUID());
// 收到信号触发规则恢复码判断
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> map = new HashMap<>(2);
map.put("sourceId", String.valueOf(equipmentSpecificIndex.getEquipmentSpecificId()));
map.put("indexValue", value);
map.put("specificIndexId", String.valueOf(equipmentSpecificIndex.getId()));
list.add(map);
EquipQrDateDto equipQrDateDto = new EquipQrDateDto();
equipQrDateDto.setContrast("indexValue");
equipQrDateDto.setSource("equip");
equipQrDateDto.setType(equipmentSpecificIndex.getTypeCode());
equipQrDateDto.setData(list);
try {
ruleTrigger.publish(equipQrDateDto, "中心配置赋码规则/update-qr-code", null);
} catch (Exception e) {
log.error("调用规则失败: {}", e.getMessage());
}
//es存储数据 //es存储数据
eSeqService.saveESEquiplistSpecificBySystemESVO(equipmentSpeIndex, String.valueOf(vo.getSystemId()), vo.getSystemName()); eSeqService.saveESEquiplistSpecificBySystemESVO(equipmentSpeIndex, String.valueOf(vo.getSystemId()), vo.getSystemName());
......
...@@ -100,7 +100,7 @@ ...@@ -100,7 +100,7 @@
<select id="selectIndexByTime" resultType="map"> <select id="selectIndexByTime" resultType="map">
SELECT SELECT
car_id carId, car_id sourceId,
update_date updateDate update_date updateDate
FROM FROM
wl_car_property wl_car_property
......
...@@ -2652,4 +2652,11 @@ ...@@ -2652,4 +2652,11 @@
SELECT IFNULL(SUM(IF(aqr.SOURCE != 'equip', 1, 0)), 0) as num FROM dl_amos_idx_biz.idx_access_qrcode_record aqr WHERE aqr.buss_id = #{id} SELECT IFNULL(SUM(IF(aqr.SOURCE != 'equip', 1, 0)), 0) as num FROM dl_amos_idx_biz.idx_access_qrcode_record aqr WHERE aqr.buss_id = #{id}
</select> </select>
<update id="updateEquipQrCode" parameterType="list">
UPDATE wl_equipment_specific SET equip_status = #{status} WHERE id IN
<foreach collection="ids" separator="," item="id" open="(" close=")">
#{id}
</foreach>
</update>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment