Commit 366e1dfe authored by chenzhao's avatar chenzhao

Merge remote-tracking branch 'origin/develop_dl' into develop_dl

parents 0e514a00 de02f098
...@@ -173,6 +173,10 @@ public class EquipmentSpecific extends BaseEntity { ...@@ -173,6 +173,10 @@ public class EquipmentSpecific extends BaseEntity {
@TableField("warranty_info") @TableField("warranty_info")
private String warrantyInfo; private String warrantyInfo;
@ApiModelProperty(value = "指标类型编码")
@TableField("type_code")
private String typeCode;
@ApiModelProperty(value = "质保周期") @ApiModelProperty(value = "质保周期")
@TableField("warranty_period") @TableField("warranty_period")
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
......
...@@ -33,12 +33,12 @@ public class UnitTransformUtil { ...@@ -33,12 +33,12 @@ public class UnitTransformUtil {
if (nowVal.compareTo(new BigDecimal(minValue)) < 0) { if (nowVal.compareTo(new BigDecimal(minValue)) < 0) {
map.put("status", "0"); map.put("status", "0");
map.put("abs", nowVal.divide(new BigDecimal(maxValue),2,BigDecimal.ROUND_HALF_UP).movePointRight(2)); map.put("abs", nowVal.divide(new BigDecimal(maxValue),2,BigDecimal.ROUND_HALF_UP).movePointRight(2));
} else if (nowVal.compareTo(new BigDecimal(maxValue)) > 0) { // 当前值大于最大值
map.put("status", "2");
map.put("abs", 100);
} else if (nowVal.compareTo(new BigDecimal(maxValue)) == 0) { } else if (nowVal.compareTo(new BigDecimal(maxValue)) == 0) {
map.put("status", "1"); map.put("status", "1");
map.put("abs", 100); map.put("abs", 100);
} else if (nowVal.compareTo(new BigDecimal(0)) == 0) {
map.put("status", "1");
map.put("abs", "--");
} else { } else {
map.put("status", "1"); map.put("status", "1");
map.put("abs", nowVal.divide(new BigDecimal(maxValue),2,BigDecimal.ROUND_HALF_UP).movePointRight(2)); map.put("abs", nowVal.divide(new BigDecimal(maxValue),2,BigDecimal.ROUND_HALF_UP).movePointRight(2));
......
...@@ -135,7 +135,7 @@ public class EquipmentIotMqttReceiveConfig { ...@@ -135,7 +135,7 @@ public class EquipmentIotMqttReceiveConfig {
list.add("+/+/perspective"); // 添加交换站事件监听 list.add("+/+/perspective"); // 添加交换站事件监听
list.add(riskMsgCenterEquipTopic); list.add(riskMsgCenterEquipTopic);
list.add(riskMsgCenterPatrolTopic); list.add(riskMsgCenterPatrolTopic);
list.add("+/+/shaoshan"); // 添加换流站韶山监听事件 list.add("+/+/eventAlarm"); // 添加换流站韶山监听事件 --- shaoshan 修改为 eventAlarm:事件告警 - 统一
String[] arr = list.toArray(new String[list.size()]); String[] arr = list.toArray(new String[list.size()]);
adapter = new MqttPahoMessageDrivenChannelAdapter(clientId + "_inbound", mqttPahoClientFactory(), arr); adapter = new MqttPahoMessageDrivenChannelAdapter(clientId + "_inbound", mqttPahoClientFactory(), arr);
adapter.setCompletionTimeout(completionTimeout); adapter.setCompletionTimeout(completionTimeout);
...@@ -161,7 +161,7 @@ public class EquipmentIotMqttReceiveConfig { ...@@ -161,7 +161,7 @@ public class EquipmentIotMqttReceiveConfig {
mqttEventReceiveService.handlerMqttIncrementMessage(topic, msg); mqttEventReceiveService.handlerMqttIncrementMessage(topic, msg);
}else if (dataType.equals("transmit") && StringUtil.isNotEmpty(msg)){ // 遥信遥测信号 }else if (dataType.equals("transmit") && StringUtil.isNotEmpty(msg)){ // 遥信遥测信号
mqttReceiveService.handlerMqttRomaMessage(topic,msg); mqttReceiveService.handlerMqttRomaMessage(topic,msg);
}else if (dataType.equals("shaoshan") && StringUtil.isNotEmpty(msg)){ // 告警信号 }else if (dataType.equals("eventAlarm") && StringUtil.isNotEmpty(msg)){ // 告警信号
mqttReceiveService.handlerMqttStationMessage(topic,msg); mqttReceiveService.handlerMqttStationMessage(topic,msg);
} }
} }
......
package com.yeejoin.equipmanage.controller; package com.yeejoin.equipmanage.controller;
import com.yeejoin.equipmanage.common.entity.SignalClassify;
import com.yeejoin.equipmanage.common.vo.EquipCategoryVo; import com.yeejoin.equipmanage.common.vo.EquipCategoryVo;
import com.yeejoin.equipmanage.service.IStatisticsService; import com.yeejoin.equipmanage.service.IStatisticsService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -10,6 +11,8 @@ import org.springframework.http.MediaType; ...@@ -10,6 +11,8 @@ import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.List; import java.util.List;
...@@ -95,4 +98,11 @@ public class StatisticsController { ...@@ -95,4 +98,11 @@ public class StatisticsController {
public List<EquipCategoryVo> equipCategoryVoList(@PathVariable String systemCode) { public List<EquipCategoryVo> equipCategoryVoList(@PathVariable String systemCode) {
return iStatisticsService.equipCategoryVoList(systemCode); return iStatisticsService.equipCategoryVoList(systemCode);
} }
@RequestMapping(value = "/test", method = RequestMethod.GET)
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "根据id查询", notes = "根据id查询")
public ResponseModel<String> getStr() {
return ResponseHelper.buildResponse(iStatisticsService.getStr());
}
} }
package com.yeejoin.equipmanage.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @author keyong
* @title: ReportAlarmDto
* <pre>
* @description: TODO
* </pre>
* @date 2024/5/11 9:56
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ReportAlarmDto {
private String equipmentSpecificId;
private String specificName;
private String location;
private String equipmentSpecificIndexName;
private String alamContent;
private BigDecimal alarmNum;
private String createDate;
private String updateDate;
private String type;
}
...@@ -11,6 +11,7 @@ import com.yeejoin.equipmanage.common.entity.dto.EquipSpecificAlarmDTO; ...@@ -11,6 +11,7 @@ import com.yeejoin.equipmanage.common.entity.dto.EquipSpecificAlarmDTO;
import com.yeejoin.equipmanage.common.entity.vo.EquipmentIotAlarmVO; import com.yeejoin.equipmanage.common.entity.vo.EquipmentIotAlarmVO;
import com.yeejoin.equipmanage.common.utils.CommonPageInfoParam; import com.yeejoin.equipmanage.common.utils.CommonPageInfoParam;
import com.yeejoin.equipmanage.common.vo.EquipAlarmLineVo; import com.yeejoin.equipmanage.common.vo.EquipAlarmLineVo;
import com.yeejoin.equipmanage.dto.ReportAlarmDto;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -235,5 +236,5 @@ public interface EquipmentSpecificAlarmMapper extends BaseMapper<EquipmentSpecif ...@@ -235,5 +236,5 @@ public interface EquipmentSpecificAlarmMapper extends BaseMapper<EquipmentSpecif
void clearAlarmData(@Param("equipmentSpecificId") Long equipmentSpecificId); void clearAlarmData(@Param("equipmentSpecificId") Long equipmentSpecificId);
List<Map<String, Object>> getAlarmDetailByDate(@Param("bizOrgCode") String bizOrgCode, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("sysId") Long sysId); List<ReportAlarmDto> getAlarmDetailByDate(@Param("bizOrgCode") String bizOrgCode, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("sysId") Long sysId);
} }
...@@ -22,5 +22,6 @@ public interface IStatisticsService { ...@@ -22,5 +22,6 @@ public interface IStatisticsService {
*/ */
List<EquipCategoryVo> equipCategoryVoList(String systemCode); List<EquipCategoryVo> equipCategoryVoList(String systemCode);
String getStr();
} }
...@@ -105,8 +105,8 @@ public class AnalysisReportLogServiceImpl extends ServiceImpl<AnalysisReportLogM ...@@ -105,8 +105,8 @@ public class AnalysisReportLogServiceImpl extends ServiceImpl<AnalysisReportLogM
filter(index -> index.get("code").equals(String.valueOf(f.get("typeCode")))).collect(Collectors.toList()); filter(index -> index.get("code").equals(String.valueOf(f.get("typeCode")))).collect(Collectors.toList());
if (!ObjectUtils.isEmpty(collect)) { if (!ObjectUtils.isEmpty(collect)) {
String indicator = String.valueOf(collect.get(0).get("index")); String indicator = String.valueOf(collect.get(0).get("index"));
analysisReportMonthMapper.insertSystemMonthData(new ArrayList<>(Arrays.asList(indicator.split(","))), beginDateStr, endDateStr, Long.valueOf(f.get("id").toString())); analysisReportMonthMapper.insertSystemMonthData(new ArrayList<>(), beginDateStr, endDateStr, Long.valueOf(f.get("id").toString()));
analysisReportSummaryMapper.insertSystemMonthSummaryData(new ArrayList<>(Arrays.asList(indicator.split(","))), beginDateStr, endDateStr, Long.valueOf(f.get("id").toString())); analysisReportSummaryMapper.insertSystemMonthSummaryData(new ArrayList<>(), beginDateStr, endDateStr, Long.valueOf(f.get("id").toString()));
} }
}); });
} }
...@@ -136,8 +136,8 @@ public class AnalysisReportLogServiceImpl extends ServiceImpl<AnalysisReportLogM ...@@ -136,8 +136,8 @@ public class AnalysisReportLogServiceImpl extends ServiceImpl<AnalysisReportLogM
filter(index -> index.get("code").equals(String.valueOf(f.get("typeCode")))).collect(Collectors.toList()); filter(index -> index.get("code").equals(String.valueOf(f.get("typeCode")))).collect(Collectors.toList());
if (!ObjectUtils.isEmpty(collect)) { if (!ObjectUtils.isEmpty(collect)) {
String indicator = String.valueOf(collect.get(0).get("index")); String indicator = String.valueOf(collect.get(0).get("index"));
analysisReportMonthMapper.insertSystemMonthData(new ArrayList<>(Arrays.asList(indicator.split(","))), beginDateStr, endDateStr, Long.valueOf(f.get("id").toString())); analysisReportMonthMapper.insertSystemMonthData(new ArrayList<>(), beginDateStr, endDateStr, Long.valueOf(f.get("id").toString()));
analysisReportSummaryMapper.insertSystemMonthSummaryData(new ArrayList<>(Arrays.asList(indicator.split(","))), beginDateStr, endDateStr, Long.valueOf(f.get("id").toString())); analysisReportSummaryMapper.insertSystemMonthSummaryData(new ArrayList<>(), beginDateStr, endDateStr, Long.valueOf(f.get("id").toString()));
} }
}); });
} }
......
...@@ -39,6 +39,7 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest; ...@@ -39,6 +39,7 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Service @Service
public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, EquipmentSpecificAlarm> implements IConfirmAlarmService { public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, EquipmentSpecificAlarm> implements IConfirmAlarmService {
...@@ -51,14 +52,16 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -51,14 +52,16 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
private RemoteSecurityService remoteSecurityService; private RemoteSecurityService remoteSecurityService;
static ConfirmAlarmMapper confirmAlarmMapper; static ConfirmAlarmMapper confirmAlarmMapper;
@Autowired @Autowired
public void setConfirmAlarmMapper(ConfirmAlarmMapper confirmAlarmMapper){ public void setConfirmAlarmMapper(ConfirmAlarmMapper confirmAlarmMapper) {
ConfirmAlarmServiceImpl.confirmAlarmMapper = confirmAlarmMapper; ConfirmAlarmServiceImpl.confirmAlarmMapper = confirmAlarmMapper;
} }
private static JcsFeign jcsFeign; private static JcsFeign jcsFeign;
@Autowired @Autowired
public void setJcsFeign(JcsFeign jcsFeign){ public void setJcsFeign(JcsFeign jcsFeign) {
ConfirmAlarmServiceImpl.jcsFeign = jcsFeign; ConfirmAlarmServiceImpl.jcsFeign = jcsFeign;
} }
...@@ -83,10 +86,9 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -83,10 +86,9 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
private static IEquipmentSpecificSerivce equipmentSpecificSerivce; private static IEquipmentSpecificSerivce equipmentSpecificSerivce;
@Autowired @Autowired
@Lazy @Lazy
public void setIEquipmentSpecificIndexSerivce(IEquipmentSpecificSerivce equipmentSpecificSerivce){ public void setIEquipmentSpecificIndexSerivce(IEquipmentSpecificSerivce equipmentSpecificSerivce) {
ConfirmAlarmServiceImpl.equipmentSpecificSerivce = equipmentSpecificSerivce; ConfirmAlarmServiceImpl.equipmentSpecificSerivce = equipmentSpecificSerivce;
} }
...@@ -105,9 +107,13 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -105,9 +107,13 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
@Autowired @Autowired
private SystemctlFeign systemctlFeign; private SystemctlFeign systemctlFeign;
@Autowired
private IEquipmentSpecificAlarmService equipmentSpecificAlarmService;
private static RuleConfirmAlarmService ruleConfirmAlamService; private static RuleConfirmAlarmService ruleConfirmAlamService;
@Autowired @Autowired
public void setRuleConfirmAlamService(RuleConfirmAlarmService ruleConfirmAlamService){ public void setRuleConfirmAlamService(RuleConfirmAlarmService ruleConfirmAlamService) {
ConfirmAlarmServiceImpl.ruleConfirmAlamService = ruleConfirmAlamService; ConfirmAlarmServiceImpl.ruleConfirmAlamService = ruleConfirmAlamService;
} }
...@@ -119,7 +125,7 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -119,7 +125,7 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
@Autowired @Autowired
private EquipmentSpecificAlarmMapper equipmentSpecificAlarmMapper; private EquipmentSpecificAlarmMapper equipmentSpecificAlarmMapper;
@Autowired @Autowired
private EquipmentSpecificAlarmLogMapper equipmentSpecificAlarmLogMapper; private EquipmentSpecificAlarmLogMapper equipmentSpecificAlarmLogMapper;
...@@ -127,8 +133,9 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -127,8 +133,9 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
private ISignalClassifyService signalClassifyService; private ISignalClassifyService signalClassifyService;
private static IFormInstanceService instanceService; private static IFormInstanceService instanceService;
@Autowired @Autowired
public void setInstanceService(IFormInstanceService instanceService){ public void setInstanceService(IFormInstanceService instanceService) {
ConfirmAlarmServiceImpl.instanceService = instanceService; ConfirmAlarmServiceImpl.instanceService = instanceService;
} }
...@@ -173,14 +180,14 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -173,14 +180,14 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
} }
@Override @Override
public Map<String ,Integer> videoList(List<String> list) { public Map<String, Integer> videoList(List<String> list) {
Map<String ,Integer> map=new HashMap<>(); Map<String, Integer> map = new HashMap<>();
for (String s : list) { for (String s : list) {
List<AlamVideoVO> video = videoMapper.getVideoBySpeId(Long.valueOf(s)); List<AlamVideoVO> video = videoMapper.getVideoBySpeId(Long.valueOf(s));
if(video!=null&&video.size()>0){ if (video != null && video.size() > 0) {
map.put(s,video.size()); map.put(s, video.size());
}else{ } else {
map.put(s,0); map.put(s, 0);
} }
} }
return map; return map;
...@@ -196,7 +203,6 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -196,7 +203,6 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
EquipmentSpecificAlarmLog alarmLog = equipmentSpecificAlarmLogService.getById(ent.getId()); EquipmentSpecificAlarmLog alarmLog = equipmentSpecificAlarmLogService.getById(ent.getId());
List<EquipmentSpecificAlarmLog> list = null; List<EquipmentSpecificAlarmLog> list = null;
String handleConfirm = ent.getHandleConfirm(); String handleConfirm = ent.getHandleConfirm();
int isBatch = 0;
if (!ObjectUtils.isEmpty(alarmLog)) { if (!ObjectUtils.isEmpty(alarmLog)) {
Long equipmentSpecificAlarmId = alarmLog.getEquipmentSpecificAlarmId(); Long equipmentSpecificAlarmId = alarmLog.getEquipmentSpecificAlarmId();
...@@ -204,65 +210,6 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -204,65 +210,6 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
ent.setEquipmentSpecificId(alarmLog.getEquipmentSpecificId()); ent.setEquipmentSpecificId(alarmLog.getEquipmentSpecificId());
ent.setEquipmentSpecificIndexKey(alarmLog.getEquipmentSpecificIndexKey()); ent.setEquipmentSpecificIndexKey(alarmLog.getEquipmentSpecificIndexKey());
ent.setEquipmentSpecificIndexName(alarmLog.getEquipmentSpecificIndexName()); ent.setEquipmentSpecificIndexName(alarmLog.getEquipmentSpecificIndexName());
Equipment equipment = equipmentSpecificMapper.getEquipmentBySpecificId(alarmLog.getEquipmentSpecificId());
if (!StringUtil.isNotEmpty(equipment.getCleanType())) {
// 若此装备未定义消除策略,默认设置为复位信号自动消除
equipment.setCleanType(AlarmCleanTypeEnum.ZDXC.getCode());
equipmentMapper.updateById(equipment);
}
if (StringUtil.isNotEmpty(equipment.getCleanType()) && AlarmCleanTypeEnum.QRXC.getCode().equals(equipment.getCleanType())) {
EquipmentSpecificAlarm alarm = equipmentSpecificAlarmMapper.selectById(alarmLog.getEquipmentSpecificAlarmId());
alarm.setStatus(AlarmStatusEnum.HF.getCode());
equipmentSpecificAlarmMapper.updateById(alarm);
//恢复后修改 wl_equip_qrcode_record中对应记录
LambdaQueryWrapper<EquipQrcodeRecord> wra = new LambdaQueryWrapper<>();
wra.eq(EquipQrcodeRecord::getEquipid, alarm.getEquipmentSpecificId());
wra.eq(EquipQrcodeRecord::getEquipIndex,alarm.getEquipmentSpecificIndexKey());
wra.isNull(EquipQrcodeRecord::getCleanTime);
EquipQrcodeRecord equipQrcodeRecord = equipQrcodeRecordMapper.selectOne(wra);
if (!ObjectUtils.isEmpty(equipQrcodeRecord)){
equipQrcodeRecord.setCleanTime(new Date());
equipQrcodeRecord.setCleanReason("设备确认消除");
equipQrcodeRecordMapper.updateById(equipQrcodeRecord);
}
//查询二维码事件记录表中该设备的历史数据
LambdaQueryWrapper<EquipQrcodeRecord> query = new LambdaQueryWrapper<>();
query.eq(EquipQrcodeRecord::getEquipid, alarm.getEquipmentSpecificId());
query.isNull(EquipQrcodeRecord::getCleanTime);
query.orderByDesc(EquipQrcodeRecord::getStatus);
List<EquipQrcodeRecord> equipQrcodeRecords = equipQrcodeRecordMapper.selectList(query);
if (equipQrcodeRecords.size() > 0) { //如果记录表中还存在未消除的巡检故障 则先修改为黄码
equipmentSpecificSerivce.updateEquipSpecificStatus(equipQrcodeRecords.get(0).getStatus(), String.valueOf(alarm.getEquipmentSpecificId()));
} else {
equipmentSpecificSerivce.updateEquipSpecificStatus(EquipQrcodeColorEnum.GREEN.getCode(), String.valueOf(alarm.getEquipmentSpecificId()));
}
// 警情处理确认后消除更新value 为false,否则灯还在闪
LambdaUpdateWrapper<EquipmentSpecificIndex> updateWrapper =new LambdaUpdateWrapper<EquipmentSpecificIndex>().
set(EquipmentSpecificIndex::getValue,"false").
set(EquipmentSpecificIndex::getUpdateDate, new Date()).
eq(EquipmentSpecificIndex::getEquipmentSpecificId,alarm.getEquipmentSpecificId()).
eq(EquipmentSpecificIndex::getEquipmentIndexKey,alarm.getEquipmentSpecificIndexKey());
iEquipmentSpecificIndexSerivce.update(updateWrapper);
//指标图标显示根据 EquipmentSpecific 表中的 RealtimeIotIndexValue 判断 同步修改
LambdaUpdateWrapper<EquipmentSpecific> wrapper =new LambdaUpdateWrapper<EquipmentSpecific>().
set(EquipmentSpecific::getRealtimeIotIndexValue,"false").
set(EquipmentSpecific::getRealtimeIotIndexUpdateDate,new Date()).
eq(EquipmentSpecific::getId,alarm.getEquipmentSpecificId());
equipmentSpecificSerivce.update(wrapper);
MqttReceiveServiceImpl.upAlarmLogStatus(alarmLog.getIotCode(), alarmLog.getEquipmentSpecificIndexKey(), null, equipmentSpecificAlarmLogService, true, "");
}
// 如果是批量确警,先查询,再确警,用于批量消息推送
isBatch = ent.getIsBatch();
if (isBatch == 1) {
list = equipmentSpecificAlarmLogService.getIsConfirmByAlarmId(alarmLog.getEquipmentSpecificId(), alarmLog.getEquipmentSpecificIndexKey(), "0");
}
} }
if (ent.getType() != null) { if (ent.getType() != null) {
ent.setType(ConfirmAlamEnum.getEnumByName(ent.getType()) == null ? " " : ConfirmAlamEnum.getEnumByName(ent.getType())); ent.setType(ConfirmAlamEnum.getEnumByName(ent.getType()) == null ? " " : ConfirmAlamEnum.getEnumByName(ent.getType()));
...@@ -270,7 +217,7 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -270,7 +217,7 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
ent.setUpdateDate(new Date()); ent.setUpdateDate(new Date());
ent.setConfirmDate(new Date()); ent.setConfirmDate(new Date());
int i = 0 ; // int i = 0;
ent.setConfirmTypeName(ConfirmAlamEnum.getTypeByCode(ent.getConfirmType())); ent.setConfirmTypeName(ConfirmAlamEnum.getTypeByCode(ent.getConfirmType()));
Date date = new Date(); Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
...@@ -281,91 +228,93 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -281,91 +228,93 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
} else { } else {
ent.setResolveResult(dateString + " " + userModel.getRealName() + " 进行警情确认处理。"); ent.setResolveResult(dateString + " " + userModel.getRealName() + " 进行警情确认处理。");
} }
if (ent.getIsBatch() == 0){
if (StringUtils.isNotEmpty(handleConfirm) && HandleBatchConfirmEnum.SINGLE.getCode().equalsIgnoreCase(handleConfirm)) { if (StringUtils.isEmpty(handleConfirm) || StringUtils.isNotEmpty(handleConfirm) && HandleBatchConfirmEnum.SINGLE.getCode().equalsIgnoreCase(handleConfirm)) {
QueryWrapper<EquipmentSpecificAlarmLog> wrapper = new QueryWrapper<>(); QueryWrapper<EquipmentSpecificAlarm> alarmWrapper = new QueryWrapper<>();
wrapper.eq("equipment_specific_id", ent.getEquipmentSpecificId()).isNull("confirm_date"); alarmWrapper.eq("equipment_specific_id", ent.getEquipmentSpecificId()).eq("status", 1);
List<EquipmentSpecificAlarmLog> logs = equipmentSpecificAlarmLogMapper.selectList(wrapper); List<EquipmentSpecificAlarm> alarms = equipmentSpecificAlarmMapper.selectList(alarmWrapper);
if (0 < logs.size()) { if (CollectionUtils.isNotEmpty(alarms)) {
for (EquipmentSpecificAlarmLog x : logs) { List<EquipmentSpecificAlarm> alarms1 = alarms.stream().map(x -> x.setStatus(AlarmStatusEnum.HF.getCode())).collect(Collectors.toList());
x.setConfirmType(ent.getConfirmType()); equipmentSpecificAlarmService.updateBatchById(alarms1);
x.setConfirmTypeName(ent.getConfirmTypeName());
x.setConfirmDate(new Date());
x.setConfirmUser(ent.getConfirmUser());
x.setConfirmUserName(ent.getConfirmUserName());
x.setType(ent.getType());
x.setResolveResult(ent.getResolveResult());
x.setAlarmReason(ent.getAlarmReason());
}
equipmentSpecificAlarmLogService.updateBatchById(logs);
}
} else if (StringUtils.isNotEmpty(handleConfirm) && HandleBatchConfirmEnum.ALL.getCode().equalsIgnoreCase(handleConfirm)) {
QueryWrapper<EquipmentSpecificAlarmLog> logQueryWrapper = new QueryWrapper<>();
logQueryWrapper.isNull("confirm_date");
List<EquipmentSpecificAlarmLog> logList = equipmentSpecificAlarmLogMapper.selectList(logQueryWrapper);
if (0 < logList.size()) {
for (EquipmentSpecificAlarmLog x : logList) {
x.setConfirmType(ent.getConfirmType());
x.setConfirmTypeName(ent.getConfirmTypeName());
x.setConfirmDate(new Date());
x.setConfirmUser(ent.getConfirmUser());
x.setConfirmUserName(ent.getConfirmUserName());
x.setType(ent.getType());
x.setResolveResult(ent.getResolveResult());
x.setAlarmReason(ent.getAlarmReason());
}
equipmentSpecificAlarmLogService.updateBatchById(logList);
}
} else {
i = equipmentSpecificAlarmLogMapper.updateById(ent);
} }
} else { // 警情处理确认后消除更新value 为false,否则灯还在闪
if (StringUtils.isNotEmpty(handleConfirm) && HandleBatchConfirmEnum.SINGLE.getCode().equalsIgnoreCase(handleConfirm)) { LambdaUpdateWrapper<EquipmentSpecificIndex> updateWrapper = new LambdaUpdateWrapper<EquipmentSpecificIndex>().
QueryWrapper<EquipmentSpecificAlarmLog> wrapper = new QueryWrapper<>(); set(EquipmentSpecificIndex::getValue, "false").
wrapper.eq("equipment_specific_id", ent.getEquipmentSpecificId()).isNull("confirm_date"); set(EquipmentSpecificIndex::getUpdateDate, new Date()).
List<EquipmentSpecificAlarmLog> logs = equipmentSpecificAlarmLogMapper.selectList(wrapper); eq(EquipmentSpecificIndex::getEquipmentSpecificId, ent.getEquipmentSpecificId()).
if (0 < logs.size()) { eq(EquipmentSpecificIndex::getEquipmentIndexKey, ent.getEquipmentSpecificIndexKey());
for (EquipmentSpecificAlarmLog x : logs) { iEquipmentSpecificIndexSerivce.update(updateWrapper);
x.setConfirmType(ent.getConfirmType()); //指标图标显示根据 EquipmentSpecific 表中的 RealtimeIotIndexValue 判断 同步修改
x.setConfirmTypeName(ent.getConfirmTypeName()); LambdaUpdateWrapper<EquipmentSpecific> speWrapper = new LambdaUpdateWrapper<EquipmentSpecific>().
x.setConfirmDate(new Date()); set(EquipmentSpecific::getRealtimeIotIndexValue, "false").
x.setConfirmUser(ent.getConfirmUser()); set(EquipmentSpecific::getRealtimeIotIndexUpdateDate, new Date()).
x.setConfirmUserName(ent.getConfirmUserName()); eq(EquipmentSpecific::getId, ent.getEquipmentSpecificId());
x.setType(ent.getType()); equipmentSpecificSerivce.update(speWrapper);
x.setResolveResult(ent.getResolveResult());
x.setAlarmReason(ent.getAlarmReason()); QueryWrapper<EquipmentSpecificAlarmLog> logWrapper = new QueryWrapper<>();
} logWrapper.eq("equipment_specific_id", ent.getEquipmentSpecificId()).isNull("confirm_date");
equipmentSpecificAlarmLogService.updateBatchById(logs); list = equipmentSpecificAlarmLogMapper.selectList(logWrapper);
if (0 < list.size()) {
for (EquipmentSpecificAlarmLog x : list) {
x.setConfirmType(ent.getConfirmType());
x.setConfirmTypeName(ent.getConfirmTypeName());
x.setConfirmDate(new Date());
x.setConfirmUser(ent.getConfirmUser());
x.setConfirmUserName(ent.getConfirmUserName());
x.setType(ent.getType());
x.setResolveResult(ent.getResolveResult());
x.setDefectBatchId(ent.getDefectBatchId());
x.setAlarmReason(ent.getAlarmReason());
x.setCleanTime(date);
} }
} else if (StringUtils.isNotEmpty(handleConfirm) && HandleBatchConfirmEnum.ALL.getCode().equalsIgnoreCase(handleConfirm)) { equipmentSpecificAlarmLogService.updateBatchById(list);
QueryWrapper<EquipmentSpecificAlarmLog> logQueryWrapper = new QueryWrapper<>(); }
logQueryWrapper.isNull("confirm_date"); } else if (StringUtils.isNotEmpty(handleConfirm) && HandleBatchConfirmEnum.ALL.getCode().equalsIgnoreCase(handleConfirm)) {
List<EquipmentSpecificAlarmLog> logList = equipmentSpecificAlarmLogMapper.selectList(logQueryWrapper); QueryWrapper<EquipmentSpecificAlarm> alarmWrapper = new QueryWrapper<>();
if (0 < logList.size()) { alarmWrapper.eq("equipment_specific_id", ent.getEquipmentSpecificId()).eq("status", 1);
for (EquipmentSpecificAlarmLog x : logList) { List<EquipmentSpecificAlarm> alarms = equipmentSpecificAlarmMapper.selectList(alarmWrapper);
x.setConfirmType(ent.getConfirmType()); if (CollectionUtils.isNotEmpty(alarms)) {
x.setConfirmTypeName(ent.getConfirmTypeName()); List<EquipmentSpecificAlarm> alarms1 = alarms.stream().map(x -> x.setStatus(AlarmStatusEnum.HF.getCode())).collect(Collectors.toList());
x.setConfirmDate(new Date()); equipmentSpecificAlarmService.updateBatchById(alarms1);
x.setConfirmUser(ent.getConfirmUser()); }
x.setConfirmUserName(ent.getConfirmUserName()); // 警情处理确认后消除更新value 为false,否则灯还在闪
x.setType(ent.getType()); LambdaUpdateWrapper<EquipmentSpecificIndex> updateWrapper = new LambdaUpdateWrapper<EquipmentSpecificIndex>().
x.setResolveResult(ent.getResolveResult()); set(EquipmentSpecificIndex::getValue, "false").
x.setAlarmReason(ent.getAlarmReason()); set(EquipmentSpecificIndex::getUpdateDate, new Date()).
} eq(EquipmentSpecificIndex::getEquipmentSpecificId, ent.getEquipmentSpecificId()).
equipmentSpecificAlarmLogService.updateBatchById(logList); eq(EquipmentSpecificIndex::getEquipmentIndexKey, ent.getEquipmentSpecificIndexKey());
iEquipmentSpecificIndexSerivce.update(updateWrapper);
//指标图标显示根据 EquipmentSpecific 表中的 RealtimeIotIndexValue 判断 同步修改
LambdaUpdateWrapper<EquipmentSpecific> speWrapper = new LambdaUpdateWrapper<EquipmentSpecific>().
set(EquipmentSpecific::getRealtimeIotIndexValue, "false").
set(EquipmentSpecific::getRealtimeIotIndexUpdateDate, new Date()).
eq(EquipmentSpecific::getId, ent.getEquipmentSpecificId());
equipmentSpecificSerivce.update(speWrapper);
QueryWrapper<EquipmentSpecificAlarmLog> logQueryWrapper = new QueryWrapper<>();
logQueryWrapper.isNull("confirm_date");
list = equipmentSpecificAlarmLogMapper.selectList(logQueryWrapper);
if (0 < list.size()) {
for (EquipmentSpecificAlarmLog x : list) {
x.setConfirmType(ent.getConfirmType());
x.setConfirmTypeName(ent.getConfirmTypeName());
x.setConfirmDate(new Date());
x.setConfirmUser(ent.getConfirmUser());
x.setConfirmUserName(ent.getConfirmUserName());
x.setDefectBatchId(ent.getDefectBatchId());
x.setType(ent.getType());
x.setResolveResult(ent.getResolveResult());
x.setAlarmReason(ent.getAlarmReason());
x.setCleanTime(date);
} }
} else { equipmentSpecificAlarmLogService.updateBatchById(list);
LambdaUpdateWrapper<EquipmentSpecificAlarmLog> updateWrapper = new LambdaUpdateWrapper<EquipmentSpecificAlarmLog>().
eq(EquipmentSpecificAlarmLog::getEquipmentSpecificId, ent.getEquipmentSpecificId()).
eq(EquipmentSpecificAlarmLog::getEquipmentSpecificIndexKey, ent.getEquipmentSpecificIndexKey())
.isNull(EquipmentSpecificAlarmLog::getConfirmDate);
i = equipmentSpecificAlarmLogMapper.update(ent, updateWrapper);
} }
} }
//int i = confirmAlarmMapper.confirmAlam(ent); //int i = confirmAlarmMapper.confirmAlam(ent);
if (i > 0) { // if (i > 0) {
if (jcsSwitch && AlarmTypeEnum.HZGJ.getCode().equals(ent.getConfirmType())) { if (jcsSwitch && AlarmTypeEnum.HZGJ.getCode().equals(ent.getConfirmType())) {
// 确警消息发送 // 确警消息发送
if (StringUtils.isNotBlank(userId)) { if (StringUtils.isNotBlank(userId)) {
...@@ -382,10 +331,11 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -382,10 +331,11 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
}).start(); }).start();
} }
} }
if (isBatch == 1 && CollectionUtils.isNotEmpty(list)) { // if (isBatch == 1 && CollectionUtils.isNotEmpty(list)) {
list.stream().forEach(x ->{ if (CollectionUtils.isNotEmpty(list)) {
list.stream().forEach(x -> {
webMqttHandler.publish(TopicEnum.EQYQR.getTopic(), JSON.parseObject(JSON.toJSONString(x), HashMap.class)); webMqttHandler.publish(TopicEnum.EQYQR.getTopic(), JSON.parseObject(JSON.toJSONString(x), HashMap.class));
x.setAlarmReason(ent.getAlarmReason()); // x.setAlarmReason(ent.getAlarmReason());
// syncConfirmAlarmMsgToSystemctl(x); // syncConfirmAlarmMsgToSystemctl(x);
}); });
} else { } else {
...@@ -394,7 +344,7 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -394,7 +344,7 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
// syncConfirmAlarmMsgToSystemctl(ent); // syncConfirmAlarmMsgToSystemctl(ent);
} }
// syncDataService.syncCreatedSendAlarmReport(ent); // syncDataService.syncCreatedSendAlarmReport(ent);
} // }
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override @Override
public void afterCommit() { public void afterCommit() {
...@@ -427,7 +377,7 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -427,7 +377,7 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
DateUtils.date2LongStr(equipmentSpecificAlarmLog.getCreateDate())); DateUtils.date2LongStr(equipmentSpecificAlarmLog.getCreateDate()));
model.setBody(body); model.setBody(body);
model.setMsgType("iotMonitor"); model.setMsgType("iotMonitor");
if (isSendApp){ if (isSendApp) {
model.setIsSendApp(true); model.setIsSendApp(true);
model.setTerminal("APP/WEB"); model.setTerminal("APP/WEB");
} else { } else {
...@@ -536,73 +486,73 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -536,73 +486,73 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
//查询当前建筑是否是 最顶级建筑 //查询当前建筑是否是 最顶级建筑
public static List<FormInstance> selectBuildingById(List<FormInstance> formInstances){ public static List<FormInstance> selectBuildingById(List<FormInstance> formInstances) {
if (formInstances.get(0).getGroupType().equals("building")){ if (formInstances.get(0).getGroupType().equals("building")) {
return formInstances; return formInstances;
} }
String parentId = null; String parentId = null;
for (FormInstance formInstance : formInstances) { for (FormInstance formInstance : formInstances) {
if (formInstance.getFieldName().equals("parentId")){ if (formInstance.getFieldName().equals("parentId")) {
parentId =formInstance.getFieldValue(); parentId = formInstance.getFieldValue();
} }
} }
LambdaQueryWrapper<FormInstance> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<FormInstance> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(FormInstance::getInstanceId,parentId); wrapper.eq(FormInstance::getInstanceId, parentId);
formInstances = instanceService.getBaseMapper().selectList(wrapper); formInstances = instanceService.getBaseMapper().selectList(wrapper);
return selectBuildingById(formInstances); return selectBuildingById(formInstances);
} }
public static void sendIotSystemAlarm(EquipmentSpecificAlarmLog ent, String userId, String appKey, String product, String token){ public static void sendIotSystemAlarm(EquipmentSpecificAlarmLog ent, String userId, String appKey, String product, String token) {
// Token serverToken = remoteSecurityService.getServerToken(); // Token serverToken = remoteSecurityService.getServerToken();
IotSystemAlarmRo confirmAlamVo = new IotSystemAlarmRo(); IotSystemAlarmRo confirmAlamVo = new IotSystemAlarmRo();
confirmAlamVo.setId(ent.getId()); confirmAlamVo.setId(ent.getId());
ent = confirmAlarmMapper.getDetailsById(String.valueOf(ent.getId()), null); ent = confirmAlarmMapper.getDetailsById(String.valueOf(ent.getId()), null);
EquipmentSpecific equipmentSpecific = equipmentSpecificSerivce.getById(ent.getEquipmentSpecificId()); EquipmentSpecific equipmentSpecific = equipmentSpecificSerivce.getById(ent.getEquipmentSpecificId());
List<FormInstance> formInstances = new ArrayList<>(); List<FormInstance> formInstances = new ArrayList<>();
//现在需要返回设备的所在建筑及经纬度 查询当前设备所在建筑 //现在需要返回设备的所在建筑及经纬度 查询当前设备所在建筑
if(!ValidationUtil.isEmpty(equipmentSpecific.getWarehouseStructureId())){ if (!ValidationUtil.isEmpty(equipmentSpecific.getWarehouseStructureId())) {
LambdaQueryWrapper<FormInstance> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<FormInstance> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(FormInstance::getInstanceId,equipmentSpecific.getWarehouseStructureId()); wrapper.eq(FormInstance::getInstanceId, equipmentSpecific.getWarehouseStructureId());
formInstances = instanceService.getBaseMapper().selectList(wrapper); formInstances = instanceService.getBaseMapper().selectList(wrapper);
} }
//判断所在建筑是否是顶级建筑 房间及楼层是没有经纬度的 向上查询 //判断所在建筑是否是顶级建筑 房间及楼层是没有经纬度的 向上查询
if (!ValidationUtil.isEmpty(formInstances)){ if (!ValidationUtil.isEmpty(formInstances)) {
formInstances = selectBuildingById(formInstances); formInstances = selectBuildingById(formInstances);
} }
String address = null ; String address = null;
String latitude= null ; String latitude = null;
String longitude= null ; String longitude = null;
if (!ValidationUtil.isEmpty(formInstances)){ if (!ValidationUtil.isEmpty(formInstances)) {
for (FormInstance formInstance : formInstances) { for (FormInstance formInstance : formInstances) {
if (formInstance.getFieldName().equals("address")){ if (formInstance.getFieldName().equals("address")) {
address =formInstance.getFieldValue(); address = formInstance.getFieldValue();
if (address.contains("@")){ if (address.contains("@")) {
String[] split = address.split("@"); String[] split = address.split("@");
address = split[0]; address = split[0];
} }
} }
if (formInstance.getFieldName().equals("latitude")){ if (formInstance.getFieldName().equals("latitude")) {
latitude =formInstance.getFieldValue(); latitude = formInstance.getFieldValue();
} }
if (formInstance.getFieldName().equals("longitude")){ if (formInstance.getFieldName().equals("longitude")) {
longitude =formInstance.getFieldValue(); longitude = formInstance.getFieldValue();
} }
} }
} }
if (!ValidationUtil.isEmpty(equipmentSpecific.getAgencyId())){ if (!ValidationUtil.isEmpty(equipmentSpecific.getAgencyId())) {
// 机场单位 // 机场单位
JSONObject unitMap = jcsFeign.getUnitById(appKey, product, token, equipmentSpecific.getAgencyId()).getResult(); JSONObject unitMap = jcsFeign.getUnitById(appKey, product, token, equipmentSpecific.getAgencyId()).getResult();
JSONObject jsonObject = unitMap.getJSONObject("map"); JSONObject jsonObject = unitMap.getJSONObject("map");
confirmAlamVo.setUnitInvolvedId(equipmentSpecific.getAgencyId()); confirmAlamVo.setUnitInvolvedId(equipmentSpecific.getAgencyId());
confirmAlamVo.setUnitInvolvedName(unitMap.getString("bizOrgName")); confirmAlamVo.setUnitInvolvedName(unitMap.getString("bizOrgName"));
confirmAlamVo.setAddress(address == null ? jsonObject.getString("companyLocation"):address); confirmAlamVo.setAddress(address == null ? jsonObject.getString("companyLocation") : address);
confirmAlamVo.setLongitude(longitude== null?jsonObject.getDouble("longitude"): Double.valueOf(longitude)); confirmAlamVo.setLongitude(longitude == null ? jsonObject.getDouble("longitude") : Double.valueOf(longitude));
confirmAlamVo.setLatitude(latitude == null?jsonObject.getDouble("latitude"):Double.valueOf(latitude)); confirmAlamVo.setLatitude(latitude == null ? jsonObject.getDouble("latitude") : Double.valueOf(latitude));
} }
try { try {
// 机场人员 // 机场人员
...@@ -616,10 +566,10 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -616,10 +566,10 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
Map<String, Double> equipLocationInfo = equipmentSpecificSerivce.getEquipLocationInfo(ent.getEquipmentSpecificId()); Map<String, Double> equipLocationInfo = equipmentSpecificSerivce.getEquipLocationInfo(ent.getEquipmentSpecificId());
if (!ObjectUtils.isEmpty(equipLocationInfo)) { if (!ObjectUtils.isEmpty(equipLocationInfo)) {
if (equipLocationInfo.containsKey("longitude")){ if (equipLocationInfo.containsKey("longitude")) {
confirmAlamVo.setFloorLongitude(equipLocationInfo.get("longitude")); confirmAlamVo.setFloorLongitude(equipLocationInfo.get("longitude"));
} }
if (equipLocationInfo.containsKey("latitude")){ if (equipLocationInfo.containsKey("latitude")) {
confirmAlamVo.setFloorLatitude(equipLocationInfo.get("latitude")); confirmAlamVo.setFloorLatitude(equipLocationInfo.get("latitude"));
} }
} }
...@@ -630,7 +580,7 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ ...@@ -630,7 +580,7 @@ public class ConfirmAlarmServiceImpl extends ServiceImpl<ConfirmAlarmMapper, Equ
} }
} }
private Double getVal(String value){ private Double getVal(String value) {
return ValidationUtil.isEmpty(value) ? null : Double.parseDouble(value); return ValidationUtil.isEmpty(value) ? null : Double.parseDouble(value);
} }
} }
...@@ -37,8 +37,6 @@ import com.yeejoin.equipmanage.mapper.*; ...@@ -37,8 +37,6 @@ import com.yeejoin.equipmanage.mapper.*;
import com.yeejoin.equipmanage.remote.RemoteSecurityService; import com.yeejoin.equipmanage.remote.RemoteSecurityService;
import com.yeejoin.equipmanage.service.*; import com.yeejoin.equipmanage.service.*;
import com.yeejoin.equipmanage.utils.RelationRedisUtil; import com.yeejoin.equipmanage.utils.RelationRedisUtil;
import liquibase.pro.packaged.J;
import liquibase.pro.packaged.S;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
...@@ -1726,6 +1724,7 @@ public class EquipmentSpecificSerivceImpl extends ServiceImpl<EquipmentSpecificM ...@@ -1726,6 +1724,7 @@ public class EquipmentSpecificSerivceImpl extends ServiceImpl<EquipmentSpecificM
es.setRealtimeIotIndexId(index.getEquipmentIndexId()); es.setRealtimeIotIndexId(index.getEquipmentIndexId());
es.setRealtimeIotIndexUpdateDate(index.getUpdateDate()); es.setRealtimeIotIndexUpdateDate(index.getUpdateDate());
es.setValueLabel(index.getValueLabel()); es.setValueLabel(index.getValueLabel());
es.setTypeCode(index.getTypeCode());
equipmentSpecificMapper.updateById(es); equipmentSpecificMapper.updateById(es);
} }
} }
......
...@@ -30,6 +30,7 @@ import com.yeejoin.equipmanage.common.enums.*; ...@@ -30,6 +30,7 @@ import com.yeejoin.equipmanage.common.enums.*;
import com.yeejoin.equipmanage.common.utils.*; import com.yeejoin.equipmanage.common.utils.*;
import com.yeejoin.equipmanage.common.vo.*; import com.yeejoin.equipmanage.common.vo.*;
import com.yeejoin.equipmanage.controller.EquipmentDetailController; import com.yeejoin.equipmanage.controller.EquipmentDetailController;
import com.yeejoin.equipmanage.dto.ReportAlarmDto;
import com.yeejoin.equipmanage.fegin.JcsFeign; import com.yeejoin.equipmanage.fegin.JcsFeign;
import com.yeejoin.equipmanage.mapper.*; import com.yeejoin.equipmanage.mapper.*;
import com.yeejoin.equipmanage.remote.RemoteSecurityService; import com.yeejoin.equipmanage.remote.RemoteSecurityService;
...@@ -64,6 +65,7 @@ import java.nio.charset.StandardCharsets; ...@@ -64,6 +65,7 @@ import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
import static java.lang.String.valueOf; import static java.lang.String.valueOf;
...@@ -1639,7 +1641,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -1639,7 +1641,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
// 系统循环数据填充 // 系统循环数据填充
ArrayList<Map<String, Object>> systemList = new ArrayList<>(); ArrayList<Map<String, Object>> systemList = new ArrayList<>();
List<Map<String, Object>> attachAlarmList = new ArrayList<>(); List<ReportAlarmDto> attachAlarmList = new ArrayList<>();
if (!CollectionUtils.isEmpty(system)) { if (!CollectionUtils.isEmpty(system)) {
// 换流站信息 // 换流站信息
if (!ObjectUtils.isEmpty(system.get(0).get("stationName"))) { if (!ObjectUtils.isEmpty(system.get(0).get("stationName"))) {
...@@ -1659,7 +1661,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -1659,7 +1661,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
String startTime = StringUtil.isNotEmpty(startDate) ? org.apache.commons.lang3.StringUtils.trimToNull(startDate).substring(0, 10) + " 00:00:00" : null; String startTime = StringUtil.isNotEmpty(startDate) ? org.apache.commons.lang3.StringUtils.trimToNull(startDate).substring(0, 10) + " 00:00:00" : null;
String endTime = StringUtil.isNotEmpty(endDate) ? org.apache.commons.lang3.StringUtils.trimToNull(endDate).substring(0, 10) + " 23:59:59" : null; String endTime = StringUtil.isNotEmpty(endDate) ? org.apache.commons.lang3.StringUtils.trimToNull(endDate).substring(0, 10) + " 23:59:59" : null;
// 附件告警数据 // 附件告警数据
List<Map<String, Object>> sysAlarmList = equipmentSpecificAlarmMapper.getAlarmDetailByDate(bizOrgCode, startTime, endTime, Long.valueOf(String.valueOf(sys.get("id")))); List<ReportAlarmDto> sysAlarmList = equipmentSpecificAlarmMapper.getAlarmDetailByDate(bizOrgCode, startTime, endTime, Long.valueOf(String.valueOf(sys.get("id"))));
attachAlarmList.addAll(sysAlarmList); attachAlarmList.addAll(sysAlarmList);
// 系统名称 // 系统名称
...@@ -1694,24 +1696,24 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -1694,24 +1696,24 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
alarmMap.put("alarmEquipPercent", ObjectUtils.isEmpty(alarm.get("alarmEquipPercent")) ? "" : String.valueOf(alarm.get("alarmEquipPercent"))); alarmMap.put("alarmEquipPercent", ObjectUtils.isEmpty(alarm.get("alarmEquipPercent")) ? "" : String.valueOf(alarm.get("alarmEquipPercent")));
// 信息总数 // 信息总数
alarmMap.put("total_info_num", ObjectUtils.isEmpty(alarm.get("total_info_num")) ? "" : String.valueOf(alarm.get("total_info_num"))); alarmMap.put("total_info_num", ObjectUtils.isEmpty(alarm.get("total_info_num")) ? "" : String.valueOf(alarm.get("total_info_num")));
if (Integer.parseInt(alarmMap.get("total_info_num").toString()) == 0) { // if (Integer.parseInt(alarmMap.get("total_info_num").toString()) == 0) {
continue; // continue;
} // }
maps.add(alarmMap); maps.add(alarmMap);
} }
} else { } else {
HashMap<String, Object> alarmMap = new HashMap<>(); HashMap<String, Object> alarmMap = new HashMap<>();
alarmMap.put("equipment_name", ""); alarmMap.put("equipment_name", "");
alarmMap.put("num", ""); alarmMap.put("num", "");
alarmMap.put("normalEquipNum", ""); alarmMap.put("normalEquipNum", "");
alarmMap.put("normalEquipPercent", ""); alarmMap.put("normalEquipPercent", "");
alarmMap.put("fault_equip_num", ""); alarmMap.put("fault_equip_num", "");
alarmMap.put("alarm_info_num", ""); alarmMap.put("alarm_info_num", "");
alarmMap.put("faultEquipPercent", ""); alarmMap.put("faultEquipPercent", "");
alarmMap.put("alarm_equip_num", ""); alarmMap.put("alarm_equip_num", "");
alarmMap.put("alarmEquipPercent", ""); alarmMap.put("alarmEquipPercent", "");
alarmMap.put("total_info_num", ""); alarmMap.put("total_info_num", "");
maps.add(alarmMap); maps.add(alarmMap);
} }
systemData.put("list", maps); systemData.put("list", maps);
...@@ -1719,7 +1721,6 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -1719,7 +1721,6 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
Map<String, Object> summarize = fireFightingSystemMapper.selectMonthSummarize(startDate.substring(0, 7), String.valueOf(sys.get("id"))); Map<String, Object> summarize = fireFightingSystemMapper.selectMonthSummarize(startDate.substring(0, 7), String.valueOf(sys.get("id")));
if (!ObjectUtils.isEmpty(summarize)) { if (!ObjectUtils.isEmpty(summarize)) {
systemData.put("summarize", ObjectUtils.isEmpty(summarize.get("summary_info")) ? "" : String.valueOf(summarize.get("summary_info"))); systemData.put("summarize", ObjectUtils.isEmpty(summarize.get("summary_info")) ? "" : String.valueOf(summarize.get("summary_info")));
} else { } else {
systemData.put("summarize", ""); systemData.put("summarize", "");
} }
...@@ -1728,10 +1729,15 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -1728,10 +1729,15 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
String[] split = indicator.split(","); String[] split = indicator.split(",");
List<String> indicatorList = Arrays.asList(split); List<String> indicatorList = Arrays.asList(split);
List<Map<String, Object>> pieChartList = fireFightingSystemMapper.selectMonthPieChart(String.valueOf(sys.get("code")), startDate, endDate); List<Map<String, Object>> pieChartList = fireFightingSystemMapper.selectMonthPieChart(String.valueOf(sys.get("code")), startDate, endDate);
List<Map<String, Object>> pieChartListTwo = fireFightingSystemMapper.selectMonthPieChartTwo(String.valueOf(sys.get("code")), startDate, endDate, indicatorList); List<Map<String, Object>> pieChartListTwo = fireFightingSystemMapper.selectMonthPieChartTwo(String.valueOf(sys.get("code")), startDate, endDate, new ArrayList<>());
// List<Map<String, Object>> selectMonthPolyline = fireFightingSystemMapper.selectMonthPolyline(String.valueOf(sys.get("code")), startDate, endDate, new ArrayList<>());
List<Map<String, Object>> selectMonthPolyline = fireFightingSystemMapper.selectMonthPolyline(String.valueOf(sys.get("code")), startDate, endDate, indicatorList); List<Map<String, Object>> selectMonthPolyline = fireFightingSystemMapper.selectMonthPolyline(String.valueOf(sys.get("code")), startDate, endDate, indicatorList);
log.info("===========rrrrrrrrrr,{}",JSONObject.toJSONString(pieChartList));
log.info("===========ssssssssss,{}",JSONObject.toJSONString(pieChartListTwo));
log.info("===========aaaaaaaaaa,{}",JSONObject.toJSONString(selectMonthPolyline));
String pieChart = ChartsUtils.pieChart(pieChartList, "故障设备类型占比"); String pieChart = ChartsUtils.pieChart(pieChartList, "故障设备类型占比");
systemData.put("bing1", pieChart); systemData.put("bing1", pieChart);
...@@ -1760,7 +1766,21 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -1760,7 +1766,21 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
map.put("datalist", systemList); map.put("datalist", systemList);
} }
} }
map.put("attachAlarmList", attachAlarmList); if (!CollectionUtils.isEmpty(attachAlarmList)) {
Map<String, List<ReportAlarmDto>> listMap = attachAlarmList.stream().collect(Collectors.groupingBy(ReportAlarmDto::getEquipmentSpecificId));
List<ReportAlarmDto> dtos = new ArrayList<>();
for (List<ReportAlarmDto> list : listMap.values()) {
dtos.addAll(list);
}
attachAlarmList = dtos;
}
List<ReportAlarmDto> newAttachAlarmList = new ArrayList<>();
for (ReportAlarmDto dto : attachAlarmList) {
if(!newAttachAlarmList.contains(dto)){
newAttachAlarmList.add(dto);
}
}
map.put("attachAlarmList", newAttachAlarmList);
}else { }else {
return null; return null;
} }
...@@ -1852,7 +1872,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -1852,7 +1872,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
map.put("time", startDate + "至" + endDate); map.put("time", startDate + "至" + endDate);
// 系统循环数据填充 // 系统循环数据填充
ArrayList<Map<String, Object>> dataList = new ArrayList<>(); ArrayList<Map<String, Object>> dataList = new ArrayList<>();
List<Map<String, Object>> attachAlarmList = new ArrayList<>(); List<ReportAlarmDto> attachAlarmList = new ArrayList<>();
for (Map<String, Object> system : systemList) { for (Map<String, Object> system : systemList) {
HashMap<String, Object> systemData = new HashMap<>(); HashMap<String, Object> systemData = new HashMap<>();
List<Map> collect = indicatorConfiguration.stream(). List<Map> collect = indicatorConfiguration.stream().
...@@ -1862,7 +1882,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -1862,7 +1882,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
String startTime = StringUtil.isNotEmpty(startDate) ? org.apache.commons.lang3.StringUtils.trimToNull(startDate).substring(0, 10) + " 00:00:00" : null; String startTime = StringUtil.isNotEmpty(startDate) ? org.apache.commons.lang3.StringUtils.trimToNull(startDate).substring(0, 10) + " 00:00:00" : null;
String endTime = StringUtil.isNotEmpty(endDate) ? org.apache.commons.lang3.StringUtils.trimToNull(endDate).substring(0, 10) + " 23:59:59" : null; String endTime = StringUtil.isNotEmpty(endDate) ? org.apache.commons.lang3.StringUtils.trimToNull(endDate).substring(0, 10) + " 23:59:59" : null;
// 附件告警数据 // 附件告警数据
List<Map<String, Object>> sysAlarmList = equipmentSpecificAlarmMapper.getAlarmDetailByDate(bizOrgCode, startTime, endTime, Long.valueOf(String.valueOf(system.get("id")))); List<ReportAlarmDto> sysAlarmList = equipmentSpecificAlarmMapper.getAlarmDetailByDate(bizOrgCode, startTime, endTime, Long.valueOf(String.valueOf(system.get("id"))));
attachAlarmList.addAll(sysAlarmList); attachAlarmList.addAll(sysAlarmList);
// 系统名称 // 系统名称
...@@ -1901,19 +1921,19 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -1901,19 +1921,19 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
// listItem.put("alarmEquipNum", ObjectUtils.isEmpty(weekItem.get("alarmEquipNum")) ? "" : String.valueOf(weekItem.get("alarmEquipNum"))); // listItem.put("alarmEquipNum", ObjectUtils.isEmpty(weekItem.get("alarmEquipNum")) ? "" : String.valueOf(weekItem.get("alarmEquipNum")));
// 7日告警条数 // 7日告警条数
if (!ObjectUtils.isEmpty(weekItem.get("type_code")) && !ObjectUtils.isEmpty(weekItem.get("code"))) { if (!ObjectUtils.isEmpty(weekItem.get("type_code")) && !ObjectUtils.isEmpty(weekItem.get("code"))) {
Integer integer = fireFightingSystemMapper.selectAlarms(valueOf(system.get("id")), valueOf(weekItem.get("type_code")), valueOf(weekItem.get("code")), startDate, endDate, indicatorList); Integer integer = fireFightingSystemMapper.selectAlarms(valueOf(system.get("id")), valueOf(weekItem.get("type_code")), valueOf(weekItem.get("code")), startDate, endDate, new ArrayList<>());
listItem.put("trueNum", String.valueOf(integer)); listItem.put("trueNum", String.valueOf(integer));
} else { } else {
listItem.put("trueNum", String.valueOf(0)); listItem.put("trueNum", String.valueOf(0));
} }
if (Integer.parseInt(listItem.get("trueNum").toString()) == 0) { // if (Integer.parseInt(listItem.get("trueNum").toString()) == 0) {
continue; // continue;
} // }
list.add(listItem); list.add(listItem);
} }
} else { } else {
HashMap<String, Object> listItem = new HashMap<>(); HashMap<String, Object> listItem = new HashMap<>();
listItem.put("name", ""); listItem.put("name", "");
listItem.put("num", ""); listItem.put("num", "");
listItem.put("normalNum", ""); listItem.put("normalNum", "");
listItem.put("type_name", ""); listItem.put("type_name", "");
...@@ -1926,7 +1946,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -1926,7 +1946,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
} }
// 总结 // 总结
Map<String, Object> summarize = fireFightingSystemMapper.selectWeekSummarize(valueOf(system.get("id")), startDate, endDate, indicatorList); Map<String, Object> summarize = fireFightingSystemMapper.selectWeekSummarize(valueOf(system.get("id")), startDate, endDate, new ArrayList<>());
// if (!ObjectUtils.isEmpty(summarize.get("contant"))) { // if (!ObjectUtils.isEmpty(summarize.get("contant"))) {
// systemData.put("summarize", String.valueOf(summarize.get("contant"))); // systemData.put("summarize", String.valueOf(summarize.get("contant")));
// } else { // } else {
...@@ -1970,7 +1990,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -1970,7 +1990,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
String pieChart2 = ChartsUtils.pieChart(weekEchart, "故障设备类型占比"); String pieChart2 = ChartsUtils.pieChart(weekEchart, "故障设备类型占比");
systemData.put("pictureCenter", pieChart2); systemData.put("pictureCenter", pieChart2);
List<Map<String, Object>> linesEchart = fireFightingSystemMapper.selectWeekLinesEchart(valueOf(system.get("code")), startDate, endDate, indicatorList); List<Map<String, Object>> linesEchart = fireFightingSystemMapper.selectWeekLinesEchart(valueOf(system.get("code")), startDate, endDate, new ArrayList<>());
String lines = ChartsUtils.manyLineChart(linesEchart, "报警趋势", "日期", "报警数量", "week"); String lines = ChartsUtils.manyLineChart(linesEchart, "报警趋势", "日期", "报警数量", "week");
systemData.put("lines", lines); systemData.put("lines", lines);
...@@ -1979,7 +1999,21 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -1979,7 +1999,21 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
map.put("data", dataList); map.put("data", dataList);
} }
} }
map.put("attachAlarmList", attachAlarmList); if (!CollectionUtils.isEmpty(attachAlarmList)) {
Map<String, List<ReportAlarmDto>> listMap = attachAlarmList.stream().collect(Collectors.groupingBy(ReportAlarmDto::getEquipmentSpecificId));
List<ReportAlarmDto> dtos = new ArrayList<>();
for (List<ReportAlarmDto> list : listMap.values()) {
dtos.addAll(list);
}
attachAlarmList = dtos;
}
List<ReportAlarmDto> newAttachAlarmList = new ArrayList<>();
for (ReportAlarmDto dto : attachAlarmList) {
if(!newAttachAlarmList.contains(dto)){
newAttachAlarmList.add(dto);
}
}
map.put("attachAlarmList", newAttachAlarmList);
}else { }else {
return null; return null;
} }
...@@ -1989,6 +2023,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -1989,6 +2023,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
@Override @Override
public String iotWeekReport(String bizOrgCode, String startDate, String endDate) { public String iotWeekReport(String bizOrgCode, String startDate, String endDate) {
Map<String, Object> dataMap = getWeekData(bizOrgCode, startDate, endDate); Map<String, Object> dataMap = getWeekData(bizOrgCode, startDate, endDate);
log.info("===========ddddddd,{}",JSONObject.toJSONString(dataMap));
if (dataMap == null) { if (dataMap == null) {
return null; return null;
} }
...@@ -2057,7 +2092,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -2057,7 +2092,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
// 系统循环数据填充 // 系统循环数据填充
ArrayList<Map<String, Object>> dataList = new ArrayList<>(); ArrayList<Map<String, Object>> dataList = new ArrayList<>();
List<Map<String, Object>> attachAlarmList = new ArrayList<>(); List<ReportAlarmDto> attachAlarmList = new ArrayList<>();
for (Map<String, Object> system : systemList) { for (Map<String, Object> system : systemList) {
HashMap<String, Object> systemData = new HashMap<>(); HashMap<String, Object> systemData = new HashMap<>();
List<Map> collect = indicatorConfiguration.stream(). List<Map> collect = indicatorConfiguration.stream().
...@@ -2067,7 +2102,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -2067,7 +2102,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
String startTime = StringUtil.isNotEmpty(startDate) ? org.apache.commons.lang3.StringUtils.trimToNull(startDate).substring(0, 10) + " 00:00:00" : null; String startTime = StringUtil.isNotEmpty(startDate) ? org.apache.commons.lang3.StringUtils.trimToNull(startDate).substring(0, 10) + " 00:00:00" : null;
String endTime = StringUtil.isNotEmpty(endDate) ? org.apache.commons.lang3.StringUtils.trimToNull(endDate).substring(0, 10) + " 23:59:59" : null; String endTime = StringUtil.isNotEmpty(endDate) ? org.apache.commons.lang3.StringUtils.trimToNull(endDate).substring(0, 10) + " 23:59:59" : null;
// 附件告警数据 // 附件告警数据
List<Map<String, Object>> sysAlarmList = equipmentSpecificAlarmMapper.getAlarmDetailByDate(bizOrgCode, startTime, endTime, Long.valueOf(String.valueOf(system.get("id")))); List<ReportAlarmDto> sysAlarmList = equipmentSpecificAlarmMapper.getAlarmDetailByDate(bizOrgCode, startTime, endTime, Long.valueOf(String.valueOf(system.get("id"))));
attachAlarmList.addAll(sysAlarmList); attachAlarmList.addAll(sysAlarmList);
// 系统名称 // 系统名称
...@@ -2101,15 +2136,18 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -2101,15 +2136,18 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
// 日告警设备数 // 日告警设备数
listItem.put("alarmEquipNum", ObjectUtils.isEmpty(weekItem.get("alarmEquipNum")) ? "" : String.valueOf(weekItem.get("alarmEquipNum"))); listItem.put("alarmEquipNum", ObjectUtils.isEmpty(weekItem.get("alarmEquipNum")) ? "" : String.valueOf(weekItem.get("alarmEquipNum")));
// 日告警条数 // 日告警条数
log.info("==========sbco={}", weekItem.get("type_code").toString());
log.info("==========sbCC={}", weekItem.get("code").toString());
if (!ObjectUtils.isEmpty(weekItem.get("type_code")) && !ObjectUtils.isEmpty(weekItem.get("code"))) { if (!ObjectUtils.isEmpty(weekItem.get("type_code")) && !ObjectUtils.isEmpty(weekItem.get("code"))) {
Integer integer = fireFightingSystemMapper.selectAlarms(valueOf(system.get("id")), valueOf(weekItem.get("type_code")), valueOf(weekItem.get("code")), startDate, endDate, indicatorList); Integer integer = fireFightingSystemMapper.selectAlarms(valueOf(system.get("id")), valueOf(weekItem.get("type_code")), valueOf(weekItem.get("code")), startDate, endDate, new ArrayList<>());
listItem.put("trueNum", String.valueOf(integer)); listItem.put("trueNum", String.valueOf(integer));
} else { } else {
listItem.put("trueNum", String.valueOf(0)); listItem.put("trueNum", String.valueOf(0));
} }
if (Integer.parseInt(listItem.get("trueNum").toString()) == 0) { // if (Integer.parseInt(listItem.get("trueNum").toString()) == 0) {
continue; // continue;
} // }
if (!ObjectUtils.isEmpty(weekItem.get("type_code")) && String.valueOf(weekItem.get("type_code")).endsWith("Fault")){ if (!ObjectUtils.isEmpty(weekItem.get("type_code")) && String.valueOf(weekItem.get("type_code")).endsWith("Fault")){
if (!ObjectUtils.isEmpty(binMap) && !ObjectUtils.isEmpty(listItem.get("name")) && binMap.containsKey(String.valueOf(listItem.get("name")))){ if (!ObjectUtils.isEmpty(binMap) && !ObjectUtils.isEmpty(listItem.get("name")) && binMap.containsKey(String.valueOf(listItem.get("name")))){
int newValue = Integer.parseInt(String.valueOf(listItem.get("alarmEquipNum"))); int newValue = Integer.parseInt(String.valueOf(listItem.get("alarmEquipNum")));
...@@ -2132,7 +2170,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -2132,7 +2170,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
} else { } else {
HashMap<String, Object> listItem = new HashMap<>(); HashMap<String, Object> listItem = new HashMap<>();
listItem.put("name", ""); listItem.put("name", "");
listItem.put("num", ""); listItem.put("num", "");
listItem.put("normalNum", ""); listItem.put("normalNum", "");
listItem.put("type_name", ""); listItem.put("type_name", "");
...@@ -2145,7 +2183,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -2145,7 +2183,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
} }
// 总结 // 总结
Map<String, Object> summarize = fireFightingSystemMapper.selectDaySummarize(valueOf(system.get("id")), startDate, endDate, indicatorList); Map<String, Object> summarize = fireFightingSystemMapper.selectDaySummarize(valueOf(system.get("id")), startDate, endDate, new ArrayList<>());
// if (!ObjectUtils.isEmpty(summarize.get("contant"))) { // if (!ObjectUtils.isEmpty(summarize.get("contant"))) {
// systemData.put("summarize", String.valueOf(summarize.get("contant"))); // systemData.put("summarize", String.valueOf(summarize.get("contant")));
// } else { // } else {
...@@ -2157,6 +2195,8 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -2157,6 +2195,8 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
// echarts 图表 // echarts 图表
List<Map<String, Object>> mapList = fireFightingSystemMapper.selectDayEquipEchart(valueOf(system.get("code")), startDate, endDate); List<Map<String, Object>> mapList = fireFightingSystemMapper.selectDayEquipEchart(valueOf(system.get("code")), startDate, endDate);
log.info("77777777777777,{}" ,JSONObject.toJSONString(alarmMapList));
String pieChart1 = ChartsUtils.pieChart(alarmMapList, "故障设备类型占比"); String pieChart1 = ChartsUtils.pieChart(alarmMapList, "故障设备类型占比");
// List<Map<String, Object>> dayEcharts = fireFightingSystemMapper.selectDayEchart(valueOf(system.get("id")), startDate, indicatorList); // List<Map<String, Object>> dayEcharts = fireFightingSystemMapper.selectDayEchart(valueOf(system.get("id")), startDate, indicatorList);
...@@ -2185,7 +2225,21 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -2185,7 +2225,21 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
map.put("data", dataList); map.put("data", dataList);
} }
} }
map.put("attachAlarmList", attachAlarmList); if (!CollectionUtils.isEmpty(attachAlarmList)) {
Map<String, List<ReportAlarmDto>> listMap = attachAlarmList.stream().collect(Collectors.groupingBy(ReportAlarmDto::getEquipmentSpecificId));
List<ReportAlarmDto> dtos = new ArrayList<>();
for (List<ReportAlarmDto> list : listMap.values()) {
dtos.addAll(list);
}
attachAlarmList = dtos;
}
List<ReportAlarmDto> newAttachAlarmList = new ArrayList<>();
for (ReportAlarmDto dto : attachAlarmList) {
if(!newAttachAlarmList.contains(dto)){
newAttachAlarmList.add(dto);
}
}
map.put("attachAlarmList", newAttachAlarmList);
}else { }else {
return null ; return null ;
} }
...@@ -2195,7 +2249,8 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste ...@@ -2195,7 +2249,8 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
@Override @Override
public String iotDayReport(String bizOrgCode, String startDate, String endDate) { public String iotDayReport(String bizOrgCode, String startDate, String endDate) {
Map<String, Object> dataMap = getDayData(bizOrgCode, startDate, endDate); Map<String, Object> dataMap = getDayData(bizOrgCode, startDate, endDate);
if (dataMap == null) { log.info("===========ddddddd,{}",JSONObject.toJSONString(dataMap));
if (dataMap == null){
return null; return null;
} }
WordTemplateUtils instance = WordTemplateUtils.getInstance(); WordTemplateUtils instance = WordTemplateUtils.getInstance();
......
...@@ -223,7 +223,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -223,7 +223,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
public static List<EquipmentSpecificAlarmLog> upAlarmLogStatus(String iotCode, String equipmentSpecificIndexKey, public static List<EquipmentSpecificAlarmLog> upAlarmLogStatus(String iotCode, String equipmentSpecificIndexKey,
String traceId, IEquipmentSpecificAlarmLogService equipmentSpecificAlarmLogService, String traceId, IEquipmentSpecificAlarmLogService equipmentSpecificAlarmLogService,
boolean flag, String batchConfirm) { boolean flag, boolean batchConfirm, String confirmType) {
// LambdaQueryWrapper<EquipmentSpecificAlarmLog> queryWrapper = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<EquipmentSpecificAlarmLog> queryWrapper = new LambdaQueryWrapper<>();
// if (batchConfirm.equalsIgnoreCase(HandleBatchConfirmEnum.SINGLE.getCode())) { // if (batchConfirm.equalsIgnoreCase(HandleBatchConfirmEnum.SINGLE.getCode())) {
...@@ -524,8 +524,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -524,8 +524,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
indexStateList.add(createIndexStateVo(equipmentSpeIndex)); indexStateList.add(createIndexStateVo(equipmentSpeIndex));
// 添加指标报告
saveEquipmentAlarmReportDay(equipmentSpeIndex);
// 火眼数据构造告警指标逻辑 // 火眼数据构造告警指标逻辑
equipmentSpeIndex = handleTemperatureAlarm(equipmentSpeIndex, iotDatalist); equipmentSpeIndex = handleTemperatureAlarm(equipmentSpeIndex, iotDatalist);
...@@ -552,6 +551,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -552,6 +551,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
handlingAlarms(equipmentSpeIndex, alarmFlag); handlingAlarms(equipmentSpeIndex, alarmFlag);
} }
// 添加指标报告
saveEquipmentAlarmReportDay(equipmentSpeIndex, alarmFlag);
// 指标告警处理 // 指标告警处理
if (equipmentSpeIndex.getIsAlarm() != null && 1 == equipmentSpeIndex.getIsAlarm()) { if (equipmentSpeIndex.getIsAlarm() != null && 1 == equipmentSpeIndex.getIsAlarm()) {
equipmentSpecificAlarms.addAll(createIndexAlarmRecord(equipmentSpeIndex, messageBodyMap)); equipmentSpecificAlarms.addAll(createIndexAlarmRecord(equipmentSpeIndex, messageBodyMap));
...@@ -625,7 +627,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -625,7 +627,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
bool = Boolean.FALSE; bool = Boolean.FALSE;
} else { } else {
alarmLogs.addAll(upAlarmLogStatus(action.getIotCode(), action.getEquipmentSpecificIndexKey(), action.getTraceId(), alarmLogs.addAll(upAlarmLogStatus(action.getIotCode(), action.getEquipmentSpecificIndexKey(), action.getTraceId(),
equipmentSpecificAlarmLogService, false, "")); equipmentSpecificAlarmLogService, false, false, ""));
mqttSendGateway.sendToMqtt(TopicEnum.EQYQR.getTopic(), JSONArray.toJSON(action).toString()); mqttSendGateway.sendToMqtt(TopicEnum.EQYQR.getTopic(), JSONArray.toJSON(action).toString());
bool = Boolean.TRUE; bool = Boolean.TRUE;
} }
...@@ -791,8 +793,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -791,8 +793,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
indexStateList.add(createIndexStateVo(equipmentSpeIndex)); indexStateList.add(createIndexStateVo(equipmentSpeIndex));
// 添加指标报告
saveEquipmentAlarmReportDay(equipmentSpeIndex);
// 火眼数据构造告警指标逻辑 // 火眼数据构造告警指标逻辑
equipmentSpeIndex = handleTemperatureAlarm(equipmentSpeIndex, iotDatalist); equipmentSpeIndex = handleTemperatureAlarm(equipmentSpeIndex, iotDatalist);
...@@ -819,6 +820,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -819,6 +820,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
handlingAlarms(equipmentSpeIndex, alarmFlag); handlingAlarms(equipmentSpeIndex, alarmFlag);
} }
// 添加指标报告
saveEquipmentAlarmReportDay(equipmentSpeIndex, alarmFlag);
// 指标告警处理 // 指标告警处理
if (equipmentSpeIndex.getIsAlarm() != null && 1 == equipmentSpeIndex.getIsAlarm()) { if (equipmentSpeIndex.getIsAlarm() != null && 1 == equipmentSpeIndex.getIsAlarm()) {
equipmentSpecificAlarms.addAll(createIndexAlarmRecord(equipmentSpeIndex, messageBodyMap)); equipmentSpecificAlarms.addAll(createIndexAlarmRecord(equipmentSpeIndex, messageBodyMap));
...@@ -891,7 +895,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -891,7 +895,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
bool = Boolean.FALSE; bool = Boolean.FALSE;
} else { } else {
alarmLogs.addAll(upAlarmLogStatus(action.getIotCode(), action.getEquipmentSpecificIndexKey(), action.getTraceId(), alarmLogs.addAll(upAlarmLogStatus(action.getIotCode(), action.getEquipmentSpecificIndexKey(), action.getTraceId(),
equipmentSpecificAlarmLogService, false, "")); equipmentSpecificAlarmLogService, false, false, ""));
mqttSendGateway.sendToMqtt(TopicEnum.EQYQR.getTopic(), JSONArray.toJSON(action).toString()); mqttSendGateway.sendToMqtt(TopicEnum.EQYQR.getTopic(), JSONArray.toJSON(action).toString());
bool = Boolean.TRUE; bool = Boolean.TRUE;
} }
...@@ -1075,8 +1079,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -1075,8 +1079,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
// 推送数据到组态大屏 // 推送数据到组态大屏
pushDataToIntegrationPage(equipmentSpecificIndexList); pushDataToIntegrationPage(equipmentSpecificIndexList);
// 添加指标报告
saveEquipmentAlarmReportDay(equipmentSpeIndex);
// 火眼数据构造告警指标逻辑 // 火眼数据构造告警指标逻辑
equipmentSpecificIndex = handleTemperatureAlarm(equipmentSpeIndex, iotDatalist); equipmentSpecificIndex = handleTemperatureAlarm(equipmentSpeIndex, iotDatalist);
...@@ -1102,6 +1105,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -1102,6 +1105,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
handlingAlarms(equipmentSpecificIndex, alarmFlag); handlingAlarms(equipmentSpecificIndex, alarmFlag);
} }
// 添加指标报告
saveEquipmentAlarmReportDay(equipmentSpeIndex, alarmFlag);
// 指标告警处理 // 指标告警处理
if (equipmentSpecificIndex.getIsAlarm() != null && 1 == equipmentSpecificIndex.getIsAlarm() && !equipmentSpecificIndex.getEquipmentIndexKey().equals(pressurePumpStart)) { if (equipmentSpecificIndex.getIsAlarm() != null && 1 == equipmentSpecificIndex.getIsAlarm() && !equipmentSpecificIndex.getEquipmentIndexKey().equals(pressurePumpStart)) {
equipmentSpecificAlarms.addAll(createIndexAlarmRecord(equipmentSpecificIndex, messageBodyMap)); equipmentSpecificAlarms.addAll(createIndexAlarmRecord(equipmentSpecificIndex, messageBodyMap));
...@@ -1208,7 +1214,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -1208,7 +1214,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
bool = Boolean.FALSE; bool = Boolean.FALSE;
} else { } else {
alarmLogs.addAll(upAlarmLogStatus(action.getIotCode(), action.getEquipmentSpecificIndexKey(), action.getTraceId(), alarmLogs.addAll(upAlarmLogStatus(action.getIotCode(), action.getEquipmentSpecificIndexKey(), action.getTraceId(),
equipmentSpecificAlarmLogService, false, "")); equipmentSpecificAlarmLogService, false, false, ""));
mqttSendGateway.sendToMqtt(TopicEnum.EQYQR.getTopic(), JSONArray.toJSON(action).toString()); mqttSendGateway.sendToMqtt(TopicEnum.EQYQR.getTopic(), JSONArray.toJSON(action).toString());
bool = Boolean.TRUE; bool = Boolean.TRUE;
} }
...@@ -1599,7 +1605,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -1599,7 +1605,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
} }
} }
private EquipmentAlarmReportDay addEquipAlarmReportRecord(EquipmentSpecificIndex equipmentSpecificIndex) { private EquipmentAlarmReportDay addEquipAlarmReportRecord(EquipmentSpecificIndex equipmentSpecificIndex, boolean flag) {
EquipmentAlarmReportDay equipmentAlarmReportDay = new EquipmentAlarmReportDay(); EquipmentAlarmReportDay equipmentAlarmReportDay = new EquipmentAlarmReportDay();
equipmentAlarmReportDay.setOrgCode(equipmentSpecificIndex.getOrgCode()); equipmentAlarmReportDay.setOrgCode(equipmentSpecificIndex.getOrgCode());
equipmentAlarmReportDay.setReportDate(new Date()); equipmentAlarmReportDay.setReportDate(new Date());
...@@ -1611,8 +1617,14 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -1611,8 +1617,14 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
equipmentAlarmReportDay.setEquipmentDetailId(equipmentSpecificIndex.getEquipmentDetailId()); equipmentAlarmReportDay.setEquipmentDetailId(equipmentSpecificIndex.getEquipmentDetailId());
equipmentAlarmReportDay.setEquipmentId(equipmentSpecificIndex.getEquipmentId()); equipmentAlarmReportDay.setEquipmentId(equipmentSpecificIndex.getEquipmentId());
equipmentAlarmReportDay.setEquipmentCode(equipmentSpecificIndex.getEquipmentCode()); equipmentAlarmReportDay.setEquipmentCode(equipmentSpecificIndex.getEquipmentCode());
equipmentAlarmReportDay if(flag) {
.setIndexTrueNum(TrueOrFalseEnum.real.value.equals(equipmentSpecificIndex.getValue()) ? 1L : 0L); equipmentAlarmReportDay
.setIndexTrueNum(1L);
} else {
equipmentAlarmReportDay
.setIndexTrueNum(TrueOrFalseEnum.real.value.equals(equipmentSpecificIndex.getValue()) ? 1L : 0L);
}
equipmentAlarmReportDay.setAlarmType(equipmentSpecificIndex.getTypeCode()); equipmentAlarmReportDay.setAlarmType(equipmentSpecificIndex.getTypeCode());
equipmentAlarmReportDay.setAlarmTypeName(equipmentSpecificIndex.getTypeName()); equipmentAlarmReportDay.setAlarmTypeName(equipmentSpecificIndex.getTypeName());
equipmentAlarmReportDay.setIndexId(equipmentSpecificIndex.getEquipmentIndexId()); equipmentAlarmReportDay.setIndexId(equipmentSpecificIndex.getEquipmentIndexId());
...@@ -2010,6 +2022,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -2010,6 +2022,7 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
action.setEquipmentSpecificName(equipmentSpcIndex.getEquipmentSpecificName()); action.setEquipmentSpecificName(equipmentSpcIndex.getEquipmentSpecificName());
action.setEquipmentCode(equipmentSpcIndex.getEquipmentCode()); action.setEquipmentCode(equipmentSpcIndex.getEquipmentCode());
// 冗余字段,alarm_log表更新时使用 // 冗余字段,alarm_log表更新时使用
action.setLocation(equipmentSpcIndex.getLocation());
action.setEquipmentSpecificCode(equipmentSpcIndex.getEquipmentSpecificCode()); action.setEquipmentSpecificCode(equipmentSpcIndex.getEquipmentSpecificCode());
action.setBuildId(equipmentSpcIndex.getBuildId()); action.setBuildId(equipmentSpcIndex.getBuildId());
action.setBizOrgName(equipmentSpcIndex.getBizOrgName()); action.setBizOrgName(equipmentSpcIndex.getBizOrgName());
...@@ -2233,9 +2246,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService { ...@@ -2233,9 +2246,9 @@ public class MqttReceiveServiceImpl implements MqttReceiveService {
* *
* @param equipmentSpecificIndex * @param equipmentSpecificIndex
*/ */
private void saveEquipmentAlarmReportDay(EquipmentSpecificIndex equipmentSpecificIndex) { private void saveEquipmentAlarmReportDay(EquipmentSpecificIndex equipmentSpecificIndex, boolean flag) {
SimpleDateFormat sdf = new SimpleDateFormat(DateUtils.DATE_PATTERN); SimpleDateFormat sdf = new SimpleDateFormat(DateUtils.DATE_PATTERN);
EquipmentAlarmReportDay equipmentAlarmReportDay = addEquipAlarmReportRecord(equipmentSpecificIndex); EquipmentAlarmReportDay equipmentAlarmReportDay = addEquipAlarmReportRecord(equipmentSpecificIndex, flag);
LambdaQueryWrapper<EquipmentAlarmReportDay> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<EquipmentAlarmReportDay> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(EquipmentAlarmReportDay::getReportDate, sdf.format(equipmentAlarmReportDay.getReportDate())) wrapper.eq(EquipmentAlarmReportDay::getReportDate, sdf.format(equipmentAlarmReportDay.getReportDate()))
.eq(EquipmentAlarmReportDay::getIndexId, equipmentAlarmReportDay.getIndexId()) .eq(EquipmentAlarmReportDay::getIndexId, equipmentAlarmReportDay.getIndexId())
......
package com.yeejoin.equipmanage.service.impl; package com.yeejoin.equipmanage.service.impl;
import com.yeejoin.equipmanage.utils.ClassToJsonUtil;
import org.springframework.core.io.Resource;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel; import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
...@@ -16,6 +18,7 @@ import com.yeejoin.equipmanage.mapper.StockDetailMapper; ...@@ -16,6 +18,7 @@ import com.yeejoin.equipmanage.mapper.StockDetailMapper;
import com.yeejoin.equipmanage.remote.RemoteSecurityService; import com.yeejoin.equipmanage.remote.RemoteSecurityService;
import com.yeejoin.equipmanage.service.*; import com.yeejoin.equipmanage.service.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
...@@ -221,6 +224,16 @@ public class StatisticsServiceImpl implements IStatisticsService { ...@@ -221,6 +224,16 @@ public class StatisticsServiceImpl implements IStatisticsService {
return equipmentSpecificMapper.selectEquipCategoryNumber(fightingSystemEntity.getId()); return equipmentSpecificMapper.selectEquipCategoryNumber(fightingSystemEntity.getId());
} }
@Value("classpath:/json/commonMessage.json")
private Resource commonMessage;
@Override
public String getStr() {
String s = "{\"code\":2000,\"id\":1,\"body\":{\"warns\":[{\"systemid\":\"2\",\"pointId\":\"73811\",\"level\":\"3\",\"time\":\"2024-04-08 09:17:56.226\",\"type\":\"遥信变位\",\"deviceId\":\"\",\"content\":\"火灾报警主机_主控楼二层1#蓄电池室可燃气体火警屏蔽状态 消失\"}]}}";
String s1 = "{\"data_class\":\"realdata\",\"data_type\":\"alarm\",\"op_type\":\"subscribe_emergency\",\"condition\":{\"station_psr_id\":\"50edcb6c1b8a811030493c80a2014950ed9d4f59e8\",\"station_name\":\"中州换流站\",\"alarm_type\":\"yx_bw\"},\"data\":[{\"psrId\":\"D017020000000000000000999\",\"astId\":\"D017020000000000000000999\",\"equipType\":\"ASTType_0000111\",\"eventType\":\"OtherSignal\",\"alarmSource\":\"OWS\",\"alarmLevel\":\"3\",\"description\":\"2024-03-11 09:06:17::585 S2WCL12A E3.C01软水器再生结束信号 出现\",\"dateTime\":\"2024-03-11 09:06:17.585\"}]}";
String s2 = "{\"code\":2000,\"id\":1,\"body\":{\"time_stamp\":\"2024-04-07 16:42:52.616\",\"datatype\":\"analog\",\"name\":\"直流接地极电流IDEE\",\"value\":12.969970703125,\"key\":\"0000YC00010100409C\",\"quality\":0,”code”:1001}}";
return ClassToJsonUtil.class2json(s1, commonMessage, "k1");
}
private Double getExtinguishingCountByWarehouseId(String categoryCode, Long warehouseId) { private Double getExtinguishingCountByWarehouseId(String categoryCode, Long warehouseId) {
......
package com.yeejoin.equipmanage.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.JsonObject;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.io.Resource;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author keyong
* @title: ClassToJsonUtil
* <pre>
* @description: TODO
* </pre>
* @date 2024/4/11 11:28
*/
public class ClassToJsonUtil {
private static Map<String, Object> map = new HashMap<>();
public static String class2json(Object obj, Resource commonMessage, String topic) {
String json;
try {
json = IOUtils.toString(commonMessage.getInputStream(), String.valueOf(StandardCharsets.UTF_8));
} catch (IOException e) {
throw new RuntimeException("获取kafka信息模板失败!");
}
List<Map> listModel = JSONObject.parseArray(json, Map.class);
if (0 < listModel.size()) {
List<Map> mapList = listModel.stream().filter(x -> String.valueOf(x.get("kafkaTopic")).equalsIgnoreCase(topic)).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(mapList)) {
Map<String, Object> map1 = mapList.get(0);
JSONObject object = JSON.parseObject(String.valueOf(obj));
analysisJson(object, "");
JSONObject res = analyseJson(JSON.toJSONString(map1), map);
res.put("kafkaTopic", map1.get("kafkaTopic"));
res.put("mqTopic", map1.get("mqTopic"));
return JSON.toJSONString(res);
}
}
return null;
}
private static JSONObject analysisJson(Object objJson, String flag) {
if (objJson instanceof JSONArray) {//如果obj为json数组
JSONArray objArray = (JSONArray) objJson;
for (int i = 0; i < objArray.size(); i++) {
analysisJson(objArray.get(i), flag);
}
} else if (objJson instanceof JSONObject) {//如果为json对象
JSONObject jsonObject = (JSONObject) objJson;
Iterator it = jsonObject.keySet().iterator();
while (it.hasNext()) {
String key = it.next().toString();
Object object = jsonObject.get(key);
//如果得到的是数组
if (object instanceof JSONArray) {
JSONArray objArray = (JSONArray) object;
String path = "";
if (StringUtils.isNotBlank(flag)) {
path = flag + "." + key;
} else {
path = key;
}
analysisJson(objArray, path);
} else if (object instanceof JSONObject) {//如果key中是一个json对象
String path = "";
if (StringUtils.isNotBlank(flag)) {
path = flag + "." + key;
} else {
path = key;
}
analysisJson((JSONObject) object, path);
} else {//如果key中是其他
String path = "";
if (StringUtils.isNotBlank(flag)) {
path = flag + "." + key;
} else {
path = key;
}
// System.out.println(path+":"+object.toString()+" ");
map.put(path, String.valueOf(object));
}
}
} else {//如果key中是其他
// System.out.println(flag+":"+objJson.toString()+" ");
map.put(flag, String.valueOf(objJson));
}
return JSONObject.parseObject(JSON.toJSONString(map));
}
public static JSONObject analyseJson(String jsonData, Map<String, Object> keyMap) {
SortedMap<String, Object> map = new TreeMap<>();
JSONObject jsonObject = JSON.parseObject(jsonData);
for (String key : jsonObject.keySet()) {
String resKey = keyMap.get(key) == null ? key : String.valueOf(keyMap.get(key));
Object value = jsonObject.get(key);
if (value instanceof JSONArray) {
JSONArray jsonArray = new JSONArray(new LinkedList<>());
JSONArray array = jsonObject.getJSONArray(key);
for (int i = 0; i < array.size(); i++) {
Object object = array.get(i);
if (object instanceof String) {
map.put(resKey, array);
} else {
JSONObject sortJson = analyseJson(String.valueOf(object), keyMap);
jsonArray.add(sortJson);
map.put(resKey, jsonArray);
}
}
} else if (value instanceof JSONObject) {
JSONObject sortJson = analyseJson(String.valueOf(value), keyMap);
map.put(resKey, sortJson);
} else {
map.put(resKey, ObjectUtils.isNotEmpty(keyMap.get(value)) ? keyMap.get(value) : "");
}
}
return new JSONObject(map);
}
}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://172.16.11.201:3306/dl_business?useUnicode=true&allowMultiQueries=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai spring.datasource.url = jdbc:mysql://172.16.10.241:3306/dl_business_v3.0.1.3?useUnicode=true&allowMultiQueries=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root spring.datasource.username=root
spring.datasource.password=Yeejoin@2020 spring.datasource.password=Yeejoin@2020
spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.type=com.zaxxer.hikari.HikariDataSource
...@@ -12,22 +12,24 @@ spring.datasource.hikari.max-lifetime= 1800000 ...@@ -12,22 +12,24 @@ spring.datasource.hikari.max-lifetime= 1800000
spring.datasource.hikari.connection-timeout= 60000 spring.datasource.hikari.connection-timeout= 60000
spring.datasource.hikari.connection-test-query= SELECT 1 spring.datasource.hikari.connection-test-query= SELECT 1
##########eureka配置信息############### ##########eureka????###############
eureka.instance.prefer-ip-address = true eureka.instance.prefer-ip-address = true
#服务实例ip地址,若eureka.instance.prefer-ip-address=false,ip-address设置失效,一般情况不用设置。 #????ip????eureka.instance.prefer-ip-address=false,ip-address??????????????
#eureka.instance.ip-address= 172.16.3.135 #eureka.instance.ip-address= 172.16.3.135
#eureka服务ip配置,可填写固定ip地址
eureka.instance.hostname=172.16.11.201
#eureka服务配置的校验账号及密码,配置需和eureka服务后台配置文件中一致 #eureka服务配置的校验账号及密码,配置需和eureka服务后台配置文件中一致
#eureka??ip????????ip??
eureka.instance.hostname=172.16.10.241
#eureka????????????,????eureka???????????
spring.security.user.name=admin spring.security.user.name=admin
spring.security.user.password=a1234560 spring.security.user.password=a1234560
eureka.client.serviceUrl.defaultZone=http://${spring.security.user.name}:${spring.security.user.password}@${eureka.instance.hostname}:10001/eureka/ eureka.client.serviceUrl.defaultZone=http://${spring.security.user.name}:${spring.security.user.password}@${eureka.instance.hostname}:10001/eureka/
##########eureka配置信息############### ##########eureka????###############
#redis #redis
spring.redis.database=1 spring.redis.database=1
spring.redis.host=172.16.11.201 spring.redis.host=172.16.10.241
spring.redis.port=6379 spring.redis.port=6379
spring.redis.password=yeejoin@2020 spring.redis.password=yeejoin@2020
spring.redis.lettuce.pool.max-active=200 spring.redis.lettuce.pool.max-active=200
...@@ -39,10 +41,10 @@ spring.redis.expire.time=30000 ...@@ -39,10 +41,10 @@ spring.redis.expire.time=30000
## emqx ## emqx
emqx.clean-session=true emqx.clean-session=true
emqx.client-id=${spring.application.name}-${random.int[1024,65536]} emqx.client-id=${spring.application.name}-${random.int[1024,65536]}
emqx.broker=tcp://172.16.11.201:1883 emqx.broker=tcp://172.16.10.241:1883
emqx.user-name=admin emqx.user-name=admin
emqx.password=public emqx.password=public
mqtt.scene.host=mqtt://172.16.11.201:8083/mqtt mqtt.scene.host=mqtt://172.16.10.241:8083/mqtt
mqtt.client.product.id=mqtt mqtt.client.product.id=mqtt
mqtt.topic=topic_mqtt mqtt.topic=topic_mqtt
spring.mqtt.completionTimeout=3000 spring.mqtt.completionTimeout=3000
...@@ -57,7 +59,7 @@ spring.influx.actions=10000 ...@@ -57,7 +59,7 @@ spring.influx.actions=10000
spring.influx.bufferLimit=20000 spring.influx.bufferLimit=20000
#系统机器人账号 #???????
amos.system.user.user-name=fas_system amos.system.user.user-name=fas_system
amos.system.user.password=a1234560 amos.system.user.password=a1234560
amos.system.user.app-key=studio_normalapp_3056965 amos.system.user.app-key=studio_normalapp_3056965
...@@ -66,36 +68,36 @@ security.productApp=STUDIO_APP_MOBILE ...@@ -66,36 +68,36 @@ security.productApp=STUDIO_APP_MOBILE
#向数字站同步设备,巡查点台账信息开关,适用于数字站1.0版本,目前停止同步,默认为false #?????????????????????????1.0?????????????false
systemctl.sync.switch=false systemctl.sync.switch=false
#数据JCS开关 设备资源数据权限配置,站端部署,库里只有单站数据可不进行开启(false),中心级部署或存在多站数据时需开启(true)数据权限过滤 #??JCS?? ???????????????????????????????false???????????????????true???????
systemctl.jcs.switch=true systemctl.jcs.switch=true
#给平台同步告警数据,若不同步影响消防自动化告警消息框数据展示 #?????????,????????????????????
systemctl.amos.switch=true systemctl.amos.switch=true
#告警数据是否发送给App端,发送是通过jpush实现,需要有网情况下。目前电力消防不支持网络使用,默认不进行APP推送 #?????????App???????jpush??????????????????????????????APP??
isSendApp=false isSendApp=false
###############向数字化平台3.0进行告警转发配置信息################################ ###############??????3.0??????????################################
#告警推送开关,若无推送需求进行关闭(false) #??????????????????false?
dcs.send.message=false dcs.send.message=false
#请求头参数 #?????
dcs.client-id=fire_system dcs.client-id=fire_system
dcs.client.secret=fire_system dcs.client.secret=fire_system
dcs.grant-type=client_credentials dcs.grant-type=client_credentials
dcs.scope=all dcs.scope=all
dcs.token-key=dcs_token_key dcs.token-key=dcs_token_key
#华为roma秘钥每个站有区别与集成商索取 #??roma??????????????
dcs.x.hw.id=io.cs dcs.x.hw.id=io.cs
dcs.x.hw.appKey=i!YmnHgJ=Ysz8V+O@ZG237inQKfixkQ.-#-P3IlR8fO%.#F!g%35Z#@tp$6G+52v dcs.x.hw.appKey=i!YmnHgJ=Ysz8V+O@ZG237inQKfixkQ.-#-P3IlR8fO%.#F!g%35Z#@tp$6G+52v
# \u7531\u4E8E\u76EE\u524D\u6709\u4E0D\u6B62\u4E00\u4E2A\u6570\u5B57\u7AD9\u5E73\u53F0\u5BF9\u5E94\u63A5\u53E3\u89C4\u8303\u4E0D\u4E00\u81F4\uFF0C\u6240\u4EE5\u6B64\u5904\u589E\u52A0\u914D\u7F6E\uFF0Ctrue\u8868\u793A\u9002\u7528\u4E8E\u5357\u745E\u79D1\u6280\u7684\u63A5\u53E3\u89C4\u8303 # ?????????????????????????????????true??????????????
#平台集成商是否科技接口,(科技为true、继保和许继为false) #????????????(???true???????false?
dcs.NRKJ.use=false dcs.NRKJ.use=false
dcs.source.type=\u9ad8\u7ea7\u5e94\u7528 dcs.source.type=????
#数字化平台3.0权限接口 #?????3.0????
dcs.url.token=http://172.21.101.123/udaap-ddis/v1/cs/auth-service/oauth/token dcs.url.token=http://172.21.101.123/udaap-ddis/v1/cs/auth-service/oauth/token
#数字化平台3.0告警存储接口 #?????3.0??????
dcs.url.sendalarm=http://172.21.101.101/v1/cs/alarm-service/appalarm/sendalarm dcs.url.sendalarm=http://172.21.101.101/v1/cs/alarm-service/appalarm/sendalarm
################################################################################# #################################################################################
...@@ -103,45 +105,45 @@ dcs.url.sendalarm=http://172.21.101.101/v1/cs/alarm-service/appalarm/sendalarm ...@@ -103,45 +105,45 @@ dcs.url.sendalarm=http://172.21.101.101/v1/cs/alarm-service/appalarm/sendalarm
param.system.online.date = 2019-02-12 param.system.online.date = 2019-02-12
############数字1.0视频接入服务配置,其他版本不支持################################## ############??1.0????????????????##################################
# 视频转码服务开关 hls(关)/flv(开),默认关闭,数字换流站1.0使用时开启 # ???????? hls(?)/flv(?),??????????1.0?????
window.vedioFormat = hls window.vedioFormat = hls
# 航天视频服务地址 # ????????
param.htvideo.url=http://192.168.4.174:9001; param.htvideo.url=http://192.168.4.174:9001;
# 南瑞视频转码服务地址 # ??????????
param.nrvideo.url=http://198.87.103.158:8001; param.nrvideo.url=http://198.87.103.158:8001;
#南瑞视频平台通过视频id获取flv格式视频播放地址 #??????????id??flv????????
param.nrflvbyvoideoid.url=http://192.168.4.159:10010/api/media/live param.nrflvbyvoideoid.url=http://192.168.4.159:10010/api/media/live
##################################################################################### #####################################################################################
#装备服务在接收到站端iot推送的装备数据后进行influxdb存库 #??????????iot??????????influxdb??
#1.在装备接口消息处向influxdb/{productKey}/{deviceName} 消息地址推送数据,iot负责存库 #1.?????????influxdb/{productKey}/{deviceName} ?????????iot????
#2.配置文件添加配置项开关,默认为关闭,该功能只使用于中心及系统 #2.??????????????????????????????
#是否向iot推送消息 #???iot????
isSendIot=false isSendIot=false
#站端编码及中文名称,用于数据上送 #????????????????
state.code=GW190301 state.code=GW190301
state.name=\u9526\u5c4f\u6362\u6d41\u7ad9 state.name=?????
#站端编码,用于物联报表查询 #?????????????
stationCode=LSHLZ1bZAJU645Pgl7 stationCode=LSHLZ1bZAJU645Pgl7
#用于总部系统与站端系统逻辑区分,站端写zd总部默认为空 #???????????????????zd??????
system.type=zd system.type=zd
#遥测信号是否向直流中心推送,数字站默认不推送 #??????????????????????
is.open.telemetering=false is.open.telemetering=false
# message 接收来自南瑞平台的告警事件描述,如:出现(即为true) # message ???????????????????????true?
message.alarm.char=\u51FA\u73B0 message.alarm.char=??
# 电建项目配置 # ??????
mileage.parameter=0.5 mileage.parameter=0.5
# 电建项目配置 # ??????
mileage.segmentation.cron=0 0 0 * * ? mileage.segmentation.cron=0 0 0 * * ?
mileage.splitmileage.cron=0 0/1 * * * ? mileage.splitmileage.cron=0 0/1 * * * ?
mileage.clippingtime=600000 mileage.clippingtime=600000
...@@ -150,10 +152,10 @@ equip.car.maxTravel=400 ...@@ -150,10 +152,10 @@ equip.car.maxTravel=400
equip.risk.model.topic="" equip.risk.model.topic=""
#mileage.segmentation.cron= 0 */2 * * * ? #mileage.segmentation.cron= 0 */2 * * * ?
# 机场使用特殊配置iotCode前缀,装备、车辆及导入使用到 # ????????iotCode??????????????
# 机场使用 # ????
#iot.code.prefix.have.used=20210003,20210004,20210005 #iot.code.prefix.have.used=20210003,20210004,20210005
# 电力使用 # ????
iot.code.prefix.have.used= iot.code.prefix.have.used=
#kafka #kafka
......
...@@ -46,8 +46,8 @@ iot.vehicle.track=AMOS-API-IOT ...@@ -46,8 +46,8 @@ iot.vehicle.track=AMOS-API-IOT
jcs.fegin.name=JCS jcs.fegin.name=JCS
video.fegin.name=VIDEO video.fegin.name=VIDEO
idx.feign.name=AMOS-IDX idx.feign.name=AMOS-IDX
mcb.feign.name=MCB-SERVER mcb.feign.name=MCB-SERVER
#\u9879\u76EE\u521D\u59CB\u5316\u753B\u5E03id #\u9879\u76EE\u521D\u59CB\u5316\u753B\u5E03id
morphic.projectSeq=1390314016458514433 morphic.projectSeq=1390314016458514433
#wl_equipment_category \u8868id \uFF08\u53D6\u706B\u707E\u62A5\u8B66\u7CFB\u7EDFid\uFF09 #wl_equipment_category \u8868id \uFF08\u53D6\u706B\u707E\u62A5\u8B66\u7CFB\u7EDFid\uFF09
...@@ -155,30 +155,34 @@ management.endpoint.health.show-details=always ...@@ -155,30 +155,34 @@ management.endpoint.health.show-details=always
logic=false logic=false
##电力报表定时任务 ##????????
jobs.month.cron = 0 50 0 1 * ? jobs.month.cron = 0 50 0 1 * ?
jobs.day.cron = 0 5 0 * * ? jobs.day.cron = 0 5 0 * * ?
jobs.week.cron = 0 25 0 ? * 1 jobs.week.cron = 0 25 0 ? * 1
jobs.day.cron.old = 0 25 0 * * ? jobs.day.cron.old = 0 25 0 * * ?
# ?????????
update.car.qrCode=0 01 00 * * ?
#预案消防炮设备类型编码 #???????????
equipment.plan.monitor=92030200,92032200 equipment.plan.monitor=92030200,92032200
#消防泵设备类型编码 #?????????
equipment.plan.pump=92010600,92030600,92130400,92140200,92150300 equipment.plan.pump=92010600,92030600,92130400,92140200,92150300
#电力设备报废业务,在设备报废前30日 每日9点执行 系统推送提醒。设备报废后停止消息推送提醒 #???????????????30? ??9??? ????????????????????
equipment.scrap.day=30 equipment.scrap.day=30
equipment.scrap.cron=0 0 9 * * ? equipment.scrap.cron=0 0 9 * * ?
#???????????kks?
power.station.url=http://139.9.169.123:5024/process/DataInterface
#稳压泵定时向缓存中存昨日启动次数任务 #??????????????????
equipment.pressurepump.start.cron=0 0 0 * * ? equipment.pressurepump.start.cron=0 0 0 * * ?
#稳压泵启停指标 #???????
equipment.pressurepump.start=FHS_PressurePump_Start equipment.pressurepump.start=FHS_PressurePump_Start
#稳压泵压力指标 #???????
equipment.pressurepump.pipepressure=FHS_PipePressureDetector_PipePressure equipment.pressurepump.pipepressure=FHS_PipePressureDetector_PipePressure
#液位指标编码 #??????
water.level.indexKey=FHS_FirePoolDevice_WaterLevel,FHS_LevelDetector_WaterLevel,FHS_WirelessliquidDetector_WaterLevel,CAFS_FoamTank_FoamTankLevel,CAFS_WaterTank_WaterTankLevel water.level.indexKey=FHS_FirePoolDevice_WaterLevel,FHS_LevelDetector_WaterLevel,FHS_WirelessliquidDetector_WaterLevel,CAFS_FoamTank_FoamTankLevel,CAFS_WaterTank_WaterTankLevel
...@@ -1115,4 +1115,16 @@ ...@@ -1115,4 +1115,16 @@
ADD pump_device_name varchar(1500) DEFAULT NULL COMMENT '消防泵装置名称s'; ADD pump_device_name varchar(1500) DEFAULT NULL COMMENT '消防泵装置名称s';
</sql> </sql>
</changeSet> </changeSet>
<changeSet author="xxz" id="20240510-1">
<preConditions onFail="MARK_RAN">
<not>
<columnExists tableName="wl_equipment_specific" columnName="type_code"/>
</not>
</preConditions>
<comment>wl_equipment_specific表新增属性字段type_code</comment>
<sql>
ALTER TABLE `wl_equipment_specific` ADD COLUMN `type_code` VARCHAR (50) NULL COMMENT '指标类型编码';
</sql>
</changeSet>
</databaseChangeLog> </databaseChangeLog>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?mso-application progid="Word.Document"?> <?mso-application progid="Word.Document"?>
<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" <w:wordDocument
xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:w10="urn:schemas-microsoft-com:office:word"
xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core"
xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:aml="http://schemas.microsoft.com/aml/2001/core"
w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint"
xmlns:wpsCustomData="http://www.wps.cn/officeDocument/2013/wpsCustomData"><o:DocumentProperties> xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve"
xmlns:wpsCustomData="http://www.wps.cn/officeDocument/2013/wpsCustomData">
<o:DocumentProperties>
<o:Author>洪 峰</o:Author> <o:Author>洪 峰</o:Author>
<o:LastAuthor>DELL</o:LastAuthor> <o:LastAuthor>木可</o:LastAuthor>
<o:Revision>100</o:Revision> <o:Revision>100</o:Revision>
<o:LastPrinted>2022-07-07T09:38:00Z</o:LastPrinted> <o:LastPrinted>2022-07-07T09:38:00Z</o:LastPrinted>
<o:Created>2022-06-29T12:42:00Z</o:Created> <o:Created>2022-06-29T12:42:00Z</o:Created>
<o:LastSaved>2022-08-23T02:25:26Z</o:LastSaved> <o:LastSaved>2024-03-07T01:26:46Z</o:LastSaved>
<o:TotalTime>0</o:TotalTime> <o:TotalTime>14400</o:TotalTime>
<o:Pages>5</o:Pages> <o:Pages>5</o:Pages>
<o:Words>825</o:Words> <o:Words>825</o:Words>
<o:Characters>874</o:Characters> <o:Characters>874</o:Characters>
...@@ -24,8 +27,8 @@ ...@@ -24,8 +27,8 @@
<o:Version>14</o:Version> <o:Version>14</o:Version>
</o:DocumentProperties> </o:DocumentProperties>
<o:CustomDocumentProperties> <o:CustomDocumentProperties>
<o:KSOProductBuildVer dt:dt="string">2052-11.1.0.12302</o:KSOProductBuildVer> <o:KSOProductBuildVer dt:dt="string">2052-12.1.0.16250</o:KSOProductBuildVer>
<o:ICV dt:dt="string">33CE64D3E76D42C79E53F68B372B9F91</o:ICV> <o:ICV dt:dt="string">858FAB8E8A32478EB84685A252863E33_13</o:ICV>
</o:CustomDocumentProperties> </o:CustomDocumentProperties>
<w:fonts> <w:fonts>
<w:defaultFonts w:ascii="等线" w:fareast="等线" w:h-ansi="等线" w:cs="Times New Roman"/> <w:defaultFonts w:ascii="等线" w:fareast="等线" w:h-ansi="等线" w:cs="Times New Roman"/>
...@@ -34,97 +37,113 @@ ...@@ -34,97 +37,113 @@
<w:charset w:val="00"/> <w:charset w:val="00"/>
<w:family w:val="Auto"/> <w:family w:val="Auto"/>
<w:pitch w:val="Default"/> <w:pitch w:val="Default"/>
<w:sig w:usb-0="E0002EFF" w:usb-1="C000785B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="400001FF" <w:sig w:usb-0="E0002EFF" w:usb-1="C000785B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="400001FF" w:csb-1="FFFF0000"/>
w:csb-1="FFFF0000"/>
</w:font> </w:font>
<w:font w:name="宋体"> <w:font w:name="宋体">
<w:panose-1 w:val="02010600030101010101"/> <w:panose-1 w:val="02010600030101010101"/>
<w:charset w:val="86"/> <w:charset w:val="86"/>
<w:family w:val="Auto"/> <w:family w:val="Auto"/>
<w:pitch w:val="Default"/> <w:pitch w:val="Default"/>
<w:sig w:usb-0="00000003" w:usb-1="288F0000" w:usb-2="00000006" w:usb-3="00000000" w:csb-0="00040001" <w:sig w:usb-0="00000003" w:usb-1="288F0000" w:usb-2="00000006" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/>
w:csb-1="00000000"/>
</w:font> </w:font>
<w:font w:name="Wingdings"> <w:font w:name="Wingdings">
<w:panose-1 w:val="05000000000000000000"/> <w:panose-1 w:val="05000000000000000000"/>
<w:charset w:val="02"/> <w:charset w:val="02"/>
<w:family w:val="Auto"/> <w:family w:val="Auto"/>
<w:pitch w:val="Default"/> <w:pitch w:val="Default"/>
<w:sig w:usb-0="00000000" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" <w:sig w:usb-0="00000000" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/>
w:csb-1="00000000"/>
</w:font> </w:font>
<w:font w:name="Arial"> <w:font w:name="Arial">
<w:panose-1 w:val="020B0604020202020204"/> <w:panose-1 w:val="020B0604020202020204"/>
<w:charset w:val="01"/> <w:charset w:val="01"/>
<w:family w:val="SWiss"/> <w:family w:val="SWiss"/>
<w:pitch w:val="Default"/> <w:pitch w:val="Default"/>
<w:sig w:usb-0="E0002EFF" w:usb-1="C000785B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="400001FF" <w:sig w:usb-0="E0002EFF" w:usb-1="C000785B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="400001FF" w:csb-1="FFFF0000"/>
w:csb-1="FFFF0000"/>
</w:font> </w:font>
<w:font w:name="黑体"> <w:font w:name="黑体">
<w:panose-1 w:val="02010609060101010101"/> <w:panose-1 w:val="02010609060101010101"/>
<w:charset w:val="86"/> <w:charset w:val="86"/>
<w:family w:val="Auto"/> <w:family w:val="Auto"/>
<w:pitch w:val="Default"/> <w:pitch w:val="Default"/>
<w:sig w:usb-0="800002BF" w:usb-1="38CF7CFA" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" <w:sig w:usb-0="800002BF" w:usb-1="38CF7CFA" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/>
w:csb-1="00000000"/>
</w:font> </w:font>
<w:font w:name="Courier New"> <w:font w:name="Courier New">
<w:panose-1 w:val="02070309020205020404"/> <w:panose-1 w:val="02070309020205020404"/>
<w:charset w:val="01"/> <w:charset w:val="01"/>
<w:family w:val="Modern"/> <w:family w:val="Modern"/>
<w:pitch w:val="Default"/> <w:pitch w:val="Default"/>
<w:sig w:usb-0="E0002EFF" w:usb-1="C0007843" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="400001FF" <w:sig w:usb-0="E0002EFF" w:usb-1="C0007843" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="400001FF" w:csb-1="FFFF0000"/>
w:csb-1="FFFF0000"/>
</w:font> </w:font>
<w:font w:name="Symbol"> <w:font w:name="Symbol">
<w:panose-1 w:val="05050102010706020507"/> <w:panose-1 w:val="05050102010706020507"/>
<w:charset w:val="02"/> <w:charset w:val="02"/>
<w:family w:val="Roman"/> <w:family w:val="Roman"/>
<w:pitch w:val="Default"/> <w:pitch w:val="Default"/>
<w:sig w:usb-0="00000000" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" <w:sig w:usb-0="00000000" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/>
w:csb-1="00000000"/>
</w:font> </w:font>
<w:font w:name="Calibri"> <w:font w:name="Calibri">
<w:panose-1 w:val="020F0502020204030204"/> <w:panose-1 w:val="020F0502020204030204"/>
<w:charset w:val="00"/> <w:charset w:val="00"/>
<w:family w:val="SWiss"/> <w:family w:val="SWiss"/>
<w:pitch w:val="Default"/> <w:pitch w:val="Default"/>
<w:sig w:usb-0="E4002EFF" w:usb-1="C000247B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="200001FF" <w:sig w:usb-0="E4002EFF" w:usb-1="C000247B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="200001FF" w:csb-1="00000000"/>
w:csb-1="00000000"/> </w:font>
<w:font w:name="Wingdings">
<w:panose-1 w:val="05000000000000000000"/>
<w:charset w:val="00"/>
<w:family w:val="Auto"/>
<w:pitch w:val="Default"/>
<w:sig w:usb-0="00000000" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/>
</w:font>
<w:font w:name="Arial">
<w:panose-1 w:val="020B0604020202020204"/>
<w:charset w:val="00"/>
<w:family w:val="Auto"/>
<w:pitch w:val="Default"/>
<w:sig w:usb-0="E0002EFF" w:usb-1="C000785B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="400001FF" w:csb-1="FFFF0000"/>
</w:font>
<w:font w:name="Courier New">
<w:panose-1 w:val="02070309020205020404"/>
<w:charset w:val="00"/>
<w:family w:val="Auto"/>
<w:pitch w:val="Default"/>
<w:sig w:usb-0="E0002EFF" w:usb-1="C0007843" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="400001FF" w:csb-1="FFFF0000"/>
</w:font>
<w:font w:name="Symbol">
<w:panose-1 w:val="05050102010706020507"/>
<w:charset w:val="00"/>
<w:family w:val="Auto"/>
<w:pitch w:val="Default"/>
<w:sig w:usb-0="00000000" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000"/>
</w:font> </w:font>
<w:font w:name="等线"> <w:font w:name="等线">
<w:panose-1 w:val="02010600030101010101"/> <w:panose-1 w:val="02010600030101010101"/>
<w:charset w:val="86"/> <w:charset w:val="86"/>
<w:family w:val="Auto"/> <w:family w:val="Auto"/>
<w:pitch w:val="Default"/> <w:pitch w:val="Default"/>
<w:sig w:usb-0="A00002BF" w:usb-1="38CF7CFA" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="0004000F" <w:sig w:usb-0="A00002BF" w:usb-1="38CF7CFA" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="0004000F" w:csb-1="00000000"/>
w:csb-1="00000000"/>
</w:font> </w:font>
<w:font w:name="STKaitiSC-Regular"> <w:font w:name="STKaitiSC-Regular">
<w:altName w:val="Cambria"/> <w:altName w:val="Cambria"/>
<w:panose-1 w:val="00000000000000000000"/> <w:panose-1 w:val="00000000000000000000"/>
<w:charset w:val="00"/> <w:charset w:val="00"/>
<w:family w:val="Roman"/> <w:family w:val="Auto"/>
<w:pitch w:val="Default"/> <w:pitch w:val="Default"/>
<w:sig w:usb-0="00000000" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="00000000" <w:sig w:usb-0="00000000" w:usb-1="00000000" w:usb-2="00000000" w:usb-3="00000000" w:csb-0="00000000" w:csb-1="00000000"/>
w:csb-1="00000000"/>
</w:font> </w:font>
<w:font w:name="Cambria"> <w:font w:name="Cambria">
<w:panose-1 w:val="02040503050406030204"/> <w:panose-1 w:val="02040503050406030204"/>
<w:charset w:val="00"/> <w:charset w:val="00"/>
<w:family w:val="Auto"/> <w:family w:val="Auto"/>
<w:pitch w:val="Default"/> <w:pitch w:val="Default"/>
<w:sig w:usb-0="E00006FF" w:usb-1="420024FF" w:usb-2="02000000" w:usb-3="00000000" w:csb-0="2000019F" <w:sig w:usb-0="E00006FF" w:usb-1="420024FF" w:usb-2="02000000" w:usb-3="00000000" w:csb-0="2000019F" w:csb-1="00000000"/>
w:csb-1="00000000"/>
</w:font> </w:font>
<w:font w:name="仿宋"> <w:font w:name="仿宋">
<w:panose-1 w:val="02010609060101010101"/> <w:panose-1 w:val="02010609060101010101"/>
<w:charset w:val="86"/> <w:charset w:val="86"/>
<w:family w:val="Modern"/> <w:family w:val="Auto"/>
<w:pitch w:val="Default"/> <w:pitch w:val="Default"/>
<w:sig w:usb-0="800002BF" w:usb-1="38CF7CFA" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" <w:sig w:usb-0="800002BF" w:usb-1="38CF7CFA" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/>
w:csb-1="00000000"/>
</w:font> </w:font>
</w:fonts> </w:fonts>
<w:lists> <w:lists>
...@@ -153,7 +172,6 @@ ...@@ -153,7 +172,6 @@
<w:rPr> <w:rPr>
<w:rFonts w:hint="default"/> <w:rFonts w:hint="default"/>
<w:b w:val="off"/> <w:b w:val="off"/>
<w:b-cs w:val="off"/>
</w:rPr> </w:rPr>
</w:lvl> </w:lvl>
<w:lvl w:ilvl="2"> <w:lvl w:ilvl="2">
...@@ -417,7 +435,6 @@ ...@@ -417,7 +435,6 @@
<w:lsdException w:name="Medium Shading 1 Accent 1"/> <w:lsdException w:name="Medium Shading 1 Accent 1"/>
<w:lsdException w:name="Medium Shading 2 Accent 1"/> <w:lsdException w:name="Medium Shading 2 Accent 1"/>
<w:lsdException w:name="Medium List 1 Accent 1"/> <w:lsdException w:name="Medium List 1 Accent 1"/>
<w:lsdException w:name="List Paragraph"/>
<w:lsdException w:name="Medium List 2 Accent 1"/> <w:lsdException w:name="Medium List 2 Accent 1"/>
<w:lsdException w:name="Medium Grid 1 Accent 1"/> <w:lsdException w:name="Medium Grid 1 Accent 1"/>
<w:lsdException w:name="Medium Grid 2 Accent 1"/> <w:lsdException w:name="Medium Grid 2 Accent 1"/>
...@@ -578,7 +595,6 @@ ...@@ -578,7 +595,6 @@
<w:basedOn w:val="a1"/> <w:basedOn w:val="a1"/>
<w:next w:val="a1"/> <w:next w:val="a1"/>
<w:link w:val="a20"/> <w:link w:val="a20"/>
<w:semiHidden/>
<w:pPr> <w:pPr>
<w:keepNext/> <w:keepNext/>
<w:keepLines/> <w:keepLines/>
...@@ -600,7 +616,6 @@ ...@@ -600,7 +616,6 @@
<w:basedOn w:val="a1"/> <w:basedOn w:val="a1"/>
<w:next w:val="a1"/> <w:next w:val="a1"/>
<w:link w:val="a21"/> <w:link w:val="a21"/>
<w:semiHidden/>
<w:pPr> <w:pPr>
<w:keepNext/> <w:keepNext/>
<w:keepLines/> <w:keepLines/>
...@@ -621,7 +636,6 @@ ...@@ -621,7 +636,6 @@
<w:basedOn w:val="a1"/> <w:basedOn w:val="a1"/>
<w:next w:val="a1"/> <w:next w:val="a1"/>
<w:link w:val="a22"/> <w:link w:val="a22"/>
<w:semiHidden/>
<w:pPr> <w:pPr>
<w:keepNext/> <w:keepNext/>
<w:keepLines/> <w:keepLines/>
...@@ -643,7 +657,6 @@ ...@@ -643,7 +657,6 @@
<w:basedOn w:val="a1"/> <w:basedOn w:val="a1"/>
<w:next w:val="a1"/> <w:next w:val="a1"/>
<w:link w:val="a23"/> <w:link w:val="a23"/>
<w:semiHidden/>
<w:pPr> <w:pPr>
<w:keepNext/> <w:keepNext/>
<w:keepLines/> <w:keepLines/>
...@@ -664,7 +677,6 @@ ...@@ -664,7 +677,6 @@
<w:basedOn w:val="a1"/> <w:basedOn w:val="a1"/>
<w:next w:val="a1"/> <w:next w:val="a1"/>
<w:link w:val="a24"/> <w:link w:val="a24"/>
<w:semiHidden/>
<w:pPr> <w:pPr>
<w:keepNext/> <w:keepNext/>
<w:keepLines/> <w:keepLines/>
...@@ -685,7 +697,6 @@ ...@@ -685,7 +697,6 @@
<w:basedOn w:val="a1"/> <w:basedOn w:val="a1"/>
<w:next w:val="a1"/> <w:next w:val="a1"/>
<w:link w:val="a25"/> <w:link w:val="a25"/>
<w:semiHidden/>
<w:pPr> <w:pPr>
<w:keepNext/> <w:keepNext/>
<w:keepLines/> <w:keepLines/>
...@@ -702,7 +713,6 @@ ...@@ -702,7 +713,6 @@
</w:style> </w:style>
<w:style w:type="character" w:styleId="a16" w:default="on"> <w:style w:type="character" w:styleId="a16" w:default="on">
<w:name w:val="Default Paragraph Font"/> <w:name w:val="Default Paragraph Font"/>
<w:semiHidden/>
</w:style> </w:style>
<w:style w:type="table" w:styleId="a14" w:default="on"> <w:style w:type="table" w:styleId="a14" w:default="on">
<w:name w:val="Normal Table"/> <w:name w:val="Normal Table"/>
...@@ -738,10 +748,6 @@ ...@@ -738,10 +748,6 @@
<w:basedOn w:val="a1"/> <w:basedOn w:val="a1"/>
<w:link w:val="a30"/> <w:link w:val="a30"/>
<w:pPr> <w:pPr>
<w:tabs>
<w:tab w:val="center" w:pos="4153"/>
<w:tab w:val="right" w:pos="8306"/>
</w:tabs>
<w:snapToGrid w:val="off"/> <w:snapToGrid w:val="off"/>
<w:jc w:val="left"/> <w:jc w:val="left"/>
</w:pPr> </w:pPr>
...@@ -758,10 +764,6 @@ ...@@ -758,10 +764,6 @@
<w:pBdr> <w:pBdr>
<w:bottom w:val="single" w:sz="6" wx:bdrwidth="15" w:space="1" w:color="auto"/> <w:bottom w:val="single" w:sz="6" wx:bdrwidth="15" w:space="1" w:color="auto"/>
</w:pBdr> </w:pBdr>
<w:tabs>
<w:tab w:val="center" w:pos="4153"/>
<w:tab w:val="right" w:pos="8306"/>
</w:tabs>
<w:snapToGrid w:val="off"/> <w:snapToGrid w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
</w:pPr> </w:pPr>
...@@ -779,8 +781,7 @@ ...@@ -779,8 +781,7 @@
<w:jc w:val="both"/> <w:jc w:val="both"/>
</w:pPr> </w:pPr>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="Times New Roman" w:h-ansi="Times New Roman" w:fareast="宋体" w:cs="Times New Roman" <w:rFonts w:ascii="Times New Roman" w:h-ansi="Times New Roman" w:fareast="宋体" w:cs="Times New Roman" w:hint="default"/>
w:hint="default"/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz-cs w:val="20"/> <w:sz-cs w:val="20"/>
</w:rPr> </w:rPr>
...@@ -793,6 +794,12 @@ ...@@ -793,6 +794,12 @@
<w:insideH w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/> <w:insideH w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
<w:insideV w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/> <w:insideV w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
</w:tblBorders> </w:tblBorders>
<w:tblCellMar>
<w:top w:w="0" w:type="dxa"/>
<w:left w:w="108" w:type="dxa"/>
<w:bottom w:w="0" w:type="dxa"/>
<w:right w:w="108" w:type="dxa"/>
</w:tblCellMar>
</w:tblPr> </w:tblPr>
</w:style> </w:style>
<w:style w:type="character" w:styleId="a17"> <w:style w:type="character" w:styleId="a17">
...@@ -831,7 +838,6 @@ ...@@ -831,7 +838,6 @@
<w:name w:val="标题 4 字符"/> <w:name w:val="标题 4 字符"/>
<w:basedOn w:val="a16"/> <w:basedOn w:val="a16"/>
<w:link w:val="5"/> <w:link w:val="5"/>
<w:semiHidden/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:fareast="黑体" w:hint="default"/> <w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:fareast="黑体" w:hint="default"/>
<w:b/> <w:b/>
...@@ -843,7 +849,6 @@ ...@@ -843,7 +849,6 @@
<w:name w:val="标题 5 字符"/> <w:name w:val="标题 5 字符"/>
<w:basedOn w:val="a16"/> <w:basedOn w:val="a16"/>
<w:link w:val="6"/> <w:link w:val="6"/>
<w:semiHidden/>
<w:rPr> <w:rPr>
<w:b/> <w:b/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
...@@ -854,7 +859,6 @@ ...@@ -854,7 +859,6 @@
<w:name w:val="标题 6 字符"/> <w:name w:val="标题 6 字符"/>
<w:basedOn w:val="a16"/> <w:basedOn w:val="a16"/>
<w:link w:val="7"/> <w:link w:val="7"/>
<w:semiHidden/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:fareast="黑体" w:hint="default"/> <w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:fareast="黑体" w:hint="default"/>
<w:b/> <w:b/>
...@@ -866,7 +870,6 @@ ...@@ -866,7 +870,6 @@
<w:name w:val="标题 7 字符"/> <w:name w:val="标题 7 字符"/>
<w:basedOn w:val="a16"/> <w:basedOn w:val="a16"/>
<w:link w:val="8"/> <w:link w:val="8"/>
<w:semiHidden/>
<w:rPr> <w:rPr>
<w:b/> <w:b/>
<w:sz w:val="24"/> <w:sz w:val="24"/>
...@@ -877,7 +880,6 @@ ...@@ -877,7 +880,6 @@
<w:name w:val="标题 8 字符"/> <w:name w:val="标题 8 字符"/>
<w:basedOn w:val="a16"/> <w:basedOn w:val="a16"/>
<w:link w:val="9"/> <w:link w:val="9"/>
<w:semiHidden/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:fareast="黑体" w:hint="default"/> <w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:fareast="黑体" w:hint="default"/>
<w:sz w:val="24"/> <w:sz w:val="24"/>
...@@ -888,7 +890,6 @@ ...@@ -888,7 +890,6 @@
<w:name w:val="标题 9 字符"/> <w:name w:val="标题 9 字符"/>
<w:basedOn w:val="a16"/> <w:basedOn w:val="a16"/>
<w:link w:val="10"/> <w:link w:val="10"/>
<w:semiHidden/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:fareast="黑体" w:hint="default"/> <w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:fareast="黑体" w:hint="default"/>
<w:sz-cs w:val="24"/> <w:sz-cs w:val="24"/>
...@@ -919,8 +920,7 @@ ...@@ -919,8 +920,7 @@
<w:jc w:val="center"/> <w:jc w:val="center"/>
</w:pPr> </w:pPr>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="Times New Roman" w:h-ansi="Times New Roman" w:fareast="宋体" w:cs="Times New Roman" <w:rFonts w:ascii="Times New Roman" w:h-ansi="Times New Roman" w:fareast="宋体" w:cs="Times New Roman" w:hint="default"/>
w:hint="default"/>
<w:sz w:val="44"/> <w:sz w:val="44"/>
<w:sz-cs w:val="44"/> <w:sz-cs w:val="44"/>
</w:rPr> </w:rPr>
...@@ -952,7 +952,7 @@ ...@@ -952,7 +952,7 @@
</w:bgPict> </w:bgPict>
<w:docPr> <w:docPr>
<w:view w:val="print"/> <w:view w:val="print"/>
<w:zoom w:percent="110"/> <w:zoom w:percent="86"/>
<w:characterSpacingControl w:val="CompressPunctuation"/> <w:characterSpacingControl w:val="CompressPunctuation"/>
<w:documentProtection w:enforcement="off"/> <w:documentProtection w:enforcement="off"/>
<w:punctuationKerning/> <w:punctuationKerning/>
...@@ -1023,16 +1023,6 @@ ...@@ -1023,16 +1023,6 @@
</w:rPr> </w:rPr>
<w:t> ${station}</w:t> <w:t> ${station}</w:t>
</w:r> </w:r>
<#-- <w:r>-->
<#-- <w:rPr>-->
<#-- <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="fareast"/>-->
<#-- <w:b/>-->
<#-- <w:color w:val="000000"/>-->
<#-- <w:sz w:val="36"/>-->
<#-- <w:sz-cs w:val="36"/>-->
<#-- </w:rPr>-->
<#-- <w:t></w:t>-->
<#-- </w:r>-->
<w:r> <w:r>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/>
...@@ -1064,59 +1054,6 @@ ...@@ -1064,59 +1054,6 @@
</w:rPr> </w:rPr>
<w:t>${time}</w:t> <w:t>${time}</w:t>
</w:r> </w:r>
<#-- <w:r>-->
<#-- <w:rPr>-->
<#-- <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/>-->
<#-- <w:b/>-->
<#-- <w:color w:val="000000"/>-->
<#-- <w:sz w:val="36"/>-->
<#-- <w:sz-cs w:val="36"/>-->
<#-- <w:u w:val="single"/>-->
<#-- </w:rPr>-->
<#-- <w:t>022</w:t>-->
<#-- </w:r>-->
<#-- <w:r>-->
<#-- <w:rPr>-->
<#-- <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="fareast"/>-->
<#-- <w:b/>-->
<#-- <w:color w:val="000000"/>-->
<#-- <w:sz w:val="36"/>-->
<#-- <w:sz-cs w:val="36"/>-->
<#-- </w:rPr>-->
<#-- <w:t></w:t>-->
<#-- </w:r>-->
<#-- <w:r>-->
<#-- <w:rPr>-->
<#-- <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="fareast"/>-->
<#-- <w:b/>-->
<#-- <w:color w:val="000000"/>-->
<#-- <w:sz w:val="36"/>-->
<#-- <w:sz-cs w:val="36"/>-->
<#-- <w:u w:val="single"/>-->
<#-- </w:rPr>-->
<#-- <w:t>5</w:t>-->
<#-- </w:r>-->
<#-- <w:r>-->
<#-- <w:rPr>-->
<#-- <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/>-->
<#-- <w:b/>-->
<#-- <w:color w:val="000000"/>-->
<#-- <w:sz w:val="36"/>-->
<#-- <w:sz-cs w:val="36"/>-->
<#-- <w:u w:val="single"/>-->
<#-- </w:rPr>-->
<#-- <w:t>-6</w:t>-->
<#-- </w:r>-->
<#-- <w:r>-->
<#-- <w:rPr>-->
<#-- <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="fareast"/>-->
<#-- <w:b/>-->
<#-- <w:color w:val="000000"/>-->
<#-- <w:sz w:val="36"/>-->
<#-- <w:sz-cs w:val="36"/>-->
<#-- </w:rPr>-->
<#-- <w:t></w:t>-->
<#-- </w:r>-->
</w:p> </w:p>
<w:p> <w:p>
<w:pPr> <w:pPr>
...@@ -1134,12 +1071,13 @@ ...@@ -1134,12 +1071,13 @@
<w:ind w:left="432"/> <w:ind w:left="432"/>
</w:pPr> </w:pPr>
</w:p> </w:p>
<#if datalist?exists> <#if datalist?exists>
<#list datalist as data> <#list datalist as data>
<w:tbl> <w:tbl>
<w:tblPr> <w:tblPr>
<w:tblStyle w:val="a15"/> <w:tblStyle w:val="a15"/>
<w:tblW w:w="5180" w:type="pct"/> <w:tblW w:w="5178" w:type="pct"/>
<w:tblInd w:w="0" w:type="dxa"/> <w:tblInd w:w="0" w:type="dxa"/>
<w:tblBorders> <w:tblBorders>
<w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/> <w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="auto"/>
...@@ -1158,17 +1096,22 @@ ...@@ -1158,17 +1096,22 @@
</w:tblCellMar> </w:tblCellMar>
</w:tblPr> </w:tblPr>
<w:tblGrid> <w:tblGrid>
<w:gridCol w:w="1471"/> <w:gridCol w:w="1470"/>
<w:gridCol w:w="1575"/> <w:gridCol w:w="1122"/>
<w:gridCol w:w="1530"/> <w:gridCol w:w="455"/>
<w:gridCol w:w="1515"/> <w:gridCol w:w="1529"/>
<w:gridCol w:w="1251"/> <w:gridCol w:w="1045"/>
<w:gridCol w:w="219"/> <w:gridCol w:w="469"/>
<w:gridCol w:w="1515"/> <w:gridCol w:w="1249"/>
<w:gridCol w:w="1410"/> <w:gridCol w:w="221"/>
<w:gridCol w:w="582"/>
<w:gridCol w:w="932"/>
<w:gridCol w:w="1248"/>
<w:gridCol w:w="163"/>
<w:gridCol w:w="1455"/> <w:gridCol w:w="1455"/>
<w:gridCol w:w="1365"/> <w:gridCol w:w="681"/>
<w:gridCol w:w="1379"/> <w:gridCol w:w="682"/>
<w:gridCol w:w="1378"/>
</w:tblGrid> </w:tblGrid>
<w:tr> <w:tr>
<w:tblPrEx> <w:tblPrEx>
...@@ -1193,7 +1136,7 @@ ...@@ -1193,7 +1136,7 @@
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="5000" w:type="pct"/> <w:tcW w:w="5000" w:type="pct"/>
<w:gridSpan w:val="11"/> <w:gridSpan w:val="16"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -1203,11 +1146,11 @@ ...@@ -1203,11 +1146,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="32"/> <w:sz w:val="32"/>
<w:sz-cs w:val="32"/> <w:sz-cs w:val="32"/>
...@@ -1218,7 +1161,6 @@ ...@@ -1218,7 +1161,6 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="32"/> <w:sz w:val="32"/>
<w:sz-cs w:val="32"/> <w:sz-cs w:val="32"/>
...@@ -1261,11 +1203,11 @@ ...@@ -1261,11 +1203,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1276,7 +1218,6 @@ ...@@ -1276,7 +1218,6 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1288,7 +1229,8 @@ ...@@ -1288,7 +1229,8 @@
</w:tc> </w:tc>
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="536" w:type="pct"/> <w:tcW w:w="537" w:type="pct"/>
<w:gridSpan w:val="2"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -1298,11 +1240,11 @@ ...@@ -1298,11 +1240,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1313,7 +1255,6 @@ ...@@ -1313,7 +1255,6 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1335,11 +1276,11 @@ ...@@ -1335,11 +1276,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1350,7 +1291,6 @@ ...@@ -1350,7 +1291,6 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1363,6 +1303,7 @@ ...@@ -1363,6 +1303,7 @@
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="515" w:type="pct"/> <w:tcW w:w="515" w:type="pct"/>
<w:gridSpan w:val="2"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -1372,11 +1313,11 @@ ...@@ -1372,11 +1313,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1387,7 +1328,6 @@ ...@@ -1387,7 +1328,6 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1410,11 +1350,11 @@ ...@@ -1410,11 +1350,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1425,7 +1365,6 @@ ...@@ -1425,7 +1365,6 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1438,6 +1377,7 @@ ...@@ -1438,6 +1377,7 @@
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="515" w:type="pct"/> <w:tcW w:w="515" w:type="pct"/>
<w:gridSpan w:val="2"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -1447,11 +1387,11 @@ ...@@ -1447,11 +1387,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1462,7 +1402,6 @@ ...@@ -1462,7 +1402,6 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1475,6 +1414,7 @@ ...@@ -1475,6 +1414,7 @@
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="480" w:type="pct"/> <w:tcW w:w="480" w:type="pct"/>
<w:gridSpan w:val="2"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -1484,11 +1424,11 @@ ...@@ -1484,11 +1424,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1499,7 +1439,6 @@ ...@@ -1499,7 +1439,6 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1521,11 +1460,11 @@ ...@@ -1521,11 +1460,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1536,7 +1475,6 @@ ...@@ -1536,7 +1475,6 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1549,6 +1487,7 @@ ...@@ -1549,6 +1487,7 @@
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="464" w:type="pct"/> <w:tcW w:w="464" w:type="pct"/>
<w:gridSpan w:val="2"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -1558,11 +1497,11 @@ ...@@ -1558,11 +1497,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1573,7 +1512,6 @@ ...@@ -1573,7 +1512,6 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1595,11 +1533,11 @@ ...@@ -1595,11 +1533,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1610,7 +1548,6 @@ ...@@ -1610,7 +1548,6 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -1656,6 +1593,8 @@ ...@@ -1656,6 +1593,8 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="both"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
...@@ -1678,7 +1617,8 @@ ...@@ -1678,7 +1617,8 @@
</w:tc> </w:tc>
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="536" w:type="pct"/> <w:tcW w:w="537" w:type="pct"/>
<w:gridSpan w:val="2"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -1688,6 +1628,8 @@ ...@@ -1688,6 +1628,8 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="both"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
...@@ -1720,6 +1662,8 @@ ...@@ -1720,6 +1662,8 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="both"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
...@@ -1743,6 +1687,7 @@ ...@@ -1743,6 +1687,7 @@
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="515" w:type="pct"/> <w:tcW w:w="515" w:type="pct"/>
<w:gridSpan w:val="2"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -1752,6 +1697,8 @@ ...@@ -1752,6 +1697,8 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="both"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
...@@ -1785,6 +1732,8 @@ ...@@ -1785,6 +1732,8 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="both"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
...@@ -1808,6 +1757,7 @@ ...@@ -1808,6 +1757,7 @@
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="515" w:type="pct"/> <w:tcW w:w="515" w:type="pct"/>
<w:gridSpan w:val="2"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -1817,6 +1767,8 @@ ...@@ -1817,6 +1767,8 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="both"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
...@@ -1840,6 +1792,7 @@ ...@@ -1840,6 +1792,7 @@
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="480" w:type="pct"/> <w:tcW w:w="480" w:type="pct"/>
<w:gridSpan w:val="2"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -1849,6 +1802,8 @@ ...@@ -1849,6 +1802,8 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="both"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
...@@ -1881,6 +1836,8 @@ ...@@ -1881,6 +1836,8 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="both"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
...@@ -1904,6 +1861,7 @@ ...@@ -1904,6 +1861,7 @@
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="464" w:type="pct"/> <w:tcW w:w="464" w:type="pct"/>
<w:gridSpan w:val="2"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -1913,6 +1871,8 @@ ...@@ -1913,6 +1871,8 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="both"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
...@@ -1945,6 +1905,8 @@ ...@@ -1945,6 +1905,8 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="both"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
...@@ -1991,7 +1953,7 @@ ...@@ -1991,7 +1953,7 @@
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="5000" w:type="pct"/> <w:tcW w:w="5000" w:type="pct"/>
<w:gridSpan w:val="11"/> <w:gridSpan w:val="16"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -2001,6 +1963,7 @@ ...@@ -2001,6 +1963,7 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/>
...@@ -2046,7 +2009,7 @@ ...@@ -2046,7 +2009,7 @@
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="2499" w:type="pct"/> <w:tcW w:w="2499" w:type="pct"/>
<w:gridSpan w:val="5"/> <w:gridSpan w:val="7"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -2056,6 +2019,7 @@ ...@@ -2056,6 +2019,7 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="fareast"/>
...@@ -2066,15 +2030,18 @@ ...@@ -2066,15 +2030,18 @@
</w:rPr> </w:rPr>
</w:pPr> </w:pPr>
<w:r> <w:r>
<w:rPr>
<w:rFonts w:ascii="Times New Roman" w:h-ansi="Times New Roman" w:fareast="宋体" w:cs="Times New Roman" w:hint="default"/>
<w:kern w:val="0"/>
<w:sz-cs w:val="20"/>
</w:rPr>
<w:pict> <w:pict>
<w:binData w:name="wordml://1.png">${data.bing1}</w:binData> <w:binData w:name="wordml://1.png">${data.bing1}</w:binData>
<v:shape id="图片 1" o:spid="_x0000_s1026" o:spt="75" alt="" type="#_x0000_t75" <v:shape id="_x0000_s1026" o:spt="75" alt="" type="#_x0000_t75" style="height:286.55pt;width:332.05pt;" filled="f" o:preferrelative="t" stroked="f" coordsize="21600,21600">
style="height:286.55pt;width:332.05pt;" filled="f" o:preferrelative="t"
stroked="f" coordsize="21600,21600">
<v:path/> <v:path/>
<v:fill on="f" focussize="0,0"/> <v:fill on="f" focussize="0,0"/>
<v:stroke on="f"/> <v:stroke on="f"/>
<v:imagedata src="wordml://1.png" o:title=""/> <v:imagedata src="wordml://1.png" o:title="wordml://1.png"/>
<o:lock v:ext="edit" aspectratio="t"/> <o:lock v:ext="edit" aspectratio="t"/>
<w10:wrap type="none"/> <w10:wrap type="none"/>
<w10:anchorlock/> <w10:anchorlock/>
...@@ -2086,7 +2053,7 @@ ...@@ -2086,7 +2053,7 @@
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="2500" w:type="pct"/> <w:tcW w:w="2500" w:type="pct"/>
<w:gridSpan w:val="6"/> <w:gridSpan w:val="9"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -2096,6 +2063,7 @@ ...@@ -2096,6 +2063,7 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="fareast"/>
...@@ -2106,15 +2074,18 @@ ...@@ -2106,15 +2074,18 @@
</w:rPr> </w:rPr>
</w:pPr> </w:pPr>
<w:r> <w:r>
<w:rPr>
<w:rFonts w:ascii="Times New Roman" w:h-ansi="Times New Roman" w:fareast="宋体" w:cs="Times New Roman" w:hint="default"/>
<w:kern w:val="0"/>
<w:sz-cs w:val="20"/>
</w:rPr>
<w:pict> <w:pict>
<w:binData w:name="wordml://2.png">${data.bing2}</w:binData> <w:binData w:name="wordml://2.png">${data.bing2}</w:binData>
<v:shape id="图片 3" o:spid="_x0000_s1027" o:spt="75" alt="" type="#_x0000_t75" <v:shape id="_x0000_s1027" o:spt="75" alt="" type="#_x0000_t75" style="height:284.7pt;width:333.4pt;" filled="f" o:preferrelative="t" stroked="f" coordsize="21600,21600">
style="height:284.7pt;width:333.4pt;" filled="f" o:preferrelative="t"
stroked="f" coordsize="21600,21600">
<v:path/> <v:path/>
<v:fill on="f" focussize="0,0"/> <v:fill on="f" focussize="0,0"/>
<v:stroke on="f"/> <v:stroke on="f"/>
<v:imagedata src="wordml://2.png" o:title=""/> <v:imagedata src="wordml://2.png" o:title="wordml://2.png"/>
<o:lock v:ext="edit" aspectratio="t"/> <o:lock v:ext="edit" aspectratio="t"/>
<w10:wrap type="none"/> <w10:wrap type="none"/>
<w10:anchorlock/> <w10:anchorlock/>
...@@ -2147,7 +2118,7 @@ ...@@ -2147,7 +2118,7 @@
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="5000" w:type="pct"/> <w:tcW w:w="5000" w:type="pct"/>
<w:gridSpan w:val="11"/> <w:gridSpan w:val="16"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -2157,11 +2128,11 @@ ...@@ -2157,11 +2128,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2169,15 +2140,18 @@ ...@@ -2169,15 +2140,18 @@
</w:rPr> </w:rPr>
</w:pPr> </w:pPr>
<w:r> <w:r>
<w:rPr>
<w:rFonts w:ascii="Times New Roman" w:h-ansi="Times New Roman" w:fareast="宋体" w:cs="Times New Roman" w:hint="default"/>
<w:kern w:val="0"/>
<w:sz-cs w:val="20"/>
</w:rPr>
<w:pict> <w:pict>
<w:binData w:name="wordml://3.png">${data.bing3}</w:binData> <w:binData w:name="wordml://3.png">${data.bing3}</w:binData>
<v:shape id="图片 4" o:spid="_x0000_s1028" o:spt="75" alt="" type="#_x0000_t75" <v:shape id="_x0000_s1028" o:spt="75" alt="" type="#_x0000_t75" style="height:349.25pt;width:646.1pt;" filled="f" o:preferrelative="t" stroked="f" coordsize="21600,21600">
style="height:349.25pt;width:646.1pt;" filled="f" o:preferrelative="t"
stroked="f" coordsize="21600,21600">
<v:path/> <v:path/>
<v:fill on="f" focussize="0,0"/> <v:fill on="f" focussize="0,0"/>
<v:stroke on="f"/> <v:stroke on="f"/>
<v:imagedata src="wordml://3.png" o:title=""/> <v:imagedata src="wordml://3.png" o:title="wordml://3.png"/>
<o:lock v:ext="edit" aspectratio="t"/> <o:lock v:ext="edit" aspectratio="t"/>
<w10:wrap type="none"/> <w10:wrap type="none"/>
<w10:anchorlock/> <w10:anchorlock/>
...@@ -2214,9 +2188,10 @@ ...@@ -2214,9 +2188,10 @@
</w:tblPr> </w:tblPr>
<w:tblGrid> <w:tblGrid>
<w:gridCol w:w="2493"/> <w:gridCol w:w="2493"/>
<w:gridCol w:w="3491"/> <w:gridCol w:w="2912"/>
<w:gridCol w:w="3400"/> <w:gridCol w:w="2424"/>
<w:gridCol w:w="3641"/> <w:gridCol w:w="2634"/>
<w:gridCol w:w="2562"/>
<w:gridCol w:w="1098"/> <w:gridCol w:w="1098"/>
</w:tblGrid> </w:tblGrid>
<w:tr> <w:tr>
...@@ -2242,7 +2217,7 @@ ...@@ -2242,7 +2217,7 @@
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="5000" w:type="pct"/> <w:tcW w:w="5000" w:type="pct"/>
<w:gridSpan w:val="5"/> <w:gridSpan w:val="6"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -2252,11 +2227,11 @@ ...@@ -2252,11 +2227,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="32"/> <w:sz w:val="32"/>
<w:sz-cs w:val="32"/> <w:sz-cs w:val="32"/>
...@@ -2266,7 +2241,6 @@ ...@@ -2266,7 +2241,6 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:color w:val="FFFFFF"/> <w:color w:val="FFFFFF"/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
...@@ -2299,7 +2273,7 @@ ...@@ -2299,7 +2273,7 @@
</w:trPr> </w:trPr>
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="802" w:type="pct"/> <w:tcW w:w="882" w:type="pct"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -2309,11 +2283,11 @@ ...@@ -2309,11 +2283,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2324,7 +2298,6 @@ ...@@ -2324,7 +2298,6 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2336,7 +2309,7 @@ ...@@ -2336,7 +2309,7 @@
</w:tc> </w:tc>
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="1235" w:type="pct"/> <w:tcW w:w="1030" w:type="pct"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -2346,11 +2319,11 @@ ...@@ -2346,11 +2319,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2360,18 +2333,18 @@ ...@@ -2360,18 +2333,18 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr> </w:rPr>
<w:t>发生地点</w:t> <w:t>告警描述</w:t>
</w:r> </w:r>
</w:p> </w:p>
</w:tc> </w:tc>
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="1284" w:type="pct"/> <w:tcW w:w="858" w:type="pct"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -2380,11 +2353,11 @@ ...@@ -2380,11 +2353,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2395,19 +2368,52 @@ ...@@ -2395,19 +2368,52 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/> <w:kern w:val="0"/>
<w:sz w:val="28"/>
<w:sz-cs w:val="28"/>
</w:rPr>
<w:t>发生地点</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="932" w:type="pct"/>
<w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
</w:tcBorders>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
</w:tcPr>
<w:p>
<w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/>
<w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/>
<w:kern w:val="0"/>
<w:sz w:val="28"/>
<w:sz-cs w:val="28"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/> <w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr> </w:rPr>
<w:t>告警时间</w:t> <w:t>发生告警时间</w:t>
</w:r> </w:r>
</w:p> </w:p>
</w:tc> </w:tc>
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="1289" w:type="pct"/> <w:tcW w:w="907" w:type="pct"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -2416,11 +2422,11 @@ ...@@ -2416,11 +2422,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2431,13 +2437,12 @@ ...@@ -2431,13 +2437,12 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/> <w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr> </w:rPr>
<w:t>告警描述</w:t> <w:t>最新告警时间</w:t>
</w:r> </w:r>
</w:p> </w:p>
</w:tc> </w:tc>
...@@ -2452,11 +2457,11 @@ ...@@ -2452,11 +2457,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2467,7 +2472,6 @@ ...@@ -2467,7 +2472,6 @@
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/> <w:b/>
<w:b-cs/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2503,7 +2507,7 @@ ...@@ -2503,7 +2507,7 @@
</w:trPr> </w:trPr>
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="802" w:type="pct"/> <w:tcW w:w="882" w:type="pct"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -2513,8 +2517,11 @@ ...@@ -2513,8 +2517,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2523,7 +2530,8 @@ ...@@ -2523,7 +2530,8 @@
</w:pPr> </w:pPr>
<w:r> <w:r>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2535,7 +2543,7 @@ ...@@ -2535,7 +2543,7 @@
</w:tc> </w:tc>
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="1235" w:type="pct"/> <w:tcW w:w="1030" w:type="pct"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
...@@ -2545,8 +2553,11 @@ ...@@ -2545,8 +2553,11 @@
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2555,7 +2566,43 @@ ...@@ -2555,7 +2566,43 @@
</w:pPr> </w:pPr>
<w:r> <w:r>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/>
<w:kern w:val="0"/>
<w:sz w:val="28"/>
<w:sz-cs w:val="28"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
<w:t>${(aal.alamContent)!''}</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="858" w:type="pct"/>
<w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
</w:tcBorders>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/>
</w:tcPr>
<w:p>
<w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/>
<w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/>
<w:kern w:val="0"/>
<w:sz w:val="28"/>
<w:sz-cs w:val="28"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2567,21 +2614,20 @@ ...@@ -2567,21 +2614,20 @@
</w:tc> </w:tc>
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="1284" w:type="pct"/> <w:tcW w:w="932" w:type="pct"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
</w:tcBorders> </w:tcBorders>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/> <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="center"/>
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:tabs> <w:widowControl w:val="off"/>
<w:tab w:val="right" w:pos="2988"/> <w:jc w:val="center"/>
</w:tabs>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2590,7 +2636,8 @@ ...@@ -2590,7 +2636,8 @@
</w:pPr> </w:pPr>
<w:r> <w:r>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2602,18 +2649,20 @@ ...@@ -2602,18 +2649,20 @@
</w:tc> </w:tc>
<w:tc> <w:tc>
<w:tcPr> <w:tcPr>
<w:tcW w:w="1289" w:type="pct"/> <w:tcW w:w="907" w:type="pct"/>
<w:tcBorders> <w:tcBorders>
<w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:left w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
</w:tcBorders> </w:tcBorders>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/> <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="center"/>
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2622,13 +2671,14 @@ ...@@ -2622,13 +2671,14 @@
</w:pPr> </w:pPr>
<w:r> <w:r>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/> <w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr> </w:rPr>
<w:t>${(aal.alamContent)!''}</w:t> <w:t>${(aal.updateDate)!''}</w:t>
</w:r> </w:r>
</w:p> </w:p>
</w:tc> </w:tc>
...@@ -2640,13 +2690,14 @@ ...@@ -2640,13 +2690,14 @@
<w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/> <w:right w:val="double" w:sz="4" wx:bdrwidth="30" w:space="0" w:color="auto"/>
</w:tcBorders> </w:tcBorders>
<w:shd w:val="clear" w:color="auto" w:fill="auto"/> <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
<w:vAlign w:val="center"/>
</w:tcPr> </w:tcPr>
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:widowControl w:val="off"/>
<w:jc w:val="center"/> <w:jc w:val="center"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="default"/>
<w:b/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2655,7 +2706,8 @@ ...@@ -2655,7 +2706,8 @@
</w:pPr> </w:pPr>
<w:r> <w:r>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="fareast"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:cs="仿宋" w:hint="fareast"/>
<w:b/>
<w:kern w:val="0"/> <w:kern w:val="0"/>
<w:sz w:val="28"/> <w:sz w:val="28"/>
<w:sz-cs w:val="28"/> <w:sz-cs w:val="28"/>
...@@ -2680,21 +2732,15 @@ ...@@ -2680,21 +2732,15 @@
</w:rPr> </w:rPr>
</w:pPr> </w:pPr>
</w:p> </w:p>
<w:p>
<w:pPr>
<w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:cs="仿宋" w:hint="default"/>
<w:kern w:val="0"/>
<w:sz w:val="28"/>
<w:sz-cs w:val="28"/>
</w:rPr>
</w:pPr>
</w:p>
<w:sectPr> <w:sectPr>
<w:hdr w:type="odd"> <w:hdr w:type="odd">
<w:p> <w:p>
<w:pPr> <w:pPr>
<w:pStyle w:val="a13"/> <w:pStyle w:val="a13"/>
<w:tabs>
<w:tab w:val="center" w:pos="4153"/>
<w:tab w:val="right" w:pos="8306"/>
</w:tabs>
<w:jc w:val="left"/> <w:jc w:val="left"/>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:hint="default"/> <w:rFonts w:ascii="仿宋" w:h-ansi="仿宋" w:fareast="仿宋" w:hint="default"/>
...@@ -2704,8 +2750,7 @@ ...@@ -2704,8 +2750,7 @@
</w:pPr> </w:pPr>
<w:r> <w:r>
<w:pict> <w:pict>
<w:binData w:name="wordml://4.png"> <w:binData w:name="wordml://4.png">iVBORw0KGgoAAAANSUhEUgAAAXIAAAB5CAIAAACr9j0pAAAAAXNSR0IArs4c6QAAmwNJREFUeF7t
iVBORw0KGgoAAAANSUhEUgAAAXIAAAB5CAIAAACr9j0pAAAAAXNSR0IArs4c6QAAmwNJREFUeF7t
nQVAG9u2hknQOqXu7u7u7u7u7u7uPXV3d3d3d4NSqtQohVIq0NICed+enQwhBAg97Tn33sfc3J6Q nQVAG9u2hknQOqXu7u7u7u7u7u7uPXV3d3d3d4NSqtQohVIq0NICed+enQwhBAg97Tn33sfc3J6Q
TGb2bFl7yb/+pdHpdFbRR3QPRPdAdA/8vh7Q/r5LRV8pugeieyC6B0QPRIuV6HkQ3QPRPfCbe0Dz TGb2bFl7yb/+pdHpdFbRR3QPRPdAdA/8vh7Q/r5LRV8pugeieyC6B0QPRIuV6HkQ3QPRPfCbe0Dz
X2QELThyYNnxw/f+WkgfBOt0n/397W1tY9jZme2SG08e91y5yN7OrkD6jPnTZcyULHmiePGcYsdx X2QELThyYNnxw/f+WkgfBOt0n/397W1tY9jZme2SG08e91y5yN7OrkD6jPnTZcyULHmiePGcYsdx
...@@ -3404,27 +3449,17 @@ ...@@ -3404,27 +3449,17 @@
SyqnhLCWQh9pko75C22I/kl0D0T3QKQ98N8kViJ9mOgTonsgugf+E3rgP8tl+5/QI9FtiO6B6B74 SyqnhLCWQh9pko75C22I/kl0D0T3QKQ98N8kViJ9mOgTonsgugf+E3rgP8tl+5/QI9FtiO6B6B74
mz3wf4zq+4qrCS2SAAAAAElFTkSuQmCC mz3wf4zq+4qrCS2SAAAAAElFTkSuQmCC
</w:binData> </w:binData>
<v:shape id="图片 1" o:spid="_x0000_s1029" o:spt="75" alt="" type="#_x0000_t75" <v:shape id="_x0000_s1029" o:spt="75" alt="" type="#_x0000_t75" style="height:42.35pt;width:129.6pt;" filled="f" o:preferrelative="t" stroked="f" coordsize="21600,21600">
style="height:42.35pt;width:129.6pt;" filled="f" o:preferrelative="t"
stroked="f" coordsize="21600,21600">
<v:path/> <v:path/>
<v:fill on="f" focussize="0,0"/> <v:fill on="f" focussize="0,0"/>
<v:stroke on="f"/> <v:stroke on="f"/>
<v:imagedata src="wordml://4.png" o:title=""/> <v:imagedata src="wordml://4.png" o:title="wordml://4.png"/>
<o:lock v:ext="edit" aspectratio="t"/> <o:lock v:ext="edit" aspectratio="t"/>
<w10:wrap type="none"/> <w10:wrap type="none"/>
<w10:anchorlock/> <w10:anchorlock/>
</v:shape> </v:shape>
</w:pict> </w:pict>
</w:r> </w:r>
<#-- <w:r>-->
<#-- <w:rPr>-->
<#-- <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:hint="fareast"/>-->
<#-- <w:sz w:val="24"/>-->
<#-- <w:sz-cs w:val="24"/>-->
<#-- </w:rPr>-->
<#-- <w:t></w:t>-->
<#-- </w:r>-->
<w:r> <w:r>
<w:rPr> <w:rPr>
<w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:hint="default"/> <w:rFonts w:ascii="黑体" w:h-ansi="黑体" w:fareast="黑体" w:hint="default"/>
...@@ -3445,10 +3480,10 @@ ...@@ -3445,10 +3480,10 @@
</w:p> </w:p>
</w:hdr> </w:hdr>
<w:pgSz w:w="16838" w:h="11906" w:orient="landscape"/> <w:pgSz w:w="16838" w:h="11906" w:orient="landscape"/>
<w:pgMar w:top="1800" w:right="1440" w:bottom="1800" w:left="1440" w:header="680" w:footer="850" <w:pgMar w:top="1800" w:right="1440" w:bottom="1800" w:left="1440" w:header="680" w:footer="850" w:gutter="0"/>
w:gutter="0"/>
<w:cols w:space="425"/> <w:cols w:space="425"/>
<w:docGrid w:type="lines" w:line-pitch="312"/> <w:docGrid w:type="lines" w:line-pitch="312"/>
</w:sectPr> </w:sectPr>
</wx:sect> </wx:sect>
</w:body></w:wordDocument> </w:body>
\ No newline at end of file </w:wordDocument>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
[
{
"kafkaTopic": "k1",
"mqTopic": "romaSite/data/transmit",
"data": {
"dataType": "condition.station_psr_id",
"value": "condition.station_psr_id",
"timeStamp": "condition.station_psr_id",
"quality": "condition.station_psr_id",
"scadaId": "condition.station_psr_id",
"key": "condition.station_psr_id",
"disCreate": "condition.station_psr_id",
"name": "condition.station_psr_id"
}
},
{
"kafkaTopic": "k2",
"mqTopic": "romaSite/data/eventAlarm",
"data": {
"timeStamp": "body.warns.time",
"warns": [
{
"eventTextL1": "body.warns.systemid",
"pointId": "body.warns.pointId",
"time": "body.warns.type",
"deviceId": "deviceId",
"eventstatus": "body.warns.content"
}
]
}
}
]
\ No newline at end of file
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
<if test="systemId != null and systemId !=''"> <if test="systemId != null and systemId !=''">
and FIND_IN_SET(#{systemId},a.system_ids) and FIND_IN_SET(#{systemId},a.system_ids)
</if> </if>
and date_format(a.`create_date`,'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')
UNION ALL UNION ALL
SELECT count(*) num, 'wfggj' as code from wl_equipment_specific_alarm_log a where a.`status` = 1 SELECT count(*) num, 'wfggj' as code from wl_equipment_specific_alarm_log a where a.`status` = 1
and a.biz_org_code like concat(#{bizOrgCode}, '%') and a.biz_org_code like concat(#{bizOrgCode}, '%')
...@@ -16,18 +17,21 @@ ...@@ -16,18 +17,21 @@
</if> </if>
UNION ALL UNION ALL
SELECT count(*) num, 'hzgj' as code from wl_equipment_specific_alarm_log a where a.`type` = 'FIREALARM' SELECT count(*) num, 'hzgj' as code from wl_equipment_specific_alarm_log a where a.`type` = 'FIREALARM'
and a.`status` = 1
and a.biz_org_code like concat(#{bizOrgCode}, '%') and a.biz_org_code like concat(#{bizOrgCode}, '%')
<if test="systemId != null and systemId !=''"> <if test="systemId != null and systemId !=''">
and FIND_IN_SET(#{systemId},a.system_ids) and FIND_IN_SET(#{systemId},a.system_ids)
</if> </if>
UNION ALL UNION ALL
SELECT count(*) num, 'gzgj' as code from wl_equipment_specific_alarm_log a where a.`type` = 'BREAKDOWN' SELECT count(*) num, 'gzgj' as code from wl_equipment_specific_alarm_log a where a.`type` = 'BREAKDOWN'
a.`status` = 1
and a.biz_org_code like concat(#{bizOrgCode}, '%') and a.biz_org_code like concat(#{bizOrgCode}, '%')
<if test="systemId != null and systemId !=''"> <if test="systemId != null and systemId !=''">
and FIND_IN_SET(#{systemId},a.system_ids) and FIND_IN_SET(#{systemId},a.system_ids)
</if> </if>
UNION ALL UNION ALL
SELECT count(*) num, 'pbgj' as code from wl_equipment_specific_alarm_log a where a.`type` = 'SHIELD' SELECT count(*) num, 'pbgj' as code from wl_equipment_specific_alarm_log a where a.`type` = 'SHIELD'
and a.`status` = 1
and a.biz_org_code like concat(#{bizOrgCode}, '%') and a.biz_org_code like concat(#{bizOrgCode}, '%')
<if test="systemId != null and systemId !=''"> <if test="systemId != null and systemId !=''">
and FIND_IN_SET(#{systemId},a.system_ids) and FIND_IN_SET(#{systemId},a.system_ids)
......
...@@ -445,6 +445,31 @@ ...@@ -445,6 +445,31 @@
<select id="selectGasExtinguishing" resultType="java.util.Map"> <select id="selectGasExtinguishing" resultType="java.util.Map">
SELECT SELECT
wes.id, wes.id,
(SELECT wei.emergency_level FROM wl_equipment_index wei LEFT JOIN wl_equipment_specific_index wesi ON wei.id = wesi.equipment_index_id WHERE wesi.equipment_specific_id = wes.id AND wesi.equipment_index_key = wes.realtime_iot_index_key) as level,
wes.code as code ,
wes.name,
IFNULL(wes.realtime_iot_index_name, '暂无信号') AS status,
CASE
WHEN (SELECT is_alarm FROM wl_equipment_specific_index wesi WHERE wesi.equipment_specific_id = wes.id AND wesi.equipment_index_key = wes.realtime_iot_index_key ) = 1 AND wes.realtime_iot_index_value = 'true' THEN 1
ELSE 0
END AS alarm
FROM
wl_equipment_specific wes
JOIN f_equipment_fire_equipment fire ON wes.id = fire.fire_equipment_id
WHERE
(
wes.equipment_code LIKE concat( '92044300', '%')
OR wes.equipment_code LIKE concat( '92040100', '%')
)
<if test="code != null and code!='' ">
AND fire.equipment_id = (SELECT id FROM f_equipment WHERE `code` = #{code})
</if>
AND wes.biz_org_code LIKE CONCAT( #{bizOrgCode}, '%')
</select>
<select id="selectPressureFlow" resultType="java.util.Map">
SELECT
wes.id,
'1' as type, '1' as type,
(SELECT wei.emergency_level FROM wl_equipment_index wei LEFT JOIN wl_equipment_specific_index wesi ON wei.id = wesi.equipment_index_id WHERE wesi.equipment_specific_id = wes.id AND wesi.equipment_index_key = wes.realtime_iot_index_key) as level, (SELECT wei.emergency_level FROM wl_equipment_index wei LEFT JOIN wl_equipment_specific_index wesi ON wei.id = wesi.equipment_index_id WHERE wesi.equipment_specific_id = wes.id AND wesi.equipment_index_key = wes.realtime_iot_index_key) as level,
wes.code as code , wes.code as code ,
...@@ -1420,6 +1445,7 @@ ...@@ -1420,6 +1445,7 @@
IF (wlesal.clean_time IS NOT NULL, '已消除', '未消除' ) cleanStatus, IF (wlesal.clean_time IS NOT NULL, '已消除', '未消除' ) cleanStatus,
wlesal.equipment_index_id AS fireEquipmentIndexId, wlesal.equipment_index_id AS fireEquipmentIndexId,
wlesal.equipment_specific_code AS code, wlesal.equipment_specific_code AS code,
fs.code AS systemCode,
wlesal.equipment_specific_index_key AS fireEquipmentSpecificIndexKey, wlesal.equipment_specific_index_key AS fireEquipmentSpecificIndexKey,
wlesal.equipment_specific_index_name AS fireEquipmentSpecificIndexName, wlesal.equipment_specific_index_name AS fireEquipmentSpecificIndexName,
wlesal.emergency_level_color AS emergencyLevelColor, wlesal.emergency_level_color AS emergencyLevelColor,
...@@ -1454,11 +1480,11 @@ ...@@ -1454,11 +1480,11 @@
<if test='createDate != null and createDate == "1"'> <if test='createDate != null and createDate == "1"'>
AND wlesal.create_date LIKE CONCAT( DATE_FORMAT( NOW( ), '%Y-%m-%d' ), '%' ) AND wlesal.create_date LIKE CONCAT( DATE_FORMAT( NOW( ), '%Y-%m-%d' ), '%' )
</if> </if>
<if test='startDate != null and startDate == ""'> <if test="startDate != null and startDate != ''">
AND wlesal.create_date >= DATE_FORMAT( ${startDate}, '%Y-%m-%d %H:%i:%s' ) AND wlesal.create_date >= DATE_FORMAT( #{startDate}, '%Y-%m-%d %H:%i:%s' )
</if> </if>
<if test='endDate != null and endDate == ""'> <if test="endDate != null and endDate != ''">
AND DATE_FORMAT( ${endDate}, '%Y-%m-%d %H:%i:%s' ) >= wlesal.create_date AND DATE_FORMAT( #{endDate}, '%Y-%m-%d %H:%i:%s' ) >= wlesal.create_date
</if> </if>
<if test="systemCode != null and systemCode != ''"> <if test="systemCode != null and systemCode != ''">
and fs.code = #{systemCode} and fs.code = #{systemCode}
...@@ -1534,10 +1560,10 @@ ...@@ -1534,10 +1560,10 @@
<if test='createDate != null and createDate == "1"'> <if test='createDate != null and createDate == "1"'>
AND wlesal.create_date LIKE CONCAT( DATE_FORMAT( NOW( ), '%Y-%m-%d' ), '%' ) AND wlesal.create_date LIKE CONCAT( DATE_FORMAT( NOW( ), '%Y-%m-%d' ), '%' )
</if> </if>
<if test='startDate != null and startDate == ""'> <if test="startDate != null and startDate != ''">
AND wlesal.create_date >= DATE_FORMAT( ${startDate}, '%Y-%m-%d %H:%i:%s' ) AND wlesal.create_date >= DATE_FORMAT( ${startDate}, '%Y-%m-%d %H:%i:%s' )
</if> </if>
<if test='endDate != null and endDate == ""'> <if test="endDate != null and endDate != ''">
AND DATE_FORMAT( ${endDate}, '%Y-%m-%d %H:%i:%s' ) >= wlesal.create_date AND DATE_FORMAT( ${endDate}, '%Y-%m-%d %H:%i:%s' ) >= wlesal.create_date
</if> </if>
<if test="systemCode != null and systemCode != ''"> <if test="systemCode != null and systemCode != ''">
......
...@@ -1602,18 +1602,19 @@ ...@@ -1602,18 +1602,19 @@
DELETE FROM wl_equipment_alarm_report_day WHERE equipment_specific_id = #{equipmentSpecificId}; DELETE FROM wl_equipment_alarm_report_day WHERE equipment_specific_id = #{equipmentSpecificId};
</delete> </delete>
<select id="getAlarmDetailByDate" resultType="Map"> <select id="getAlarmDetailByDate" resultType="com.yeejoin.equipmanage.dto.ReportAlarmDto">
SELECT SELECT
wlesa.equipment_specific_id, wlesa.equipment_specific_id AS equipmentSpecificId,
wlesa.equipment_specific_name AS specificName, wlesa.equipment_specific_name AS specificName,
wlesa.location AS location, wlesa.location AS location,
wlesa.equipment_specific_index_name, wlesa.equipment_specific_index_name AS equipmentSpecificIndexName,
concat(wlesa.equipment_specific_name, wlesa.equipment_specific_index_name) AS alamContent, concat(wlesa.equipment_specific_name, wlesa.equipment_specific_index_name) AS alamContent,
wlesa.frequency AS alarmNum, IFNULL(SUM(wlesa.frequency), 0) AS alarmNum,
DATE_FORMAT(wlesa.create_date, '%Y-%m-%d %H:%i:%s') AS createDate wlesa.type AS type,
DATE_FORMAT(wlesa.update_date, '%Y-%m-%d %H:%i:%s') AS updateDate,
DATE_FORMAT(wlesa.create_date, '%Y-%m-%d %H:%i:%s') AS createDate
FROM FROM
`wl_equipment_specific_alarm` `wlesa` `wl_equipment_specific_alarm` `wlesa`
LEFT JOIN f_fire_fighting_system AS sys ON FIND_IN_SET(sys.id, wlesa.system_ids)
<where> <where>
<if test="bizOrgCode != null and bizOrgCode != ''">AND <if test="bizOrgCode != null and bizOrgCode != ''">AND
wlesa.biz_org_code like concat (#{bizOrgCode},'%') wlesa.biz_org_code like concat (#{bizOrgCode},'%')
...@@ -1624,6 +1625,7 @@ ...@@ -1624,6 +1625,7 @@
AND find_in_set(#{sysId}, wlesa.system_ids) AND find_in_set(#{sysId}, wlesa.system_ids)
</if> </if>
</where> </where>
ORDER BY wlesa.create_date DESC GROUP BY wlesa.equipment_specific_id, wlesa.type
ORDER BY wlesa.update_date DESC
</select> </select>
</mapper> </mapper>
\ No newline at end of file
...@@ -576,7 +576,8 @@ ...@@ -576,7 +576,8 @@
wesi.emergency_level as emergencyLevel, wesi.emergency_level as emergencyLevel,
wesi.emergency_level_describe as emergencyLevelDescribe, wesi.emergency_level_describe as emergencyLevelDescribe,
wes.biz_org_name AS bizOrgName, wes.biz_org_name AS bizOrgName,
wes.biz_org_code AS bizOrgCode wes.biz_org_code AS bizOrgCode,
wes.position AS location
FROM wl_equipment_specific_index AS wesi FROM wl_equipment_specific_index AS wesi
LEFT JOIN wl_equipment_specific AS wes ON wes.id = wesi.equipment_specific_id LEFT JOIN wl_equipment_specific AS wes ON wes.id = wesi.equipment_specific_id
LEFT JOIN wl_equipment_detail ed ON ed.id = wes.equipment_detail_id LEFT JOIN wl_equipment_detail ed ON ed.id = wes.equipment_detail_id
......
...@@ -4263,7 +4263,7 @@ ...@@ -4263,7 +4263,7 @@
</select> </select>
<select id="selectWeekReportList" resultType="java.util.Map"> <select id="selectWeekReportList" resultType="java.util.Map">
select * from (
SELECT temp.name,temp.num,temp.normalNum,temp1.type_name , temp1.monitoringData,temp1.acquisition,temp1.normal, SELECT temp.name,temp.num,temp.normalNum,temp1.type_name , temp1.monitoringData,temp1.acquisition,temp1.normal,
IFNULL(temp1.alarmEquipNum,0) AS alarmEquipNum, temp1.type_code,temp.code IFNULL(temp1.alarmEquipNum,0) AS alarmEquipNum, temp1.type_code,temp.code
FROM FROM
...@@ -4281,12 +4281,6 @@ ...@@ -4281,12 +4281,6 @@
FROM wl_equipment_alarm_report_day report FROM wl_equipment_alarm_report_day report
where report.equipment_code = a.code where report.equipment_code = a.code
and FIND_IN_SET(a.system_id,report.system_ids) and FIND_IN_SET(a.system_id,report.system_ids)
and( report.index_type LIKE CONCAT('%','FireAlarm','%')
or report.index_type LIKE CONCAT('%','Fault','%')
or report.index_type LIKE CONCAT('%','Shield','%')
or report.index_type LIKE CONCAT('%','Open','%')
or report.index_type LIKE CONCAT('%','OilLeak','%')
or report.index_type LIKE CONCAT('%','Alarm','%') )
and report.index_true_num > 0 and report.report_date >= #{startDate} and and report.index_true_num > 0 and report.report_date >= #{startDate} and
report.report_date &lt;= #{endDate}) as exepctionNum report.report_date &lt;= #{endDate}) as exepctionNum
FROM( FROM(
...@@ -4294,7 +4288,7 @@ ...@@ -4294,7 +4288,7 @@
s.id as system_id, s.id as system_id,
equipment.code, equipment.code,
equipment.name, equipment.name,
count(1) AS num (select count(1) from wl_equipment_specific s where FIND_IN_SET( #{systemId}, s.system_id ) AND equipment.is_iot = 1 and s.equipment_code = equipment.code ) AS num
FROM FROM
wl_equipment_specific spec wl_equipment_specific spec
LEFT JOIN wl_equipment_detail detail ON spec.equipment_detail_id = detail.id LEFT JOIN wl_equipment_detail detail ON spec.equipment_detail_id = detail.id
...@@ -4358,23 +4352,21 @@ ...@@ -4358,23 +4352,21 @@
)temp1 on temp.system_id = temp1.systemId and temp.code = temp1.code )temp1 on temp.system_id = temp1.systemId and temp.code = temp1.code
group by code, type_code group by code, type_code
ORDER BY temp.name ORDER BY temp.name ) d where type_code is not null
</select> </select>
<select id="selectAlarms" resultType="java.lang.Integer"> <select id="selectAlarms" resultType="java.lang.Integer">
SELECT SELECT
ifnull(SUM(index_true_num), 0) ifnull(SUM(index_true_num), 0)
FROM FROM
wl_equipment_alarm_report_day report wl_equipment_alarm_report_day report
LEFT JOIN f_fire_fighting_system s ON FIND_IN_SET( s.id, report.system_ids )
LEFT JOIN wl_equipment_specific spec on report.equipment_specific_id = spec.id
where report.system_ids is not null and report.index_true_num > 0 where report.system_ids is not null and report.index_true_num > 0
<foreach collection="indicator" item="index" open="AND(" separator="or" close=")"> <foreach collection="indicator" item="index" open="AND(" separator="or" close=")">
report.index_type like concat ('%', #{index}) report.index_type like concat ('%', #{index})
</foreach> </foreach>
and report.report_date BETWEEN #{startDate} and #{endDate} and report.report_date BETWEEN #{startDate} and #{endDate}
and system_id = #{systemId} and FIND_IN_SET( #{systemId}, report.system_ids)
and index_type = #{indexType} and index_type = #{indexType}
and report.equipment_code = #{equipmentCode} and report.equipment_code = #{equipmentCode}
</select> </select>
...@@ -5118,91 +5110,117 @@ ...@@ -5118,91 +5110,117 @@
</select> </select>
<select id="getFoamTankBySuper" resultType="java.util.Map"> <select id="getFoamTankBySuper" resultType="java.util.Map">
SELECT
select
*, *,
( (
CASE CASE
WHEN nowLevel IS NOT NULL WHEN nowLevel IS NOT NULL
AND maxLevel IS NOT NULL AND maxLevel IS NOT NULL
AND nowLevel - maxLevel > 0 THEN '1' AND nowLevel - maxLevel > 0 THEN
'1'
WHEN nowLevel IS NOT NULL WHEN nowLevel IS NOT NULL
AND minLevel IS NOT NULL AND minLevel IS NOT NULL
AND nowLevel != '--' AND nowLevel != '--'
AND nowLevel - minLevel >= 0 THEN '2' AND nowLevel - minLevel >= 0 THEN
WHEN nowLevel IS NOT NULL '2'
AND minLevel IS NOT NULL WHEN nowLevel IS NOT NULL
AND nowLevel != '--' AND minLevel IS NOT NULL
AND minLevel - nowLevel > 0 THEN '0' AND nowLevel != '--'
ELSE '4' AND minLevel - nowLevel > 0 THEN
END ) AS `status` '0' ELSE '4'
from END
) AS `status`
FROM
( (
SELECT SELECT
a.`name`, IFNULL( a.nowLevel, '--' ) AS nowLevel, a.id, IFNULL( a.image, '' ) AS image, a.unit, a.minLevel AS minLevel, a.maxLevel AS maxLevel, ( a.`name`,
CASE IFNULL( a.nowLevel, '--' ) AS nowLevel,
WHEN a.nowLevel IS NULL a.id,
OR a.minLevel IS NULL THEN '--' IFNULL( a.image, '' ) AS image,
WHEN a.minLevel - a.nowLevel > 0 THEN '缺水' a.unit,
ELSE '正常' a.minLevel AS minLevel,
END ) AS levelStatus, 'foamTank' AS type a.maxLevel AS maxLevel,
(
CASE
WHEN a.nowLevel IS NULL
OR a.minLevel IS NULL THEN
'--'
WHEN a.minLevel - a.nowLevel > 0 THEN
'缺水' ELSE '正常'
END
) AS levelStatus,
'foamTank' AS type
FROM FROM
( (
SELECT SELECT
ed.`name`, es.iot_code, es.id, ec.image, ei.unit, max( CASE WHEN ei.equipment_index_key = 'CAFS_FoamTank_FoamTankLevel' THEN ei.`value` END ) AS nowLevel, max( CASE WHEN fi.field_name = 'minLevel' THEN fi.field_value END ) AS minLevel, max( CASE WHEN fi.field_name = 'maxLevel' THEN fi.field_value END ) AS maxLevel ed.`name`,
es.iot_code,
es.id,
ec.image,
ei.unit,
max( CASE WHEN ei.equipment_index_key = 'CAFS_FoamTank_FoamTankLevel' THEN ei.`value` END ) AS nowLevel,
max( CASE WHEN fi.field_name = 'minLevel' THEN fi.field_value END ) AS minLevel,
max( CASE WHEN fi.field_name = 'maxLevel' THEN fi.field_value END ) AS maxLevel
FROM FROM
wl_equipment_specific es wl_equipment_specific es
LEFT JOIN wl_equipment_detail ed ON LEFT JOIN wl_equipment_detail ed ON es.equipment_detail_id = ed.id
es.equipment_detail_id = ed.id LEFT JOIN wl_equipment_specific_index ei ON es.id = ei.equipment_specific_id
LEFT JOIN wl_equipment_specific_index ei ON LEFT JOIN wl_equipment e ON e.id = ed.equipment_id
es.id = ei.equipment_specific_id LEFT JOIN wl_equipment_category ec ON e.category_id = ec.id
LEFT JOIN wl_equipment e ON LEFT JOIN wl_form_instance_equip fi ON fi.instance_id = es.id
e.id = ed.equipment_id
LEFT JOIN wl_equipment_category ec ON
e.category_id = ec.id
LEFT JOIN wl_form_instance_equip fi ON
fi.instance_id = es.id
WHERE WHERE
ed.`code` LIKE '92031900%' ed.`code` LIKE '92031900%'
AND es.biz_org_code LIKE concat(#{bizOrgCode}, '%') AND es.biz_org_code LIKE concat( #{bizOrgCode}, '%')
AND es.iot_code IS NOT NULL AND es.iot_code IS NOT NULL GROUP BY es.id ) a UNION ALL
GROUP BY
es.id ) a
UNION ALL
SELECT SELECT
a.`name`, IFNULL( a.nowLevel, '--' ) AS nowLevel, a.id, IFNULL( a.image, '' ) AS image, 'M' AS unit, a.minLevel AS minLevel, a.maxLevel AS maxLevel, ( a.`name`,
CASE IFNULL( a.nowLevel, '--' ) AS nowLevel,
WHEN a.nowLevel IS NULL a.id,
OR a.minLevel IS NULL THEN '--' IFNULL( a.image, '' ) AS image,
WHEN a.minLevel - a.nowLevel > 0 THEN '缺水' a.unit AS unit,
ELSE '正常' a.minLevel AS minLevel,
END ) AS levelStatus, a.type AS type a.maxLevel AS maxLevel,
(
CASE
WHEN a.nowLevel IS NULL
OR a.minLevel IS NULL THEN
'--'
WHEN a.minLevel - a.nowLevel > 0 THEN
'缺水' ELSE '正常'
END
) AS levelStatus,
'waterTank' AS type
FROM FROM
( (
SELECT SELECT
r.`name`, IFNULL( rp.min_water_level, 0 ) AS minLevel, IFNULL( rp.max_water_level, 0 ) AS maxLevel, ( ed.`name`,
SELECT es.iot_code,
FORMAT( avg( IFNULL( ei.`value`, 0 ) ), 2 ) es.id,
FROM ec.image,
wl_equipment_specific_index ei ei.unit,
WHERE max( CASE WHEN ei.equipment_index_key = 'CAFS_WaterTank_WaterTankLevel' THEN ei.`value` END ) AS nowLevel,
( ei.equipment_index_key = 'FHS_FirePoolDevice_WaterLevel' max( CASE WHEN fi.field_name = 'minLevel' THEN fi.field_value END ) AS minLevel,
OR ei.equipment_index_key = 'FHS_WirelessliquidDetector_WaterLevel' ) max( CASE WHEN fi.field_name = 'maxLevel' THEN fi.field_value END ) AS maxLevel
AND FIND_IN_SET( ei.equipment_specific_id, rp.level_device_id ) > 0 ) AS nowLevel, ec.image, r.resource_type AS type, r.sequence_nbr AS id
FROM FROM
cb_water_resource r wl_equipment_specific es
LEFT JOIN cb_water_resource_pool rp ON LEFT JOIN wl_equipment_detail ed ON es.equipment_detail_id = ed.id
rp.resource_id = r.sequence_nbr LEFT JOIN wl_equipment_specific_index ei ON es.id = ei.equipment_specific_id
LEFT JOIN wl_equipment_category ec ON LEFT JOIN wl_equipment e ON e.id = ed.equipment_id
ec.id = r.equip_category_id LEFT JOIN wl_equipment_category ec ON e.category_id = ec.id
LEFT JOIN wl_form_instance_equip fi ON fi.instance_id = es.id
WHERE WHERE
r.resource_type = 'waterTank' ed.`code` LIKE '92032000%'
AND r.biz_org_code LIKE concat(#{bizOrgCode}, '%') AND es.iot_code IS NOT NULL
AND r.is_delete = 1 AND es.biz_org_code LIKE concat( #{bizOrgCode}, '%')
GROUP BY GROUP BY es.id ) a
r.sequence_nbr ) a
ORDER BY ORDER BY
levelStatus DESC ) as b order by status asc levelStatus DESC
) AS b
ORDER BY
`status` ASC
</select> </select>
<select id="getPipeNetworkBySuper" resultType="java.util.Map"> <select id="getPipeNetworkBySuper" resultType="java.util.Map">
......
...@@ -8,13 +8,11 @@ import org.apache.kafka.clients.consumer.ConsumerRecord; ...@@ -8,13 +8,11 @@ import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.support.Acknowledgment; import org.springframework.kafka.support.Acknowledgment;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.typroject.tyboot.component.emq.EmqKeeper; import org.typroject.tyboot.component.emq.EmqKeeper;
import org.springframework.core.io.Resource;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Arrays; import java.util.Arrays;
...@@ -173,6 +171,77 @@ public class KafkaConsumerService { ...@@ -173,6 +171,77 @@ public class KafkaConsumerService {
} }
} }
} }
//
// /**
// * 韶山换流对接Kafka
// * @param record record
// * @param ack ack
// */
// @KafkaListener(id = "kafkaConsumer", groupId = "kafkaConsumerGroup", topics = "#{'${queue.kafka.shaoshan.topics}'.split(',')}", containerFactory = "kafkaRomaContainerFactory")
// public void kafkaConsumer(ConsumerRecord<?, String> record, Acknowledgment ack) {
// Optional<?> message = Optional.ofNullable(record.value());
// if (message.isPresent()) {
// try {
//// JSONObject messageObj = JSONObject.fromObject(record.value());
//// JSONObject data = messageObj.getJSONObject("body");
//// JSONObject object = JSONObject.fromObject(record.value());
//// String json = ClassToJsonUtil.class2json(object, commonMessage, MQTT_TOPIC_EVENT_ALARM);
//// emqKeeper.getMqttClient().publish(MQTT_TOPIC_EVENT_ALARM, json.getBytes(StandardCharsets.UTF_8), 0, false);
//
// JSONObject object = JSONObject.fromObject(record.value());
// com.alibaba.fastjson.JSONObject jsonObj = ClassToJsonUtil.class2json(object, commonMessage, record.topic());
// emqKeeper.getMqttClient().publish(String.valueOf(jsonObj.get("mqTopic")), JSON.toJSONString(jsonObj).getBytes("UTF-8"), 0, false);
// ack.acknowledge();
// } catch (MqttException e) {
// log.error("解析数据失败,{}", e.getMessage());
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// }
// }
// }
//
// /**
// * 事件告警对接Kafka
// * @param record record
// * @param ack ack
// * groupId = kafkaConsumerGroup
// * 该消息的消息格式为
// * {"data_class":"realdata","data_type":"alarm","op_type":"subscribe_emergency","condition":{"station_psr_id":"50edcb6c1b8a811030493c80a2014950ed9d4f59e8","station_name":"中州换流站","alarm_type":"yx_bw"},"data":[{"psrId":"D017020000000000000000999","astId":"D017020000000000000000999","equipType":"ASTType_0000111","eventType":"OtherSignal","alarmSource":"OWS","alarmLevel":"3","description":"2024-03-11 09:06:17::585 S2WCL12A E3.C01软水器再生结束信号 出现","dateTime":"2024-03-11 09:06:17.585"}]}
// */
//
// @KafkaListener(id = "kafkaConsumerEventAlarm", groupId = "kafkaConsumerGroupEventAlarm", topics = "#{'${queue.kafka.eventAlarm.topics}'.split(',')}", containerFactory = "kafkaRomaContainerFactory")
// public void kafkaConsumerEventAlarm(ConsumerRecord<?, String> record, Acknowledgment ack) {
// Optional<?> message = Optional.ofNullable(record.value());
// if (message.isPresent()) {
// try {
//// JSONObject messageObj = JSONObject.fromObject(record.value());
//// JSONArray dataArray = messageObj.getJSONArray("data");
//// JSONArray jsonArray = new JSONArray();
//// String timestamp = "";
//// for (Object obj : dataArray) {
//// JSONObject finallyObj = new JSONObject();
//// com.alibaba.fastjson.JSONObject detail = com.alibaba.fastjson.JSONObject.parseObject(com.alibaba.fastjson.JSONObject.toJSONString(obj));
//// finallyObj.put("eventtextL1", detail.get("description"));
//// finallyObj.put("pointId", detail.get("astId"));
//// finallyObj.put("time", detail.get("dateTime"));
//// jsonArray.add(finallyObj);
//// timestamp = detail.get("dateTime").toString();
//// }
//// JSONObject jsonObjectMessage = new JSONObject();
//// jsonObjectMessage.put("warns", jsonArray);
//// jsonObjectMessage.put("timestamp", timestamp);
//
// JSONObject object = JSONObject.fromObject(record.value());
// com.alibaba.fastjson.JSONObject jsonObj = ClassToJsonUtil.class2json(object, commonMessage, record.topic());
// emqKeeper.getMqttClient().publish(String.valueOf(jsonObj.get("mqTopic")), JSON.toJSONString(jsonObj).getBytes("UTF-8"), 0, false);
// ack.acknowledge();
// } catch (MqttException e) {
// log.error("解析数据失败,{}", e.getMessage());
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// }
// }
// }
///** ///**
......
...@@ -110,4 +110,7 @@ system.zxj=false ...@@ -110,4 +110,7 @@ system.zxj=false
#emq.topic=ccs-user-login-info,sync.execute,data/mcb/warning,emq.risk.qrcode.put,emq.risk.qrcode.clean #emq.topic=ccs-user-login-info,sync.execute,data/mcb/warning,emq.risk.qrcode.put,emq.risk.qrcode.clean
queue.kafka.topics=null queue.kafka.topics=null
kafka.auto-startup=false kafka.auto-startup=false
\ No newline at end of file
#浜嬩欢鍛婅瀵规帴Kafka涓婚
queue.kafka.eventAlarm.topics=JKXT2BP-GJ-Topic-site
[ [
{ {
"kafkaTopic": "k1", "kafkaTopic": "T_DC_MQ_REALDATA__guanggu",
"mqTopic": "romaSite/data/transmit", "mqTopic": "romaSite/data/transmit",
"data": { "data": {
"dataType": "condition.station_psr_id", "dataType": "body.datatype",
"value": "condition.station_psr_id", "value": "body.value",
"timeStamp": "condition.station_psr_id", "timeStamp": "body.time_stamp",
"quality": "condition.station_psr_id", "quality": "body.quality",
"scadaId": "condition.station_psr_id", "scadaId": "body.key",
"key": "condition.station_psr_id", "key": "body.key",
"disCreate": "condition.station_psr_id", "disCreate": "body.station_psr_id",
"name": "condition.station_psr_id" "name": "body.name"
} }
}, },
{ {
"kafkaTopic": "k2", "kafkaTopic": "T_DC_MQ_ALARM__guanggu",
"mqTopic": "romaSite/data/eventAlarm", "mqTopic": "romaSite/data/eventAlarm",
"data": { "data": {
"timeStamp": "body.warns.time", "timeStamp": "body.warns.time",
......
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