Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Z
zhongtong-avi-service
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
中通客车项目
zhongtong-avi-service
Commits
9a18238b
Commit
9a18238b
authored
Mar 29, 2020
by
夏东伟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
设备实时状态功能开发;
parent
e8ec2f2a
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
1989 additions
and
1616 deletions
+1989
-1616
AssemblyNewEnergyJob.java
...vtstar/zhongtong/avi/access/job/AssemblyNewEnergyJob.java
+21
-0
WheelAlignmentJob.java
...et/vtstar/zhongtong/avi/access/job/WheelAlignmentJob.java
+21
-0
BasicInfoController.java
...ongtong/avi/equipment/controller/BasicInfoController.java
+15
-0
EquipStatusRealTime.java
...r/zhongtong/avi/equipment/domain/EquipStatusRealTime.java
+49
-0
WorkshopNames.java
...r/zhongtong/avi/equipment/domain/enums/WorkshopNames.java
+24
-0
CleanStatusDataJob.java
...tstar/zhongtong/avi/equipment/job/CleanStatusDataJob.java
+93
-49
EquipStatusRealTimeMapper.java
...gtong/avi/equipment/mapper/EquipStatusRealTimeMapper.java
+13
-0
BasicInfoService.java
...tar/zhongtong/avi/equipment/service/BasicInfoService.java
+9
-0
EquipStatusRealTimeService.java
...ong/avi/equipment/service/EquipStatusRealTimeService.java
+69
-0
WeldingRobotMachineJob.java
...ongtong/avi/gateway/parts/job/WeldingRobotMachineJob.java
+28
-19
ErrorFrameJob.java
...vtstar/zhongtong/avi/gateway/trial/job/ErrorFrameJob.java
+6
-0
AreaController.java
...r/zhongtong/avi/monitoring/controller/AreaController.java
+0
-27
StationPassInfoController.java
.../avi/monitoring/controller/StationPassInfoController.java
+92
-0
StationPassInfo.java
...star/zhongtong/avi/monitoring/domain/StationPassInfo.java
+37
-4
ScanType.java
...tstar/zhongtong/avi/monitoring/domain/enums/ScanType.java
+21
-0
AVIElectrophoresisJob.java
...r/zhongtong/avi/monitoring/job/AVIElectrophoresisJob.java
+2
-1
AVIMonitorJob.java
...et/vtstar/zhongtong/avi/monitoring/job/AVIMonitorJob.java
+92
-172
AVIMonitorJob1.java
...t/vtstar/zhongtong/avi/monitoring/job/AVIMonitorJob1.java
+0
-335
RedisToCacheJob.java
.../vtstar/zhongtong/avi/monitoring/job/RedisToCacheJob.java
+1
-15
ReadDataToCacheRunner.java
...hongtong/avi/monitoring/runner/ReadDataToCacheRunner.java
+1
-30
StationPassInfoService.java
...ngtong/avi/monitoring/service/StationPassInfoService.java
+381
-38
RfidMessageHandler.java
.../vtstar/zhongtong/avi/mqtt/handle/RfidMessageHandler.java
+463
-327
RfidMessageHandler1.java
...vtstar/zhongtong/avi/mqtt/handle/RfidMessageHandler1.java
+0
-588
AssemblyTorqueWrenchJob.java
.../zhongtong/avi/sqlserver/job/AssemblyTorqueWrenchJob.java
+6
-0
TestLineResultJob.java
...vtstar/zhongtong/avi/sqlserver/job/TestLineResultJob.java
+6
-0
TestSpeedResultJob.java
...tstar/zhongtong/avi/sqlserver/job/TestSpeedResultJob.java
+6
-0
ExpertUtils.java
...main/java/net/vtstar/zhongtong/avi/utils/ExpertUtils.java
+156
-0
PrintDemo.java
src/main/java/net/vtstar/zhongtong/avi/utils/PrintDemo.java
+106
-0
application-quartz.properties
src/main/resources/config/application-quartz.properties
+6
-6
ApplicationTests.java
src/test/java/net/vtstar/zhongtong/avi/ApplicationTests.java
+53
-0
ModbusTest.java
src/test/java/net/vtstar/zhongtong/avi/ModbusTest.java
+171
-4
StationTest.java
src/test/java/net/vtstar/zhongtong/avi/StationTest.java
+41
-1
No files found.
src/main/java/net/vtstar/zhongtong/avi/access/job/AssemblyNewEnergyJob.java
View file @
9a18238b
...
...
@@ -11,6 +11,7 @@ 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.equipment.service.EquipStatusRealTimeService
;
import
net.vtstar.zhongtong.avi.utils.PingIpUtils
;
import
net.vtstar.zhongtong.avi.utils.SmbFileUtil
;
import
org.quartz.DisallowConcurrentExecution
;
...
...
@@ -55,6 +56,9 @@ public class AssemblyNewEnergyJob extends QuartzJobBean {
private
String
baseUrl
=
"D:/scada/assemblynewenergy/"
;
@Autowired
private
EquipStatusRealTimeService
realTimeService
;
@Override
protected
void
executeInternal
(
JobExecutionContext
context
)
throws
JobExecutionException
{
List
<
String
>
ipAddressList
=
Arrays
.
asList
(
ipAddress1
,
ipAddress2
,
ipAddress3
,
ipAddress4
);
...
...
@@ -63,10 +67,27 @@ public class AssemblyNewEnergyJob extends QuartzJobBean {
Date
startOfDay
=
DateUtils
.
getStartOfDay
(
0
);
String
dateString
=
DateUtils
.
parseDateToString
(
startOfDay
,
"yyyy-MM-dd"
);
for
(
String
ipAddress
:
ipAddressList
){
String
equipCode
=
""
;
switch
(
ipAddress
){
case
"10.1.25.128"
:
equipCode
=
"742609-87"
;
break
;
case
"10.1.25.129"
:
equipCode
=
"742609-88"
;
break
;
case
"10.1.25.130"
:
equipCode
=
"742609-89"
;
break
;
case
"10.1.25.131"
:
equipCode
=
"742609-107"
;
break
;
}
if
(!
PingIpUtils
.
ping
(
ipAddress
,
pingTimes
,
timeOut
))
{
log
.
error
(
"ping: {}失败, 此次同步总装新能源检测点数据操作结束!"
,
ipAddress
);
realTimeService
.
saveEquip
(
"总装车间"
,
equipCode
,
"新能源检测点"
,
"关机"
);
continue
;
}
realTimeService
.
saveEquip
(
"总装车间"
,
equipCode
,
"新能源检测点"
,
"开机"
);
//todo:账户, 密码需要变
String
url
=
"smb://admin:123456@"
+
ipAddress
+
"/AN9637H/testdata@"
+
dateString
+
".mdb"
;
// String url = "smb://admin:123456@10.1.25.128/an9637h/test/data@2018-05-04.mdb";
...
...
src/main/java/net/vtstar/zhongtong/avi/access/job/WheelAlignmentJob.java
View file @
9a18238b
...
...
@@ -11,6 +11,7 @@ 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.equipment.service.EquipStatusRealTimeService
;
import
net.vtstar.zhongtong.avi.sqlserver.domain.TestLineResult
;
import
net.vtstar.zhongtong.avi.utils.PingIpUtils
;
import
net.vtstar.zhongtong.avi.utils.SmbFileUtil
;
...
...
@@ -53,6 +54,8 @@ public class WheelAlignmentJob extends QuartzJobBean {
private
int
timeOut
;
private
String
baseUrl
=
"D:/scada/wheelalignment/"
;
@Autowired
private
EquipStatusRealTimeService
realTimeService
;
@Override
protected
void
executeInternal
(
JobExecutionContext
context
)
throws
JobExecutionException
{
...
...
@@ -65,10 +68,28 @@ public class WheelAlignmentJob extends QuartzJobBean {
String
newDateString
=
sdf
.
format
(
new
Date
());
String
dataBaseFileName
=
"BL_Align"
;
for
(
String
ipAddress
:
ipAddressList
){
String
equipCode
=
""
;
String
equipName
=
""
;
switch
(
ipAddress
){
case
"10.1.25.86"
:
equipCode
=
"742609-50"
;
equipName
=
"四轮定位B线"
;
break
;
case
"10.1.25.87"
:
equipCode
=
"742609-17"
;
equipName
=
"四轮定位A线"
;
break
;
case
"10.1.25.88"
:
equipCode
=
"742609-61"
;
equipName
=
"四轮定位C线"
;
break
;
}
if
(!
PingIpUtils
.
ping
(
ipAddress
,
pingTimes
,
timeOut
))
{
log
.
error
(
"ping: {}失败, 此次同步底盘四轮定位数据操作结束!"
,
ipAddress
);
realTimeService
.
saveEquip
(
"底盘车间"
,
equipCode
,
equipName
,
"关机"
);
continue
;
}
realTimeService
.
saveEquip
(
"底盘车间"
,
equipCode
,
equipName
,
"开机"
);
//todo:账户, 密码, 文件位置需要变 BL_Align(数据库文件)
String
url
=
"smb://"
+
ipAddress
+
"/Database/"
+
dataBaseFileName
+
".mdb"
;
SmbFile
file
=
null
;
...
...
src/main/java/net/vtstar/zhongtong/avi/equipment/controller/BasicInfoController.java
View file @
9a18238b
...
...
@@ -10,6 +10,7 @@ import net.vtstar.utils.domain.Return;
import
net.vtstar.zhongtong.avi.equipment.domain.EquipInfo
;
import
net.vtstar.zhongtong.avi.equipment.domain.PaintshopStation
;
import
net.vtstar.zhongtong.avi.equipment.service.BasicInfoService
;
import
net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.Assert
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -30,6 +31,9 @@ public class BasicInfoController {
@Autowired
BasicInfoService
basicInfoService
;
@Autowired
private
EquipStatusRealTimeService
realTimeService
;
@ApiOperation
(
value
=
"分页查询设备列表"
,
notes
=
"使用通用搜索组件,searchCode:SCADA_EQUIP_INFO\n"
+
"字段含义:\n{\n"
+
" \"workshopName\": \"车间,字符串类型\",\n"
+
...
...
@@ -151,4 +155,15 @@ public class BasicInfoController {
public
Return
getWorkOrder
(
@RequestBody
SearchVo
pageFilter
)
{
return
Return
.
success
(
new
PageInfo
<>(
basicInfoService
.
getWorkOrder
(
pageFilter
.
toJSONObject
())));
}
@ApiOperation
(
value
=
"设备实时状态查询"
,
notes
=
"字段含义:\n{\n"
+
" \"equipWorkshop\": \"车间,字符串类型\",\n"
+
" \"equipCode\": \"设备编号,字符串类型\",\n"
+
" \"equipName\": \"设备名称,字符串类型\",\n"
+
" \"equipState\": \"实时状态,字符串类型\",\n"
+
"}"
)
@PostMapping
(
"/equipStatusRealTime"
)
public
Return
equipStatusRealTime
(
@RequestBody
SearchVo
pageFilter
)
{
return
Return
.
success
(
new
PageInfo
<>(
realTimeService
.
findPageEquipRealStatus
(
pageFilter
.
toJSONObject
())));
}
}
src/main/java/net/vtstar/zhongtong/avi/equipment/domain/EquipStatusRealTime.java
0 → 100644
View file @
9a18238b
package
net
.
vtstar
.
zhongtong
.
avi
.
equipment
.
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.equipment.domain.enums.WorkshopNames
;
import
javax.persistence.Column
;
import
javax.persistence.Id
;
import
javax.persistence.Table
;
import
java.util.Date
;
/**
* @Author: xiadongwei
* @Date: 2020/3/11 16:53
*/
@ApiModel
(
"设备实时状态表"
)
@Data
@Search
(
code
=
"REAL_TIME_STATUS"
)
@Table
(
name
=
"equip_status_real_time"
)
public
class
EquipStatusRealTime
{
@Id
private
Long
id
;
@ApiModelProperty
(
notes
=
"车间"
)
@Column
(
name
=
"equip_workshop"
)
@Search
private
WorkshopNames
equipWorkshop
;
@ApiModelProperty
(
notes
=
"设备编号"
)
@Column
(
name
=
"equip_code"
)
@Search
private
String
equipCode
;
@ApiModelProperty
(
notes
=
"设备名称"
)
@Column
(
name
=
"equip_name"
)
@Search
private
String
equipName
;
@ApiModelProperty
(
notes
=
"实时状态"
)
@Column
(
name
=
"equip_state"
)
private
String
equipState
;
@ApiModelProperty
(
notes
=
"创建时间"
)
@Column
(
name
=
"create_time"
)
private
Date
createTime
;
}
src/main/java/net/vtstar/zhongtong/avi/equipment/domain/enums/WorkshopNames.java
0 → 100644
View file @
9a18238b
package
net
.
vtstar
.
zhongtong
.
avi
.
equipment
.
domain
.
enums
;
/**
* @Author: xiadongwei
* @Date: 2020/3/13 13:44
*/
public
enum
WorkshopNames
{
制件车间
,
焊装车间
,
涂装车间
,
底盘车间
,
装配车间
,
试交车间
,
质量管理部
,
其他
}
src/main/java/net/vtstar/zhongtong/avi/equipment/job/CleanStatusDataJob.java
View file @
9a18238b
...
...
@@ -5,18 +5,21 @@ import net.vtstar.scada.base.equipmgt.service.EquipDataService;
import
net.vtstar.scada.base.gather.domain.EquipmentData
;
import
net.vtstar.scada.base.redis.service.SimpleRedisService
;
import
net.vtstar.scada.base.redis.util.EquipDataUtil
;
import
net.vtstar.zhongtong.avi.equipment.domain.EquipInfo
;
import
net.vtstar.zhongtong.avi.equipment.mapper.EquipmentDataMapper
;
import
net.vtstar.zhongtong.avi.equipment.service.BasicInfoService
;
import
net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService
;
import
org.quartz.DisallowConcurrentExecution
;
import
org.quartz.JobExecutionContext
;
import
org.quartz.JobExecutionException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.ValueOperations
;
import
org.springframework.scheduling.quartz.QuartzJobBean
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Set
;
...
...
@@ -28,12 +31,18 @@ public class CleanStatusDataJob extends QuartzJobBean {
@Resource
(
name
=
"redisTemplate"
)
private
RedisTemplate
redisTemplate
;
@Resource
(
name
=
"redisTemplate"
)
protected
ValueOperations
valueOperations
;
@Autowired
private
EquipDataService
equipDataService
;
@Autowired
private
SimpleRedisService
simpleRedisService
;
@Autowired
private
EquipmentDataMapper
equipmentDataMapper
;
@Autowired
private
BasicInfoService
basicInfoService
;
@Autowired
private
EquipStatusRealTimeService
realTimeService
;
@Override
protected
void
executeInternal
(
JobExecutionContext
context
)
throws
JobExecutionException
{
...
...
@@ -41,9 +50,7 @@ public class CleanStatusDataJob extends QuartzJobBean {
log
.
info
(
"_______________________________________________________________"
);
log
.
info
(
"开始清洗设备状态数据..."
);
Set
<
String
>
keys
=
redisTemplate
.
keys
(
EquipDataUtil
.
getStatusKey
(
"*"
));
if
(
CollectionUtils
.
isEmpty
(
keys
))
{
return
;
}
if
(!
CollectionUtils
.
isEmpty
(
keys
))
{
log
.
info
(
"开始清洗设备状态数据 key.size: {}"
,
keys
.
size
());
for
(
String
key
:
keys
)
{
...
...
@@ -100,7 +107,44 @@ public class CleanStatusDataJob extends QuartzJobBean {
}
else
{
equipDataService
.
save
(
last
);
}
}
}
log
.
info
(
"_______________________________________________________________"
);
List
<
EquipInfo
>
allEquip
=
basicInfoService
.
findAllEquip
();
log
.
info
(
"开始清洗设备实时状态数据 allEquip.size: {}"
,
allEquip
.
size
());
for
(
EquipInfo
info
:
allEquip
)
{
if
(
"PLC"
.
equals
(
info
.
getEquipType
())){
continue
;
}
EquipmentData
data
=
(
EquipmentData
)
valueOperations
.
get
(
EquipDataUtil
.
getLastStatusKey
(
info
.
getAlias
()));
if
(
null
==
data
||
null
==
data
.
getEquipStatus
()){
realTimeService
.
saveEquip
(
info
.
getWorkshopName
(),
info
.
getEquipCode
(),
info
.
getAlias
(),
"关机"
);
continue
;
}
String
state
=
""
;
switch
(
data
.
getEquipStatus
().
name
()){
case
"RUN"
:
state
=
"运行"
;
break
;
case
"IDLE"
:
state
=
"待机"
;
break
;
case
"PAUSE"
:
state
=
"暂定"
;
break
;
case
"ALARM"
:
state
=
"报警"
;
break
;
case
"SHUTDOWN"
:
state
=
"关机"
;
break
;
default
:
state
=
"关机"
;
break
;
}
realTimeService
.
saveEquip
(
info
.
getWorkshopName
(),
info
.
getEquipCode
(),
info
.
getAlias
(),
state
);
}
log
.
info
(
"_______________________________________________________________"
);
}
}
src/main/java/net/vtstar/zhongtong/avi/equipment/mapper/EquipStatusRealTimeMapper.java
0 → 100644
View file @
9a18238b
package
net
.
vtstar
.
zhongtong
.
avi
.
equipment
.
mapper
;
import
net.vtstar.user.mybatis.BaseMapper
;
import
net.vtstar.zhongtong.avi.equipment.domain.EquipStatusRealTime
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* @Author: xiadongwei
* @Date: 2020/3/11 9:31
*/
@Mapper
public
interface
EquipStatusRealTimeMapper
extends
BaseMapper
<
EquipStatusRealTime
>
{
}
src/main/java/net/vtstar/zhongtong/avi/equipment/service/BasicInfoService.java
View file @
9a18238b
...
...
@@ -71,6 +71,15 @@ public class BasicInfoService {
return
basicInfoMapper
.
findList
(
searchService
.
pageFilter2Filter
(
pageFilter
),
EquipInfo
.
class
);
}
/**
* 查询所有设备
*/
public
List
<
EquipInfo
>
findAllEquip
()
{
return
basicInfoMapper
.
findList
(
new
WhereFilter
(){{
addOrderBy
(
"workshop_name"
,
OrderBy
.
ASC
);
}},
EquipInfo
.
class
);
}
/**
* 新增设备
*/
...
...
src/main/java/net/vtstar/zhongtong/avi/equipment/service/EquipStatusRealTimeService.java
0 → 100644
View file @
9a18238b
package
net
.
vtstar
.
zhongtong
.
avi
.
equipment
.
service
;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.pagehelper.PageHelper
;
import
lombok.extern.slf4j.Slf4j
;
import
net.vtstar.user.mybatis.provider.Operation
;
import
net.vtstar.user.mybatis.provider.OrderBy
;
import
net.vtstar.user.mybatis.provider.WhereFilter
;
import
net.vtstar.user.search.service.SearchService
;
import
net.vtstar.utils.CollecUtils
;
import
net.vtstar.zhongtong.avi.equipment.domain.EquipStatusRealTime
;
import
net.vtstar.zhongtong.avi.equipment.domain.enums.WorkshopNames
;
import
net.vtstar.zhongtong.avi.equipment.mapper.EquipStatusRealTimeMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.List
;
/**
* @Author: xiadongwei
* @Date: 2020/3/11 19:31
*/
@Slf4j
@Service
public
class
EquipStatusRealTimeService
{
@Autowired
private
EquipStatusRealTimeMapper
mapper
;
@Autowired
private
SearchService
searchService
;
/**
* 分页查询设备
*/
public
List
<
EquipStatusRealTime
>
findPageEquipRealStatus
(
JSONObject
pageFilter
)
{
PageHelper
.
startPage
(
pageFilter
.
getIntValue
(
"pageNum"
),
pageFilter
.
getIntValue
(
"pageSize"
));
return
mapper
.
findList
(
searchService
.
pageFilter2Filter
(
pageFilter
,
new
WhereFilter
(){{
addOrderBy
(
"equip_workshop"
,
OrderBy
.
ASC
);
}}),
EquipStatusRealTime
.
class
);
}
/**
* 新增/更新设备状态
*/
public
void
saveEquip
(
String
equipWorkshop
,
String
equipCode
,
String
equipName
,
String
equipState
)
{
List
<
EquipStatusRealTime
>
list
=
mapper
.
findList
(
new
WhereFilter
()
{{
addFilter
(
"equip_workshop"
,
Operation
.
EQUAL
,
equipWorkshop
);
addFilter
(
"equip_code"
,
Operation
.
EQUAL
,
equipCode
);
addFilter
(
"equip_name"
,
Operation
.
EQUAL
,
equipName
);
}},
EquipStatusRealTime
.
class
);
if
(
CollecUtils
.
isEmpty
(
list
)){
EquipStatusRealTime
realTimeState
=
new
EquipStatusRealTime
();
realTimeState
.
setEquipWorkshop
(
WorkshopNames
.
valueOf
(
equipWorkshop
));
realTimeState
.
setEquipCode
(
equipCode
);
realTimeState
.
setEquipName
(
equipName
);
realTimeState
.
setEquipState
(
equipState
);
realTimeState
.
setCreateTime
(
new
Date
());
mapper
.
insert
(
realTimeState
);
}
else
{
EquipStatusRealTime
equipStatusRealTime
=
list
.
get
(
0
);
equipStatusRealTime
.
setEquipState
(
equipState
);
equipStatusRealTime
.
setCreateTime
(
new
Date
());
mapper
.
update
(
equipStatusRealTime
);
}
}
}
src/main/java/net/vtstar/zhongtong/avi/gateway/parts/job/WeldingRobotMachineJob.java
View file @
9a18238b
...
...
@@ -4,6 +4,7 @@ import lombok.extern.slf4j.Slf4j;
import
net.vtstar.protocol.modbus.tcp.netty.utils.NettyUtils
;
import
net.vtstar.protocol.modbus.tcp.netty.utils.PoolKey
;
import
net.vtstar.scada.base.global.service.ModbusService
;
import
net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService
;
import
net.vtstar.zhongtong.avi.gateway.parts.domain.WeldingRobotMachine
;
import
net.vtstar.zhongtong.avi.gateway.parts.mapper.WeldingRobotMapper
;
import
net.vtstar.zhongtong.avi.utils.PingIpUtils
;
...
...
@@ -45,14 +46,39 @@ public class WeldingRobotMachineJob extends QuartzJobBean {
@Autowired
private
WeldingRobotMapper
mapper
;
@Autowired
private
EquipStatusRealTimeService
realTimeService
;
@Override
protected
void
executeInternal
(
JobExecutionContext
context
)
throws
JobExecutionException
{
List
<
String
>
ipAddressList
=
Arrays
.
asList
(
ipAddress1
,
ipAddress2
,
ipAddress3
,
ipAddress4
);
for
(
String
ipAddress
:
ipAddressList
)
{
String
equipCode
=
""
;
String
equipFactory
=
""
;
switch
(
ipAddress
){
case
"10.1.25.186"
:
equipCode
=
"076102-1324"
;
equipFactory
=
"西北过道东侧"
;
break
;
case
"10.1.25.187"
:
equipCode
=
"076102-1326"
;
equipFactory
=
"西北过道东侧"
;
break
;
case
"10.1.25.188"
:
equipCode
=
"076102-1327"
;
equipFactory
=
"西北过道东侧"
;
break
;
case
"10.1.25.189"
:
equipCode
=
"076102-1325"
;
equipFactory
=
"西北过道东侧"
;
break
;
}
if
(!
PingIpUtils
.
ping
(
ipAddress
,
pingTimes
,
timeOut
))
{
log
.
error
(
"ping: {}失败, 读取焊接机器人数据操作结束!"
,
ipAddress
);
realTimeService
.
saveEquip
(
"制件车间"
,
equipCode
,
"焊接机器人"
,
"关机"
);
continue
;
}
realTimeService
.
saveEquip
(
"制件车间"
,
equipCode
,
"焊接机器人"
,
"开机"
);
//1.获得当天日期,2.通过日期去查询当天的开机时间和焊接时间
Calendar
calendar
=
Calendar
.
getInstance
();
int
date
=
calendar
.
get
(
Calendar
.
DATE
);
...
...
@@ -78,31 +104,14 @@ public class WeldingRobotMachineJob extends QuartzJobBean {
Integer
.
valueOf
(
secondWelding
.
toString
())
+
"秒"
;
WeldingRobotMachine
machine
=
new
WeldingRobotMachine
();
machine
.
setEquipCode
(
"焊接机器人单体工作站"
);
switch
(
ipAddress
){
case
"10.1.25.186"
:
machine
.
setAlias
(
"076102-1324"
);
machine
.
setEquipFactory
(
"西北过道东侧"
);
break
;
case
"10.1.25.187"
:
machine
.
setAlias
(
"076102-1326"
);
machine
.
setEquipFactory
(
"西北过道东侧"
);
break
;
case
"10.1.25.188"
:
machine
.
setAlias
(
"076102-1327"
);
machine
.
setEquipFactory
(
"西北过道东侧"
);
break
;
case
"10.1.25.189"
:
machine
.
setAlias
(
"076102-1325"
);
machine
.
setEquipFactory
(
"西北过道东侧"
);
break
;
}
machine
.
setAlias
(
equipCode
);
machine
.
setEquipFactory
(
equipFactory
);
machine
.
setTurnOnTime
(
turnOnTime
);
machine
.
setWeldingTime
(
weldingTime
);
machine
.
setCreateTime
(
new
Date
());
mapper
.
insert
(
machine
);
}
catch
(
Exception
e
)
{
log
.
error
(
"读取焊接机器人数据失败! e : {}"
,
e
.
getMessage
());
return
;
}
}
...
...
src/main/java/net/vtstar/zhongtong/avi/gateway/trial/job/ErrorFrameJob.java
View file @
9a18238b
...
...
@@ -6,6 +6,7 @@ import net.vtstar.user.mybatis.provider.Operation;
import
net.vtstar.user.mybatis.provider.WhereFilter
;
import
net.vtstar.utils.CollecUtils
;
import
net.vtstar.utils.DateUtils
;
import
net.vtstar.zhongtong.avi.equipment.service.EquipStatusRealTimeService
;
import
net.vtstar.zhongtong.avi.sqlserver.domain.TestSpeedResult
;
import
net.vtstar.zhongtong.avi.sqlserver.mapper.TestSpeedMapper
;
import
net.vtstar.zhongtong.avi.utils.PingIpUtils
;
...
...
@@ -45,6 +46,9 @@ public class ErrorFrameJob extends QuartzJobBean {
private
String
baseUrl
=
"D:/scada/errorframe/"
;
@Autowired
private
EquipStatusRealTimeService
realTimeService
;
@Override
protected
void
executeInternal
(
JobExecutionContext
context
)
throws
JobExecutionException
{
log
.
info
(
"--------开始同步试交车间错误帧数据--------"
);
...
...
@@ -52,8 +56,10 @@ public class ErrorFrameJob extends QuartzJobBean {
String
dateString
=
DateUtils
.
parseDateToString
(
new
Date
(),
"yyyy-MM-dd"
);
if
(!
PingIpUtils
.
ping
(
ipAddress
,
pingTimes
,
timeOut
))
{
log
.
error
(
"ping: {}失败, 此次同步试交车间错误帧数据操作结束!"
,
ipAddress
);
realTimeService
.
saveEquip
(
"质量管理部"
,
""
,
"错误帧"
,
"关机"
);
return
;
}
realTimeService
.
saveEquip
(
"质量管理部"
,
""
,
"错误帧"
,
"开机"
);
//todo:账户, 密码需要变
String
url
=
"smb://"
+
ipAddress
+
"/ztlog/"
;
SmbFile
file
=
null
;
...
...
src/main/java/net/vtstar/zhongtong/avi/monitoring/controller/AreaController.java
View file @
9a18238b
...
...
@@ -155,31 +155,4 @@ public class AreaController {
return
Return
.
success
(
bus
);
}
/*@GetMapping("/test")
private Return test() {
PoolKey key = new PoolKey("localhost", 502);
ReadCoilsRequest readCoilsRequest = new ReadCoilsRequest(1, 0, 50);
try {
int capacity = body.capacity();
//byte b = body.readByte();
byte aByte4 = body.getByte(0);
byte aByte1 = body.getByte(1);
byte aByte = body.getByte(2);
int length = body.readableBytes();
// byte[] bytes = new byte[lenght];
// ByteBuf bytes1 = body.getBytes(body.readerIndex(), bytes);
int a = 1;
} catch (Exception e) {
}
return Return.success();
}
*/
}
src/main/java/net/vtstar/zhongtong/avi/monitoring/controller/StationPassInfoController.java
0 → 100644
View file @
9a18238b
package
net
.
vtstar
.
zhongtong
.
avi
.
monitoring
.
controller
;
import
com.github.pagehelper.PageInfo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
net.vtstar.user.search.controller.vo.SearchVo
;
import
net.vtstar.utils.domain.Return
;
import
net.vtstar.zhongtong.avi.monitoring.domain.StationPassInfo
;
import
net.vtstar.zhongtong.avi.monitoring.service.StationPassInfoService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
* @Author: xiadongwei
* @Date: 2020/3/5 14:10
*/
@Slf4j
@Api
(
description
=
"过站信息模块"
)
@RestController
@RequestMapping
(
"/pass"
)
public
class
StationPassInfoController
{
@Autowired
private
StationPassInfoService
passInfoService
;
@ApiOperation
(
value
=
"报工点补扫--查询所有待补扫的过站记录"
,
notes
=
"字段含义:\n{\n"
+
" \"VIN\": \"工单号, 字符串类型\",\n"
+
" \"stationName\": \"报工点,字符串类型\",\n"
+
" \"stationNo\": \"工位编码,字符串类型\",\n"
+
" \"passTime\": \"过站时间,时间类型\"\n"
+
" \"createBy\": \"操作人,字符串类型\"\n"
+
"}"
)
@PostMapping
(
"/findPassInfoByNoFind"
)
public
Return
findPassInfoByNoFind
(){
List
<
StationPassInfo
>
list
=
passInfoService
.
findPassInfoByNoFind
();
return
Return
.
success
(
list
);
}
@ApiOperation
(
value
=
"查询过站记录"
,
notes
=
"使用通用搜索组件,searchCode:PASS_INFO\n"
+
"字段含义:\n{\n"
+
" \"VIN\": \"工单号, 字符串类型\",\n"
+
" \"stationName\": \"报工点,字符串类型\",\n"
+
" \"stationNo\": \"工位编码,字符串类型\",\n"
+
" \"passTime\": \"过站时间,时间类型\"\n"
+
" \"createBy\": \"操作人,字符串类型\"\n"
+
"}"
)
@PostMapping
(
"/findPassInfoBySearchCode"
)
public
Return
findPassInfoBySearchCode
(
@RequestBody
SearchVo
searchVo
){
List
<
StationPassInfo
>
list
=
passInfoService
.
findPassInfoBySearchCode
(
searchVo
.
toJSONObject
());
return
Return
.
success
(
new
PageInfo
<>(
list
));
}
@ApiOperation
(
value
=
"根据报工点获取工位编码"
)
@GetMapping
(
"/getStationNo/{stationName}"
)
public
Return
getStationNoByName
(
@PathVariable
(
"stationName"
)
String
stationName
){
String
[]
stationNo
=
passInfoService
.
getStationNoByName
(
stationName
);
return
Return
.
success
(
stationNo
);
}
@ApiOperation
(
value
=
"保存缺失的过站记录"
,
notes
=
"字段含义:\n{\n"
+
" \"VIN\": \"工单号, 字符串类型\",\n"
+
" \"stationName\": \"报工点,字符串类型\",\n"
+
" \"stationNo\": \"工位编码,字符串类型\",\n"
+
" \"createTime\": \"过站时间,字符串类型\"\n"
+
" \"createBy\": \"操作人,字符串类型\"\n"
+
"}"
)
@PostMapping
(
"/savePassInfo"
)
public
Return
savePassInfo
(
@RequestBody
StationPassInfo
stationPassInfo
){
passInfoService
.
savePassInfo
(
stationPassInfo
);
return
Return
.
success
();
}
@ApiOperation
(
value
=
"自动补扫开启"
)
@GetMapping
(
"/startReplenishScan"
)
public
Return
startReplenishScan
(
@RequestParam
Integer
beginTimeInt
,
@RequestParam
Integer
endTimeInt
){
passInfoService
.
startReplenishScan
(
beginTimeInt
,
endTimeInt
);
return
Return
.
success
();
}
@ApiOperation
(
value
=
"自动补扫关闭"
)
@GetMapping
(
"/stopReplenishScan"
)
public
Return
stopReplenishScan
(){
passInfoService
.
stopReplenishScan
();
return
Return
.
success
();
}
}
src/main/java/net/vtstar/zhongtong/avi/monitoring/domain/StationPassInfo.java
View file @
9a18238b
package
net
.
vtstar
.
zhongtong
.
avi
.
monitoring
.
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
net.vtstar.zhongtong.avi.monitoring.domain.enums.ScanType
;
import
javax.persistence.Column
;
import
javax.persistence.Id
;
...
...
@@ -10,13 +15,21 @@ import java.util.Date;
@ApiModel
(
"过站信息"
)
@Data
@Search
(
code
=
"PASS_INFO"
)
@Table
(
name
=
"vehicle_passing_info"
)
public
class
StationPassInfo
{
@Id
private
Long
id
;
@ApiModelProperty
(
notes
=
"报工点补扫"
)
@Search
private
ScanType
scanType
;
@Show
(
label
=
"工单号"
)
@ApiModelProperty
(
notes
=
"工单号"
)
@Column
(
name
=
"VIN"
)
@Search
private
String
VIN
;
@Column
(
name
=
"rfid"
)
...
...
@@ -25,17 +38,37 @@ public class StationPassInfo {
@Column
(
name
=
"area_no"
)
private
String
areaNo
;
@Column
(
name
=
"station_no"
)
private
String
stationNo
;
@Column
(
name
=
"in_time"
)
private
Date
inTime
;
@Column
(
name
=
"out_time"
)
private
Date
outTime
;
@Show
(
label
=
"报工点"
)
@ApiModelProperty
(
notes
=
"报工点名称"
)
@Column
(
name
=
"station_name"
)
@Search
private
String
stationName
;
@Show
(
label
=
"工位编码"
)
@Column
(
name
=
"station_no"
)
private
String
stationNo
;
@Show
(
label
=
"过站时间"
,
dataType
=
FieldType
.
DATETIME
)
@ApiModelProperty
(
notes
=
"过站时间"
)
@Column
(
name
=
"pass_time"
)
private
Date
passTime
;
private
String
busType
;
@Show
(
label
=
"操作者"
)
@ApiModelProperty
(
name
=
"操作者"
)
@Column
(
name
=
"create_by"
)
private
String
createBy
;
@ApiModelProperty
(
notes
=
"过站时间"
)
@Column
(
name
=
"create_time"
)
@Search
private
Date
createTime
;
private
String
busType
;
}
src/main/java/net/vtstar/zhongtong/avi/monitoring/domain/enums/ScanType.java
0 → 100644
View file @
9a18238b
package
net
.
vtstar
.
zhongtong
.
avi
.
monitoring
.
domain
.
enums
;
import
io.swagger.annotations.ApiModel
;
@ApiModel
(
"补扫类型"
)
public
enum
ScanType
{
NULL
(
"只查补扫"
),
ALL
(
"查询所有"
);
private
String
value
;
ScanType
(
String
value
)
{
this
.
value
=
value
;
}
public
String
getValue
()
{
return
value
;
}
}
src/main/java/net/vtstar/zhongtong/avi/monitoring/job/AVIElectrophoresisJob.java
View file @
9a18238b
...
...
@@ -116,7 +116,8 @@ public class AVIElectrophoresisJob extends GatherJob {
transaction
.
execute
();
response
=
transaction
.
getResponse
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
"PLC连接异常, PLC地址: {}, 端口:{}"
,
poolKey
.
getHost
(),
poolKey
.
getPort
());
continue
;
}
if
(
null
==
response
)
{
log
.
error
(
"读取失败! response 为空!"
);
...
...
src/main/java/net/vtstar/zhongtong/avi/monitoring/job/AVIMonitorJob.java
View file @
9a18238b
This diff is collapsed.
Click to expand it.
src/main/java/net/vtstar/zhongtong/avi/monitoring/job/AVIMonitorJob1.java
deleted
100644 → 0
View file @
e8ec2f2a
This diff is collapsed.
Click to expand it.
src/main/java/net/vtstar/zhongtong/avi/monitoring/job/RedisToCacheJob.java
View file @
9a18238b
...
...
@@ -15,14 +15,12 @@ import net.vtstar.zhongtong.avi.monitoring.domain.vo.CarStatisticsVO;
import
org.quartz.JobExecutionContext
;
import
org.quartz.JobExecutionException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.
boot.autoconfigure.validation.ValidationAutoConfiguration
;
import
org.springframework.
cache.Cache
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.ValueOperations
;
import
org.springframework.stereotype.Component
;
import
org.springframework.cache.Cache
;
import
javax.annotation.Resource
;
import
javax.validation.constraints.NotNull
;
import
java.math.BigDecimal
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
...
...
@@ -50,10 +48,8 @@ public class RedisToCacheJob extends GatherJob {
log
.
info
(
"______________"
);
log
.
info
(
"RedisToCacheJob start"
);
//处理报警
Set
<
String
>
warningKeys
=
redisTemplate
.
keys
(
Constant
.
WARNING_PREFIX
+
"*"
);
Map
<
String
,
List
<
String
>>
warningKeyMap
=
warningKeys
.
stream
().
collect
(
Collectors
.
groupingBy
(
a
->
a
.
split
(
":"
)[
1
]));
List
<
Warning
>
list
=
new
ArrayList
<>();
for
(
Map
.
Entry
<
String
,
List
<
String
>>
warningKey
:
warningKeyMap
.
entrySet
())
{
...
...
@@ -130,12 +126,7 @@ public class RedisToCacheJob extends GatherJob {
Integer
todaySize
=
(
Integer
)
valueOperations
.
get
(
Constant
.
BUS_SIZE_IN
+
code
+
":"
+
today
);
vo
.
setDateType
(
dateType
);
if
(
null
==
todaySize
)
{
// if (code.equals("0")) {
// vo.setSize(BigDecimal.valueOf(40));
// } else {
vo
.
setSize
(
BigDecimal
.
ZERO
);
// vo.setSize(BigDecimal.valueOf(10).add(new BigDecimal(r.nextInt(20))));
// }
}
else
{
vo
.
setSize
(
BigDecimal
.
valueOf
(
todaySize
));
}
...
...
@@ -146,12 +137,7 @@ public class RedisToCacheJob extends GatherJob {
Integer
todayOut
=
(
Integer
)
valueOperations
.
get
(
Constant
.
BUS_SIZE_OUT
+
code
+
":"
+
today
);
out
.
setDateType
(
dateType
);
if
(
null
==
todayOut
)
{
// if (code.equals("0")) {
// out.setSize(BigDecimal.valueOf(40));
// } else {
out
.
setSize
(
BigDecimal
.
ZERO
);
// out.setSize(BigDecimal.valueOf(10).add(new BigDecimal(r.nextInt(20))));
// }
}
else
{
out
.
setSize
(
BigDecimal
.
valueOf
(
todayOut
));
}
...
...
src/main/java/net/vtstar/zhongtong/avi/monitoring/runner/ReadDataToCacheRunner.java
View file @
9a18238b
...
...
@@ -10,11 +10,8 @@ import net.vtstar.zhongtong.avi.equipment.domain.PaintshopStation;
import
net.vtstar.zhongtong.avi.equipment.mapper.PaintshopAreaMapper
;
import
net.vtstar.zhongtong.avi.equipment.mapper.PaintshopStationMapper
;
import
net.vtstar.zhongtong.avi.global.constant.Constant
;
import
net.vtstar.zhongtong.avi.monitoring.domain.Skid
;
import
net.vtstar.zhongtong.avi.monitoring.domain.Vehicle
;
import
net.vtstar.zhongtong.avi.monitoring.domain.Warning
;
import
net.vtstar.zhongtong.avi.monitoring.domain.WorkRoom
;
import
net.vtstar.zhongtong.avi.monitoring.domain.enums.ProductionType
;
import
net.vtstar.zhongtong.avi.monitoring.domain.enums.StationState
;
import
net.vtstar.zhongtong.avi.monitoring.mapper.SkidMapper
;
import
net.vtstar.zhongtong.avi.monitoring.mapper.VehicleMapper
;
...
...
@@ -82,21 +79,13 @@ public class ReadDataToCacheRunner implements CommandLineRunner {
warningCache
.
put
(
warning
.
getCode
(),
warning
);
}
// List<WorkRoom> rooms = workRoomMapper.findList(new WhereFilter(), WorkRoom.class);
//
//
// Map<String, List<WorkRoom>> listMap = rooms.stream().collect(Collectors.groupingBy(WorkRoom::getLedNo));
// for (Map.Entry<String, List<WorkRoom>> entry : listMap.entrySet()) {
// roomCache.put(Constant.LED_PREFIX + entry.getKey(), entry.getValue());
// }
List
<
PaintshopStation
>
stations
=
stationMapper
.
findList
(
new
WhereFilter
()
{{
addJoin
(
PaintshopStation
.
class
,
"area_id"
,
PaintshopArea
.
class
,
"id"
);
addJoin
(
PaintshopStation
.
class
,
"lane_id"
,
PaintshopLane
.
class
,
"id"
);
addOrderBy
(
PaintshopStation
.
class
,
"id"
,
OrderBy
.
ASC
);
}},
PaintshopStation
.
class
);
//todo: 初始化工位信息
//todo: 初始化工位信息
/*for (int i = 0; i < stations.size(); i++) {
PaintshopStation station = stations.get(i);
if (i % 5 == 0) {
...
...
@@ -119,13 +108,6 @@ public class ReadDataToCacheRunner implements CommandLineRunner {
station
.
setState
(
StationState
.
FREE
);
valueOperations
.
set
(
Constant
.
STATION_PREFIX
+
station
.
getCode
(),
station
);
}
// station.setTurnF(false);
// station.setTurnR(false);
// station.setArrive(false);
// station.setBusType(ProductionType.OWN);
// station.setBusNo("eee");
// station.setState(StationState.USE);
// valueOperations.set(Constant.STATION_PREFIX + station.getCode() ,station);
}
stationCache
.
put
(
"ALL"
,
stations
);
//将工位按照车道号进行分组
...
...
@@ -144,17 +126,6 @@ public class ReadDataToCacheRunner implements CommandLineRunner {
vehicleCache
.
put
(
vehicle
.
getMqttPrefix
(),
vehicle
);
}
//
// Map<String, Skid> skidMap = hashOperations.entries("skid");
// if (null == skidMap) {
// List<Skid> skids = skidMapper.findList(null, Skid.class);
// Map<String, Skid> skid = skids.stream().collect(Collectors.toMap(Skid::getRfid, s -> s, (k1, k2) -> k1));
// hashOperations.putAll("skid", skid);
// }
// List<Skid> skids = skidMapper.findList(new WhereFilter(), Skid.class);
// for (PaintshopStation station : stations) {
// stationCache.put(station.getCode(), station);
// }
List
<
PaintshopArea
>
list
=
areaMapper
.
findList
(
new
WhereFilter
(),
PaintshopArea
.
class
);
webStationCache
.
put
(
"stationList"
,
list
);
...
...
src/main/java/net/vtstar/zhongtong/avi/monitoring/service/StationPassInfoService.java
View file @
9a18238b
This diff is collapsed.
Click to expand it.
src/main/java/net/vtstar/zhongtong/avi/mqtt/handle/RfidMessageHandler.java
View file @
9a18238b
This diff is collapsed.
Click to expand it.
src/main/java/net/vtstar/zhongtong/avi/mqtt/handle/RfidMessageHandler1.java
deleted
100644 → 0
View file @
e8ec2f2a
This diff is collapsed.
Click to expand it.
src/main/java/net/vtstar/zhongtong/avi/sqlserver/job/AssemblyTorqueWrenchJob.java
View file @
9a18238b
...
...
@@ -4,6 +4,7 @@ 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.equipment.service.EquipStatusRealTimeService
;
import
net.vtstar.zhongtong.avi.sqlserver.domain.AssemblyTorqueWrench
;
import
net.vtstar.zhongtong.avi.sqlserver.mapper.AssemblyTorqueWrenchMapper
;
import
net.vtstar.zhongtong.avi.utils.PingIpUtils
;
...
...
@@ -37,6 +38,9 @@ public class AssemblyTorqueWrenchJob extends QuartzJobBean {
@Autowired
private
AssemblyTorqueWrenchMapper
assemblyTorqueWrenchMapper
;
@Autowired
private
EquipStatusRealTimeService
realTimeService
;
@Value
(
"${zt.ip.assemblytorquewrench}"
)
private
String
ipAddress
;
@Value
(
"${zt.ip.pingtimes}"
)
...
...
@@ -48,8 +52,10 @@ public class AssemblyTorqueWrenchJob extends QuartzJobBean {
protected
void
executeInternal
(
JobExecutionContext
context
)
throws
JobExecutionException
{
if
(!
PingIpUtils
.
ping
(
ipAddress
,
pingTimes
,
timeOut
)){
log
.
error
(
"ping: {}失败, 此次同步总装车间智能扭力扳手数据操作结束!"
,
ipAddress
);
realTimeService
.
saveEquip
(
"总装车间"
,
""
,
"智能扭力扳手"
,
"关机"
);
return
;
}
realTimeService
.
saveEquip
(
"总装车间"
,
""
,
"智能扭力扳手"
,
"开机"
);
log
.
info
(
"--------开始同步总装车间智能扭力扳手数据--------"
);
Date
startOfDay
=
DateUtils
.
getStartOfDay
(
0
);
String
dateString
=
DateUtils
.
parseDateToString
(
startOfDay
,
"yyyy-MM-dd HH:mm:ss"
);
...
...
src/main/java/net/vtstar/zhongtong/avi/sqlserver/job/TestLineResultJob.java
View file @
9a18238b
...
...
@@ -4,6 +4,7 @@ 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.equipment.service.EquipStatusRealTimeService
;
import
net.vtstar.zhongtong.avi.sqlserver.domain.TestLineResult
;
import
net.vtstar.zhongtong.avi.sqlserver.mapper.TestLineResultMapper
;
import
net.vtstar.zhongtong.avi.utils.PingIpUtils
;
...
...
@@ -35,6 +36,9 @@ public class TestLineResultJob extends QuartzJobBean {
@Autowired
private
TestLineResultMapper
testLineResultMapper
;
@Autowired
private
EquipStatusRealTimeService
realTimeService
;
@Value
(
"${zt.ip.testlineresult}"
)
private
String
ipAddress
;
@Value
(
"${zt.ip.pingtimes}"
)
...
...
@@ -46,8 +50,10 @@ public class TestLineResultJob extends QuartzJobBean {
protected
void
executeInternal
(
JobExecutionContext
context
)
throws
JobExecutionException
{
if
(!
PingIpUtils
.
ping
(
ipAddress
,
pingTimes
,
timeOut
)){
log
.
error
(
"ping: {}失败, 此次同步试交车间检测线数据操作结束!"
,
ipAddress
);
realTimeService
.
saveEquip
(
"质量管理部"
,
"769000-04"
,
"检测线"
,
"关机"
);
return
;
}
realTimeService
.
saveEquip
(
"质量管理部"
,
"769000-04"
,
"检测线"
,
"开机"
);
log
.
info
(
"--------开始同步试交车间检测线数据--------"
);
Date
startOfDay
=
DateUtils
.
getStartOfDay
(
0
);
String
dateString
=
DateUtils
.
parseDateToString
(
startOfDay
,
"yyyy-MM-dd HH:mm:ss"
);
...
...
src/main/java/net/vtstar/zhongtong/avi/sqlserver/job/TestSpeedResultJob.java
View file @
9a18238b
...
...
@@ -4,6 +4,7 @@ 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.equipment.service.EquipStatusRealTimeService
;
import
net.vtstar.zhongtong.avi.sqlserver.domain.TestSpeedResult
;
import
net.vtstar.zhongtong.avi.sqlserver.mapper.TestSpeedMapper
;
import
net.vtstar.zhongtong.avi.utils.PingIpUtils
;
...
...
@@ -35,6 +36,9 @@ public class TestSpeedResultJob extends QuartzJobBean {
@Autowired
private
TestSpeedMapper
testSpeedMapper
;
@Autowired
private
EquipStatusRealTimeService
realTimeService
;
@Value
(
"${zt.ip.testspeedresult}"
)
private
String
ipAddress
;
@Value
(
"${zt.ip.pingtimes}"
)
...
...
@@ -46,8 +50,10 @@ public class TestSpeedResultJob extends QuartzJobBean {
protected
void
executeInternal
(
JobExecutionContext
context
)
throws
JobExecutionException
{
if
(!
PingIpUtils
.
ping
(
ipAddress
,
pingTimes
,
timeOut
)){
log
.
error
(
"ping: {}失败, 此次同步试交车间限速值数据操作结束!"
,
ipAddress
);
realTimeService
.
saveEquip
(
"质量管理部"
,
""
,
"限速值"
,
"关机"
);
return
;
}
realTimeService
.
saveEquip
(
"质量管理部"
,
""
,
"限速值"
,
"开机"
);
log
.
info
(
"--------开始同步试交车间限速值数据--------"
);
Date
startOfDay
=
DateUtils
.
getStartOfDay
(
0
);
String
dateString
=
DateUtils
.
parseDateToString
(
startOfDay
,
"yyyy-MM-dd HH:mm:ss"
);
...
...
src/main/java/net/vtstar/zhongtong/avi/utils/ExpertUtils.java
0 → 100644
View file @
9a18238b
package
net
.
vtstar
.
zhongtong
.
avi
.
utils
;
import
org.apache.poi.xssf.usermodel.XSSFCell
;
import
org.apache.poi.xssf.usermodel.XSSFRow
;
import
org.apache.poi.xssf.usermodel.XSSFSheet
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
java.io.*
;
/**
* @Author: xiadongwei
* @Date: 2019/8/28 11:03
*/
public
class
ExpertUtils
{
private
static
String
tempFileHomePath
=
"D:/vtstar/template/"
;
public
static
void
main
(
String
[]
arg
){
exportExcel
();
}
/**
* 生成excel并下载
*/
public
static
void
exportExcel
(){
File
newFile
=
createNewFile
();
//File newFile = new File("d:/ss.xls");
//新文件写入数据,并下载*****************************************************
InputStream
is
=
null
;
XSSFWorkbook
workbook
=
null
;
XSSFSheet
sheet
=
null
;
try
{
is
=
new
FileInputStream
(
newFile
);
workbook
=
new
XSSFWorkbook
(
is
);
//获取第一个sheet
sheet
=
workbook
.
getSheetAt
(
0
);
}
catch
(
Exception
e1
)
{
e1
.
printStackTrace
();
}
if
(
sheet
!=
null
){
try
{
//写数据
FileOutputStream
fos
=
new
FileOutputStream
(
newFile
);
XSSFRow
row
=
sheet
.
getRow
(
4
);
XSSFCell
cell
=
row
.
getCell
(
1
);
System
.
out
.
println
(
cell
.
getStringCellValue
());
cell
.
setCellValue
(
"ssssssssssssssssssssssssssssssssssssssssssss"
);
workbook
.
write
(
fos
);
fos
.
flush
();
fos
.
close
();
//下载
/*InputStream fis = new BufferedInputStream(new FileInputStream(newFile));
HttpServletResponse response = this.getResponse();
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
response.reset();
response.setContentType("text/html;charset=UTF-8");
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/x-msdownload");
String newName = URLEncoder.encode("采购合同"+System.currentTimeMillis()+".xls", "UTF-8");
response.addHeader("Content-Disposition", "attachment;filename=\""+ newName + "\"");
response.addHeader("Content-Length", "" + newFile.length());
toClient.write(buffer);
toClient.flush();*/
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
null
!=
is
)
{
is
.
close
();
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
//删除创建的新文件
//this.deleteFile(newFile);
}
/**
* 复制文件
*
* @param s
* 源文件
* @param t
* 复制到的新文件
*/
public
static
void
fileChannelCopy
(
File
s
,
File
t
)
{
try
{
InputStream
in
=
null
;
OutputStream
out
=
null
;
try
{
in
=
new
BufferedInputStream
(
new
FileInputStream
(
s
),
1024
);
out
=
new
BufferedOutputStream
(
new
FileOutputStream
(
t
),
1024
);
byte
[]
buffer
=
new
byte
[
1024
];
int
len
;
while
((
len
=
in
.
read
(
buffer
))!=-
1
)
{
out
.
write
(
buffer
,
0
,
len
);
}
}
finally
{
if
(
null
!=
in
)
{
in
.
close
();
}
if
(
null
!=
out
)
{
out
.
close
();
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
/**
* 读取excel模板,并复制到新文件中供写入和下载
* @return
*/
public
static
File
createNewFile
(){
//读取模板,并赋值到新文件************************************************************
//文件模板路径
String
fileName
=
"向阳生产计划模板"
;
File
file
=
new
File
(
tempFileHomePath
,
fileName
+
".xls"
);
//新的文件名
String
newFileName
=
"日常检测报告"
+
System
.
currentTimeMillis
()
+
".xls"
;
//写入到新的excel
File
newFile
=
new
File
(
tempFileHomePath
,
newFileName
);
try
{
newFile
.
createNewFile
();
//复制模板到新文件
fileChannelCopy
(
file
,
newFile
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
newFile
;
}
/**
* 下载成功后删除
*
* @param files
*/
private
void
deleteFile
(
File
...
files
)
{
for
(
File
file
:
files
)
{
if
(
file
.
exists
())
{
file
.
delete
();
}
}
}
}
src/main/java/net/vtstar/zhongtong/avi/utils/PrintDemo.java
0 → 100644
View file @
9a18238b
package
net
.
vtstar
.
zhongtong
.
avi
.
utils
;
import
java.io.File
;
/**
* @Author: xiadongwei
* @Date: 2019/10/20 18:56
*/
public
class
PrintDemo
{
public
static
boolean
printOfficeFile
(
File
f
)
{
return
true
;
/*if (f != null && f.exists()) {
String fileNameString = f.getName();
String postfixString = Utils.getPostfix(fileNameString);
if (postfixString.equalsIgnoreCase("xls") || postfixString.equalsIgnoreCase("xlsx")) {
*//**
* 功能:实现excel打印工作
*//*
ComThread.InitSTA();
ActiveXComponent xl = new ActiveXComponent("Excel.Application");
try {
// System.out.println("version=" +
// xl.getProperty("Version"));
// 不打开文档
Dispatch.put(xl, "Visible", new Variant(false));
Dispatch workbooks = xl.getProperty("Workbooks").toDispatch();
// 打开文档
Dispatch excel = Dispatch.call(workbooks, "Open", f.getAbsolutePath()).toDispatch();
// 横向打印(2013/05/24)
// Dispatch currentSheet = Dispatch.get(excel,
// "ActiveSheet")
// .toDispatch();
// Dispatch pageSetup = Dispatch
// .get(currentSheet, "PageSetup").toDispatch();
// Dispatch.put(pageSetup, "Orientation", new Variant(2));
// 每张表都横向打印2013-10-31
Dispatch sheets = Dispatch.get((Dispatch) excel, "Sheets").toDispatch();
// 获得几个sheet
int count = Dispatch.get(sheets, "Count").getInt();
// System.out.println(count);
for (int j = 1; j <= count; j++) {
Dispatch sheet = Dispatch
.invoke(sheets, "Item", Dispatch.Get, new Object[] { new Integer(j) }, new int[1])
.toDispatch();
Dispatch pageSetup = Dispatch.get(sheet, "PageSetup").toDispatch();
Dispatch.put(pageSetup, "Orientation", new Variant(2));
Dispatch.call(sheet, "PrintOut");
}
// 开始打印
if (excel != null) {
// Dispatch.call(excel, "PrintOut");
// 增加以下三行代码解决文件无法删除bug
Dispatch.call(excel, "save");
Dispatch.call(excel, "Close", new Variant(true));
excel = null;
}
xl.invoke("Quit", new Variant[] {});
xl = null;
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
// 始终释放资源
ComThread.Release();
}
} else if (postfixString.equalsIgnoreCase("doc") || postfixString.equalsIgnoreCase("docx")) {
ComThread.InitSTA();
ActiveXComponent wd = new ActiveXComponent("Word.Application");
try {
// 不打开文档
Dispatch.put(wd, "Visible", new Variant(false));
Dispatch document = wd.getProperty("Documents").toDispatch();
// 打开文档
Dispatch doc = Dispatch
.invoke(document, "Open", Dispatch.Method, new Object[] { f.getAbsolutePath() }, new int[1])
.toDispatch();
// 开始打印
if (doc != null) {
Dispatch.call(doc, "PrintOut");
// 增加以下三行代码解决文件无法删除bug
Dispatch.call(doc, "save");
Dispatch.call(doc, "Close", new Variant(true));
doc = null;
}
wd.invoke("Quit", new Variant[] {});
wd = null;
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
// 始终释放资源
ComThread.Release();
}
} else {
return false;
}
} else {
return false;
}*/
}
public
static
void
main
(
String
[]
args
)
{
PrintDemo
.
printOfficeFile
(
new
File
(
"hehe.xls"
));
}
}
src/main/resources/config/application-quartz.properties
View file @
9a18238b
...
...
@@ -31,8 +31,8 @@ quartz.job.taskInfos[1].jobName=net.vtstar.zhongtong.avi.equipment.job.CleanStat
quartz.job.taskInfos[1]
.jobGroup
=
CleanStatusDataJob
quartz.job.taskInfos[1]
.jobDescription
=
\u
6E05
\u
6D17
\u
8BBE
\u5907\u
72B6
\u6001
Job
#quartz.job.taskInfos[1].cronExpression=0 0 0 * * ?
quartz.job.taskInfos[1]
.cronExpression
=
0
0/5
* * * ?
quartz.job.taskInfos[1]
.start
=
fals
e
quartz.job.taskInfos[1]
.cronExpression
=
0
/10 *
* * * ?
quartz.job.taskInfos[1]
.start
=
tru
e
quartz.job.taskInfos[2]
.jobName
=
net.vtstar.zhongtong.avi.equipment.job.StatisticsTimeJob
quartz.job.taskInfos[2]
.jobGroup
=
StatisticsTimeJob
...
...
@@ -117,8 +117,8 @@ quartz.job.taskInfos[12].start=false
quartz.job.taskInfos[13]
.jobName
=
net.vtstar.zhongtong.avi.gateway.painting.job.SprayBoothStateMachineJob
quartz.job.taskInfos[13]
.jobGroup
=
SprayBoothStateMachineJob
quartz.job.taskInfos[13]
.jobDescription
=
\u
6d82
\u
88c5
\u
55b7
\u
6d82
\u
5ba4Job
quartz.job.taskInfos[13]
.cronExpression
=
0
0/5
* * * ?
quartz.job.taskInfos[13]
.start
=
fals
e
quartz.job.taskInfos[13]
.cronExpression
=
0
/15 *
* * * ?
quartz.job.taskInfos[13]
.start
=
tru
e
#烘干室
quartz.job.taskInfos[14]
.jobName
=
net.vtstar.zhongtong.avi.gateway.painting.job.DryingRoomTempMachineJob
...
...
@@ -278,8 +278,8 @@ quartz.job.taskInfos[35].cronExpression=0 0/1 * * * ?
quartz.job.taskInfos[35]
.start
=
false
#AVI plc 采集
quartz.job.taskInfos[36]
.jobName
=
net.vtstar.zhongtong.avi.monitoring.job.AVIMonitorJob
1
quartz.job.taskInfos[36]
.jobGroup
=
AVIMonitorJob
1
quartz.job.taskInfos[36]
.jobName
=
net.vtstar.zhongtong.avi.monitoring.job.AVIMonitorJob
quartz.job.taskInfos[36]
.jobGroup
=
AVIMonitorJob
quartz.job.taskInfos[36]
.jobDescription
=
\u
76d1
\u
63a7
\u0041\u0056\u0049
Job
quartz.job.taskInfos[36]
.cronExpression
=
0/3 * * * * ?
quartz.job.taskInfos[36]
.start
=
false
...
...
src/test/java/net/vtstar/zhongtong/avi/ApplicationTests.java
View file @
9a18238b
package
net
.
vtstar
.
zhongtong
.
avi
;
import
jcifs.smb.SmbFile
;
import
lombok.extern.slf4j.Slf4j
;
import
net.vtstar.utils.DateUtils
;
import
net.vtstar.zhongtong.avi.utils.SmbFileUtil
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.ActiveProfiles
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.net.Socket
;
import
java.util.Date
;
@ActiveProfiles
(
"xdw"
)
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
@Slf4j
public
class
ApplicationTests
{
@Test
public
void
contextLoads
()
{
}
private
String
baseUrl
=
"D:/scada/assemblynewenergy/"
;
@Test
public
void
shareTestxgsk
()
throws
Exception
{
Date
startOfDay
=
DateUtils
.
getStartOfDay
(
0
);
String
dateString
=
DateUtils
.
parseDateToString
(
startOfDay
,
"yyyy-MM-dd"
);
// String url = "smb://10.1.4.107/数控下料/下料计划01.06.xls";
log
.
error
(
String
.
valueOf
(
new
Date
().
getTime
()));
String
url
=
"smb://admin:123456@10.1.25.128/an9637h/testdata@2019-04-10.mdb"
;
SmbFile
file
=
new
SmbFile
(
url
);
if
(
file
.
exists
())
{
SmbFileUtil
.
smbGet
(
url
,
baseUrl
);
// SmbFileUtil.smbPut("smb://10.1.4.107/数控下料/", "D:/error.xls");
}
else
{
log
.
error
(
"日期: {} 的总装车间新能源检测点共享文件不存在!"
,
dateString
);
}
log
.
error
(
String
.
valueOf
(
new
Date
().
getTime
()));
}
@Test
public
void
socketTest
()
throws
Exception
{
String
aByte
=
"<get><var>.P107</var><auto>yes</auto></get>\n"
;
Socket
socket
=
new
Socket
(
"172.18.81.191"
,
62944
);
OutputStream
outputStream
=
socket
.
getOutputStream
();
outputStream
.
write
(
aByte
.
getBytes
());
outputStream
.
flush
();
socket
.
shutdownOutput
();
InputStream
inputStream
=
socket
.
getInputStream
();
byte
[]
bytes
=
new
byte
[
1024
];
int
len
;
StringBuilder
sb
=
new
StringBuilder
();
while
((
len
=
inputStream
.
read
(
bytes
))
!=
-
1
)
{
//注意指定编码格式,发送方和接收方一定要统一,建议使用UTF-8
sb
.
append
(
new
String
(
bytes
,
0
,
len
,
"UTF-8"
));
}
System
.
out
.
println
(
"get message from server: "
+
sb
);
inputStream
.
close
();
outputStream
.
close
();
socket
.
close
();
}
}
src/test/java/net/vtstar/zhongtong/avi/ModbusTest.java
View file @
9a18238b
...
...
@@ -6,31 +6,198 @@ import net.vtstar.protocol.modbus.tcp.netty.packet.ReadCoilsRequest;
import
net.vtstar.protocol.modbus.tcp.netty.packet.ReadCoilsResponse
;
import
net.vtstar.protocol.modbus.tcp.netty.service.ModbusTemplate
;
import
net.vtstar.protocol.modbus.tcp.netty.utils.PoolKey
;
import
net.vtstar.scada.base.equipmgt.domain.EquipDataTemplate
;
import
net.vtstar.scada.base.equipmgt.domain.EquipDataTemplateItem
;
import
net.vtstar.scada.base.equipmgt.mapper.EquipDataTemplateItemMapper
;
import
net.vtstar.scada.base.equipmgt.mapper.EquipDataTemplateMapper
;
import
net.vtstar.user.mybatis.provider.WhereFilter
;
import
net.vtstar.utils.asserts.ParamAssert
;
import
net.vtstar.zhongtong.avi.monitoring.domain.Warning
;
import
net.vtstar.zhongtong.avi.monitoring.mapper.WarningMapper
;
import
net.vtstar.zhongtong.avi.sqlserver.domain.MesWorkOrderInfo
;
import
org.apache.poi.hssf.usermodel.HSSFWorkbook
;
import
org.apache.poi.ss.usermodel.CellType
;
import
org.apache.poi.ss.usermodel.Row
;
import
org.apache.poi.ss.usermodel.Sheet
;
import
org.apache.poi.ss.usermodel.Workbook
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.ActiveProfiles
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.StringUtils
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Slf4j
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
Application
.
class
)
@ActiveProfiles
(
"
dev-yxh
"
)
@ActiveProfiles
(
"
xdw
"
)
public
class
ModbusTest
{
@Autowired
private
ModbusTemplate
modbusTemplate
;
@Autowired
private
WarningMapper
warningMapper
;
@Autowired
private
EquipDataTemplateItemMapper
itemMapper
;
@Autowired
private
EquipDataTemplateMapper
templateMapper
;
@Test
public
void
test
()
throws
Exception
{
ReadCoilsRequest
readCoilsRequest
=
new
ReadCoilsRequest
(
1
,
0
,
5
);
PoolKey
poolKey
=
new
PoolKey
(
"localhost"
,
502
);
ReadCoilsResponse
response
=
modbusTemplate
.
execute
(
poolKey
,
readCoilsRequest
,
ReadCoilsResponse
.
class
);
ReadCoilsRequest
readCoilsRequest
=
new
ReadCoilsRequest
(
1
,
0
,
5
);
PoolKey
poolKey
=
new
PoolKey
(
"localhost"
,
502
);
ReadCoilsResponse
response
=
modbusTemplate
.
execute
(
poolKey
,
readCoilsRequest
,
ReadCoilsResponse
.
class
);
ByteBuf
body
=
response
.
getBody
();
byte
b
=
body
.
readByte
();
System
.
out
.
println
(
"___"
+
b
);
// byte[] array = body.array();
}
private
static
final
String
SUFFIX_2003
=
".xls"
;
private
static
final
String
SUFFIX_2007
=
".xlsx"
;
private
Map
<
String
,
Integer
>
map
=
new
HashMap
<>();
@Test
public
void
parsingExcel
()
{
map
.
put
(
"KS111腻子烘干室335"
,
3
);
map
.
put
(
"KS1053工位电泳烘干室302"
,
1
);
map
.
put
(
"KS1062工位电泳烘干室303"
,
1
);
map
.
put
(
"KS113腻子烘干室336"
,
3
);
map
.
put
(
"KS112腻子烘干室377"
,
3
);
map
.
put
(
"KS114中途烘干室351"
,
3
);
map
.
put
(
"KS115中途烘干室352"
,
3
);
map
.
put
(
"KS116面漆烘干室360"
,
7
);
map
.
put
(
"KS117面漆烘干室362"
,
7
);
map
.
put
(
"KS118面漆烘干室364"
,
7
);
map
.
put
(
"KS119彩条烘干室366"
,
6
);
map
.
put
(
"KS120彩条烘干室368"
,
6
);
map
.
put
(
"KS121彩条烘干室370"
,
6
);
map
.
put
(
"KS122彩条烘干室372"
,
6
);
map
.
put
(
"KS123罩光漆烘干室373"
,
6
);
map
.
put
(
"KS142A中涂喷漆室349"
,
4
);
map
.
put
(
"KS143A中涂喷漆室350"
,
4
);
map
.
put
(
"KS144A面漆喷漆室359"
,
5
);
map
.
put
(
"KS145面漆喷漆室361"
,
5
);
map
.
put
(
"KS146A面漆喷漆室363"
,
5
);
map
.
put
(
"KS147A彩条喷漆室365"
,
6
);
map
.
put
(
"KS149A彩条喷漆室367"
,
6
);
map
.
put
(
"KS148A彩条喷漆室369"
,
6
);
map
.
put
(
"KS150A彩条喷漆室371"
,
6
);
map
.
put
(
"KS151A罩光喷漆室374"
,
6
);
map
.
put
(
"前处理"
,
1
);
map
.
put
(
"超滤UF"
,
1
);
map
.
put
(
"纯水OR"
,
1
);
map
.
put
(
"前处理空中行车"
,
1
);
List
<
Warning
>
list
=
new
ArrayList
<>();
File
file
=
new
File
(
"Y:/前处理纯水超滤行车.xlsx"
);
//获取文件的名字
Workbook
workbook
=
null
;
String
fileName
=
file
.
getName
();
try
{
if
(
fileName
.
endsWith
(
SUFFIX_2003
))
{
workbook
=
new
HSSFWorkbook
(
new
FileInputStream
(
file
));
}
else
if
(
fileName
.
endsWith
(
SUFFIX_2007
))
{
workbook
=
new
XSSFWorkbook
(
new
FileInputStream
(
file
));
}
}
catch
(
Exception
e
)
{
log
.
error
(
"读取文件错误: {}"
,
e
.
getMessage
());
}
ParamAssert
.
notNull
(
workbook
,
"文件名 :"
+
file
+
"不符合EXCEL的格式要求!标准格式:.xls/.xlsx"
);
//获取所有的工作表的的数量
int
numOfSheet
=
workbook
.
getNumberOfSheets
();
//遍历这个这些表
for
(
int
i
=
0
;
i
<
numOfSheet
;
i
++)
{
//获取一个sheet也就是一个工作簿
Sheet
sheet
=
workbook
.
getSheetAt
(
i
);
int
lastRowNum
=
sheet
.
getLastRowNum
();
//从第一行开始第一行一般是标题
for
(
int
j
=
0
;
j
<=
lastRowNum
;
j
++)
{
Row
row
=
sheet
.
getRow
(
j
);
if
(
null
==
row
)
{
continue
;
}
Warning
warning
=
new
Warning
();
//描述
if
(
row
.
getCell
(
0
)
!=
null
)
{
row
.
getCell
(
0
).
setCellType
(
CellType
.
STRING
);
String
info
=
row
.
getCell
(
0
).
getStringCellValue
();
if
(
StringUtils
.
isEmpty
(
info
))
{
continue
;
}
warning
.
setInfo
(
info
);
}
//类型
if
(
row
.
getCell
(
3
)
!=
null
)
{
row
.
getCell
(
3
).
setCellType
(
CellType
.
STRING
);
String
type
=
row
.
getCell
(
3
).
getStringCellValue
();
if
(
null
==
type
)
{
continue
;
}
warning
.
setType
(
type
);
}
//解决
if
(
row
.
getCell
(
4
)
!=
null
)
{
row
.
getCell
(
4
).
setCellType
(
CellType
.
STRING
);
String
name
=
row
.
getCell
(
4
).
getStringCellValue
();
warning
.
setName
(
name
);
}
//创建warning, 获取code
warningMapper
.
insertRecord
(
warning
);
Long
id
=
warning
.
getId
();
//产线
String
name
=
""
;
if
(
row
.
getCell
(
1
)
!=
null
)
{
row
.
getCell
(
1
).
setCellType
(
CellType
.
STRING
);
name
=
row
.
getCell
(
1
).
getStringCellValue
();
}
String
address
=
""
;
if
(
row
.
getCell
(
2
)
!=
null
)
{
row
.
getCell
(
2
).
setCellType
(
CellType
.
STRING
);
address
=
row
.
getCell
(
2
).
getStringCellValue
();
}
EquipDataTemplate
byName
=
templateMapper
.
findByName
(
name
);
if
(
byName
==
null
){
log
.
error
(
name
);
return
;
}
EquipDataTemplateItem
item
=
new
EquipDataTemplateItem
();
item
.
setTemplateId
(
byName
.
getId
());
item
.
setFieldName
(
"warning:"
+
map
.
get
(
name
)
+
":"
+
id
);
if
(
address
.
contains
(
"."
)){
String
[]
split
=
address
.
substring
(
1
).
split
(
"\\."
);
item
.
setAddress
(
Integer
.
valueOf
(
split
[
0
])
*
8
+
Integer
.
valueOf
(
split
[
1
]));
}
else
{
item
.
setAddress
(
Integer
.
valueOf
(
address
.
substring
(
1
))
*
8
);
}
item
.
setFunctionCode
(
2
);
item
.
setFieldType
(
"BIT"
);
item
.
setLength
(
1
);
item
.
setFieldDesc
(
name
);
itemMapper
.
insert
(
item
);
list
.
add
(
warning
);
}
log
.
error
(
"加载数据: {} 条"
,
list
.
size
());
List
<
Warning
>
list1
=
warningMapper
.
findList
(
new
WhereFilter
(),
Warning
.
class
);
for
(
Warning
warning
:
list1
){
warning
.
setCode
(
warning
.
getId
()
+
""
);
warningMapper
.
update
(
warning
);
}
}
}
}
src/test/java/net/vtstar/zhongtong/avi/StationTest.java
View file @
9a18238b
...
...
@@ -3,6 +3,8 @@ package net.vtstar.zhongtong.avi;
import
lombok.extern.slf4j.Slf4j
;
import
net.vtstar.scada.base.equipmgt.domain.EquipDataTemplateItem
;
import
net.vtstar.scada.base.equipmgt.mapper.EquipDataTemplateItemMapper
;
import
net.vtstar.user.mybatis.provider.Operation
;
import
net.vtstar.user.mybatis.provider.OrderBy
;
import
net.vtstar.user.mybatis.provider.WhereFilter
;
import
net.vtstar.zhongtong.avi.equipment.domain.PaintshopStation
;
import
net.vtstar.zhongtong.avi.equipment.mapper.PaintshopStationMapper
;
...
...
@@ -10,10 +12,13 @@ import net.vtstar.zhongtong.avi.global.constant.Constant;
import
net.vtstar.zhongtong.avi.monitoring.domain.Skid
;
import
net.vtstar.zhongtong.avi.monitoring.domain.enums.ProductionType
;
import
net.vtstar.zhongtong.avi.monitoring.domain.enums.StationState
;
import
net.vtstar.zhongtong.avi.sqlserver.domain.MesWorkOrderInfo
;
import
net.vtstar.zhongtong.avi.sqlserver.mapper.MesWorkOrderMapper
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.ValueOperations
;
import
org.springframework.test.context.ActiveProfiles
;
import
org.springframework.test.context.junit4.SpringRunner
;
...
...
@@ -22,12 +27,13 @@ import javax.annotation.Resource;
import
javax.validation.constraints.NotNull
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
@Slf4j
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
Application
.
class
)
@ActiveProfiles
(
"
dev-yxh
"
)
@ActiveProfiles
(
"
xdw
"
)
public
class
StationTest
{
@Autowired
...
...
@@ -36,6 +42,11 @@ public class StationTest {
private
EquipDataTemplateItemMapper
itemMapper
;
@Resource
(
name
=
"redisTemplate"
)
private
ValueOperations
valueOperations
;
@Resource
(
name
=
"redisTemplate"
)
private
RedisTemplate
redisTemplate
;
@Autowired
private
MesWorkOrderMapper
mesWorkOrderMapper
;
@Test
public
void
test
()
{
...
...
@@ -99,4 +110,33 @@ public class StationTest {
paintshopStation
.
setSkid
(
skid
);
valueOperations
.
set
(
"station:HDG1-13"
,
paintshopStation
);
}
@Test
public
void
skidTest
()
{
List
<
MesWorkOrderInfo
>
mesWorkOrderInfos
=
mesWorkOrderMapper
.
findList
(
new
WhereFilter
()
{{
addFilter
(
"status"
,
Operation
.
EQUAL
,
"4"
);
addOrderBy
(
"crt_date"
,
OrderBy
.
DESC
);
}},
MesWorkOrderInfo
.
class
);
Set
<
String
>
veKeys
=
redisTemplate
.
keys
(
Constant
.
SKID_PREFIX
+
"*"
);
int
num
=
0
;
for
(
String
veKey
:
veKeys
)
{
Skid
skid
=
(
Skid
)
valueOperations
.
get
(
veKey
);
MesWorkOrderInfo
mesWorkOrderInfo
=
mesWorkOrderInfos
.
get
(
num
);
num
++;
skid
.
setWorkOrderNo
(
mesWorkOrderInfo
.
getWorkOrderNo
());
skid
.
setBusNo
(
mesWorkOrderInfo
.
getVehicleModel
());
valueOperations
.
set
(
veKey
,
skid
);
}
Set
<
String
>
veKeyStation
=
redisTemplate
.
keys
(
Constant
.
STATION_PREFIX
+
"*"
);
for
(
String
key
:
veKeyStation
){
PaintshopStation
station
=
(
PaintshopStation
)
valueOperations
.
get
(
key
);
if
(
null
!=
station
.
getSkid
()){
Skid
skid
=
(
Skid
)
valueOperations
.
get
(
Constant
.
SKID_PREFIX
+
station
.
getSkid
().
getRfid
());
station
.
setSkid
(
skid
);
station
.
setWorkOrderNo
(
skid
.
getWorkOrderNo
());
station
.
setBusNo
(
skid
.
getBusNo
());
valueOperations
.
set
(
key
,
station
);
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment