Commit 03a70a24 authored by xixinzhao's avatar xixinzhao

Merge branch 'develop_dl' into develop_0510

# Conflicts: # amos-boot-module/amos-boot-module-biz/amos-boot-module-common-biz/src/main/java/com/yeejoin/amos/boot/module/common/biz/controller/OrgPersonController.java
parents 8ed928b0 13363f8c
......@@ -21,6 +21,8 @@ public interface DynamicFormInstanceMapper extends BaseMapper<DynamicFormInstanc
public List<DynamicFormInstanceDto> selectListByCalledId(Long id);
public List<DynamicFormInstanceDto> listBySeqnum(Long id);
/**
* 列转行查询
*
......
......@@ -87,6 +87,8 @@ public interface IOrgUsrService {
*/
List<FormValue> getFormValue(Long id) throws Exception;
String getPersonImg(String id) throws Exception;
/**
* 保存 机构/部门/人员基本信息
*
......
......@@ -21,6 +21,26 @@
WHERE v.instance_id = #{id}
</select>
<select id="listBySeqnum" resultType="com.yeejoin.amos.boot.module.common.api.dto.DynamicFormInstanceDto">
SELECT v.sequence_nbr sequenceNbr,
v.form_column_id formColumnId,
v.instance_id instanceId,
v.group_code groupCode,
v.field_name fieldName,
v.field_code fieldCode,
v.field_value fieldValue,
v.field_value_label fieldValueLabel,
v.rec_user_name recUserName,
v.rec_user_id recUserId,
v.rec_date recDate,
v.is_delete isDelete,
v.block block,
f.field_type fieldType
FROM cb_dynamic_form_instance v
LEFT JOIN cb_dynamic_form_column f ON f.sequence_nbr = v.form_column_id
WHERE v.instance_id = #{id} AND v.field_code = 'personImg'
</select>
<select id="listOnDutyPersonByAid" resultType="java.util.Map">
select
d.*,
......
......@@ -185,12 +185,10 @@ public class Car extends BaseEntity {
private String importStr;
@TableField(exist = false)
private Integer totalTravel;
private Double totalTravel;
@TableField(exist = false)
private double longitude;
@TableField(exist = false)
private double latitude;
@TableField(exist = false)
......
......@@ -225,4 +225,7 @@ public class EquipmentSpecificAlarm extends BaseEntity {
@TableField(value = "station_name")
private String stationName;
@ApiModelProperty(value = "消息内容")
@TableField(exist = false)
private String messageBody;
}
\ No newline at end of file
......@@ -12,7 +12,7 @@ public class CarTravelDto {
String totalTime;
Integer totalTravel;
Double totalTravel;
List<WlCarMileageDto> records;
......
......@@ -539,7 +539,6 @@ public class OrgPersonController extends BaseController {
return orgUsrs;
}
/**
* 根据ids查询多人员信息
* @param ids
......@@ -557,6 +556,10 @@ public class OrgPersonController extends BaseController {
return orgUsrs;
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@RequestMapping(value = "/person/img/{id}", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "查询人员头像", notes = "根据id查询")
public ResponseModel getPersonImage(@PathVariable String id) {
return ResponseHelper.buildResponse(iOrgUsrService.getPersonImg(id));
}
}
......@@ -72,6 +72,10 @@ public class DynamicFormInstanceServiceImpl extends BaseService<DynamicFormInsta
return this.baseMapper.selectListByCalledId(instanceId);
}
public List<DynamicFormInstanceDto> listBySeqnum(Long instanceId) {
return this.baseMapper.listBySeqnum(instanceId);
}
public Long commonSave(String groupCode, Map<String, Object> model) {
Long instanceId = sequence.nextId();
List<DynamicFormColumn> columns = dynamicFormColumnService.list(new LambdaQueryWrapper<DynamicFormColumn>().eq(DynamicFormColumn::getGroupCode, groupCode));
......
......@@ -774,6 +774,15 @@ public class OrgUsrServiceImpl extends BaseService<OrgUsrDto, OrgUsr, OrgUsrMapp
}
@Override
public String getPersonImg(String id) {
Long userId = Long.valueOf(id);
OrgUsr orgUsr = this.baseMapper.queryByUserId(userId);
List<DynamicFormInstanceDto> list = alertFormValueServiceImpl.listBySeqnum(orgUsr.getSequenceNbr());
String str = list.get(0).getFieldValue();
return str;
}
public List<FormValue> getFormValueDetail(Long id) throws Exception {
// 动态表单数据
List<DynamicFormInstanceDto> list = alertFormValueServiceImpl.listByCalledId(id);
......
......@@ -20,6 +20,7 @@ import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
......@@ -159,7 +160,7 @@ public class WlCarMileageController {
CarTravelDto carTravelDto = new CarTravelDto();
carTravelDto.setTotal(page.getTotal());
long totalTime = 0;
int totalTravel = 0;
double totalTravel = 0;
List<WlCarMileageDto> list = new ArrayList<WlCarMileageDto>();
for (WlCarMileage wl : page.getRecords()) {
WlCarMileageDto wlCarMileageDto = new WlCarMileageDto();
......@@ -179,7 +180,9 @@ public class WlCarMileageController {
//
// String timeStr = dateFormat.format(totalTime);
carTravelDto.setTotalTime(millisToStringShort(totalTime));
carTravelDto.setTotalTravel(totalTravel);
BigDecimal two = BigDecimal.valueOf(totalTravel);
double result = two.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
carTravelDto.setTotalTravel(result);
return carTravelDto;
}
......@@ -243,4 +246,17 @@ public class WlCarMileageController {
@DateTimeFormat(pattern = "yyyy-MM") @RequestParam("date") Date date) {
return iWlCarMileageService.getCalender(id, date);
}
/**
* 里程切分
*/
@RequestMapping(value = "/mileageSegmentation", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "里程切分", notes = "里程切分")
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
public void mileageSegmentation() {
iWlCarMileageService.mileageSegmentation();
}
}
......@@ -66,4 +66,6 @@ public interface EquipmentIndexMapper extends BaseMapper<EquipmentIndex> {
List<EquipmentIndex> getPerfQutoaIotList(Long id);
List<String> getGruopName(Long equipmentId);
EquipmentIndex getMessage(@Param("equipmentSpecificId")Long equipmentSpecificId, @Param("equipmentIndexKey")String equipmentIndexKey);
}
......@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.equipmanage.common.entity.WlCarMileage;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 车量里程表 Mapper 接口
*
......@@ -13,8 +15,10 @@ import org.apache.ibatis.annotations.Param;
*/
public interface WlCarMileageMapper extends BaseMapper<WlCarMileage> {
Page<WlCarMileage> page(Page<WlCarMileage> page,@Param("wlCarMileage") WlCarMileage wlCarMileage);
Page<WlCarMileage> page(Page<WlCarMileage> page,@Param("wlCarMileage") WlCarMileage wlCarMileage, @Param("mileageParameter") Double mileageParameter);
Double totalMileage(String iotCode);
Integer totalMileage(String iotCode);
List<WlCarMileage> list();
}
......@@ -11,7 +11,9 @@ import com.yeejoin.equipmanage.common.vo.Token;
import com.yeejoin.equipmanage.fegin.SystemctlFeign;
import com.yeejoin.equipmanage.mapper.MarqueeDataMapper;
import com.yeejoin.equipmanage.remote.RemoteSecurityService;
import com.yeejoin.equipmanage.service.IEquipmentSpecificAlarmLogService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
......@@ -36,6 +38,7 @@ public class PumpSendMessage implements Job {
SystemctlFeign systemctlFeign = (SystemctlFeign)jobDataMap.get("systemctlFeign");
RemoteSecurityService remoteSecurityService = (RemoteSecurityService)jobDataMap.get("remoteSecurityService");
MarqueeDataMapper marqueeDataMapper = (MarqueeDataMapper)jobDataMap.get("marqueeDataMapper");
IEquipmentSpecificAlarmLogService equipmentSpecificAlarmLogService = (IEquipmentSpecificAlarmLogService)jobDataMap.get("equipmentSpecificAlarmLogService");
MessageModel model = new MessageModel();
model.setSendTime(new Date());
......@@ -64,8 +67,9 @@ public class PumpSendMessage implements Job {
marqueeData.setType("漏水提醒");
marqueeData.setCreateDate(new Date());
marqueeDataMapper.insert(marqueeData);
// 稳压泵漏水告警添加告警事件信息
equipmentSpecificAlarmLogService.pressurePumpDisposeAlarm(equipmentSpecific.getId(), String.format(StringUtils.substring(recordMessage, 13), pressurePumpEnum.getTips()));
}
model.setBody(body);
model.setTitle("漏水提醒");
model.setExtras(map);
......
......@@ -2,6 +2,7 @@ package com.yeejoin.equipmanage.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yeejoin.equipmanage.common.entity.EquipmentSpecific;
import com.yeejoin.equipmanage.common.entity.EquipmentSpecificAlarm;
import com.yeejoin.equipmanage.common.entity.EquipmentSpecificAlarmLog;
import com.yeejoin.equipmanage.common.entity.dto.EquipmentAlarmLogDto;
......@@ -61,4 +62,9 @@ public interface IEquipmentSpecificAlarmLogService extends IService<EquipmentSpe
* @return
*/
Page<EquipmentAlarmLogDto> getEquipAlarmLog(String id, String startTime, String endTime, long pageSize, long current );
void pressurePumpDisposeAlarm(Long equipmentSpecificId, String body);
void pressurePumpRestore(Long equipmentSpecificId);
}
......@@ -19,10 +19,17 @@ public interface IWlCarMileageService extends IService<WlCarMileage> {
Page<WlCarMileage> page(Page<WlCarMileage> page, WlCarMileage wlCarMileage);
Integer totalMileage(String iotCode);
Double totalMileage(String iotCode);
List<Coordinate> getCoordinateList(long id);
Map<String,Boolean> getCalender(long id,Date date);
/**
* 里程切分(0点若里程未结束,自动切分设置结束信息,并开始新里程)
*/
void mileageSegmentation();
}
......@@ -1355,7 +1355,7 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
car.setImportStr(car.getIsImport() ? "进口" : "国产");
}
if (!ObjectUtils.isEmpty(car.getIotCode())) {
Integer totalTravel = iWlCarMileageService.totalMileage(car.getIotCode());
Double totalTravel = iWlCarMileageService.totalMileage(car.getIotCode());
car.setTotalTravel(totalTravel);
WlCarMileage last = iWlCarMileageService
.getOne(new LambdaQueryWrapper<WlCarMileage>().eq(WlCarMileage::getIotCode, car.getIotCode())
......
package com.yeejoin.equipmanage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.yeejoin.equipmanage.common.entity.EquipmentSpecificAlarm;
import com.yeejoin.equipmanage.common.entity.EquipmentSpecificAlarmLog;
import com.yeejoin.equipmanage.common.entity.FireFightingSystemEntity;
import com.yeejoin.equipmanage.common.entity.*;
import com.yeejoin.equipmanage.common.entity.dto.EquipmentAlarmLogDto;
import com.yeejoin.equipmanage.common.entity.vo.EquiplistSpecificBySystemVO;
import com.yeejoin.equipmanage.common.enums.AlarmStatusEnum;
import com.yeejoin.equipmanage.common.utils.DateUtils;
import com.yeejoin.equipmanage.fegin.IotFeign;
import com.yeejoin.equipmanage.fegin.VideoFeignClient;
import com.yeejoin.equipmanage.mapper.EquipmentSpecificAlarmLogMapper;
import com.yeejoin.equipmanage.mapper.FireFightingSystemMapper;
import com.yeejoin.equipmanage.mapper.*;
import com.yeejoin.equipmanage.service.IESeqService;
import com.yeejoin.equipmanage.service.IEquipmentSpecificAlarmLogService;
import liquibase.pro.packaged.S;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
......@@ -28,6 +31,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author keyong
......@@ -42,6 +46,22 @@ public class EquipmentSpecificAlarmLogServiceImpl extends ServiceImpl<EquipmentS
@Autowired
EquipmentSpecificAlarmLogMapper equipmentSpecificAlarmLogMapper;
@Autowired
EquipmentSpecificAlarmMapper equipmentSpecificAlarmMapper;
@Autowired
EquipmentSpecificMapper equipmentSpecificMapper;
@Autowired
EquipmentSpecificAlarmServiceImpl equipmentSpecificAlarmService;
@Autowired
EquipmentIndexMapper equipmentIndexMapper;
@Value("${equipment.pressurepump.start}")
private String pressurePumpStart;
@Autowired
FireFightingSystemMapper fireFightingSystemMapper;
......@@ -141,6 +161,131 @@ public class EquipmentSpecificAlarmLogServiceImpl extends ServiceImpl<EquipmentS
}
@Override
public void pressurePumpDisposeAlarm(Long equipmentSpecificId, String body) {
EquipmentSpecific equipmentSpecific = equipmentSpecificMapper.selectById(equipmentSpecificId);
EquipmentSpecificAlarm equipmentSpecificAlarm = new EquipmentSpecificAlarm();
String sysCodes = null;
Map<String, Object> stationCode = equipmentSpecificMapper.getStationCode(equipmentSpecificId);
EquipmentIndex equipmentIndex = equipmentIndexMapper.getMessage(equipmentSpecificId, pressurePumpStart);
LambdaQueryWrapper<EquipmentSpecificAlarm> lambda = new QueryWrapper<EquipmentSpecificAlarm>().lambda();
lambda.eq(EquipmentSpecificAlarm::getEquipmentSpecificId, equipmentSpecific.getId());
lambda.eq(EquipmentSpecificAlarm::getEquipmentSpecificIndexKey, equipmentSpecific.getRealtimeIotIndexKey());
lambda.eq(EquipmentSpecificAlarm::getStatus, AlarmStatusEnum.BJ.getCode());
lambda.orderByDesc(EquipmentSpecificAlarm::getCreateDate);
lambda.last("limit 1");
EquipmentSpecificAlarm specificAlarm = equipmentSpecificAlarmMapper.selectOne(lambda);
// 已存在稳压泵漏水告警信息,告警频率+1
if (!ObjectUtils.isEmpty(specificAlarm)) {
specificAlarm.setFrequency(specificAlarm.getFrequency() + 1);
equipmentSpecificAlarmMapper.updateById(specificAlarm);
BeanUtils.copyProperties(specificAlarm, equipmentSpecificAlarm);
} else {
equipmentSpecificAlarm.setEquipmentSpecificId(equipmentSpecific.getId());
equipmentSpecificAlarm.setEquipmentSpecificName(equipmentSpecific.getName());
equipmentSpecificAlarm.setOrgCode(equipmentSpecific.getOrgCode());
equipmentSpecificAlarm.setIotCode(equipmentSpecific.getIotCode());
equipmentSpecificAlarm.setEquipmentSpecificIndexName("漏水提醒");
equipmentSpecificAlarm.setEquipmentSpecificIndexKey(equipmentIndex.getPerfQuotaDefinitionId());
equipmentSpecificAlarm.setEquipmentSpecificIndexValue("true");
equipmentSpecificAlarm.setStatus(AlarmStatusEnum.BJ.getCode());
equipmentSpecificAlarm.setFrequency(1);
equipmentSpecificAlarm.setType(equipmentIndex.getTypeCode());
equipmentSpecificAlarm.setEquipmentIndexId(equipmentIndex.getId());
equipmentSpecificAlarm.setSystemIds(equipmentSpecific.getSystemId());
equipmentSpecificAlarm.setEquipmentCode(equipmentSpecific.getEquipmentCode());
equipmentSpecificAlarm.setEquipmentDetailId(equipmentSpecific.getEquipmentDetailId());
equipmentSpecificAlarm.setLocation(equipmentSpecific.getPosition());
equipmentSpecificAlarm.setBizOrgCode(equipmentSpecific.getBizOrgCode());
equipmentSpecificAlarm.setBizOrgName(equipmentSpecific.getBizOrgName());
equipmentSpecificAlarm.setEmergencyLevel(equipmentIndex.getEmergencyLevel());
equipmentSpecificAlarm.setEmergencyLevelColor(equipmentIndex.getEmergencyLevelColor());
equipmentSpecificAlarm.setEmergencyLevelDescribe(equipmentIndex.getEmergencyLevelDescribe());
equipmentSpecificAlarm.setEquipmentId(ObjectUtils.isEmpty(equipmentIndex.getEquipmentId()) ? null : Long.parseLong(equipmentIndex.getEquipmentId()));
if (!ObjectUtils.isEmpty(stationCode)) {
equipmentSpecificAlarm.setStationCode(stationCode.get("station_code").toString());
equipmentSpecificAlarm.setStationName(stationCode.get("station_name").toString());
}
if (!ObjectUtils.isEmpty(equipmentSpecificAlarm.getSystemIds())) {
sysCodes = getSysCodes(equipmentSpecificAlarm.getSystemIds());
equipmentSpecificAlarm.setSystemCodes(ObjectUtils.isEmpty(sysCodes) ? null : sysCodes);
}
equipmentSpecificAlarmMapper.insert(equipmentSpecificAlarm);
}
EquipmentSpecificAlarmLog equipmentSpecificAlarmLog = new EquipmentSpecificAlarmLog();
BeanUtils.copyProperties(equipmentSpecificAlarm, equipmentSpecificAlarmLog);
equipmentSpecificAlarmLog.setId(null);
equipmentSpecificAlarmLog.setEquipmentSpecificIndexName(body);
equipmentSpecificAlarmLog.setEquipmentSpecificAlarmId(equipmentSpecificAlarm.getId());
equipmentSpecificAlarmLog.setEquipmentSpecificCode(equipmentSpecific.getCode());
equipmentSpecificAlarmLog.setEquipmentId(ObjectUtils.isEmpty(equipmentIndex.getEquipmentId()) ? null : Long.parseLong(equipmentIndex.getEquipmentId()));
equipmentSpecificAlarmLog.setBuildId(equipmentSpecific.getWarehouseStructureId().toString());
equipmentSpecificAlarmLog.setEmergencyLevel(equipmentIndex.getEmergencyLevel());
equipmentSpecificAlarmLog.setEmergencyLevelColor(equipmentIndex.getEmergencyLevelColor());
equipmentSpecificAlarmLog.setEmergencyLevelDescribe(equipmentIndex.getEmergencyLevelDescribe());
if (!ObjectUtils.isEmpty(sysCodes)) {
equipmentSpecificAlarmLog.setSystemCodes(sysCodes);
}
if (!ObjectUtils.isEmpty(stationCode)) {
equipmentSpecificAlarmLog.setStationCode(stationCode.get("station_code").toString());
equipmentSpecificAlarmLog.setStationName(stationCode.get("station_name").toString());
}
equipmentSpecificAlarmLogMapper.insert(equipmentSpecificAlarmLog);
}
private String getSysCodes(String systemId){
if (!ObjectUtils.isEmpty(systemId)) {
List<FireFightingSystemEntity> codes = fireFightingSystemMapper.getFightingSysByIds(systemId.split(","));
if (!ObjectUtils.isEmpty(codes)) {
return codes.stream().map(FireFightingSystemEntity::getCode).collect(Collectors.joining(","));
}
}
return null;
}
@Override
public void pressurePumpRestore(Long equipmentSpecificId) {
// 修改报警数据为正常
Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(date);
LambdaQueryWrapper<EquipmentSpecificAlarm> lambda = new QueryWrapper<EquipmentSpecificAlarm>().lambda();
lambda.eq(EquipmentSpecificAlarm::getEquipmentSpecificId, equipmentSpecificId);
lambda.eq(EquipmentSpecificAlarm::getStatus, AlarmStatusEnum.BJ.getCode());
lambda.eq(EquipmentSpecificAlarm::getEquipmentSpecificIndexKey, pressurePumpStart);
List<EquipmentSpecificAlarm> equipmentSpecificAlarms = equipmentSpecificAlarmMapper.selectList(lambda);
if (!ObjectUtils.isEmpty(equipmentSpecificAlarms)){
equipmentSpecificAlarms.forEach(item ->{
item.setStatus(AlarmStatusEnum.HF.getCode());
item.setRecoveryDate(date);
item.setConfirmType(item.getType());
item.setEquipmentSpecificIndexValue("false");
});
equipmentSpecificAlarmService.saveOrUpdateBatch(equipmentSpecificAlarms);
}
LambdaQueryWrapper<EquipmentSpecificAlarmLog> lambdaLog = new QueryWrapper<EquipmentSpecificAlarmLog>().lambda();
lambdaLog.eq(EquipmentSpecificAlarmLog::getEquipmentSpecificId, equipmentSpecificId);
lambdaLog.eq(EquipmentSpecificAlarmLog::getStatus, AlarmStatusEnum.BJ.getCode());
lambdaLog.eq(EquipmentSpecificAlarmLog::getEquipmentSpecificIndexKey, pressurePumpStart);
List<EquipmentSpecificAlarmLog> equipmentSpecificAlarmLogs = equipmentSpecificAlarmLogMapper.selectList(lambdaLog);
if (!ObjectUtils.isEmpty(equipmentSpecificAlarmLogs)){
equipmentSpecificAlarmLogs.forEach(item ->{
item.setAlarmReason(item.getEquipmentSpecificName() + "引起设备报警");
item.setResolveResult(dateString + "系统收到设备复归(已消除)信号,系统自动处理。");
item.setConfirmUser("");
item.setConfirmUserName("系统自动处理");
item.setConfirmDate(date);
item.setCleanTime(date);
item.setConfirmType(item.getType());
item.setEquipmentSpecificIndexValue("false");
item.setStatus(AlarmStatusEnum.HF.getCode());
});
this.updateBatchById(equipmentSpecificAlarmLogs);
}
}
}
\ No newline at end of file
......@@ -1699,6 +1699,14 @@ public class EquipmentSpecificSerivceImpl extends ServiceImpl<EquipmentSpecificM
return data;
}
List<EquipmentSpecificVo> resultData = data.stream().filter(a -> a.getIotCode().equals(iotCode)).collect(Collectors.toList());
if (CollectionUtils.isEmpty(resultData)) {
List<EquipmentSpecificVo> equipOrCarByIotCode = equipmentSpecificMapper.getEquipOrCarByIotCode(iotCode);
if (!CollectionUtils.isEmpty(equipOrCarByIotCode)) {
data.addAll(equipOrCarByIotCode);
redisUtils.set("equipAndCarIotCodes", JSONObject.toJSONString(data));
return equipOrCarByIotCode;
}
}
return resultData;
}
......
......@@ -128,6 +128,11 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
*/
private final static String FHS_WirelessliquidDetector_WaterLevel = "FHS_WirelessliquidDetector_WaterLevel";
/**
* 水箱液位
*/
private final static String CAFS_WaterTank_WaterTankLevel = "CAFS_WaterTank_WaterTankLevel";
static EquipmentSpecificMapper equipmentSpecificMapper;
@Autowired
......@@ -366,6 +371,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
// 存储温度数据至内存中(火眼)
iotDataListToCacheMap(iotDatalist);
iotDatalist.forEach(iotDataVO -> {
boolean alarmFlag = false;
String indexKey = iotDataVO.getKey();
String indexValue = iotDataVO.getValue().toString();
// 稳压泵启停信号处理
......@@ -404,20 +410,31 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
// 火眼数据构造告警指标逻辑
equipmentSpecificIndex = handleTemperatureAlarm(equipmentSpeIndex, iotDatalist);
// 指标告警处理
if (equipmentSpecificIndex.getIsAlarm() != null && 1 == equipmentSpecificIndex.getIsAlarm()) {
equipmentSpecificAlarms.addAll(createIndexAlarmRecord(equipmentSpecificIndex));
}
//管网压力和泡沫罐信息处理
// 告警日志表消息内容
Map<String, String> messageBodyMap = new HashMap<>();
//管网压力、泡沫罐信息、水箱液位告警处理
if (iotDataVO.getKey().toLowerCase().equals(CAFS_FoamTank_FoamTankLevel.toLowerCase()) ||
FHS_PipePressureDetector_PipePressure.toLowerCase().equals(iotDataVO.getKey().toLowerCase())) {
doFoamTankLevel(iotDataVO, equipmentSpecificIndex);
FHS_PipePressureDetector_PipePressure.toLowerCase().equals(iotDataVO.getKey().toLowerCase()) ||
iotDataVO.getKey().toLowerCase().equals(CAFS_WaterTank_WaterTankLevel.toLowerCase())) {
alarmFlag = doFoamTankLevel(iotDataVO, equipmentSpecificIndex, messageBodyMap);
}
//消防水池液位处理
if (iotDataVO.getKey().toLowerCase().equals(FHS_FirePoolDevice_WaterLevel.toLowerCase()) ||
iotDataVO.getKey().toLowerCase().equals(FHS_WirelessliquidDetector_WaterLevel.toLowerCase())) {
doWaterPoolLevel(iotDataVO, equipmentSpecificIndex);
alarmFlag = doWaterPoolLevel(iotDataVO, equipmentSpecificIndex, messageBodyMap);
}
// 遥测数据生成告警事件、日志处理
if (iotDataVO.getKey().toLowerCase().equals(CAFS_FoamTank_FoamTankLevel.toLowerCase()) ||
FHS_PipePressureDetector_PipePressure.toLowerCase().equals(iotDataVO.getKey().toLowerCase()) ||
iotDataVO.getKey().toLowerCase().equals(CAFS_WaterTank_WaterTankLevel.toLowerCase()) ||
iotDataVO.getKey().toLowerCase().equals(FHS_FirePoolDevice_WaterLevel.toLowerCase()) ||
iotDataVO.getKey().toLowerCase().equals(FHS_WirelessliquidDetector_WaterLevel.toLowerCase())) {
handlingAlarms(equipmentSpecificIndex, alarmFlag);
}
// 指标告警处理
if (equipmentSpecificIndex.getIsAlarm() != null && 1 == equipmentSpecificIndex.getIsAlarm()) {
equipmentSpecificAlarms.addAll(createIndexAlarmRecord(equipmentSpecificIndex, messageBodyMap));
}
// 遥测遥信数据推送云端kafka
JSONObject jsonObjectXf = new JSONObject();
......@@ -568,16 +585,22 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
}
private void handlingAlarms(EquipmentSpecificIndex equipmentSpecificIndex, boolean alarmFlag){
equipmentSpecificIndex.setIsAlarm(1);
equipmentSpecificIndex.setValue(String.valueOf(alarmFlag));
}
/**
* 泡沫罐 或 者管网压力 消息发送
* @param iotDataVO iotDataVO
* @param equipmentSpecificIndex equipmentSpecificIndex
*/
private void doFoamTankLevel(IotDataVO iotDataVO, EquipmentSpecificIndex equipmentSpecificIndex) {
private boolean doFoamTankLevel(IotDataVO iotDataVO, EquipmentSpecificIndex equipmentSpecificIndex, Map<String, String> messageBody) {
boolean alarmFlag = false;
MessageModel model = new MessageModel();
Map<String, Object> map = new HashMap<>();
if (iotDataVO.getKey().toLowerCase().equals(CAFS_FoamTank_FoamTankLevel.toLowerCase())) {
if (iotDataVO.getKey().toLowerCase().equals(CAFS_FoamTank_FoamTankLevel.toLowerCase()) || iotDataVO.getKey().toLowerCase().equals(CAFS_WaterTank_WaterTankLevel.toLowerCase())) {
map = fireFightingSystemMapper.getFoamTankLevel(equipmentSpecificIndex.getEquipmentSpecificId());
} else {
map = fireFightingSystemMapper.getPipeNetwork(equipmentSpecificIndex.getEquipmentSpecificId());
......@@ -620,7 +643,10 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
log.error("调用平台出错!");
}
log.info(String.format("调用平台消息服务成功:%s", JSON.toJSONString(model)));
alarmFlag = true;
messageBody.put("messageBody", equipmentSpecificIndex.getEquipmentSpecificName() + "-" + body);
}
return alarmFlag;
}
/**
......@@ -629,7 +655,8 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
* @param iotDataVO iotDataVO
* @param equipmentSpecificIndex equipmentSpecificIndex
*/
private void doWaterPoolLevel(IotDataVO iotDataVO, EquipmentSpecificIndex equipmentSpecificIndex) {
private boolean doWaterPoolLevel(IotDataVO iotDataVO, EquipmentSpecificIndex equipmentSpecificIndex, Map<String, String> messageBody) {
boolean alarmFlag = false;
MessageModel model = new MessageModel();
Map<String, Object> map = fireFightingSystemMapper.getWaterPoolLevel(equipmentSpecificIndex.getEquipmentSpecificId());
if (!ObjectUtils.isEmpty(map)) {
......@@ -682,8 +709,11 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
Token token = remoteSecurityService.getServerToken();
systemctlFeign.create(token.getAppKey(), token.getProduct(), token.getToke(), model);
log.info(String.format("调用平台消息服务成功:%s", JSON.toJSONString(model)));
alarmFlag = true;
messageBody.put("messageBody", map.get("name") + "-" + body);
}
}
return alarmFlag;
}
private BigDecimal getBigDecimal( Object value ) {
......@@ -933,6 +963,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
equipmentSpecificAlarmLog.setId(null);
equipmentSpecificAlarmLog.setCreateDate(new Date());
equipmentSpecificAlarmLog.setEquipmentSpecificAlarmId(equipmentSpecificAlarm.getId());
equipmentSpecificAlarmLog.setEquipmentSpecificIndexName(StringUtil.isNotEmpty(equipmentSpecificAlarm.getMessageBody()) ? equipmentSpecificAlarm.getMessageBody() : equipmentSpecificAlarm.getEquipmentSpecificIndexName());
//调整为按照设备归属(可归属公司或者部门)
Map<String,Object> mapd= iEquipmentSpecificSerivce.getStationCode(equipmentSpecificAlarm.getEquipmentSpecificId());
......@@ -1281,7 +1312,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
return indexStateVo;
}
public List<EquipmentSpecificAlarm> createIndexAlarmRecord(EquipmentSpecificIndex equipmentSpcIndex) {
public List<EquipmentSpecificAlarm> createIndexAlarmRecord(EquipmentSpecificIndex equipmentSpcIndex, Map<String, String> messageBody) {
// 处理火眼视频异常
List<EquipmentSpecificAlarm> equipmentSpecificAlarms = new ArrayList<>();
EquipmentSpecificAlarm equipmentSpecificAlarm = new EquipmentSpecificAlarm();
......@@ -1321,6 +1352,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
action.setBuildId(equipmentSpcIndex.getBuildId());
action.setBizOrgName(equipmentSpcIndex.getBizOrgName());
action.setBizOrgCode(equipmentSpcIndex.getBizOrgCode());
action.setMessageBody(!ObjectUtils.isEmpty(messageBody) ? messageBody.get("messageBody") : "");
equipmentSpecificAlarms.add(action);
}
}
......@@ -1523,6 +1555,12 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
// 2. 校验
if (!ObjectUtils.isEmpty(data.getUpdateDate())) {
checkValueByDate(data, newDate, pressurePumpEnum);
}else {
// 稳压泵漏水告警恢复
List<EquipmentSpecificIndex> collect = equipmentSpeIndexList.stream().filter(item -> !ObjectUtils.isEmpty(item.getIotCode()) && item.getIotCode().equals(topicEntity.getIotCode())).collect(Collectors.toList());
if (!ObjectUtils.isEmpty(collect) && !ObjectUtils.isEmpty(collect.get(0)) && !ObjectUtils.isEmpty(collect.get(0).getEquipmentId())){
equipmentSpecificAlarmLogService.pressurePumpRestore(collect.get(0).getEquipmentId());
}
}
});
}
......@@ -1548,7 +1586,8 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
StringUtil.isNotEmpty(e.getValue()) && e.getIotCode().equals(iotCode) && pressurePumpStart.equals(e.getEquipmentIndexKey())).sorted(Comparator.comparing(EquipmentSpecificIndex::getUpdateDate).reversed())
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(lastStop)) {
equipmentSpecificIndex = getIotDate(equipmentSpecificIndex, lastStop, prefix, suffix , "false");
EquipmentSpecificIndex aFalse = getIotDate(equipmentSpecificIndex, lastStop, prefix, suffix, "false");
BeanUtils.copyProperties(aFalse, equipmentSpecificIndex);
}
break;
case LAST_START:
......@@ -1562,7 +1601,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
StringUtil.isNotEmpty(e.getValue()) && e.getIotCode().equals(iotCode) && pressurePumpStart.equals(e.getEquipmentIndexKey())).sorted(Comparator.comparing(EquipmentSpecificIndex::getUpdateDate).reversed())
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(lastStart)) {
equipmentSpecificIndex = getIotDate(equipmentSpecificIndex, lastStart, prefix, suffix, "true");
EquipmentSpecificIndex aTrue = getIotDate(equipmentSpecificIndex, lastStart, prefix, suffix, "true");
BeanUtils.copyProperties(aTrue, equipmentSpecificIndex);
}
break;
case LATELY_STOP:
......@@ -1570,7 +1611,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
StringUtil.isNotEmpty(e.getValue()) && pressurePumpStart.equals(e.getEquipmentIndexKey())).sorted(Comparator.comparing(EquipmentSpecificIndex::getUpdateDate).reversed())
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(latelyStop)) {
equipmentSpecificIndex = getIotDate(equipmentSpecificIndex, latelyStop, prefix, null, "false");
EquipmentSpecificIndex aFalse = getIotDate(equipmentSpecificIndex, latelyStop, prefix, null, "false");
BeanUtils.copyProperties(aFalse, equipmentSpecificIndex);
}
break;
case LATELY_START:
......@@ -1578,7 +1621,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
StringUtil.isNotEmpty(e.getValue()) && pressurePumpStart.equals(e.getEquipmentIndexKey())).sorted(Comparator.comparing(EquipmentSpecificIndex::getUpdateDate).reversed())
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(latelyStart)) {
equipmentSpecificIndex = getIotDate(equipmentSpecificIndex, latelyStart, prefix, null, "true");
EquipmentSpecificIndex aTrue = getIotDate(equipmentSpecificIndex, latelyStart, prefix, null, "true");
BeanUtils.copyProperties(aTrue, equipmentSpecificIndex);
}
break;
case PUMP_START_TIME:
......@@ -1685,6 +1730,8 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
marqueeData.setType("漏水提醒");
marqueeData.setCreateDate(new Date());
marqueeDataMapper.insert(marqueeData);
// 稳压泵告警事件生成
equipmentSpecificAlarmLogService.pressurePumpDisposeAlarm(data.getEquipmentId(), String.format(org.apache.commons.lang3.StringUtils.substring(recordMessage, 13), pressurePumpEnum.getTips()));
}
switch (pumpMessageEnum) {
......@@ -1765,6 +1812,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
parameter.put("remoteSecurityService", remoteSecurityService);
parameter.put("systemctlFeign", systemctlFeign);
parameter.put("marqueeDataMapper", marqueeDataMapper);
parameter.put("equipmentSpecificAlarmLogService", equipmentSpecificAlarmLogService);
QuartzManager.addJob(jobName,PUMP_JOB_GROUP_NAME,triggerName,PUMP_TRIGGER_GROUP_NAME, PumpSendMessage.class,cron,parameter);
}
}
......
......@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yeejoin.equipmanage.common.entity.Car;
import com.yeejoin.equipmanage.common.entity.WlCarMileage;
import com.yeejoin.equipmanage.common.utils.CoordinateUtil;
import com.yeejoin.equipmanage.common.utils.HttpUtil;
import com.yeejoin.equipmanage.controller.Coordinate;
import com.yeejoin.equipmanage.fegin.IotFeign;
......@@ -15,7 +16,11 @@ import com.yeejoin.equipmanage.mapper.WlCarMileageMapper;
import com.yeejoin.equipmanage.service.ICarService;
import com.yeejoin.equipmanage.service.IWlCarMileageService;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.ibatis.logging.Log;
import org.apache.ibatis.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
......@@ -49,17 +54,24 @@ public class WlCarMileageServiceImpl extends ServiceImpl<WlCarMileageMapper, WlC
@Autowired
ICarService iCarService;
@Value("${mileage.parameter}")
private Double mileageParameter;
protected Log log = LogFactory.getLog(WlCarMileageServiceImpl.class);
private final String GUIDE_KEY = "813684495d9a3981dd2c7694916fe404";
private final String GUIDE_URL = "https://restapi.amap.com/v4/grasproad/driving?";
private final String GUIDE_ADDRESS_URL = "https://restapi.amap.com/v3/geocode/regeo?";
@Override
public Page<WlCarMileage> page(Page<WlCarMileage> page, WlCarMileage wlCarMileage) {
return this.baseMapper.page(page, wlCarMileage);
return this.baseMapper.page(page, wlCarMileage, mileageParameter);
}
@Override
public Integer totalMileage(String iotCode) {
public Double totalMileage(String iotCode) {
return this.baseMapper.totalMileage(iotCode);
}
......@@ -261,4 +273,132 @@ public class WlCarMileageServiceImpl extends ServiceImpl<WlCarMileageMapper, WlC
return data;
}
@Override
@Scheduled(cron = "${mileage.segmentation.cron}")
public void mileageSegmentation() {
List<WlCarMileage> list = this.baseMapper.list();
list.forEach(item -> {
Calendar calendar = Calendar.getInstance();
calendar.setTime(item.getDate());
calendar.add(Calendar.DATE, 1);
Date date = calendar.getTime();
if (!ObjectUtils.isEmpty(item.getIotCode()) && item.getIotCode().length() > 8) {
// 查询车辆上报信息
ResponseModel<List<Object>> result = iotFeign.getLiveData(item.getIotCode().substring(0, 8), item.getIotCode().substring(8),
item.getStartTime(), new Date(new Date().getTime() + 2000));
List<Object> list1 = result.getResult();
// 获取最后一个有坐标的数据
JSONObject lastObj = null;
// 过滤空坐标
List<Object> filterList = new ArrayList<Object>();
for (int i = 0; i < list1.size(); i++) {
JSONObject Obj = JSONObject.parseObject(JSONObject.toJSONString(list1.get(i)));
if (Obj.get("FireCar_Longitude") != null && Obj.get("FireCar_Latitude") != null
&& Obj.getDoubleValue("FireCar_Longitude") != 0
&& Obj.getDoubleValue("FireCar_Latitude") != 0) {
filterList.add(list1.get(i));
// 获取第一个不为空的坐标
if (lastObj == null) {
lastObj = Obj;
}
}
}
if (lastObj == null) {
lastObj = new JSONObject();
lastObj.put("FireCar_Longitude", 0.0);
lastObj.put("FireCar_Latitude", 0.0);
lastObj.put("time", 0);
lastObj.put("FireCar_Speed", 0);
}
// 当前坐标
double startLongitude = lastObj.getDoubleValue("FireCar_Longitude");
double startLatitude = lastObj.getDoubleValue("FireCar_Latitude");
// 当前速度
double v = Double.parseDouble(String.valueOf(lastObj.get("FireCar_Speed")));
int ceil = (int) Math.ceil(v);
item.setStartSpeed(ceil);
double travel = 0.0;
// 获取里程
for (int i = 0; i < filterList.size() - 1; i++) {
JSONObject start = JSONObject.parseObject(JSONObject.toJSONString(filterList.get(i)));
JSONObject end = JSONObject.parseObject(JSONObject.toJSONString(filterList.get(i + 1)));
travel += CoordinateUtil.distance(start.getDoubleValue("FireCar_Latitude"),
start.getDoubleValue("FireCar_Longitude"), end.getDoubleValue("FireCar_Latitude"),
end.getDoubleValue("FireCar_Longitude"));
}
// 查询车辆最新位置
String address = getAddress(startLongitude, startLatitude);
// 里程耗时
long takeTime = (date.getTime()) - (item.getStartTime().getTime());
// 修改0点未结束里程记录
item.setEndSpeed(ceil);
item.setEndTime(date);
item.setEndLatitude(startLatitude);
item.setEndLongitude(startLongitude);
item.setEndName(address);
item.setTravel(new BigDecimal(travel / 1000).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue());
item.setTakeTime(takeTime);
this.getBaseMapper().updateById(item);
// 从0点开启新里程
item.setStartName(address);
item.setDate(date);
item.setId(null);
item.setEndSpeed(null);
item.setEndTime(null);
item.setEndLatitude(null);
item.setEndLongitude(null);
item.setEndName(null);
item.setTravel(null);
item.setTakeTime(null);
item.setStartSpeed(ceil);
item.setStartTime(item.getDate());
item.setStartLongitude(startLongitude);
item.setStartLatitude(startLatitude);
this.baseMapper.insert(item);
}
});
}
private String getAddress(double longitude, double lantitude) {
StringBuilder api = new StringBuilder(GUIDE_ADDRESS_URL);
api.append("key=").append(GUIDE_KEY).append("&location=").append(longitude).append(",").append(lantitude)
.append("&radius=1000").append("&batch=false").append("&extensions=base").append("&roadlevel=0")
.append("&batch=false");
StringBuilder res = new StringBuilder();
BufferedReader in = null;
try {
System.out.println(api.toString());
URL url = new URL(api.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line;
while ((line = in.readLine()) != null) {
res.append(line).append("\n");
}
JSONObject object = JSONObject.parseObject(res.toString());
JSONObject regeocode = object.getJSONObject("regeocode");
String address = regeocode.getString("formatted_address");
if ("[]".equals(address)) {
address = "无效坐标";
}
res = new StringBuilder(address);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return res.toString();
}
}
......@@ -30,6 +30,7 @@ import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Page;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.scheduling.annotation.Scheduled;
......@@ -64,6 +65,9 @@ public class PlanTaskController extends AbstractBaseController {
@Autowired
private IRouteService routeService;
@Value("${params.isPush:false}")
private Boolean isZxj;
@Autowired
private RemoteSecurityService remoteSecurityService;
......@@ -349,6 +353,7 @@ public class PlanTaskController extends AbstractBaseController {
@ApiOperation(value = "定时执行任务表生成(<font color='blue'>release</font>)", notes = "定时执行任务表生成")
@RequestMapping(value = "/queryOmission", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
public CommonResponse pushCarData() {
if (Boolean.TRUE.equals(!isZxj)) {
try {
RequestAttributes reqs = RequestContextHolder.getRequestAttributes();
RequestContextHolder.setRequestAttributes(reqs, true);
......@@ -360,16 +365,20 @@ public class PlanTaskController extends AbstractBaseController {
return CommonResponseUtil.failure();
}
}
return CommonResponseUtil.success();
}
/**
* 定时任务推送巡检待办任务消息
*/
@Scheduled(cron = "${jobs.cron}")
public void taskMessage() {
if (Boolean.TRUE.equals(!isZxj)) {
RequestAttributes reqs = RequestContextHolder.getRequestAttributes();
RequestContextHolder.setRequestAttributes(reqs, true);
planTaskService.taskMessage(null);
}
}
/**
* 模拟发送巡检待办任务消息定时任务
......
......@@ -130,3 +130,8 @@ is.open.telemetering=false
# 水池液位相关信号
water.level.indexKey=FHS_FirePoolDevice_WaterLevel,FHS_LevelDetector_WaterLevel,FHS_WirelessliquidDetector_WaterLevel,CAFS_FoamTank_FoamTankLevel,CAFS_WaterTank_WaterTankLevel
# 江西电建-车辆里程过滤参数(单位KM)
mileage.parameter=0.5
# 江西电建-车辆里程跨天记录切分(每日0点执行)
mileage.segmentation.cron=0 0 0 * * ?
\ No newline at end of file
......@@ -230,4 +230,21 @@
select equipment_detail_id from wl_equipment_specific where id = #{id})
)
</select>
<select id="getMessage" resultType="com.yeejoin.equipmanage.common.entity.EquipmentIndex">
SELECT
wei.id,
wei.equipment_id as equipmentId,
wei.name_key as perfQuotaDefinitionId,
wei.emergency_level as emergencyLevel,
wei.emergency_level_describe as emergencyLevelDescribe,
wei.emergency_level_color as emergencyLevelColor,
wei.type_code as typeCode ,
wei.name as perfQuotaName
FROM
`wl_equipment_index` wei
LEFT JOIN wl_equipment_specific_index wesi ON wei.id = wesi.equipment_index_id
WHERE
wesi.equipment_specific_id = #{equipmentSpecificId}
AND wesi.equipment_index_key = #{equipmentIndexKey}
</select>
</mapper>
......@@ -172,9 +172,8 @@
wles.equipment_detail_id AS equipDetailId,
wles.code AS fireEquipmentCode,
wles.system_id AS systemId,
if(wles.code is null,wlesal.equipment_specific_name,concat(wlesal.equipment_specific_name,'(',wles.code,')')) as
fireEquipmentName,
concat(wlesal.equipment_specific_name,wlesal.equipment_specific_index_name) as alamContent,
wlesal.equipment_specific_name as fireEquipmentName,
wlesal.equipment_specific_index_name as alamContent,
if(wlesal.confirm_type is null,'未处理','已处理') handleStatus,
IF (
wlesal.clean_time IS NOT NULL,
......
......@@ -64,39 +64,39 @@
wles.biz_org_code like concat (#{param.bizOrgCode},'%')
</if>
</where>
UNION ALL
SELECT
equipment_specific_id id,
NULL org_code,
null fireEquipmentId,
NULL equipDetailId,
NULL fireEquipmentCode,
null systemId,
NULL fireEquipmentName,
NULL alamContent,
NULL handleStatus,
NULL cleanStatus,
NULL handleType,
NULL fireEquipmentIndexId,
NULL fireEquipmentSpecificIndexKey,
type fireEquipmentSpecificIndexName,
NULL buildId,
NULL imgUrl,
NULL fireEquipmentPointValue,
NULL typeCode,
NULL type,
date_format( create_date, '%Y-%m-%d %H:%i:%s' ) createDate,
NULL warehouseStructureName,
NULL equipmentName,
NAME equipmentSpecificName,
position,
id messageId,
message_type messageType,
is_read isRead
FROM
wl_marquee_data
WHERE
is_read = '0'
-- UNION ALL
-- SELECT
-- equipment_specific_id id,
-- NULL org_code,
-- null fireEquipmentId,
-- NULL equipDetailId,
-- NULL fireEquipmentCode,
-- null systemId,
-- NULL fireEquipmentName,
-- NULL alamContent,
-- NULL handleStatus,
-- NULL cleanStatus,
-- NULL handleType,
-- NULL fireEquipmentIndexId,
-- NULL fireEquipmentSpecificIndexKey,
-- type fireEquipmentSpecificIndexName,
-- NULL buildId,
-- NULL imgUrl,
-- NULL fireEquipmentPointValue,
-- NULL typeCode,
-- NULL type,
-- date_format( create_date, '%Y-%m-%d %H:%i:%s' ) createDate,
-- NULL warehouseStructureName,
-- NULL equipmentName,
-- NAME equipmentSpecificName,
-- position,
-- id messageId,
-- message_type messageType,
-- is_read isRead
-- FROM
-- wl_marquee_data
-- WHERE
-- is_read = '0'
ORDER BY createDate DESC
</select>
</mapper>
......@@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace="com.yeejoin.equipmanage.mapper.WlCarMileageMapper">
<select id="totalMileage" resultType="Integer">
<select id="totalMileage" resultType="Double">
SELECT SUM(travel) FROM wl_car_mileage WHERE iot_code = #{iotCode}
</select>
......@@ -29,6 +29,7 @@
FROM wl_car_mileage
LEFT JOIN wl_car ON wl_car.iot_code = wl_car_mileage.iot_code
<where>
wl_car_mileage.travel >= #{mileageParameter}
<if test="wlCarMileage.carId != null">
AND wl_car.id = #{wlCarMileage.carId}
</if>
......@@ -43,4 +44,14 @@
</if>
</where>
</select>
<select id="list" resultType="com.yeejoin.equipmanage.common.entity.WlCarMileage">
SELECT
*
FROM
`wl_car_mileage` wcm
WHERE
wcm.date = DATE_FORMAT( NOW( ), '%Y-%m-%d' )
AND wcm.start_time IS NOT NULL
AND wcm.end_time IS NULL
</select>
</mapper>
......@@ -96,3 +96,6 @@ file.url=http://172.16.11.201:9000/
##代码中有部分逻辑冲突需要处理 为区分机场和电力逻辑 增加开关 若为true 则为机场逻辑 为false 则为电力逻辑
logic=false
#是否为中心级系统 true-中心级系统 false-站端系统
is.zxj=true
\ 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