Commit ccba8bc2 authored by 喻训浩's avatar 喻训浩

fix: avi数据监控接口及led屏显示实现

parent ff051557
...@@ -37,11 +37,13 @@ ...@@ -37,11 +37,13 @@
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
</dependency> </dependency>
<!-- base --> <!-- base -->
<!--<dependency>--> <!--jna-->
<!--<groupId>net.vtstar</groupId>--> <dependency>
<!--<artifactId>user-spring-boot-starter</artifactId>--> <groupId>net.java.dev.jna</groupId>
<!--<version>0.0.1-mysql-SNAPSHOT</version>--> <artifactId>jna</artifactId>
<!--</dependency>--> <version>4.1.0</version>
</dependency>
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId> <artifactId>fastjson</artifactId>
......
...@@ -30,7 +30,7 @@ public class EquipmentController { ...@@ -30,7 +30,7 @@ public class EquipmentController {
@Autowired @Autowired
private EquipmentService equipmentService; private EquipmentService equipmentService;
@ApiOperation(value = "获取设备实时监控数据(分页)", notes = "各车间对应code:\r\n" + @ApiOperation(value = "获取设备监控数据(分页)", notes = "各车间对应code:\r\n" +
"制件车间: PARTS\r\n焊装车间: WELDING\r\n涂装车间: PAINTING\r\n" + "制件车间: PARTS\r\n焊装车间: WELDING\r\n涂装车间: PAINTING\r\n" +
"底盘车间: CHASSIS\r\n总装车间: ASSEMBLY\r\n试交车间: TRIAL\r\n" + "底盘车间: CHASSIS\r\n总装车间: ASSEMBLY\r\n试交车间: TRIAL\r\n" +
"") "")
......
...@@ -8,6 +8,7 @@ import net.vtstar.user.search.Search; ...@@ -8,6 +8,7 @@ import net.vtstar.user.search.Search;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.Table; import javax.persistence.Table;
import java.util.List;
/** /**
* @Author: xiadongwei * @Author: xiadongwei
...@@ -28,4 +29,6 @@ public class PaintshopArea { ...@@ -28,4 +29,6 @@ public class PaintshopArea {
@ApiModelProperty(notes = "在线数量") @ApiModelProperty(notes = "在线数量")
@Column(name = "online_num") @Column(name = "online_num")
private String onlineNum; private String onlineNum;
private List<PaintshopLane> laneList;
} }
...@@ -8,6 +8,7 @@ import net.vtstar.user.search.Search; ...@@ -8,6 +8,7 @@ import net.vtstar.user.search.Search;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.Table; import javax.persistence.Table;
import java.util.List;
/** /**
* @Author: xiadongwei * @Author: xiadongwei
...@@ -36,4 +37,6 @@ public class PaintshopLane { ...@@ -36,4 +37,6 @@ public class PaintshopLane {
@ApiModelProperty(notes = "在线数量") @ApiModelProperty(notes = "在线数量")
@Column(name = "online_num") @Column(name = "online_num")
private Integer onlineNum; private Integer onlineNum;
private List<PaintshopStation> stationList;
} }
...@@ -11,6 +11,7 @@ import net.vtstar.user.mybatis.provider.WhereFilter; ...@@ -11,6 +11,7 @@ import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.zhongtong.avi.equipment.domain.EquipInfo; import net.vtstar.zhongtong.avi.equipment.domain.EquipInfo;
import net.vtstar.zhongtong.avi.equipment.domain.RuntimeRecord; import net.vtstar.zhongtong.avi.equipment.domain.RuntimeRecord;
import net.vtstar.zhongtong.avi.equipment.mapper.BasicInfoMapper; import net.vtstar.zhongtong.avi.equipment.mapper.BasicInfoMapper;
import net.vtstar.zhongtong.avi.equipment.mapper.EquipmentDataMapper;
import net.vtstar.zhongtong.avi.equipment.mapper.RuntimeRecordMapper; import net.vtstar.zhongtong.avi.equipment.mapper.RuntimeRecordMapper;
import net.vtstar.zhongtong.avi.equipment.service.RunRecordService; import net.vtstar.zhongtong.avi.equipment.service.RunRecordService;
import org.quartz.DisallowConcurrentExecution; import org.quartz.DisallowConcurrentExecution;
...@@ -47,6 +48,9 @@ public class CleanAndStatisticsJob extends QuartzJobBean { ...@@ -47,6 +48,9 @@ public class CleanAndStatisticsJob extends QuartzJobBean {
private RuntimeRecordMapper runtimeRecordMapper; private RuntimeRecordMapper runtimeRecordMapper;
@Autowired @Autowired
private BasicInfoMapper basicInfoMapper; private BasicInfoMapper basicInfoMapper;
@Autowired
private EquipmentDataMapper equipmentDataMapper;
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
...@@ -64,7 +68,8 @@ public class CleanAndStatisticsJob extends QuartzJobBean { ...@@ -64,7 +68,8 @@ public class CleanAndStatisticsJob extends QuartzJobBean {
if (CollectionUtils.isEmpty(dataList)) { if (CollectionUtils.isEmpty(dataList)) {
continue; continue;
} }
//往数据库插入设备监控数据
equipmentDataMapper.insertList(dataList);
equipDataService.updateLastStatus(dataList.get(dataList.size() - 1)); equipDataService.updateLastStatus(dataList.get(dataList.size() - 1));
String equipCode = dataList.get(0).getEquipCode(); String equipCode = dataList.get(0).getEquipCode();
......
package net.vtstar.zhongtong.avi.equipment.job;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.zhongtong.avi.equipment.mapper.EquipmentDataMapper;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;
/**
* 统计运行时间job
*/
@Slf4j
public class StatisticsTimeJob extends QuartzJobBean {
@Autowired
private EquipmentDataMapper equipmentDataMapper;
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
//查询今日设备所有运行状态数据
}
}
package net.vtstar.zhongtong.avi.equipment.mapper;
import net.vtstar.user.mybatis.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface EquipmentDataMapper<T> extends BaseMapper<T> {
}
...@@ -3,23 +3,23 @@ package net.vtstar.zhongtong.avi.equipment.service; ...@@ -3,23 +3,23 @@ package net.vtstar.zhongtong.avi.equipment.service;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.vtstar.user.domain.Dict; import net.vtstar.scada.base.gather.domain.EquipmentData;
import net.vtstar.user.mybatis.BaseMapper;
import net.vtstar.user.mybatis.provider.Operation; import net.vtstar.user.mybatis.provider.Operation;
import net.vtstar.user.mybatis.provider.OrderBy; import net.vtstar.user.mybatis.provider.OrderBy;
import net.vtstar.user.mybatis.provider.WhereFilter; import net.vtstar.user.mybatis.provider.WhereFilter;
import net.vtstar.user.search.service.SearchService; import net.vtstar.user.search.service.SearchService;
import net.vtstar.zhongtong.avi.equipment.domain.*; import net.vtstar.zhongtong.avi.equipment.domain.*;
import net.vtstar.zhongtong.avi.equipment.mapper.BasicInfoMapper; import net.vtstar.zhongtong.avi.equipment.mapper.BasicInfoMapper;
import net.vtstar.zhongtong.avi.equipment.mapper.EquipmentDataMapper;
import net.vtstar.zhongtong.avi.equipment.mapper.FaultRecordMapper; import net.vtstar.zhongtong.avi.equipment.mapper.FaultRecordMapper;
import net.vtstar.zhongtong.avi.equipment.mapper.RuntimeRecordMapper; import net.vtstar.zhongtong.avi.equipment.mapper.RuntimeRecordMapper;
import net.vtstar.zhongtong.avi.stamping.domain.LaserCuttingMachine;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import javax.annotation.Resource; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -42,6 +42,9 @@ public class RunRecordService { ...@@ -42,6 +42,9 @@ public class RunRecordService {
@Autowired @Autowired
private BasicInfoMapper basicInfoMapper; private BasicInfoMapper basicInfoMapper;
@Autowired
private EquipmentDataMapper equipmentData;
/** /**
* 分页查询运行时间 * 分页查询运行时间
*/ */
...@@ -84,7 +87,17 @@ public class RunRecordService { ...@@ -84,7 +87,17 @@ public class RunRecordService {
} }
public void test() { public void test() {
EquipmentData laser = new LaserCuttingMachine();
((LaserCuttingMachine) laser).setCuttingSpeed(new BigDecimal(500));
RuntimeRecord runtimeRecord = new RuntimeRecord(); RuntimeRecord runtimeRecord = new RuntimeRecord();
runtimeRecord.setWorkshopCode("23232"); runtimeRecord.setWorkshopCode("23232");
equipmentData.insert(runtimeRecord);
}
public static void main(String[] args) {
} }
} }
package net.vtstar.zhongtong.avi.ledlamp.service;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
public class LedService {
public interface test extends Library {
test INSTANCE = (test) Native.loadLibrary((Platform.isWindows() ? "dll//lv_led" : "c"), test.class);
int CreateProgram(int LedWidth, int LedHeight, int ColorType);
}
public static void main(String[] args) {
try {
test.INSTANCE.CreateProgram(128, 32, 1);
} catch (Exception e) {
System.out.println(String.format(e.getMessage(), "utf-8"));
}
}
}
package net.vtstar.zhongtong.avi.ledlamp.test;
import java.awt.Color;
import java.awt.Font;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.xssf.usermodel.XSSFColor;
public class Grid {
private boolean show;
private int row; // 对应Excel中的row,也可以理解为cells[i][j]的i
private int col; // 对应Excel中的col,也可以理解为cells[i][j]的j
private int x; // x坐标
private int y; // y坐标
private int width;
private int height;
private String text;
private Font font;
//= new Font("微软雅黑", Font.PLAIN, 12);
private Color bgColor = null;
private Color ftColor = null;
public int getRow() {
return row;
}
public void setRow(int row) {
this.row = row;
}
public int getCol() {
return col;
}
public void setCol(int col) {
this.col = col;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public boolean isShow() {
return show;
}
public void setShow(boolean show) {
this.show = show;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Color getBgColor() {
return bgColor;
}
/**
* 将poi.ss.usermodel.Color 转换成 java.awt.Color
* <a href="http://home.cnblogs.com/u/309701/" target="_blank">@param</a>
* color
*/
public void setBgColor(org.apache.poi.ss.usermodel.Color color) {
this.bgColor = poiColor2awtColor(color);
}
public void setBgColor(java.awt.Color color) {
this.bgColor = color;
}
public Color getFtColor() {
return ftColor;
}
public void setFtColor(org.apache.poi.ss.usermodel.Color color) {
this.ftColor = poiColor2awtColor(color);
}
public Font getFont() {
return font;
}
public void setFont(org.apache.poi.ss.usermodel.Font font) {
if (font != null) {
this.font = new java.awt.Font(font.getFontName(), Font.BOLD, font.getFontHeight() / 20 + 2);
}
}
private java.awt.Color poiColor2awtColor(org.apache.poi.ss.usermodel.Color color) {
Color awtColor = null;
if (color instanceof XSSFColor) { // .xlsx
XSSFColor xc = (XSSFColor) color;
String rgbHex = xc.getARGBHex();
if (rgbHex != null) {
awtColor = new Color(Integer.parseInt(rgbHex.substring(2), 16));
}
} else if (color instanceof HSSFColor) { // .xls
HSSFColor hc = (HSSFColor) color;
short[] s = hc.getTriplet();
if (s != null) {
awtColor = new Color(s[0], s[1], s[2]);
}
}
return awtColor;
}
}
\ No newline at end of file
package net.vtstar.zhongtong.avi.ledlamp.test;
public class Test {
private static String ip = "192.168.1.3";
public static void main(String[] args) {
// System.out.println(led.SetBasicInfo(ip, 1, 96, 64));//set LED screen high and width and color
//
// System.out.println(led.AdjustTime(ip));//adjust time
//
// System.out.println(led.SetBrightness(ip, 5));//set brightness
//
//
int hProgram;
hProgram = led.CreateProgram(128, 32, 2);
System.out.println("句柄 =" + hProgram);
int i = led.AddProgram(hProgram, 1, 100, 100);
System.out.println(i);
int i1 = led.AddImageTextArea(hProgram, 1, 1, 0, 0, 128, 32, 0);
//led.AddImageTextArea(hProgram, 1, 1, 0, 0, 128, 32, 0);
// int tahoma = led.AddDigitalClockArea(hProgram, 1, 1, 0, 0, 128, 32, "Tahoma", 5, 0xff00, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0xff, 0, 0xff, 0, 0xff);
// System.out.println(tahoma);
//
// led.AddFileToImageTextArea(hProgram, 1, 2, "D://1.png", 0, 0, 100);
// System.out.println(i1);
// int i2 = led.AddMultiLineTextToImageTextArea(hProgram, 1, 1, 0, "速度 气压\r\n2.2KM/h ", "Tahoma", 5, 0xff00, 0, 0, 0, 0, 1, 2, 2, 1);
// System.out.println(i2);
// led.AddFileToImageTextArea(hProgram, 1, 1, "your file full path", 1, 4, 2);
// led.AddProgram(hProgram, 2, 0, 1);
// led.AddImageTextArea(hProgram, 2, 1, 0, 0, 64, 16, 1);
// led.AddSinglelineTextToImageTextArea(hProgram, 2, 1, 0, "welcome to listen vision", "Tahoma", 12, 0xff, 0, 0, 0, 6, 4, 1);
//
// led.AddDigitalClockArea(hProgram, 2, 2, 0, 16, 64, 16, "Tahoma", 9, 0xff, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0xff, 0, 0xff, 2, 0xff);
System.out.println(led.NetWorkSend(ip, hProgram));
led.DeleteProgram(hProgram);
}
}
package net.vtstar.zhongtong.avi.ledlamp.test;
import java.awt.Color;
import org.apache.poi.ss.usermodel.Cell;
public class UserCell {
private Cell cell;
private int row;
private int col;
private boolean show;
private String text="";
private Color color=null;
public Cell getCell() {
return cell;
}
public void setCell(Cell cell) {
this.cell = cell;
}
public int getRow() {
return row;
}
public void setRow(int row) {
this.row = row;
}
public int getCol() {
return col;
}
public void setCol(int col) {
this.col = col;
}
public boolean isShow() {
return show;
}
public void setShow(boolean show) {
this.show = show;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Color getColor() {
return color;
}
public void setColor(Color color) {
this.color = color;
}
}
This diff is collapsed.
package net.vtstar.zhongtong.avi.monitoring.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import net.vtstar.utils.domain.Return;
import net.vtstar.zhongtong.avi.equipment.domain.PaintshopArea;
import net.vtstar.zhongtong.avi.equipment.domain.PaintshopStation;
import net.vtstar.zhongtong.avi.monitoring.domain.Bus;
import net.vtstar.zhongtong.avi.monitoring.domain.vo.CarStatisticsVO;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@Api(description = "avi区域实时监控模块相关")
@RestController
@RequestMapping("/area")
public class AreaController {
@ApiOperation(value = "根据区域编号查询区域实时信息", response = PaintshopArea.class, responseContainer = "List")
@GetMapping("/areaInfo/realTime")
private Return getAreaInfo(@RequestParam(value = "areaNo") String areaNo) {
return Return.success();
}
@ApiOperation(value = "查询车间各区域进车及交车数量", response = CarStatisticsVO.class, responseContainer = "List")
@GetMapping("/bus/statistics")
private Return getRealtimeData() {
return Return.success();
}
@ApiOperation(value = "根据工单号及车身号定位车体当前位置", response = PaintshopStation.class, responseContainer = "List")
@GetMapping("/currentPosition/orderNo/busNo")
private Return getPositionByOrderAndNo(@RequestParam("orderNo") String orderNo, @RequestParam("busNo") String busNo) {
return Return.success();
}
@ApiOperation(value = "根据工单号及车身号定位车体当前位置", response = Bus.class)
@GetMapping("/detail/busNo")
private Return getBusDetail(@RequestParam("busNo") String busNo) {
return Return.success();
}
}
package net.vtstar.zhongtong.avi.monitoring.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@Data
@Slf4j
@ApiModel(value = "车体信息")
public class Bus {
private Long id;
@ApiModelProperty(value = "车身号")
private String code;
@ApiModelProperty(value = "工单号")
private String orderNo;
}
package net.vtstar.zhongtong.avi.monitoring.domain.enums;
public enum BusType {
/**
* 进车
*/
IN,
/**
* 出车
*/
OUT,
}
package net.vtstar.zhongtong.avi.monitoring.domain.enums;
import io.swagger.annotations.ApiModel;
@ApiModel("时间类型")
public enum DateType {
/**
* 今天
*/
TODAY,
/**
* 昨天
*/
YESTERDAY;
}
package net.vtstar.zhongtong.avi.monitoring.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.vtstar.zhongtong.avi.monitoring.domain.enums.BusType;
import net.vtstar.zhongtong.avi.monitoring.domain.enums.DateType;
import java.math.BigDecimal;
@Data
@ApiModel("车辆交进车数量统计VO")
public class CarStatisticsVO {
private Long id;
@ApiModelProperty(value = "区域名")
private String areaName;
@ApiModelProperty("日期类型:TODAY(今日),YESTERDAY(昨日)")
private DateType dateType;
@ApiModelProperty(value = "进出车类型:IN(进车) OUT(出车)")
private BusType busType;
@ApiModelProperty(value = "数量")
private BigDecimal size;
}
...@@ -8,32 +8,39 @@ import net.vtstar.user.search.Search; ...@@ -8,32 +8,39 @@ import net.vtstar.user.search.Search;
import net.vtstar.zhongtong.avi.global.web.Show; import net.vtstar.zhongtong.avi.global.web.Show;
import net.vtstar.zhongtong.avi.global.web.domain.enums.FieldType; import net.vtstar.zhongtong.avi.global.web.domain.enums.FieldType;
import javax.persistence.Column;
import javax.persistence.Table;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
@Data @Data
@Search(code = "3D_LASER_CUTTING") @Search(code = "3D_LASER_CUTTING")
@ApiModel("激光切割机") @ApiModel("激光切割机")
@Table(name = "eqp_data_3d_laser")
public class LaserCuttingMachine extends EquipmentData { public class LaserCuttingMachine extends EquipmentData {
@Search @Search
@Show(label = "切割速率",sortable = true) @Show(label = "切割速率",sortable = true)
@ApiModelProperty("切割速率") @ApiModelProperty("切割速率")
@Column(name = "cutting_speed")
private BigDecimal cuttingSpeed; private BigDecimal cuttingSpeed;
@Search @Search
@Show(label = "激光器功率") @Show(label = "激光器功率")
@ApiModelProperty("激光器功率") @ApiModelProperty("激光器功率")
@Column(name = "laser_power")
private BigDecimal laserPower; private BigDecimal laserPower;
@Search @Search
@Show(label = "气体压力") @Show(label = "气体压力")
@ApiModelProperty("气体压力") @ApiModelProperty("气体压力")
@Column(name = "gas_pressure")
private BigDecimal gasPressure; private BigDecimal gasPressure;
@Search @Search
@Show(label = "时间",dataType = FieldType.DATETIME) @Show(label = "时间",dataType = FieldType.DATETIME)
@ApiModelProperty("时间") @ApiModelProperty("时间")
@Column(name = "create_time")
private Date createTime; private Date createTime;
private Integer state; private Integer state;
......
...@@ -17,6 +17,6 @@ sqlserver.username=sa ...@@ -17,6 +17,6 @@ sqlserver.username=sa
sqlserver.password=!QAZ0okm sqlserver.password=!QAZ0okm
# redis # redis
spring.redis.host=10.100.172.102 spring.redis.host=10.100.172.14
spring.redis.port=6379 spring.redis.port=6379
spring.redis.password= spring.redis.password=
\ No newline at end of file
...@@ -29,7 +29,8 @@ quartz.job.taskInfos[0].start=false ...@@ -29,7 +29,8 @@ quartz.job.taskInfos[0].start=false
quartz.job.taskInfos[1].jobName=net.vtstar.zhongtong.avi.equipment.job.CleanAndStatisticsJob quartz.job.taskInfos[1].jobName=net.vtstar.zhongtong.avi.equipment.job.CleanAndStatisticsJob
quartz.job.taskInfos[1].jobGroup=CleanAndStatisticsJob quartz.job.taskInfos[1].jobGroup=CleanAndStatisticsJob
quartz.job.taskInfos[1].jobDescription=\u6E05\u6D17\u8BBE\u5907\u72B6\u6001Job quartz.job.taskInfos[1].jobDescription=\u6E05\u6D17\u8BBE\u5907\u72B6\u6001Job
quartz.job.taskInfos[1].cronExpression=0 0 0 * * ? #quartz.job.taskInfos[1].cronExpression=0 0 0 * * ?
quartz.job.taskInfos[1].cronExpression=0 0/1 * * * ?
quartz.job.taskInfos[1].start=false quartz.job.taskInfos[1].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
......
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