MES数据对接完成,已完成入库。

dev
songwenxuan 2025-09-21 10:02:18 +08:00
parent 4f11b686c5
commit 1264526a2b
12 changed files with 484 additions and 90 deletions

13
pom.xml
View File

@ -435,6 +435,19 @@
<version>3.14.9</version>
</dependency>
<!-- Oracle JDBC驱动 -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.3.0.0</version> <!-- 19c版本 -->
</dependency>
<!-- 字符集支持库必须与JDBC驱动版本一致 -->
<dependency>
<groupId>com.oracle.database.nls</groupId>
<artifactId>orai18n</artifactId>
<version>19.3.0.0</version> <!-- 与ojdbc8版本保持一致 -->
</dependency>
</dependencies>
<build>

View File

@ -0,0 +1,66 @@
package com.zcloud.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
import java.sql.SQLException;
/**
* MES
*/
@Configuration
@MapperScan(basePackages = Mes2DataSourceConfig.PACKAGE, sqlSessionFactoryRef = "mes2SqlSessionFactory")
public class Mes2DataSourceConfig {
static final String PACKAGE = "com.zcloud.mapper.dsno2.monitoring2"; //mapper 目录
static final String MAPPER_LOCATION = "classpath:mybatis/dsno2/monitoring2/*.xml"; //扫描的 xml 目录
static final String CONFIG_LOCATION = "classpath:mybatis/dsno2/mybatis-config.xml"; //自定义的mybatis config 文件位置
static final String TYPE_ALIASES_PACKAGE = "com.zcloud.entity"; //扫描的 实体类 目录
@Value("${datasource.mes2.url}")
private String url;
@Value("${datasource.mes2.username}")
private String user;
@Value("${datasource.mes2.password}")
private String password;
@Value("${datasource.mes2.driver-class-name}")
private String driverClass;
@Bean(name = "mes2DataSource")
public DataSource mesDataSource() throws SQLException {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driverClass);
dataSource.setUrl(url);
dataSource.setUsername(user);
dataSource.setPassword(password);
return dataSource;
}
@Bean(name = "mes2TransactionManager")
public DataSourceTransactionManager mesTransactionManager() throws SQLException {
return new DataSourceTransactionManager(mesDataSource());
}
@Bean(name = "mes2SqlSessionFactory")
public SqlSessionFactory mesSqlSessionFactory(@Qualifier("mes2DataSource") DataSource mesDataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(mesDataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(Mes2DataSourceConfig.MAPPER_LOCATION));
sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(Mes2DataSourceConfig.CONFIG_LOCATION));
sessionFactory.setTypeAliasesPackage(Mes2DataSourceConfig.TYPE_ALIASES_PACKAGE);
return sessionFactory.getObject();
}
}

View File

@ -1,10 +1,15 @@
package com.zcloud.mapper.datasource.tbIron;
import com.zcloud.entity.PageData;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public interface TbIronPlcMapper {
ArrayList<HashMap<String,String>> listAll ();
List<PageData> listTargetByEquId(PageData pd);
}

View File

@ -18,17 +18,4 @@ public interface MesDataMapper {
* @return
*/
List<Map<String, Object>> listAllMesData();
/**
* MES
* @param pd
* @return
*/
List<PageData> listMesDataByCondition(PageData pd);
/**
* MES
* @param dataList
*/
void saveBatchFromMes(List<Map<String, Object>> dataList);
}

View File

@ -0,0 +1,19 @@
package com.zcloud.mapper.dsno2.monitoring2;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
/**
* MES访
*/
@Repository
public interface MesDataMapper2 {
/**
* MES
* @return
*/
List<Map<String, Object>> listAllMesData();
}

View File

@ -0,0 +1,27 @@
package com.zcloud.mapper.dsno2.target;
import com.zcloud.entity.PageData;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
/**
* MES访
*/
@Repository
public interface MesDeviceMonitoringMapper {
/**
* MES
* @param pd
* @return
*/
List<PageData> listMesDataByCondition(PageData pd);
/**
* MES
* @param dataList
*/
void saveBatchFromMes(List<Map<String, Object>> dataList);
}

View File

@ -4,7 +4,11 @@ import com.alibaba.fastjson.JSONObject;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.zcloud.entity.PageData;
import com.zcloud.mapper.datasource.tbIron.TbIronPlcMapper;
import com.zcloud.mapper.dsno2.monitoring.MesDataMapper;
import com.zcloud.mapper.dsno2.monitoring2.MesDataMapper2;
import com.zcloud.mapper.dsno2.target.MesDeviceMonitoringMapper;
import com.zcloud.util.DateUtil;
import com.zcloud.util.RedisUtil;
import com.zcloud.util.UuidUtil;
@ -13,6 +17,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* MES
@ -26,6 +31,15 @@ public class MesDataScheduled extends IJobHandler {
@Resource
private MesDataMapper mesDataMapper;
@Resource
private MesDataMapper2 mesDataMapper2;
@Resource
private TbIronPlcMapper tbIronPlcMapper;
@Resource
private MesDeviceMonitoringMapper mesDeviceMonitoringMapper;
@Resource
private RedisUtil redisUtil;
@ -34,36 +48,13 @@ public class MesDataScheduled extends IJobHandler {
public void execute() throws Exception {
XxlJobHelper.log("开始执行MES系统数据对接任务");
// 处理批次 ID
String processingBatchId = UuidUtil.get32UUID();
// 批处理时间
String processingTime = DateUtil.date2Str(new Date());
try {
// 从MES系统获取数据
List<Map<String, Object>> mesDataList = mesDataMapper.listAllMesData();
XxlJobHelper.log("从MES系统获取到{}条数据", mesDataList.size());
// 处理数据
for (Map<String, Object> item : mesDataList) {
// 添加处理时间和批次ID
item.put("PROCESSING_TIME", processingTime);
item.put("PROCESSING_BATCH_ID", processingBatchId);
// 处理空值
item.replaceAll((k, v) -> v == null ? "" : v);
}
// 保存数据到数据库
// if (!mesDataList.isEmpty()) {
// mesDataMapper.saveBatchFromMes(mesDataList);
// XxlJobHelper.log("成功保存{}条MES数据到本地数据库", mesDataList.size());
//
// // 将数据存入Redis缓存
// redisUtil.set("MES_DATA_LIST", JSONObject.toJSONString(mesDataList));
// XxlJobHelper.log("已将MES数据存入Redis缓存");
// }
// 处理批次 ID
String processingBatchId = UuidUtil.get32UUID();
// 批处理时间
String processingTime = DateUtil.date2Str(new Date());
// 保存转炉和精炼炉的数据
this.jllAndZlSaveMethod(processingBatchId, processingTime);
XxlJobHelper.log("MES系统数据对接任务执行完成");
} catch (Exception e) {
XxlJobHelper.log("MES系统数据对接任务执行异常: {}", e.getMessage());
@ -82,12 +73,166 @@ public class MesDataScheduled extends IJobHandler {
}
@Scheduled(cron ="*/5 * * * * ?")
public void scheduled(){
try {
System.out.println( "============定时查询MES数据==========");
List<Map<String, Object>> mesDataList = mesDataMapper.listAllMesData();
} catch (Exception e) {
e.printStackTrace();
}
public void scheduled() throws Exception {
this.execute();
}
// 存储转炉和精炼炉数据
void jllAndZlSaveMethod(String processingBatchId, String processingTime) {
// 转炉和精炼炉MES对接过来的数据
List<Map<String, Object>> mesDataList = mesDataMapper.listAllMesData();
// 高炉MES对接过来的数据
List<Map<String, Object>> mesRawDataList = mesDataMapper2.listAllMesData();
// 使用枚举参照编码将高炉数据放入mesData总数据中
for (Map<String, Object> map : mesRawDataList) {
HashMap<String, Object> mesPreMap = new HashMap<>();
Set<String> keySet = map.keySet();
for (String key : keySet) {
if (TagDescription.getDescriptionByTag(key) != "未找到对应的高炉变量key描述信息") {
mesPreMap.put(TagDescription.getDescriptionByTag(key), map.get(key));
}
}
mesDataList.add(mesPreMap);
}
XxlJobHelper.log("从MES系统获取到{}条数据", mesDataList.size());
// 查询填报的所有阈值数据
PageData equPd = new PageData();
List<PageData> targetAllList = tbIronPlcMapper.listTargetByEquId(equPd);
// 1#精炼炉
List<PageData> jll1TargetList = targetAllList.stream()
.filter(item -> item.get("EQUIPMENT_ID") != null && item.get("EQUIPMENT_ID").equals("ee8263519520e35fd18168a531f0837a"))
.collect(Collectors.toList());
// 2#精炼炉
List<PageData> jll2TargetList = targetAllList.stream()
.filter(item -> item.get("EQUIPMENT_ID") != null && item.get("EQUIPMENT_ID").equals("ede5a2e669ea08b3d7dbb22dce05c583"))
.collect(Collectors.toList());
// 1#转炉
List<PageData> zl1TargetList = targetAllList.stream()
.filter(item -> item.get("EQUIPMENT_ID") != null && item.get("EQUIPMENT_ID").equals("21a32f0f65a41f2949ac832ac39714f0"))
.collect(Collectors.toList());
// 2#转炉
List<PageData> zl2TargetList = targetAllList.stream()
.filter(item -> item.get("EQUIPMENT_ID") != null && item.get("EQUIPMENT_ID").equals("2c83b99df54e80a674be5657b11db55c"))
.collect(Collectors.toList());
// 1#高炉
List<PageData> gl1TargetList = targetAllList.stream()
.filter(item -> item.get("EQUIPMENT_ID") != null && item.get("EQUIPMENT_ID").equals("67c2e8315ca57d68201762e4ce9db351"))
.collect(Collectors.toList());
// 2#高炉
List<PageData> gl2TargetList = targetAllList.stream()
.filter(item -> item.get("EQUIPMENT_ID") != null && item.get("EQUIPMENT_ID").equals("2cb052450581597064b510118c076e2a"))
.collect(Collectors.toList());
// 3#高炉
List<PageData> gl3TargetList = targetAllList.stream()
.filter(item -> item.get("EQUIPMENT_ID") != null && item.get("EQUIPMENT_ID").equals("7face71b8cb7b47872cbe94f9b16831d"))
.collect(Collectors.toList());
// 4#高炉
List<PageData> gl4TargetList = targetAllList.stream()
.filter(item -> item.get("EQUIPMENT_ID") != null && item.get("EQUIPMENT_ID").equals("c6825a6e1c959c3e5c800433516b2e8d"))
.collect(Collectors.toList());
// 保存数据到数据库
if (!mesDataList.isEmpty()) {
ArrayList<Map<String, Object>> mesSaveList = new ArrayList<>();
for (Map<String, Object> map : mesDataList) {
Set<String> keySet = map.keySet();
for (String key : keySet) {
HashMap<String, Object> mesData = new HashMap<>();
mesData.put("MONITORING_ID", UuidUtil.get32UUID());
mesData.put("TARGET_NAME", key);
mesData.put("CURRENT_VALUE", map.get(key));
mesData.put("PROCESSING_TIME", processingBatchId);
mesData.put("PROCESSING_BATCH_ID", processingTime);
mesData.put("INSERT_TIME", DateUtil.date2Str(new Date()));
mesData.put("WARNING", 0); // 是否告警 要完善相关告警逻辑进行判断
mesData.put("GATHER_TIME", 5);
mesData.put("PLC_NAME", "");
mesData.put("OVERVIEW_OF_ALERTS", "");
// 下面是在已经填报的
String[] parts = key.split("_", 2); // split("_", 2) 限制分割为2部分
String suffix = "";
if (parts.length > 1) {
suffix = parts[1]; // 下划线后面1LFS
}
List<PageData> collect = new ArrayList<>();
if (suffix.equals("1LFS")) {
mesData.put("EQUIPMENT_ID", "ede5a2e669ea08b3d7dbb22dce05c583");
collect = jll1TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key)).collect(Collectors.toList());
} else if (suffix.equals("2LFS")) {
mesData.put("EQUIPMENT_ID", "ee8263519520e35fd18168a531f0837a");
collect = jll2TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key)).collect(Collectors.toList());
} else if (suffix.equals("A1") || suffix.equals("B1")) {
mesData.put("EQUIPMENT_ID", "21a32f0f65a41f2949ac832ac39714f0");
collect = zl1TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key)).collect(Collectors.toList());
} else if (suffix.equals("A2") || suffix.equals("B2")) {
mesData.put("EQUIPMENT_ID", "2c83b99df54e80a674be5657b11db55c");
collect = zl2TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key)).collect(Collectors.toList());
} else if (key.equals("TAG325") || key.equals("TAG326") || key.equals("TAG317") || key.equals("TAG318")) {
mesData.put("EQUIPMENT_ID", "c6825a6e1c959c3e5c800433516b2e8d");
collect = gl1TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key)).collect(Collectors.toList());
} else if (key.equals("TAG327") || key.equals("TAG328") || key.equals("TAG319") || key.equals("TAG320")) {
mesData.put("EQUIPMENT_ID", "7face71b8cb7b47872cbe94f9b16831d");
collect = gl2TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key)).collect(Collectors.toList());
} else if (key.equals("TAG329") || key.equals("TAG330") || key.equals("TAG321") || key.equals("TAG322")) {
mesData.put("EQUIPMENT_ID", "2cb052450581597064b510118c076e2a");
collect = gl3TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key)).collect(Collectors.toList());
} else if (key.equals("TAG331") || key.equals("TAG332") || key.equals("TAG333") || key.equals("TAG334") || key.equals("TAG323") || key.equals("TAG324")) {
mesData.put("EQUIPMENT_ID", "67c2e8315ca57d68201762e4ce9db351");
collect = gl4TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key)).collect(Collectors.toList());
}
if (collect.size() > 0) {
PageData pageData = collect.get(0);
mesData.put("IPCDEVICE_ID", pageData.getString("IPCDEVICE_ID"));
mesData.put("PLC_ID", pageData.getString("PLC_ID"));
mesData.put("TARGET_TYPE", pageData.getString("TARGET_TYPE"));
mesData.put("TARGET_PLACE", pageData.getString("TARGET_PLACE"));
mesData.put("TARGET_UNIT", pageData.getString("TARGET_UNIT"));
mesData.put("THRESHOLD_UP_LIMIT", pageData.getString("THRESHOLD_UP_LIMIT"));
mesData.put("THRESHOLD_UP_UP_LIMIT", pageData.getString("THRESHOLD_UP_UP_LIMIT"));
mesData.put("THRESHOLD_DOWN_LIMIT", pageData.getString("THRESHOLD_DOWN_LIMIT"));
mesData.put("THRESHOLD_DOWN_DOWN_LIMIT", pageData.getString("THRESHOLD_DOWN_DOWN_LIMIT"));
mesData.put("RANGE_UP", pageData.getString("RANGE_UP"));
mesData.put("RANGE_DOWN", pageData.getString("RANGE_DOWN"));
mesData.put("TARGET_DESCRIPTION", pageData.getString("TARGET_DESCRIPTION"));
mesData.put("BIT_NO", pageData.getString("BIT_NO"));
mesData.put("SIGNAL_TYPE", pageData.getString("SIGNAL_TYPE"));
mesData.put("ALARM_VALUE", pageData.getString("ALARM_VALUE"));
mesData.put("TARGET_STATUS", pageData.getString("TARGET_STATUS"));
mesData.put("CORPINFO_ID", pageData.getString("CORPINFO_ID"));
} else {
mesData.put("IPCDEVICE_ID", "");
mesData.put("PLC_ID", "");
mesData.put("TARGET_TYPE", "");
mesData.put("TARGET_PLACE", "");
mesData.put("TARGET_UNIT", "");
mesData.put("THRESHOLD_UP_LIMIT", "");
mesData.put("THRESHOLD_UP_UP_LIMIT", "");
mesData.put("THRESHOLD_DOWN_LIMIT", "");
mesData.put("THRESHOLD_DOWN_DOWN_LIMIT", "");
mesData.put("RANGE_UP", "");
mesData.put("RANGE_DOWN", "");
mesData.put("TARGET_DESCRIPTION", "");
mesData.put("BIT_NO", "");
mesData.put("SIGNAL_TYPE", "");
mesData.put("ALARM_VALUE", "");
mesData.put("TARGET_STATUS", "");
mesData.put("CORPINFO_ID", "");
}
mesSaveList.add(mesData);
}
}
// 处理接过来的MES数据
mesDeviceMonitoringMapper.saveBatchFromMes(mesSaveList);
XxlJobHelper.log("成功保存{}条MES数据到本地数据库", mesSaveList.size());
// 将数据存入Redis缓存
redisUtil.set("MES_DATA_LIST", JSONObject.toJSONString(mesSaveList));
XxlJobHelper.log("已将MES数据存入Redis缓存");
}
}
}

View File

@ -0,0 +1,47 @@
package com.zcloud.scheduled.dataDocking;
public enum TagDescription {
// 定义枚举常量TAG值作为名称描述作为参数
TAG325("1#炉顶西压力"),
TAG326("1#炉顶东压力"),
TAG317("1#高炉南放散开关"),
TAG318("1#高炉北放散开关"),
TAG327("2#炉顶西压力"),
TAG328("2#炉顶东压力"),
TAG319("2#高炉南放散开关"),
TAG320("2#高炉北放散开关"),
TAG329("3#炉顶西压力"),
TAG330("3#炉顶东压力"),
TAG321("3#高炉南放散开关"),
TAG322("3#高炉北放散开关"),
TAG331("4#煤气上升管东北压力"),
TAG332("4#煤气上升管东南压力"),
TAG333("4#煤气上升管西北压力"),
TAG334("4#煤气上升管西南压力"),
TAG323("4#高炉南放散开关"),
TAG324("4#高炉北放散开关");
// 存储描述信息的成员变量
private final String description;
// 构造方法
TagDescription(String description) {
this.description = description;
}
// 获取描述信息的方法
public String getDescription() {
return description;
}
// 根据TAG字符串获取对应的描述
public static String getDescriptionByTag(String tag) {
try {
// 通过valueOf方法查找对应的枚举常量
return TagDescription.valueOf(tag).getDescription();
} catch (IllegalArgumentException e) {
// 如果没有找到对应的TAG返回默认信息或抛出异常
return "未找到对应的高炉变量key描述信息";
}
}
}

View File

@ -30,4 +30,43 @@
WHERE
p.CORPINFO_ID = '499d43c24fab49f59391ce49fb401837' and p.ISDELETE = 0 and mt.ISDELETE = 0
</select>
<!-- 查询填报的数据上下限高低值范围 -->
<select id="listTargetByEquId" parameterType="com.zcloud.entity.PageData" resultType="com.zcloud.entity.PageData">
select
p.MONITORING_ID,
p.IPCDEVICE_ID,
p.PLC_ID,
plc.EQUIPMENT_ID,
p.TARGET_NAME,
p.TARGET_TYPE,
p.TARGET_PLACE,
p.TARGET_UNIT,
p.THRESHOLD_UP_LIMIT,
p.THRESHOLD_UP_UP_LIMIT,
p.THRESHOLD_DOWN_LIMIT,
p.THRESHOLD_DOWN_DOWN_LIMIT,
p.RANGE_UP,
p.RANGE_DOWN,
p.TARGET_DESCRIPTION,
p.BIT_NO,
p.SIGNAL_TYPE,
p.ALARM_VALUE,
p.TARGET_STATUS,
p.CORPINFO_ID,
p.CREATOR,
p.CREATTIME,
p.OPERATOR,
p.OPERATTIME,
p.ISDELETE
from
tb_iron_monitoring_target p
left join tb_iron_plc plc ON p.PLC_ID = plc.PLC_ID
where
p.ISDELETE = 0
and
plc.ISDELETE = 0
</select>
</mapper>

View File

@ -4,43 +4,6 @@
<!-- 查询所有MES数据使用MyBatis自动映射功能 -->
<select id="listAllMesData" resultType="java.util.HashMap">
select * from drzf_view
select * from jymes.drzf_view
</select>
<!-- 根据条件查询MES数据 -->
<select id="listMesDataByCondition" parameterType="com.zcloud.entity.PageData" resultType="com.zcloud.entity.PageData">
SELECT * FROM mes_data_view
WHERE 1=1
<if test="deviceId != null and deviceId != ''">
AND DEVICE_ID = #{deviceId}
</if>
<if test="deviceName != null and deviceName != ''">
AND DEVICE_NAME LIKE CONCAT('%', #{deviceName}, '%')
</if>
</select>
<!-- 批量保存从MES获取的数据 -->
<insert id="saveBatchFromMes" parameterType="java.util.List">
INSERT INTO target_table (
ID,
DEVICE_ID,
DEVICE_NAME,
CURRENT_VALUE,
GATHER_TIME,
PROCESSING_TIME,
PROCESSING_BATCH_ID
) VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.ID, jdbcType=VARCHAR},
#{item.DEVICE_ID, jdbcType=VARCHAR},
#{item.DEVICE_NAME, jdbcType=VARCHAR},
#{item.CURRENT_VALUE, jdbcType=VARCHAR},
#{item.GATHER_TIME, jdbcType=TIMESTAMP},
#{item.PROCESSING_TIME, jdbcType=TIMESTAMP},
#{item.PROCESSING_BATCH_ID, jdbcType=VARCHAR}
)
</foreach>
</insert>
</mapper>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zcloud.mapper.dsno2.monitoring2.MesDataMapper2">
<!-- 查询所有MES数据使用MyBatis自动映射功能 -->
<select id="listAllMesData" resultType="java.util.HashMap">
select * from ems.drzf_view
</select>
</mapper>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zcloud.mapper.dsno2.target.MesDeviceMonitoringMapper">
<!-- 根据条件查询MES数据 -->
<select id="listMesDataByCondition" parameterType="com.zcloud.entity.PageData" resultType="com.zcloud.entity.PageData">
SELECT * FROM mes_data_view
WHERE 1=1
<if test="deviceId != null and deviceId != ''">
AND DEVICE_ID = #{deviceId}
</if>
<if test="deviceName != null and deviceName != ''">
AND DEVICE_NAME LIKE CONCAT('%', #{deviceName}, '%')
</if>
</select>
<!-- 批量保存从MES获取的数据 注意列名加双引号防止自动转换为小写导致无法匹配pg数据库的大写列名pg数据库严格按照大小写进行字段匹配。 -->
<insert id="saveBatchFromMes" parameterType="java.util.List">
INSERT INTO "sx_yjb".device_monitoring_sxgt (
"MONITORING_ID",
"TARGET_NAME",
"TARGET_PLACE",
"TARGET_UNIT",
"SIGNAL_TYPE",
"CURRENT_VALUE",
"ALARM_VALUE",
"THRESHOLD_UP_LIMIT",
"THRESHOLD_UP_UP_LIMIT",
"THRESHOLD_DOWN_LIMIT",
"THRESHOLD_DOWN_DOWN_LIMIT",
"RANGE_UP",
"RANGE_DOWN",
"PROCESSING_TIME",
"INSERT_TIME",
"PLC_ID",
"WARNING",
"GATHER_TIME",
"CORPINFO_ID",
"IPCDEVICE_ID",
"PLC_NAME",
"PROCESSING_BATCH_ID",
"OVERVIEW_OF_ALERTS",
"EQUIPMENT_ID"
) VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.MONITORING_ID, jdbcType=CHAR},
#{item.TARGET_NAME, jdbcType=VARCHAR},
#{item.TARGET_PLACE, jdbcType=VARCHAR},
#{item.TARGET_UNIT, jdbcType=VARCHAR},
#{item.SIGNAL_TYPE, jdbcType=VARCHAR},
#{item.CURRENT_VALUE, jdbcType=VARCHAR},
#{item.ALARM_VALUE, jdbcType=VARCHAR},
#{item.THRESHOLD_UP_LIMIT, jdbcType=VARCHAR},
#{item.THRESHOLD_UP_UP_LIMIT, jdbcType=VARCHAR},
#{item.THRESHOLD_DOWN_LIMIT, jdbcType=VARCHAR},
#{item.THRESHOLD_DOWN_DOWN_LIMIT, jdbcType=VARCHAR},
#{item.RANGE_UP, jdbcType=VARCHAR},
#{item.RANGE_DOWN, jdbcType=VARCHAR},
#{item.PROCESSING_TIME, jdbcType=VARCHAR},
to_timestamp(#{item.INSERT_TIME}, 'yyyy-MM-dd HH24:mi:ss'),
#{item.PLC_ID, jdbcType=CHAR},
#{item.WARNING, jdbcType=CHAR},
#{item.GATHER_TIME, jdbcType=VARCHAR},
#{item.CORPINFO_ID, jdbcType=VARCHAR},
#{item.IPCDEVICE_ID, jdbcType=VARCHAR},
#{item.PLC_NAME, jdbcType=VARCHAR},
#{item.PROCESSING_BATCH_ID, jdbcType=VARCHAR},
#{item.OVERVIEW_OF_ALERTS, jdbcType=VARCHAR},
#{item.EQUIPMENT_ID, jdbcType=VARCHAR}
)
</foreach>
</insert>
</mapper>