Commit 5d730e1a authored by 夏东伟's avatar 夏东伟

现场软件对接

parent 141927d1
...@@ -102,6 +102,21 @@ ...@@ -102,6 +102,21 @@
<artifactId>poi-ooxml</artifactId> <artifactId>poi-ooxml</artifactId>
<version>3.17</version> <version>3.17</version>
</dependency> </dependency>
<!--解析mdb文件-->
<!-- https://mvnrepository.com/artifact/com.healthmarketscience.jackcess/jackcess -->
<dependency>
<groupId>com.healthmarketscience.jackcess</groupId>
<artifactId>jackcess</artifactId>
<version>3.0.1</version>
</dependency>
<!--喷涂室湿度采集第三方jar包-->
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>0.0.3</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/RSNetDevice-2.2.1.jar</systemPath>
</dependency>
</dependencies> </dependencies>
<build> <build>
...@@ -144,6 +159,18 @@ ...@@ -144,6 +159,18 @@
</dependencies> </dependencies>
</plugin> </plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>${project.basedir}/src/main/resources/lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
</plugins> </plugins>
</build> </build>
</project> </project>
package net.vtstar.zhongtong.avi.access.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.vtstar.user.search.Search;
import net.vtstar.zhongtong.avi.global.web.Show;
import javax.persistence.Column;
import javax.persistence.Table;
import java.util.Date;
/**
* @Author: xiadongwei
* @Date: 2019/10/17 17:23
*/
@ApiModel("总装车间--新能源检测点")
@Data
@Search(code = "NEW_ENERGY")
@Table(name = "assembly_new_energy")
public class AssemblyNewEnergy {
@Show(label = "车辆标识")
@ApiModelProperty(notes = "车辆标识")
@Column(name = "SerialNo")
@Search
private String SerialNo;
@Show(label = "当前工步")
@ApiModelProperty(notes = "当前工步")
@Column(name = "TIName")
private String TIName;
@Show(label = "检测结果")
@ApiModelProperty(notes = "检测结果")
@Column(name = "ResultValue")
private Double ResultValue;
@Show(label = "单位")
@ApiModelProperty(notes = "单位")
@Column(name = "ResultUnit")
private String ResultUnit;
@Show(label = "系统时间")
@ApiModelProperty(notes = "测试时间")
@Column(name = "SystemTime")
private String SystemTime;
@Show(label = "所在位置")
@ApiModelProperty(notes = "所在位置")
@Column(name = "ipAddress")
private String ipAddress;
@Show(label = "同步时间")
@ApiModelProperty(notes = "同步时间")
@Column(name = "create_time")
private Date createTime;
}
package net.vtstar.zhongtong.avi.access.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.vtstar.user.search.Search;
import net.vtstar.zhongtong.avi.global.web.Show;
import javax.persistence.Column;
import javax.persistence.Table;
import java.util.Date;
/**
* @Author: xiadongwei
* @Date: 2019/10/17 17:23
*/
@ApiModel("底盘车间--车轮定位")
@Data
@Search(code = "WHEEL_ALIGNMENT")
@Table(name = "wheel_alignment")
public class WheelAlignment {
@Show(label = "工作订单")
@Column(name = "WorkOrderID")
@ApiModelProperty(notes = "工作订单")
@Search
private String WorkOrderID;
@Show(label = "开始时间")
@Column(name = "StartDateTime")
@ApiModelProperty(notes = "开始时间")
private String StartDateTime;
@Show(label = "结束时间")
@Column(name = "EndDateTime")
@ApiModelProperty(notes = "结束时间")
private String EndDateTime;
@Show(label = "制造厂")
@Column(name = "Make")
@ApiModelProperty(notes = "制造厂")
private String Make;
@Show(label = "型号")
@Column(name = "Model")
@ApiModelProperty(notes = "型号")
@Search
private String Model;
@Show(label = "VIN")
@Column(name = "VIN")
@ApiModelProperty(notes = "VIN")
@Search
private String VIN;
@Show(label = "前轮前束(左,最初)")
@Column(name = "LFToeI")
@ApiModelProperty(notes = "前轮前束(左,最初)")
private String LFToeI;
@Show(label = "前轮前束(左,最终)")
@Column(name = "LFToeF")
@ApiModelProperty(notes = "前轮前束(左,最终)")
private String LFToeF;
@Show(label = "前轮前束(右,最初)")
@Column(name = "RFToeI")
@ApiModelProperty(notes = "前轮前束(右,最初)")
private String RFToeI;
@Show(label = "前轮前束(右,最终)")
@Column(name = "RFToeF")
@ApiModelProperty(notes = "前轮前束(右,最终)")
private String RFToeF;
@Show(label = "前轮外倾角(左,最初)")
@Column(name = "LFCamI")
@ApiModelProperty(notes = "前轮外倾角(左,最初)")
private String LFCamI;
@Show(label = "前轮外倾角(左,最终)")
@Column(name = "LFCamF")
@ApiModelProperty(notes = "前轮外倾角(左,最终)")
private String LFCamF;
@Show(label = "前轮外倾角(右,最初)")
@Column(name = "RFCamI")
@ApiModelProperty(notes = "前轮外倾角(右,最初)")
private String RFCamI;
@Show(label = "前轮外倾角(右,最终)")
@Column(name = "RFCamF")
@ApiModelProperty(notes = "前轮外倾角(右,最终)")
private String RFCamF;
@Show(label = "后倾角(左,最初)")
@Column(name = "LCasI")
@ApiModelProperty(notes = "后倾角(左,最初)")
private String LCasI;
@Show(label = "后倾角(左,最终)")
@Column(name = "LCasF")
@ApiModelProperty(notes = "后倾角(左,最终)")
private String LCasF;
@Show(label = "后倾角(右,最初)")
@Column(name = "RCasI")
@ApiModelProperty(notes = "后倾角(右,最初)")
private String RCasI;
@Show(label = "后倾角(右,最终)")
@Column(name = "RCasF")
@ApiModelProperty(notes = "后倾角(右,最终)")
private String RCasF;
@Show(label = "Kpi(左,最初)")
@Column(name = "LKpiI")
@ApiModelProperty(notes = "Kpi(左,最初)")
private String LKpiI;
@Show(label = "Kpi(左,最终)")
@Column(name = "LKpiF")
@ApiModelProperty(notes = "Kpi(左,最终)")
private String LKpiF;
@Show(label = "Kpi(右,最初)")
@Column(name = "RKpiI")
@ApiModelProperty(notes = "Kpi(右,最初)")
private String RKpiI;
@Show(label = "Kpi(右,最终)")
@Column(name = "RKpiF")
@ApiModelProperty(notes = "Kpi(右,最终)")
private String RKpiF;
@Show(label = "艾克尔曼角(左)")
@Column(name = "LAckermanF")
@ApiModelProperty(notes = "艾克尔曼角(左)")
private String LAckermanF;
@Show(label = "艾克尔曼角(右)")
@Column(name = "RAckermanF")
@ApiModelProperty(notes = "艾克尔曼角(右)")
private String RAckermanF;
@Show(label = "最大旋转角度(左)")
@Column(name = "LMaxTurnF")
@ApiModelProperty(notes = "最大旋转角度(左)")
private String LMaxTurnF;
@Show(label = "最大旋转角度(右)")
@Column(name = "RMaxTurnF")
@ApiModelProperty(notes = "最大旋转角度(右)")
private String RMaxTurnF;
@Show(label = "后桥推进线-桥错误(最初)")
@Column(name = "Tandem0I")
@ApiModelProperty(notes = "后桥推进线-桥错误(最初)")
private String Tandem0I;
@Show(label = "后桥推进线-桥错误(最终)")
@Column(name = "Tandem0D1I")
@ApiModelProperty(notes = "后桥推进线-桥错误(最终)")
private String Tandem0D1I;
@Show(label = "所在位置")
@Column(name = "ipAddress")
@ApiModelProperty(notes = "所在设备IP")
private String ipAddress;
@Show(label = "同步时间")
@ApiModelProperty(notes = "同步时间")
@Column(name = "create_time")
private Date createTime;
}
package net.vtstar.zhongtong.avi.access.job;
import com.healthmarketscience.jackcess.Database;
import com.healthmarketscience.jackcess.DatabaseBuilder;
import com.healthmarketscience.jackcess.Row;
import com.healthmarketscience.jackcess.Table;
import jcifs.smb.SmbFile;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.user.mybatis.provider.Operation;
import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.utils.DateUtils;
import net.vtstar.zhongtong.avi.access.domain.AssemblyNewEnergy;
import net.vtstar.zhongtong.avi.access.mapper.AssemblyNewEnergyMapper;
import net.vtstar.zhongtong.avi.sqlserver.domain.TestLineResult;
import net.vtstar.zhongtong.avi.utils.PingIpUtils;
import net.vtstar.zhongtong.avi.utils.SmbFileUtil;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.IOException;
import java.util.*;
/**
* 总装车间--新能源检测点
*
* @Author: xiadongwei
* @Date: 2019/10/16 18:20
*/
@Slf4j
@Component
@DisallowConcurrentExecution
public class AssemblyNewEnergyJob extends QuartzJobBean {
@Autowired
private AssemblyNewEnergyMapper assemblyNewEnergyMapper;
@Value("${zt.ip.assemblynewenergy1}")
private String ipAddress1;
@Value("${zt.ip.assemblynewenergy2}")
private String ipAddress2;
@Value("${zt.ip.assemblynewenergy3}")
private String ipAddress3;
@Value("${zt.ip.assemblynewenergy4}")
private String ipAddress4;
@Value("${zt.ip.pingtimes}")
private int pingTimes;
@Value("${zt.ip.timeout}")
private int timeOut;
private String baseUrl = "D:/scada/assemblynewenergy/";
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
List<String> ipAddressList = Arrays.asList(ipAddress1, ipAddress2, ipAddress3, ipAddress4);
log.info("--------开始同步总装车间新能源检测点数据--------");
//testdata@2018-05-05 数据文件命名格式
Date startOfDay = DateUtils.getStartOfDay(0);
String dateString = DateUtils.parseDateToString(startOfDay, "yyyy-MM-dd");
for (String ipAddress : ipAddressList){
if (!PingIpUtils.ping(ipAddress, pingTimes, timeOut)) {
log.error("ping: {}失败, 此次同步总装新能源检测点数据操作结束!", ipAddress);
return;
}
//todo:账户, 密码需要变
String url = "smb://wanteng:wanteng@" + ipAddress + "/AN9637H/testdata@" + dateString + ".mdb";
SmbFile file = null;
try {
file = new SmbFile(url);
if (file.exists()) {
SmbFileUtil.smbGet(url, baseUrl + "testdata@" + dateString + ".mdb");
}else {
log.error("日期: {} 的总装车间新能源检测点共享文件不存在!", dateString);
continue;
}
Database db;
List<AssemblyNewEnergy> list = new ArrayList<>();;
try {
db = DatabaseBuilder.open(new File(baseUrl + "testdata@" + dateString + ".mdb"));
Set<String> tableNames = db.getTableNames();
for (String tableName : tableNames) {
if (!"TestConditionResult".equals(tableName)){
continue;
}
Table table = db.getTable(tableName);
for (Row row : table) {
AssemblyNewEnergy map = new AssemblyNewEnergy();
map.setSerialNo(row.getString("SerialNo"));
map.setTIName(row.getString("TIName"));
map.setResultValue(row.getDouble("ResultValue"));
map.setResultUnit(row.getString("ResultUnit"));
map.setSystemTime(dateString + row.getString("SystemTime"));
map.setIpAddress(ipAddress);
map.setCreateTime(new Date());
list.add(map);
}
}
} catch (IOException e) {
log.error("读取日期: {} 的数据库文件失败!ip: {}", dateString, ipAddress);
continue;
}
assemblyNewEnergyMapper.delByFilter(new WhereFilter() {{
addFilter("SystemTime", Operation.LIKE, dateString);
addFilter("ipAddress", Operation.EQUAL, ipAddress);
}}, TestLineResult.class);
assemblyNewEnergyMapper.insertList(list);
log.info("更新新能源检测点: {} 数据: {}条", ipAddress, list.size());
} catch (Exception e) {
log.error("获取总装车间新能源检测点共享文件失败!ip: {}", ipAddress);
}
}
log.info("--------同步总装车间新能源检测点数据结束--------");
}
}
package net.vtstar.zhongtong.avi.access.job;
import com.healthmarketscience.jackcess.Database;
import com.healthmarketscience.jackcess.DatabaseBuilder;
import com.healthmarketscience.jackcess.Row;
import com.healthmarketscience.jackcess.Table;
import jcifs.smb.SmbFile;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.user.mybatis.provider.Operation;
import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.utils.DateUtils;
import net.vtstar.zhongtong.avi.access.domain.WheelAlignment;
import net.vtstar.zhongtong.avi.access.mapper.WheelAlignmentMapper;
import net.vtstar.zhongtong.avi.sqlserver.domain.TestLineResult;
import net.vtstar.zhongtong.avi.utils.PingIpUtils;
import net.vtstar.zhongtong.avi.utils.SmbFileUtil;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* 底盘车间--四轮定位
* @Author: xiadongwei
* @Date: 2019/10/16 18:20
*/
@Slf4j
@Component
@DisallowConcurrentExecution
public class WheelAlignmentJob extends QuartzJobBean {
@Autowired
private WheelAlignmentMapper mapper;
@Value("${zt.ip.wheelalignment1}")
private String ipAddress1;
@Value("${zt.ip.wheelalignment1}")
private String ipAddress2;
@Value("${zt.ip.wheelalignment1}")
private String ipAddress3;
@Value("${zt.ip.pingtimes}")
private int pingTimes;
@Value("${zt.ip.timeout}")
private int timeOut;
private String baseUrl = "D:/scada/wheelalignment/";
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
List<String> ipAddressList = Arrays.asList(ipAddress1, ipAddress2, ipAddress3);
log.info("--------开始同步底盘车间四轮定位数据--------");
//2019Apr30.mdb 数据文件命名格式
Date startOfDay = DateUtils.getStartOfDay(0);
String dateString = DateUtils.parseDateToString(startOfDay, "yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMMdd", Locale.ENGLISH);
String newDateString = sdf.format(new Date());
for (String ipAddress : ipAddressList){
if (!PingIpUtils.ping(ipAddress, pingTimes, timeOut)) {
log.error("ping: {}失败, 此次同步底盘四轮定位数据操作结束!", ipAddress);
return;
}
//todo:账户, 密码, 文件位置需要变
String url = "smb://wanteng:wanteng@" + ipAddress + "/AN9637H/" + newDateString + ".mdb";
SmbFile file = null;
try {
file = new SmbFile(url);
if (file.exists()) {
SmbFileUtil.smbGet(url, baseUrl + newDateString + ".mdb");
}else {
log.error("日期: {} 的底盘车间四轮定位共享数据库文件不存在!", newDateString);
continue;
}
Database db;
List<WheelAlignment> list = new ArrayList<>();;
try {
db = DatabaseBuilder.open(new File(baseUrl + newDateString + ".mdb"));
Set<String> tableNames = db.getTableNames();
for (String tableName : tableNames) {
if (!"LEGEND-5214E5AF".equals(tableName)){
continue;
}
Table table = db.getTable(tableName);
for (Row row : table) {
WheelAlignment map = new WheelAlignment();
map.setWorkOrderID(row.getString("WorkOrderID"));
map.setStartDateTime(row.getString("StartDateTime"));
map.setEndDateTime(row.getString("EndDateTime"));
map.setMake(row.getString("Make"));
map.setModel(row.getString("Model"));
map.setVIN(row.getString("VIN"));
map.setLFToeI(row.getInt("LFToeI") / 51.2 + "mm");
map.setLFToeF(row.getInt("LFToeF") / 51.2 + "mm");
map.setRFToeI(row.getInt("RFToeI") / 51.2 + "mm");
map.setRFToeF(row.getInt("RFToeF") / 51.2 + "mm");
map.setLFCamI((row.getInt("LFCamI") / 1000) + "°" + (Math.round((row.getInt("LFCamI") % 1000 * 60 / 1000f))) + "′");
map.setLFCamF((row.getInt("LFCamF") / 1000) + "°" + (Math.round((row.getInt("LFCamF") % 1000 * 60 / 1000f))) + "′");
map.setRFCamI((row.getInt("RFCamI") / 1000) + "°" + (Math.round((row.getInt("RFCamI") % 1000 * 60 / 1000f))) + "′");
map.setRFCamF((row.getInt("RFCamF") / 1000) + "°" + (Math.round((row.getInt("RFCamF") % 1000 * 60 / 1000f))) + "′");
map.setLCasI((row.getInt("LCasI") / 1000) + "°" + (Math.round((row.getInt("LCasI") % 1000 * 60 / 1000f))) + "′");
map.setLCasF((row.getInt("LCasF") / 1000) + "°" + (Math.round((row.getInt("LCasF") % 1000 * 60 / 1000f))) + "′");
map.setRCasI((row.getInt("RCasI") / 1000) + "°" + (Math.round((row.getInt("RCasI") % 1000 * 60 / 1000f))) + "′");
map.setRCasF((row.getInt("RCasF") / 1000) + "°" + (Math.round((row.getInt("RCasF") % 1000 * 60 / 1000f))) + "′");
//TODO:LKpiI/256*15′
int lKpiI = Math.round(row.getInt("LKpiI") % 1000 / 250f);
if (lKpiI == 4){
map.setLKpiI((row.getInt("LKpiI") / 1000 + 1) + "°" + "0′");
}else{
map.setLKpiI((row.getInt("LKpiI") / 1000 + 1) + "°" + (lKpiI * 15) + "′");
}
int lKpiF = Math.round(row.getInt("LKpiF") % 1000 / 250f);
if (lKpiF == 4){
map.setLKpiF((row.getInt("LKpiF") / 1000 + 1) + "°" + "0′");
}else{
map.setLKpiF((row.getInt("LKpiF") / 1000) + "°" + (lKpiF * 15) + "′");
}
int rKpiI = Math.round(row.getInt("RKpiI") % 1000 / 250f);
if (rKpiI == 4){
map.setRKpiI((row.getInt("RKpiI") / 1000 + 1) + "°" + "0′");
}else{
map.setRKpiI((row.getInt("RKpiI") / 1000) + "°" + (rKpiI * 15) + "′");
}
int rKpiF = Math.round(row.getInt("RKpiF") % 1000 / 250f);
if (rKpiF == 4){
map.setRKpiF((row.getInt("RKpiF") / 1000 + 1) + "°" + "0′");
}else{
map.setRKpiF((row.getInt("RKpiF") / 1000) + "°" + (rKpiF * 15) + "′");
}
map.setLAckermanF(String.valueOf(new BigDecimal(row.getDouble("LAckermanF")).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()) + "°");
map.setRAckermanF(String.valueOf(new BigDecimal(row.getDouble("RAckermanF")).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()) + "°");
map.setLMaxTurnF(String.valueOf(new BigDecimal(row.getDouble("LMaxTurnF")).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()) + "°");
map.setRMaxTurnF(String.valueOf(new BigDecimal(row.getDouble("RMaxTurnF")).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()) + "°");
map.setTandem0I((row.getInt("Tandem0I") / 47.5) + "mm");
map.setTandem0D1I((row.getInt("Tandem0D1I") / 115.926) + "mm");
map.setIpAddress(ipAddress);
map.setCreateTime(new Date());
list.add(map);
}
}
} catch (IOException e) {
log.error("读取日期: {} 的数据库文件失败!ip: {}", dateString, ipAddress);
continue;
}
mapper.delByFilter(new WhereFilter() {{
addFilter("create_time", Operation.GREATER_THAN, dateString);
addFilter("ipAddress", Operation.EQUAL, ipAddress);
}}, TestLineResult.class);
mapper.insertList(list);
log.info("更新四轮定位: {} 数据: {}条", ipAddress, list.size());
} catch (Exception e) {
log.error("获取底盘车间四轮定位共享文件失败!ip: {}", ipAddress);
}
}
log.info("--------同步底盘车间四轮定位数据结束--------");
}
}
package net.vtstar.zhongtong.avi.access.mapper;
import net.vtstar.user.mybatis.BaseMapper;
import net.vtstar.zhongtong.avi.access.domain.AssemblyNewEnergy;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: xiadongwei
* @Date: 2019/10/16 18:04
*/
@Mapper
public interface AssemblyNewEnergyMapper extends BaseMapper<AssemblyNewEnergy> {
}
package net.vtstar.zhongtong.avi.access.mapper;
import net.vtstar.user.mybatis.BaseMapper;
import net.vtstar.zhongtong.avi.access.domain.WheelAlignment;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: xiadongwei
* @Date: 2019/10/16 18:04
*/
@Mapper
public interface WheelAlignmentMapper extends BaseMapper<WheelAlignment> {
}
...@@ -28,14 +28,50 @@ public class DataSourceConfig { ...@@ -28,14 +28,50 @@ public class DataSourceConfig {
} }
@Bean @Bean
@ConfigurationProperties(prefix = "sqlserver") @ConfigurationProperties(prefix = "spring.test.sqlserver")
DataSource sqlServerDatasource() { DataSource testSqlServerDatasource() {
return DataSourceBuilder.create().build(); return DataSourceBuilder.create().build();
} }
@Bean @Bean
JdbcTemplate sqlserverJdbcTemplate(JdbcProperties properties) { JdbcTemplate testSqlServerJdbcTemplate(JdbcProperties properties) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(sqlServerDatasource()); JdbcTemplate jdbcTemplate = new JdbcTemplate(testSqlServerDatasource());
JdbcProperties.Template template = properties.getTemplate();
jdbcTemplate.setFetchSize(template.getFetchSize());
jdbcTemplate.setMaxRows(template.getMaxRows());
if (template.getQueryTimeout() != null) {
jdbcTemplate.setQueryTimeout((int) template.getQueryTimeout().getSeconds());
}
return jdbcTemplate;
}
@Bean
@ConfigurationProperties(prefix = "spring.speed.sqlserver")
DataSource speedSqlServerDatasource() {
return DataSourceBuilder.create().build();
}
@Bean
JdbcTemplate speedSqlServerJdbcTemplate(JdbcProperties properties) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(speedSqlServerDatasource());
JdbcProperties.Template template = properties.getTemplate();
jdbcTemplate.setFetchSize(template.getFetchSize());
jdbcTemplate.setMaxRows(template.getMaxRows());
if (template.getQueryTimeout() != null) {
jdbcTemplate.setQueryTimeout((int) template.getQueryTimeout().getSeconds());
}
return jdbcTemplate;
}
@Bean
@ConfigurationProperties(prefix = "spring.torque.sqlserver")
DataSource torqueSqlServerDatasource() {
return DataSourceBuilder.create().build();
}
@Bean
JdbcTemplate torqueSqlServerJdbcTemplate(JdbcProperties properties) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(torqueSqlServerDatasource());
JdbcProperties.Template template = properties.getTemplate(); JdbcProperties.Template template = properties.getTemplate();
jdbcTemplate.setFetchSize(template.getFetchSize()); jdbcTemplate.setFetchSize(template.getFetchSize());
jdbcTemplate.setMaxRows(template.getMaxRows()); jdbcTemplate.setMaxRows(template.getMaxRows());
......
...@@ -19,7 +19,9 @@ import javax.sql.DataSource; ...@@ -19,7 +19,9 @@ import javax.sql.DataSource;
basePackages = { basePackages = {
"net.vtstar.user.mapper", "net.vtstar.user.mapper",
"net.vtstar.scada.base.equipmgt.mapper", "net.vtstar.scada.base.equipmgt.mapper",
"net.vtstar.zhongtong.avi.equipment.mapper" "net.vtstar.zhongtong.avi.equipment.mapper",
"net.vtstar.zhongtong.avi.sqlserver.mapper",
"net.vtstar.zhongtong.avi.access.mapper"
}, },
sqlSessionFactoryRef = "sqlSessionFactoryMySQL") sqlSessionFactoryRef = "sqlSessionFactoryMySQL")
public class MybatisMySQLConfig { public class MybatisMySQLConfig {
......
...@@ -8,7 +8,6 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -8,7 +8,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource; import javax.sql.DataSource;
...@@ -19,13 +18,13 @@ import javax.sql.DataSource; ...@@ -19,13 +18,13 @@ import javax.sql.DataSource;
public class MybatisSqlServerConfig { public class MybatisSqlServerConfig {
@Autowired @Autowired
@Qualifier("sqlServerDatasource") @Qualifier("testSqlServerDatasource")
private DataSource sqlServerDatasource; private DataSource testSqlServerDatasource;
@Bean @Bean
public SqlSessionFactory sqlSessionFactorySqlServer() throws Exception { public SqlSessionFactory sqlSessionFactorySqlServer() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(sqlServerDatasource); factoryBean.setDataSource(testSqlServerDatasource);
//factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/sqlserver/*.xml")); //factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/sqlserver/*.xml"));
return factoryBean.getObject(); return factoryBean.getObject();
} }
......
package net.vtstar.zhongtong.avi.mqtt.handle;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.scada.base.mqtt.handler.BizMessageHandler;
import net.vtstar.scada.base.mqtt.utils.MqttConstants;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
import org.springframework.util.Assert;
@Slf4j
public abstract class AbstractTesterMessageHandler implements BizMessageHandler, InitializingBean {
private final String equipCode;
private final String topicType;
public AbstractTesterMessageHandler(String equipCode, String topicType) {
this.equipCode = equipCode;
this.topicType = topicType;
}
@Override
public boolean match(Message<?> message) {
MessageHeaders headers = message.getHeaders();
String equipmentName = headers.get(MqttConstants.MSG_HEADER_KEY_EQUIPMENTNAME, String.class);
String type = headers.get(MqttConstants.MSG_HEADER_KEY_TOPICTYPE, String.class);
return this.equipCode.startsWith(equipmentName) && topicType.equals(type);
}
@Override
public void afterPropertiesSet() {
Assert.notNull(topicType, "argument 'topicType' cannot be null");
Assert.notNull(equipCode, "argument 'equipType' cannot be null");
}
}
package net.vtstar.zhongtong.avi.mqtt.handle;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.scada.base.mqtt.utils.MqttConstants;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
import org.springframework.messaging.MessagingException;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@Slf4j
@Component
public class RfidMessageHandler extends AbstractTesterMessageHandler {
@Resource(name = "redisTemplate")
private ListOperations listOperations;
@Resource(name = "redisTemplate")
private ValueOperations valueOperations;
public RfidMessageHandler() {
super("translation", "data/all");
}
@Override
public void handleMessage(Message<?> message) throws MessagingException {
String payload = (String) message.getPayload();
System.out.println(payload);
MessageHeaders headers = message.getHeaders();
String equipmentNumber = headers.get(MqttConstants.MSG_HEADER_KEY_EQUIPMENTNUMBER, String.class);
/*try {
ChipCheckData data = new ChipCheckData();
data.setEquipCode(equipmentNumber);
data.setFangzuyi(new BigDecimal(payload).setScale(3, RoundingMode.HALF_UP));
data.setBeginTime(new Date());
log.info("方阻仪:" + data.getFangzuyi());
BaseKey baseKey = new BaseKey(ChipEquipType.FANGZUYI.getValue(), equipmentNumber);
listOperations.rightPush(baseKey.listKey(), data);
valueOperations.set(baseKey.lastKey(), data);
} catch (Exception e) {
log.error("handleMessage error:", e);
}*/
}
}
package net.vtstar.zhongtong.avi.sqlserver.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.vtstar.user.search.Search;
import net.vtstar.zhongtong.avi.global.web.Show;
import net.vtstar.zhongtong.avi.global.web.domain.enums.FieldType;
import javax.persistence.Column;
import javax.persistence.Table;
import java.util.Date;
/**
* @Author: xiadongwei
* @Date: 2019/10/17 11:52
*/
@ApiModel("总装车间车间--智能扭力扳手")
@Data
@Search(code = "INTELLIGENT_TORQUE_WRENCH")
@Table(name = "assembly_torque_wrench")
public class AssemblyTorqueWrench {
@Show(label = "单位")
@ApiModelProperty(notes = "单位")
@Column(name = "identifier")
@Search
private String identifier;
@Show(label = "程序名称")
@ApiModelProperty(notes = "程序名称")
@Column(name = "ProgramName")
@Search
private String ProgramName;
@Show(label = "程序版本时间", dataType = FieldType.DATETIME)
@ApiModelProperty(notes = "程序版本时间")
@Column(name = "ProgramDateTime")
private Date ProgramDateTime;
@Show(label = "扭力")
@ApiModelProperty(notes = "扭力")
@Column(name = "FinalTorque")
private Float FinalTorque;
@Show(label = "创建时间", dataType = FieldType.DATETIME)
@ApiModelProperty(notes = "创建时间")
@Column(name = "ResultDateTime")
private Date ResultDateTime;
@Show(label = "整体状态")
@ApiModelProperty(notes = "整体状态")
@Column(name = "OverallStatus")
private String OverallStatus;
@Show(label = "扭力状态")
@ApiModelProperty(notes = "扭力状态")
@Column(name = "TorqueStatus")
private String TorqueStatus;
}
package net.vtstar.zhongtong.avi.sqlserver.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.vtstar.user.search.Search;
import net.vtstar.zhongtong.avi.global.web.Show;
import net.vtstar.zhongtong.avi.global.web.domain.enums.FieldType;
import javax.persistence.Column;
import javax.persistence.Table;
import java.util.Date;
/**
* 试交车间--检测线
* @Author: xiadongwei
* @Date: 2019/10/16 10:23
*/
@ApiModel("试交车间--检测线")
@Data
@Search(code = "CHECK_LINE")
@Table(name = "test_line_result")
public class TestLineResult {
@Show(label = "PID")
@ApiModelProperty(notes = "PID")
@Column(name = "PID")
@Search
private String PID;
@Show(label = "VIN")
@ApiModelProperty(notes = "车身号")
@Column(name = "VIN")
@Search
private String VIN;
@Show(label = "测试时间", dataType = FieldType.DATETIME)
@ApiModelProperty(notes = "测试时间")
@Column(name = "TEST_TIME")
private Date TEST_TIME;
@Show(label = "一轴轴重")
@ApiModelProperty(notes = "一轴轴重")
@Column(name = "FST_WEIGHT")
private Float FST_WEIGHT;
@Show(label = "二轴轴重")
@ApiModelProperty(notes = "二轴轴重")
@Column(name = "SEC_WEIGHT")
private Float SEC_WEIGHT;
@Show(label = "总轴重")
@ApiModelProperty(notes = "总轴重")
@Column(name = "TOTAL_WEIGHT")
private Float TOTAL_WEIGHT;
@Show(label = "一轴最大制动力(左)")
@ApiModelProperty(notes = "一轴最大制动力(左)")
@Column(name = "FST_LBRAKE_FORCE")
private Float FST_LBRAKE_FORCE;
@Show(label = "一轴最大制动力(右)")
@ApiModelProperty(notes = "一轴最大制动力(右)")
@Column(name = "FST_RBRAKE_FORCE")
private Float FST_RBRAKE_FORCE;
@Show(label = "二轴最大制动力(左)")
@ApiModelProperty(notes = "二轴最大制动力(左)")
@Column(name = "SEC_LBRAKE_FORCE")
private Float SEC_LBRAKE_FORCE;
@Show(label = "二轴最大制动力(右)")
@ApiModelProperty(notes = "二轴最大制动力(右)")
@Column(name = "SEC_RBRAKE_FORCE")
private Float SEC_RBRAKE_FORCE;
@Show(label = "喇叭声级")
@ApiModelProperty(notes = "声级")
@Column(name = "SPEAKER")
private Float SPEAKER;
@Show(label = "远光发光强度/cd(左主灯)")
@ApiModelProperty(notes = "远光发光强度/cd(左主灯)")
@Column(name = "LAMP_LEFT_LUM")
private Float LAMP_LEFT_LUM;
@Show(label = "远光发光强度/cd(右主灯)")
@ApiModelProperty(notes = "远光发光强度/cd(右主灯)")
@Column(name = "LAMP_RIGHT_LUM")
private Float LAMP_RIGHT_LUM;
@Show(label = "排放-汽油-高怠速CO(%)")
@ApiModelProperty(notes = "排放-汽油-高怠速CO(%)")
@Column(name = "GAS_HICO")
private Float GAS_HICO;
@Show(label = "排放-汽油-高怠速HC(ppm)")
@ApiModelProperty(notes = "排放-汽油-高怠速HC(ppm)")
@Column(name = "GAS_HIHC")
private Float GAS_HIHC;
@Show(label = "排放-汽油-怠速CO(%)")
@ApiModelProperty(notes = "排放-汽油-怠速CO(%)")
@Column(name = "GAS_LOWCO")
private Float GAS_LOWCO;
@Show(label = "排放-汽油-怠速HC(ppm)")
@ApiModelProperty(notes = "排放-汽油-怠速HC(ppm)")
@Column(name = "GAS_LOWHC")
private Float GAS_LOWHC;
@Show(label = "排放-柴油-平均光吸收系数")
@ApiModelProperty(notes = "排放-柴油-平均光吸收系数")
@Column(name = "SMOKE_AVER")
private Float SMOKE_AVER;
@Show(label = "速度")
@ApiModelProperty(notes = "速度")
@Column(name = "SPEED")
private Float SPEED;
@Show(label = "侧滑阻尼值")
@ApiModelProperty(notes = "侧滑阻尼值")
@Column(name = "SIDESLIP")
private Float SIDESLIP;
@Show(label = "检测结果")
@ApiModelProperty(notes = "检测结果")
@Column(name = "TEST_RESULT")
private String TEST_RESULT;
}
package net.vtstar.zhongtong.avi.sqlserver.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.vtstar.user.search.Search;
import net.vtstar.zhongtong.avi.global.web.Show;
import net.vtstar.zhongtong.avi.global.web.domain.enums.FieldType;
import javax.persistence.Column;
import javax.persistence.Table;
import java.util.Date;
/**
* 试交车间--动静态检测(限速值,错误帧)
*
* @Author: xiadongwei
* @Date: 2019/10/16 10:23
*/
@ApiModel("试交车间--动静态检测(限速值,错误帧)")
@Data
@Search(code = "DYNAMIC_STATIC_TEST")
@Table(name = "test_speed_result")
public class TestSpeedResult {
@Show(label = "VIN")
@ApiModelProperty(notes = "vin")
@Column(name = "vin")
@Search
private String vin;
@Show(label = "厂牌型号")
@ApiModelProperty(notes = "厂牌型号")
@Column(name = "MODEL_ID")
private String MODEL_ID;
@Show(label = "测试时间", dataType = FieldType.DATETIME)
@ApiModelProperty(notes = "测试时间")
@Column(name = "test_date")
private Date testDate;
@Show(label = "限速值")
@ApiModelProperty(notes = "限速值")
@Column(name = "SPEED_MAX")
private Float SPEED_MAX;
@Show(label = "速度下限")
@ApiModelProperty(notes = "速度下限")
@Column(name = "SPEED_XSBZ0")
private Float SPEED_XSBZ0;
@Show(label = "速度上限")
@ApiModelProperty(notes = "速度上限")
@Column(name = "SPEED_XSBZ1")
private Float SPEED_XSBZ1;
@Show(label = "错误帧")
@ApiModelProperty(notes = "错误帧")
@Column(name = "error_frame")
private Float error_frame;
}
package net.vtstar.zhongtong.avi.sqlserver.job;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.user.mybatis.provider.Operation;
import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.utils.DateUtils;
import net.vtstar.zhongtong.avi.sqlserver.domain.AssemblyTorqueWrench;
import net.vtstar.zhongtong.avi.sqlserver.mapper.AssemblyTorqueWrenchMapper;
import net.vtstar.zhongtong.avi.utils.PingIpUtils;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
* 总装车间--智能扭力扳手同步数据
* @Author: xiadongwei
* @Date: 2019/10/16 18:20
*/
@Slf4j
@Component
@DisallowConcurrentExecution
public class AssemblyTorqueWrenchJob extends QuartzJobBean {
@Resource(name = "torqueSqlServerJdbcTemplate")
private JdbcTemplate torqueSqlServerJdbcTemplate;
@Autowired
private AssemblyTorqueWrenchMapper assemblyTorqueWrenchMapper;
@Value("${zt.ip.assemblytorquewrench}")
private String ipAddress;
@Value("${zt.ip.pingtimes}")
private int pingTimes;
@Value("${zt.ip.timeout}")
private int timeOut;
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
if (!PingIpUtils.ping(ipAddress, pingTimes, timeOut)){
log.error("ping: {}失败, 此次同步总装车间智能扭力扳手数据操作结束!", ipAddress);
return;
}
log.info("--------开始同步总装车间智能扭力扳手数据--------");
Date startOfDay = DateUtils.getStartOfDay(0);
String dateString = DateUtils.parseDateToString(startOfDay, "yyyy-MM-dd HH:mm:ss");
StringBuilder sql = new StringBuilder();
sql.append("SELECT Result.ID AS ResultID, Result.ResultDateTime, rstoverall.LanguageConstant AS OverallStatus, " +
"rsttorque.LanguageConstant AS TorqueStatus, ResultTightening.FinalTorque, Program.Name AS ProgramName, " +
"Program.ProgramDateTime, Unit.Identifier " +
"FROM Result " +
"INNER JOIN ResultStatusType AS rstoverall ON Result.ResultStatusTypeID = rstoverall.ID " +
"INNER JOIN ResultTightening ON Result.ID = ResultTightening.ResultID " +
"INNER JOIN ResultStatusType AS rsttorque ON ResultTightening.FinalTorqueStatusID = rsttorque.ID " +
"INNER JOIN Program ON Result.ProgramID = Program.ID " +
"INNER JOIN Unit ON Result.UnitID = Unit.ID WHERE ResultDateTime > '");
sql.append(dateString);
sql.append("'");
List<AssemblyTorqueWrench> query = torqueSqlServerJdbcTemplate.query(sql.toString(), (rs, rowNum) -> {
AssemblyTorqueWrench map = new AssemblyTorqueWrench();
map.setIdentifier(rs.getString("Identifier"));
map.setProgramName(rs.getString("ProgramName"));
map.setProgramDateTime(rs.getTimestamp("ProgramDateTime"));
map.setFinalTorque(rs.getFloat("FinalTorque"));
map.setResultDateTime(rs.getTimestamp("ResultDateTime"));
map.setOverallStatus(rs.getString("OverallStatus"));
map.setTorqueStatus(rs.getString("TorqueStatus"));
return map;
});
log.error("总装车间智能扭力扳手查询到数据: {} 条", query.size());
if (CollectionUtils.isEmpty(query)) {
//todo: ping通
log.error("连接总装车间智能扭力扳手SQL SERVER失败!");
return;
}
assemblyTorqueWrenchMapper.delByFilter(new WhereFilter() {{
addFilter("ResultDateTime", Operation.GREATER_THAN, dateString);
}}, AssemblyTorqueWrench.class);
assemblyTorqueWrenchMapper.insertList(query);
log.info("--------同步总装车间智能扭力扳手数据结束--------");
}
}
package net.vtstar.zhongtong.avi.sqlserver.job;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.user.mybatis.provider.Operation;
import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.utils.DateUtils;
import net.vtstar.zhongtong.avi.sqlserver.domain.TestLineResult;
import net.vtstar.zhongtong.avi.sqlserver.mapper.TestLineResultMapper;
import net.vtstar.zhongtong.avi.utils.PingIpUtils;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
* 试交车间--检测线同步数据
* @Author: xiadongwei
* @Date: 2019/10/16 18:20
*/
@Slf4j
@Component
@DisallowConcurrentExecution
public class TestLineResultJob extends QuartzJobBean {
@Resource(name = "testSqlServerJdbcTemplate")
private JdbcTemplate testSqlServerJdbcTemplate;
@Autowired
private TestLineResultMapper testLineResultMapper;
@Value("${zt.ip.testlineresult}")
private String ipAddress;
@Value("${zt.ip.pingtimes}")
private int pingTimes;
@Value("${zt.ip.timeout}")
private int timeOut;
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
if (!PingIpUtils.ping(ipAddress, pingTimes, timeOut)){
log.error("ping: {}失败, 此次同步试交车间检测线数据操作结束!", ipAddress);
return;
}
log.info("--------开始同步试交车间检测线数据--------");
Date startOfDay = DateUtils.getStartOfDay(0);
String dateString = DateUtils.parseDateToString(startOfDay, "yyyy-MM-dd HH:mm:ss");
StringBuilder sql = new StringBuilder();
sql.append("SELECT PID, VIN, TEST_TIME, FST_WEIGHT, SEC_WEIGHT, TOTAL_WEIGHT, FST_LBRAKE_FORCE, FST_RBRAKE_FORCE, " +
"SEC_LBRAKE_FORCE, SEC_RBRAKE_FORCE, SPEAKER, LAMP_LEFT_LUM, LAMP_RIGHT_LUM, GAS_HICO, GAS_HIHC, " +
"GAS_LOWCO, GAS_LOWHC, SMOKE_AVER, SPEED, SIDESLIP, TEST_RESULT FROM CARTEST_RECORD_RESULT WHERE TEST_TIME > '");
sql.append(dateString);
sql.append("'");
List<TestLineResult> query = testSqlServerJdbcTemplate.query(sql.toString(), (rs, rowNum) -> {
TestLineResult map = new TestLineResult();
map.setPID(rs.getString("PID"));
map.setVIN(rs.getString("VIN"));
map.setTEST_TIME(rs.getTimestamp("TEST_TIME"));
map.setFST_WEIGHT(rs.getFloat("FST_WEIGHT"));
map.setSEC_WEIGHT(rs.getFloat("SEC_WEIGHT"));
map.setTOTAL_WEIGHT(rs.getFloat("TOTAL_WEIGHT"));
map.setFST_LBRAKE_FORCE(rs.getFloat("FST_LBRAKE_FORCE"));
map.setFST_RBRAKE_FORCE(rs.getFloat("FST_RBRAKE_FORCE"));
map.setSEC_LBRAKE_FORCE(rs.getFloat("SEC_LBRAKE_FORCE"));
map.setSEC_RBRAKE_FORCE(rs.getFloat("SEC_RBRAKE_FORCE"));
map.setSPEAKER(rs.getFloat("SPEAKER"));
map.setLAMP_LEFT_LUM(rs.getFloat("LAMP_LEFT_LUM"));
map.setLAMP_RIGHT_LUM(rs.getFloat("LAMP_RIGHT_LUM"));
map.setGAS_HICO(rs.getFloat("GAS_HICO"));
map.setGAS_HIHC(rs.getFloat("GAS_HIHC"));
map.setGAS_LOWCO(rs.getFloat("GAS_LOWCO"));
map.setGAS_LOWHC(rs.getFloat("GAS_LOWHC"));
map.setSMOKE_AVER(rs.getFloat("SMOKE_AVER"));
map.setSPEED(rs.getFloat("SPEED"));
map.setSIDESLIP(rs.getFloat("SIDESLIP"));
map.setTEST_RESULT(rs.getString("TEST_RESULT"));
return map;
});
log.error("检测线查询到数据: {} 条", query.size());
if (CollectionUtils.isEmpty(query)) {
//todo: ping通
log.error("连接检测线SQL SERVER失败!");
return;
}
testLineResultMapper.delByFilter(new WhereFilter() {{
addFilter("TEST_TIME", Operation.GREATER_THAN, dateString);
}}, TestLineResult.class);
testLineResultMapper.insertList(query);
log.info("--------同步试交车间检测线数据结束--------");
}
}
package net.vtstar.zhongtong.avi.sqlserver.job;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.user.mybatis.provider.Operation;
import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.utils.DateUtils;
import net.vtstar.zhongtong.avi.sqlserver.domain.TestLineResult;
import net.vtstar.zhongtong.avi.sqlserver.domain.TestSpeedResult;
import net.vtstar.zhongtong.avi.sqlserver.mapper.TestSpeedMapper;
import net.vtstar.zhongtong.avi.utils.PingIpUtils;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
* 试交车间--限速值同步数据
* @Author: xiadongwei
* @Date: 2019/10/16 18:20
*/
@Slf4j
@Component
@DisallowConcurrentExecution
public class TestSpeedJob extends QuartzJobBean {
@Resource(name = "speedSqlServerJdbcTemplate")
private JdbcTemplate speedSqlServerJdbcTemplate;
@Autowired
private TestSpeedMapper testSpeedMapper;
@Value("${zt.ip.testspeedresult}")
private String ipAddress;
@Value("${zt.ip.pingtimes}")
private int pingTimes;
@Value("${zt.ip.timeout}")
private int timeOut;
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
if (!PingIpUtils.ping(ipAddress, pingTimes, timeOut)){
log.error("ping: {}失败, 此次同步试交车间限速值数据操作结束!", ipAddress);
return;
}
log.info("--------开始同步试交车间限速值数据--------");
Date startOfDay = DateUtils.getStartOfDay(0);
String dateString = DateUtils.parseDateToString(startOfDay, "yyyy-MM-dd HH:mm:ss");
StringBuilder sql = new StringBuilder();
sql.append("SELECT vin, MODEL_ID, testDate, SPEED_MAX, SPEED_XSBZ0, SPEED_XSBZ1 FROM CARTEST_SPEED_RESULT WHERE testDate > '");
sql.append(dateString);
sql.append("'");
List<TestSpeedResult> query = speedSqlServerJdbcTemplate.query(sql.toString(), (rs, rowNum) -> {
TestSpeedResult map = new TestSpeedResult();
map.setVin(rs.getString("vin"));
map.setMODEL_ID(rs.getString("MODEL_ID"));
map.setTestDate(rs.getTimestamp("testDate"));
map.setSPEED_MAX(rs.getFloat("SPEED_MAX"));
map.setSPEED_XSBZ0(rs.getFloat("SPEED_XSBZ0"));
map.setSPEED_XSBZ1(rs.getFloat("SPEED_XSBZ1"));
return map;
});
log.error("限速值查询到数据: {} 条", query.size());
if (CollectionUtils.isEmpty(query)) {
//todo: ping通
log.error("连接限速值SQL SERVER失败!");
return;
}
testSpeedMapper.delByFilter(new WhereFilter() {{
addFilter("test_date", Operation.GREATER_THAN, dateString);
}}, TestLineResult.class);
testSpeedMapper.insertList(query);
log.info("--------同步试交车间限速值数据结束--------");
}
}
package net.vtstar.zhongtong.avi.sqlserver.mapper;
import net.vtstar.user.mybatis.BaseMapper;
import net.vtstar.zhongtong.avi.sqlserver.domain.AssemblyTorqueWrench;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: xiadongwei
* @Date: 2019/10/16 18:04
*/
@Mapper
public interface AssemblyTorqueWrenchMapper extends BaseMapper<AssemblyTorqueWrench> {
}
package net.vtstar.zhongtong.avi.sqlserver.mapper;
import net.vtstar.user.mybatis.BaseMapper;
import net.vtstar.zhongtong.avi.sqlserver.domain.TestLineResult;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: xiadongwei
* @Date: 2019/10/16 18:04
*/
@Mapper
public interface TestLineResultMapper extends BaseMapper<TestLineResult> {
}
package net.vtstar.zhongtong.avi.sqlserver.mapper;
import net.vtstar.user.mybatis.BaseMapper;
import net.vtstar.zhongtong.avi.sqlserver.domain.TestSpeedResult;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: xiadongwei
* @Date: 2019/10/16 18:04
*/
@Mapper
public interface TestSpeedMapper extends BaseMapper<TestSpeedResult> {
}
package net.vtstar.zhongtong.avi.sqlserver.service;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.user.mybatis.provider.Operation;
import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.utils.DateUtils;
import net.vtstar.zhongtong.avi.sqlserver.domain.AssemblyTorqueWrench;
import net.vtstar.zhongtong.avi.sqlserver.domain.TestLineResult;
import net.vtstar.zhongtong.avi.sqlserver.domain.TestSpeedResult;
import net.vtstar.zhongtong.avi.sqlserver.mapper.AssemblyTorqueWrenchMapper;
import net.vtstar.zhongtong.avi.sqlserver.mapper.TestLineResultMapper;
import net.vtstar.zhongtong.avi.sqlserver.mapper.TestSpeedMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
* @Author: xiadongwei
* @Date: 2019/9/24 16:44
*/
@Slf4j
@Service
public class TestDeliverService {
@Resource(name = "testSqlServerJdbcTemplate")
private JdbcTemplate testSqlServerJdbcTemplate;
@Resource(name = "speedSqlServerJdbcTemplate")
private JdbcTemplate speedSqlServerJdbcTemplate;
@Resource(name = "torqueSqlServerJdbcTemplate")
private JdbcTemplate torqueSqlServerJdbcTemplate;
@Autowired
private TestLineResultMapper testLineResultMapper;
@Autowired
private TestSpeedMapper testSpeedMapper;
@Autowired
private AssemblyTorqueWrenchMapper assemblyTorqueWrenchMapper;
public void tableTest(String timeStr) {
log.error(DateUtils.parseDateToString(new Date(), "HHmmss"));
StringBuilder sql = new StringBuilder();
sql.append("SELECT PID, VIN, TEST_TIME, FST_WEIGHT, SEC_WEIGHT, TOTAL_WEIGHT, FST_LBRAKE_FORCE, FST_RBRAKE_FORCE, " +
"SEC_LBRAKE_FORCE, SEC_RBRAKE_FORCE, SPEAKER, LAMP_LEFT_LUM, LAMP_RIGHT_LUM, GAS_HICO, GAS_HIHC, " +
"GAS_LOWCO, GAS_LOWHC, SMOKE_AVER, SPEED, SIDESLIP, TEST_RESULT FROM CARTEST_RECORD_RESULT WHERE TEST_TIME > '");
sql.append(timeStr);
sql.append("'");
List<TestLineResult> query = testSqlServerJdbcTemplate.query(sql.toString(), (rs, rowNum) -> {
TestLineResult map = new TestLineResult();
map.setPID(rs.getString("PID"));
map.setVIN(rs.getString("VIN"));
map.setTEST_TIME(rs.getTimestamp("TEST_TIME"));
map.setFST_WEIGHT(rs.getFloat("FST_WEIGHT"));
map.setSEC_WEIGHT(rs.getFloat("SEC_WEIGHT"));
map.setTOTAL_WEIGHT(rs.getFloat("TOTAL_WEIGHT"));
map.setFST_LBRAKE_FORCE(rs.getFloat("FST_LBRAKE_FORCE"));
map.setFST_RBRAKE_FORCE(rs.getFloat("FST_RBRAKE_FORCE"));
map.setSEC_LBRAKE_FORCE(rs.getFloat("SEC_LBRAKE_FORCE"));
map.setSEC_RBRAKE_FORCE(rs.getFloat("SEC_RBRAKE_FORCE"));
map.setSPEAKER(rs.getFloat("SPEAKER"));
map.setLAMP_LEFT_LUM(rs.getFloat("LAMP_LEFT_LUM"));
map.setLAMP_RIGHT_LUM(rs.getFloat("LAMP_RIGHT_LUM"));
map.setGAS_HICO(rs.getFloat("GAS_HICO"));
map.setGAS_HIHC(rs.getFloat("GAS_HIHC"));
map.setGAS_LOWCO(rs.getFloat("GAS_LOWCO"));
map.setGAS_LOWHC(rs.getFloat("GAS_LOWHC"));
map.setSMOKE_AVER(rs.getFloat("SMOKE_AVER"));
map.setSPEED(rs.getFloat("SPEED"));
map.setSIDESLIP(rs.getFloat("SIDESLIP"));
map.setTEST_RESULT(rs.getString("TEST_RESULT"));
return map;
});
log.error("检测线查询到数据: {} 条", query.size());
if (CollectionUtils.isEmpty(query)) {
//todo: ping通
log.error("连接SQL SERVER失败!");
return;
}
testLineResultMapper.delByFilter(new WhereFilter() {{
addFilter("TEST_TIME", Operation.GREATER_THAN, timeStr);
}}, TestLineResult.class);
testLineResultMapper.insertList(query);
log.error(DateUtils.parseDateToString(new Date(), "HHmmss"));
}
public void tableWrench(String timeStr) {
log.info("--------开始同步试交车间限速值数据--------");
StringBuilder sql = new StringBuilder();
sql.append("SELECT vin, MODEL_ID, testDate, SPEED_MAX, SPEED_XSBZ0, SPEED_XSBZ1 FROM CARTEST_SPEED_RESULT WHERE testDate > '");
sql.append(timeStr);
sql.append("'");
List<TestSpeedResult> query = speedSqlServerJdbcTemplate.query(sql.toString(), (rs, rowNum) -> {
TestSpeedResult map = new TestSpeedResult();
map.setVin(rs.getString("vin"));
map.setMODEL_ID(rs.getString("MODEL_ID"));
map.setTestDate(rs.getTimestamp("testDate"));
map.setSPEED_MAX(rs.getFloat("SPEED_MAX"));
map.setSPEED_XSBZ0(rs.getFloat("SPEED_XSBZ0"));
map.setSPEED_XSBZ1(rs.getFloat("SPEED_XSBZ1"));
return map;
});
log.error("检测线查询到数据: {} 条", query.size());
if (CollectionUtils.isEmpty(query)) {
//todo: ping通
log.error("连接SQL SERVER失败!");
return;
}
testSpeedMapper.delByFilter(new WhereFilter() {{
addFilter("test_date", Operation.GREATER_THAN, timeStr);
}}, TestSpeedResult.class);
testSpeedMapper.insertList(query);
log.info("--------同步试交车间限速值数据结束--------");
}
public void tabletorque(String timeStr) {
log.info("--------开始同步总装车间智能扭力扳手数据--------");
StringBuilder sql = new StringBuilder();
sql.append("SELECT Result.ID AS ResultID, Result.ResultDateTime, rstoverall.LanguageConstant AS OverallStatus, " +
"rsttorque.LanguageConstant AS TorqueStatus, ResultTightening.FinalTorque, Program.Name AS ProgramName, " +
"Program.ProgramDateTime, Unit.Identifier " +
"FROM Result " +
"INNER JOIN ResultStatusType AS rstoverall ON Result.ResultStatusTypeID = rstoverall.ID " +
"INNER JOIN ResultTightening ON Result.ID = ResultTightening.ResultID " +
"INNER JOIN ResultStatusType AS rsttorque ON ResultTightening.FinalTorqueStatusID = rsttorque.ID " +
"INNER JOIN Program ON Result.ProgramID = Program.ID " +
"INNER JOIN Unit ON Result.UnitID = Unit.ID WHERE ResultDateTime > '");
sql.append(timeStr);
sql.append("'");
List<AssemblyTorqueWrench> query = torqueSqlServerJdbcTemplate.query(sql.toString(), (rs, rowNum) -> {
AssemblyTorqueWrench map = new AssemblyTorqueWrench();
map.setIdentifier(rs.getString("Identifier"));
map.setProgramName(rs.getString("ProgramName"));
map.setProgramDateTime(rs.getTimestamp("ProgramDateTime"));
map.setFinalTorque(rs.getFloat("FinalTorque"));
map.setResultDateTime(rs.getTimestamp("ResultDateTime"));
map.setOverallStatus(rs.getString("OverallStatus"));
map.setTorqueStatus(rs.getString("TorqueStatus"));
return map;
});
log.error("总装车间智能扭力扳手查询到数据: {} 条", query.size());
if (CollectionUtils.isEmpty(query)) {
//todo: ping通
log.error("连接总装车间智能扭力扳手SQL SERVER失败!");
return;
}
assemblyTorqueWrenchMapper.delByFilter(new WhereFilter() {{
addFilter("ResultDateTime", Operation.GREATER_THAN, timeStr);
}}, TestSpeedResult.class);
assemblyTorqueWrenchMapper.insertList(query);
log.info("--------同步总装车间智能扭力扳手数据结束--------");
}
}
package net.vtstar.zhongtong.avi.utils;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
/**
* @Author: xiadongwei
* @Date: 2019/10/10 17:48
*/
public class GetFileName {
public static String[] getFileName(String path) {
File file = new File(path);
String[] fileName = file.list();
return fileName;
}
public static void getAllFileName(String path, ArrayList<String> fileName) {
File file = new File(path);
File[] files = file.listFiles();
String[] names = file.list();
if (names != null) {
fileName.addAll(Arrays.asList(names));
}
for (File a : files) {
if (a.isDirectory()) {
getAllFileName(a.getAbsolutePath(), fileName);
}
}
}
public static void main(String[] args) {
String[] fileName = getFileName("D:\\");
for (String name : fileName) {
System.out.println(name);
}
System.out.println("--------------------------------");
// ArrayList<String> listFileName = new ArrayList<String>();
// getAllFileName("F:\\xiaoshuo", listFileName);
// for (String name : listFileName) {
// System.out.println(name);
// }
}
}
\ No newline at end of file
package net.vtstar.zhongtong.avi.utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* @Author: xiadongwei
* @Date: 2019/10/17 17:42
*/
@Slf4j
public class PingIpUtils {
/**
* @param ipAddress ip地址
* @param pingTimes 次数(一次ping,对方返回的ping的结果的次数)
* @param timeOut 超时时间 单位ms(ping不通,设置的此次ping结束时间)
* @return
*/
public static boolean ping(String ipAddress, int pingTimes, int timeOut) {
BufferedReader in = null;
String pingCommand = null;
Runtime r = Runtime.getRuntime();
String osName = System.getProperty("os.name");
log.info("项目所在系统是:" +osName);
if(osName.contains("Windows")){
//将要执行的ping命令,此命令是windows格式的命令
pingCommand = "ping " + ipAddress + " -n " + pingTimes + " -w " + timeOut;
}else{
//将要执行的ping命令,此命令是Linux格式的命令
//-c:次数,-w:超时时间(单位/ms) ping -c 10 -w 0.5 192.168.120.206
pingCommand = "ping " + " -c " + "4" + " -w " + "2 " + ipAddress;
}
try {
//执行命令并获取输出
Process p = r.exec(pingCommand);
if (p == null) {
return false;
}
in = new BufferedReader(new InputStreamReader(p.getInputStream()));
int connectedCount = 0;
String line = null;
while ((line = in.readLine()) != null) {
connectedCount += getCheckResult(line,osName);
}
//如果出现类似=23 ms ttl=64(TTL=64 Windows)这样的字样,出现的次数=测试次数则返回真
//return connectedCount == pingTimes;
log.info("ping通设备IP :{}的次数为:" +connectedCount, ipAddress);
return connectedCount >= 2 ? true : false;
} catch (Exception ex) {
ex.printStackTrace(); //出现异常则返回假
return false;
} finally {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//若line含有=18 ms ttl=64字样,说明已经ping通,返回1,否則返回0.
private static int getCheckResult(String line,String osName) {
if(osName.contains("Windows")){
if(line.contains("TTL=")){
return 1;
}
}else{
if(line.contains("ttl=")){
return 1;
}
}
return 0;
}
public static void main(String[] args) {
String ipAddress = "10.100.172.150";
String osName = System.getProperty("os.name");
System.out.println(osName);
System.out.println(ping(ipAddress, 1, 1000));
}
}
package net.vtstar.zhongtong.avi.utils;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import jcifs.smb.SmbFileOutputStream;
import java.io.*;
/**
* 远程共享文件访问(上传、下发)
*
* @Author: xiadongwei
* @Date: 2019/10/11 10:40
*/
public class SmbFileUtil {
public static void main(String[] args) throws Exception {
//smb://xxx:xxx@192.168.2.188/testIndex/
//xxx:xxx是共享机器的用户名密码
String url = "smb://wanteng:wanteng@192.168.43.158/Music/";
SmbFile file = new SmbFile(url);
if (file.exists()) {
SmbFile[] files = file.listFiles();
for (SmbFile f : files) {
System.out.println(f.getName());
}
}
// smbGet("smb://C1307890:Ivo123@10.20.2.33/CIMPublic/02 MES/SPC/Spc_Check_IVO_V1_00.ppt", "D:/ap_log");
// smbPut("smb://wanteng:wanteng@192.168.43.158/d$/英雄时刻/", "D:/error.xls");
}
// 从共享目录下载文件
public static void smbGet(String remoteUrl, String localDir) {
InputStream in = null;
OutputStream out = null;
try {
SmbFile remoteFile = new SmbFile(remoteUrl);
if (remoteFile == null) {
System.out.println("共享文件不存在");
return;
}
String fileName = remoteFile.getName();
File localFile = new File(localDir + File.separator + fileName);
in = new BufferedInputStream(new SmbFileInputStream(remoteFile));
out = new BufferedOutputStream(new FileOutputStream(localFile));
byte[] buffer = new byte[1024];
while (in.read(buffer) != -1) {
out.write(buffer);
buffer = new byte[1024];
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//向共享目录上传文件
public static void smbPut(String remoteUrl, String localFilePath) {
InputStream in = null;
OutputStream out = null;
try {
File localFile = new File(localFilePath);
String fileName = localFile.getName();
SmbFile remoteFile = new SmbFile(remoteUrl + "/" + fileName);
in = new BufferedInputStream(new FileInputStream(localFile));
out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));
byte[] buffer = new byte[1024];
while (in.read(buffer) != -1) {
out.write(buffer);
buffer = new byte[1024];
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
spring.profiles.include=mybatis,quartz,swagger,security spring.profiles.include=mybatis,quartz,swagger,security,ztip,mqtt
# Mysql # Mysql
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
......
# Mqtt # Mqtt
mqtt.server-uri=tcp://127.0.0.1:1883 mqtt.server-uri=tcp://127.0.0.1:1883
mqtt.connection-timeout-second=10 mqtt.connection-timeout-second=10
mqtt.username=huaying mqtt.username=admin
mqtt.password=huaying-2018 mqtt.password=public
#\u56FA\u5B9AclientId\uFF0Cclean-session=false\uFF0C\u53EF\u63A5\u6536\u79BB\u7EBF\u6D88\u606F\uFF0C\u96C6\u7FA4\u90E8\u7F72\u65F6clientId\u4E0D\u53EF\u91CD\u590D #\u56FA\u5B9AclientId\uFF0Cclean-session=false\uFF0C\u53EF\u63A5\u6536\u79BB\u7EBF\u6D88\u606F\uFF0C\u96C6\u7FA4\u90E8\u7F72\u65F6clientId\u4E0D\u53EF\u91CD\u590D
#mqtt.clean-session=false #mqtt.clean-session=false
#mqtt.subscribe.clientId=VTS-huaying #mqtt.subscribe.clientId=VTS-huaying
...@@ -16,7 +16,27 @@ mqtt.subscribe.data-system-topic-suffix=system ...@@ -16,7 +16,27 @@ mqtt.subscribe.data-system-topic-suffix=system
mqtt.subscribe.data-alarm-topic-suffix=alarm mqtt.subscribe.data-alarm-topic-suffix=alarm
mqtt.subscribe.data-all-topic-suffix=all mqtt.subscribe.data-all-topic-suffix=all
mqtt.subscribe.topics=\ mqtt.subscribe.topics=\
$local/$queue/${mqtt.subscribe.topic-prefix}/${mqtt.subscribe.equipment-name}/${mqtt.subscribe.equipment-number}/${mqtt.subscribe.data-topic-key}/${mqtt.subscribe.data-all-topic-suffix},\ ZT/translation/rfid01/data/all,\
iot/testmachine/+/data/result,\ ZT/translation/rfid02/data/all,\
iot/testmachine/+/data/key,\ ZT/translation/rfid03/data/all,\
iot/testmachine/+/data/alarm ZT/translation/rfid04/data/all,\
ZT/translation/rfid05/data/all,\
ZT/translation/rfid06/data/all,\
ZT/translation/rfid07/data/all,\
ZT/translation/rfid08/data/all,\
ZT/translation/rfid09/data/all,\
ZT/translation/rfid10/data/all,\
ZT/translation/rfid11/data/all,\
ZT/translation/rfid12/data/all,\
ZT/translation/rfid13/data/all,\
ZT/skid/rfid01/data/all,\
ZT/skid/rfid02/data/all,\
ZT/skid/rfid03/data/all,\
ZT/skid/rfid04/data/all,\
ZT/skid/rfid05/data/all,\
ZT/skid/rfid06/data/all,\
ZT/skid/rfid07/data/all,\
ZT/skid/rfid08/data/all,\
ZT/skid/rfid09/data/all,\
ZT/skid/rfid10/data/all,\
ZT/skid/rfid11/data/all
...@@ -39,6 +39,41 @@ quartz.job.taskInfos[2].jobDescription=\u8ba1\u7b97\u8fd0\u884c\u65f6\u95f4Job ...@@ -39,6 +39,41 @@ quartz.job.taskInfos[2].jobDescription=\u8ba1\u7b97\u8fd0\u884c\u65f6\u95f4Job
quartz.job.taskInfos[2].cronExpression=0 0 1 * * ? quartz.job.taskInfos[2].cronExpression=0 0 1 * * ?
quartz.job.taskInfos[2].start=false quartz.job.taskInfos[2].start=false
#检测线
quartz.job.taskInfos[3].jobName=net.vtstar.zhongtong.avi.sqlserver.job.TestLineResultJob
quartz.job.taskInfos[3].jobGroup=TestLineResultJob
quartz.job.taskInfos[3].jobDescription=\u68c0\u6d4b\u7ebfJob
quartz.job.taskInfos[3].cronExpression=0 0/15 * * * ?
quartz.job.taskInfos[3].start=false
#限速值
quartz.job.taskInfos[4].jobName=net.vtstar.zhongtong.avi.sqlserver.job.TestSpeedResultJob
quartz.job.taskInfos[4].jobGroup=TestSpeedResultJob
quartz.job.taskInfos[4].jobDescription=\u9650\u901f\u503cJob
quartz.job.taskInfos[4].cronExpression=0 0/15 * * * ?
quartz.job.taskInfos[4].start=false
#智能扭力扳手
quartz.job.taskInfos[5].jobName=net.vtstar.zhongtong.avi.sqlserver.job.AssemblyTorqueWrenchJob
quartz.job.taskInfos[5].jobGroup=AssemblyTorqueWrenchJob
quartz.job.taskInfos[5].jobDescription=\u667a\u80fd\u626d\u529b\u6273\u624bJob
quartz.job.taskInfos[5].cronExpression=0 0/15 * * * ?
quartz.job.taskInfos[5].start=false
#新能源检测点定位
quartz.job.taskInfos[6].jobName=net.vtstar.zhongtong.avi.access.job.AssemblyNewEnergyJob
quartz.job.taskInfos[6].jobGroup=AssemblyNewEnergyJob
quartz.job.taskInfos[6].jobDescription=\u65b0\u80fd\u6e90\u68c0\u6d4b\u70b9Job
quartz.job.taskInfos[6].cronExpression=0 0/15 * * * ?
quartz.job.taskInfos[6].start=false
#四轮定位同步
quartz.job.taskInfos[7].jobName=net.vtstar.zhongtong.avi.access.job.WheelAlignmentJob
quartz.job.taskInfos[7].jobGroup=WheelAlignmentJob
quartz.job.taskInfos[7].jobDescription=\u56db\u8f6e\u5b9a\u4f4dJob
quartz.job.taskInfos[7].cronExpression=0 0/15 * * * ?
quartz.job.taskInfos[7].start=false
#quartz.job.taskInfos[2].jobName=net.vtstar.scada.base.equipmgt.job.CleanEquipStatusJob #quartz.job.taskInfos[2].jobName=net.vtstar.scada.base.equipmgt.job.CleanEquipStatusJob
#quartz.job.taskInfos[2].jobGroup=CleanEquipStatusJob #quartz.job.taskInfos[2].jobGroup=CleanEquipStatusJob
#quartz.job.taskInfos[2].jobDescription=\u6E05\u6D17\u8BBE\u5907\u72B6\u6001Job #quartz.job.taskInfos[2].jobDescription=\u6E05\u6D17\u8BBE\u5907\u72B6\u6001Job
......
spring.profiles.include=mybatis,quartz,swagger,security spring.profiles.include=mybatis,quartz,swagger,security,ztip,mqtt
# Mysql # Mysql
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
...@@ -7,20 +7,26 @@ spring.datasource.username=root ...@@ -7,20 +7,26 @@ spring.datasource.username=root
spring.datasource.password=123456 spring.datasource.password=123456
# redis # redis
spring.redis.host=10.100.172.102 spring.redis.host=127.0.0.1
spring.redis.port=6379 spring.redis.port=6379
spring.redis.password= spring.redis.password=
# sql server # sql server(试交车间--检测线192.168.1.200)
#spring.datasource.sqlserver.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver spring.test.sqlserver.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
##spring.datasource.sqlserver.jdbc-url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=CARTEST_ZTKC spring.test.sqlserver.jdbc-url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=CARTEST_ZTKC
##spring.datasource.sqlserver.username=admin spring.test.sqlserver.username=admin
##spring.datasource.sqlserver.password=123456 spring.test.sqlserver.password=123456
# secondary datasource (MS SQL Server) # sql server(试交车间--限速值)
sqlserver.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver spring.speed.sqlserver.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
sqlserver.jdbc-url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=CARTEST_ZTKC spring.speed.sqlserver.jdbc-url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=localdb
sqlserver.username=admin spring.speed.sqlserver.username=admin
sqlserver.password=123456 spring.speed.sqlserver.password=123456
# sql server(总装车间--智能扭力扳手)
spring.torque.sqlserver.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.torque.sqlserver.jdbc-url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=AtlasCopco_ToolsNet_Database
spring.torque.sqlserver.username=admin
spring.torque.sqlserver.password=123456
server.port=8888 server.port=8888
#中通设备ip表
#试交车间--检测线
zt.ip.testlineresult=10.100.172.150
#试交车间--限速值
zt.ip.testspeedresult=10.100.172.150
#总装车间--智能扭力扳手
zt.ip.assemblytorquewrench=10.100.172.150
#总装车间--新能源检测点1
zt.ip.assemblynewenergy1=10.1.25.128
#总装车间--新能源检测点2
zt.ip.assemblynewenergy2=10.1.25.129
#总装车间--新能源检测点3
zt.ip.assemblynewenergy3=10.1.25.130
#总装车间--新能源检测点4
zt.ip.assemblynewenergy4=10.1.25.131
#底盘车间--四轮定位1
zt.ip.wheelalignment1=10.1.25.85
#底盘车间--四轮定位2
zt.ip.wheelalignment2=10.1.25.86
#底盘车间--四轮定位3
zt.ip.wheelalignment3=10.1.25.87
zt.ip.pingtimes=2
zt.ip.timeout=1000
\ No newline at end of file
<?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="net.vtstar.zhongtong.avi.access.mapper.AssemblyNewEnergyMapper">
</mapper>
\ No newline at end of file
<?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="net.vtstar.zhongtong.avi.sqlserver.mapper.AssemblyTorqueWrenchMapper">
</mapper>
\ No newline at end of file
<?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="net.vtstar.zhongtong.avi.sqlserver.mapper.TestLineResultMapper">
</mapper>
\ No newline at end of file
<?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="net.vtstar.zhongtong.avi.sqlserver.mapper.TestSpeedMapper">
</mapper>
\ No newline at end of file
<?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="net.vtstar.zhongtong.avi.access.mapper.WheelAlignmentMapper">
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment