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
b4b2a7e0
Commit
b4b2a7e0
authored
Feb 04, 2020
by
夏东伟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
联调修改
parent
2bc23d54
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
849 additions
and
252 deletions
+849
-252
pom.xml
pom.xml
+5
-1
EquipInfo.java
.../net/vtstar/zhongtong/avi/equipment/domain/EquipInfo.java
+2
-2
FaultRecord.java
...et/vtstar/zhongtong/avi/equipment/domain/FaultRecord.java
+1
-0
RuntimeRecord.java
.../vtstar/zhongtong/avi/equipment/domain/RuntimeRecord.java
+2
-2
CleanStatusDataJob.java
...tstar/zhongtong/avi/equipment/job/CleanStatusDataJob.java
+8
-2
RunRecordService.java
...tar/zhongtong/avi/equipment/service/RunRecordService.java
+12
-1
PaintingRobotMachine.java
...ong/avi/gateway/painting/domain/PaintingRobotMachine.java
+0
-1
PaintingRobotRecordMachine.java
...i/gateway/painting/domain/PaintingRobotRecordMachine.java
+50
-0
PaintingRobotRecordMachineJob.java
...i/gateway/painting/job/PaintingRobotRecordMachineJob.java
+83
-0
SprayBoothListener.java
...ong/avi/gateway/painting/listener/SprayBoothListener.java
+12
-11
PaintingRobotRecordMapper.java
...vi/gateway/painting/mapper/PaintingRobotRecordMapper.java
+10
-0
DustingLineMachineJob.java
...hongtong/avi/gateway/parts/job/DustingLineMachineJob.java
+3
-0
DailyCheckController.java
...gtong/avi/laboratory/controller/DailyCheckController.java
+3
-3
DailyItemRecordVo.java
...zhongtong/avi/laboratory/domain/vo/DailyItemRecordVo.java
+21
-0
DailyCheckService.java
...r/zhongtong/avi/laboratory/service/DailyCheckService.java
+39
-22
AreaController.java
...r/zhongtong/avi/monitoring/controller/AreaController.java
+3
-1
StationPassInfo.java
...star/zhongtong/avi/monitoring/domain/StationPassInfo.java
+5
-0
AVIElectrophoresisJob.java
...r/zhongtong/avi/monitoring/job/AVIElectrophoresisJob.java
+159
-0
AVIMonitorJob.java
...et/vtstar/zhongtong/avi/monitoring/job/AVIMonitorJob.java
+2
-2
AreaService.java
.../vtstar/zhongtong/avi/monitoring/service/AreaService.java
+7
-3
PDAService.java
...t/vtstar/zhongtong/avi/monitoring/service/PDAService.java
+7
-5
StationPassInfoService.java
...ngtong/avi/monitoring/service/StationPassInfoService.java
+10
-2
ReportController.java
...tar/zhongtong/avi/report/controller/ReportController.java
+38
-6
MesHZWorkOrderInfo.java
...ar/zhongtong/avi/sqlserver/domain/MesHZWorkOrderInfo.java
+39
-0
MesHZWorkOrderJob.java
...vtstar/zhongtong/avi/sqlserver/job/MesHZWorkOrderJob.java
+84
-0
MesHZWorkOrderMapper.java
.../zhongtong/avi/sqlserver/mapper/MesHZWorkOrderMapper.java
+13
-0
application-dev.properties
src/main/resources/config/application-dev.properties
+7
-2
application-quartz.properties
src/main/resources/config/application-quartz.properties
+201
-181
application-xdw.properties
src/main/resources/config/application-xdw.properties
+10
-2
application-ztip.properties
src/main/resources/config/application-ztip.properties
+3
-3
MesHZWorkOrderMapper.xml
src/main/resources/mapper/mysql/MesHZWorkOrderMapper.xml
+5
-0
PaintingRobotRecordMapper.xml
...main/resources/mapper/mysql/PaintingRobotRecordMapper.xml
+5
-0
No files found.
pom.xml
View file @
b4b2a7e0
...
...
@@ -141,7 +141,11 @@
</resource>
<resource>
<directory>
src/main/resources
</directory>
<filtering>
true
</filtering>
<filtering>
false
</filtering>
<excludes>
<exclude>
**/*.ttf
</exclude>
<exclude>
**/*.woff
</exclude>
</excludes>
</resource>
<resource>
<directory>
src/main/resources/lib
</directory>
...
...
src/main/java/net/vtstar/zhongtong/avi/equipment/domain/EquipInfo.java
View file @
b4b2a7e0
...
...
@@ -49,13 +49,13 @@ public class EquipInfo {
@ApiModelProperty
(
notes
=
"设备编号"
)
@NotNull
(
message
=
"设备名称不能为空"
)
@Length
(
max
=
100
,
message
=
"设备编号长度不能大于{max}"
)
@Column
(
name
=
"
equip_code
"
)
@Column
(
name
=
"
alias
"
)
@Search
private
String
equipCode
;
@ApiModelProperty
(
notes
=
"设备名称"
)
@Length
(
max
=
100
,
message
=
"设备名称长度不能大于{max}"
)
@Column
(
name
=
"
alias
"
)
@Column
(
name
=
"
equip_code
"
)
@Search
private
String
alias
;
...
...
src/main/java/net/vtstar/zhongtong/avi/equipment/domain/FaultRecord.java
View file @
b4b2a7e0
...
...
@@ -35,6 +35,7 @@ public class FaultRecord {
private
String
equipCode
;
@ApiModelProperty
(
notes
=
"设备名称"
)
@Column
(
name
=
"machine_code"
)
private
String
alias
;
@ApiModelProperty
(
notes
=
"故障信息"
)
...
...
src/main/java/net/vtstar/zhongtong/avi/equipment/domain/RuntimeRecord.java
View file @
b4b2a7e0
...
...
@@ -35,11 +35,11 @@ public class RuntimeRecord {
private
Long
machineId
;
@ApiModelProperty
(
notes
=
"设备编号"
)
@JoinColumn
(
tableName
=
EquipInfo
.
class
,
name
=
"
equip_code
"
)
@JoinColumn
(
tableName
=
EquipInfo
.
class
,
name
=
"
alias
"
)
private
String
equipCode
;
@ApiModelProperty
(
notes
=
"设备名称"
)
@JoinColumn
(
tableName
=
EquipInfo
.
class
,
name
=
"
alias
"
)
@JoinColumn
(
tableName
=
EquipInfo
.
class
,
name
=
"
equip_code
"
)
@Search
private
String
alias
;
...
...
src/main/java/net/vtstar/zhongtong/avi/equipment/job/CleanStatusDataJob.java
View file @
b4b2a7e0
...
...
@@ -16,6 +16,7 @@ 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
;
...
...
@@ -50,8 +51,13 @@ public class CleanStatusDataJob extends QuartzJobBean {
if
(
CollectionUtils
.
isEmpty
(
dataList
))
{
continue
;
}
//插入设备监控数据
equipmentDataMapper
.
insertList
(
dataList
);
if
(
key
.
contains
(
"DRYING_ROOM_TEMP"
)){
//插入设备监控数据
equipmentDataMapper
.
insert
(
dataList
.
get
(
0
));
}
else
{
//插入设备监控数据
equipmentDataMapper
.
insertList
(
dataList
);
}
if
(
key
.
contains
(
"DRYING_ROOM_TEMP"
)
||
key
.
contains
(
"SPRAY_BOOTH"
)){
continue
;
}
...
...
src/main/java/net/vtstar/zhongtong/avi/equipment/service/RunRecordService.java
View file @
b4b2a7e0
...
...
@@ -8,6 +8,7 @@ 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.EquipInfo
;
import
net.vtstar.zhongtong.avi.equipment.domain.FaultRecord
;
import
net.vtstar.zhongtong.avi.equipment.domain.RuntimeRecord
;
...
...
@@ -90,10 +91,20 @@ public class RunRecordService {
*/
public
List
<
FaultRecord
>
findPageFault
(
JSONObject
pageFilter
)
{
PageHelper
.
startPage
(
pageFilter
.
getIntValue
(
"pageNum"
),
pageFilter
.
getIntValue
(
"pageSize"
));
return
faultRecordMapper
.
findList
(
searchService
.
pageFilter2Filter
(
pageFilter
,
new
WhereFilter
()
{{
List
<
FaultRecord
>
list
=
faultRecordMapper
.
findList
(
searchService
.
pageFilter2Filter
(
pageFilter
,
new
WhereFilter
()
{{
/*addJoin(PaintshopStation.class, "area_id", PaintshopArea.class, "id");
addJoin(PaintshopStation.class, "lane_id", PaintshopLane.class, "id");*/
}}),
FaultRecord
.
class
);
list
.
forEach
(
faultRecord
->
{
faultRecord
.
getEquipCode
();
List
<
EquipInfo
>
equipInfos
=
basicInfoMapper
.
findList
(
new
WhereFilter
()
{{
addFilter
(
"equip_code"
,
Operation
.
EQUAL
,
faultRecord
.
getEquipCode
());
}},
EquipInfo
.
class
);
if
(!
CollecUtils
.
isEmpty
(
equipInfos
)){
faultRecord
.
setEquipCode
(
equipInfos
.
get
(
0
).
getEquipCode
());
}
});
return
list
;
}
...
...
src/main/java/net/vtstar/zhongtong/avi/gateway/painting/domain/PaintingRobotMachine.java
View file @
b4b2a7e0
...
...
@@ -14,7 +14,6 @@ import javax.persistence.Table;
import
java.util.Date
;
@Data
@Search
(
code
=
"PAINTING_ROBOT"
)
@ApiModel
(
value
=
"喷涂机器人"
,
description
=
"喷涂机器人监控数据表"
)
@Table
(
name
=
"eqp_data_painting_robot"
)
public
class
PaintingRobotMachine
extends
EquipmentData
{
...
...
src/main/java/net/vtstar/zhongtong/avi/gateway/painting/domain/PaintingRobotRecordMachine.java
0 → 100644
View file @
b4b2a7e0
package
net
.
vtstar
.
zhongtong
.
avi
.
gateway
.
painting
.
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.Id
;
import
javax.persistence.Table
;
import
java.util.Date
;
@Data
@Search
(
code
=
"PAINTING_ROBOT"
)
@ApiModel
(
value
=
"喷涂机器人"
,
description
=
"喷涂机器人监控数据表"
)
@Table
(
name
=
"eqp_data_painting_robot_record"
)
public
class
PaintingRobotRecordMachine
{
@Show
(
label
=
"设备名称"
)
@Column
(
name
=
"eqp_code"
)
@ApiModelProperty
(
notes
=
"设备名称"
)
@Search
private
String
equipCode
;
@Show
(
label
=
"车型"
)
@Column
(
name
=
"bus_type"
)
@ApiModelProperty
(
notes
=
"车型"
)
private
String
busType
;
@Show
(
label
=
"数量"
)
@Column
(
name
=
"num"
)
@ApiModelProperty
(
notes
=
"数量"
)
private
Integer
num
;
@Show
(
label
=
"采集时间"
,
dataType
=
FieldType
.
DATETIME
)
@ApiModelProperty
(
"时间"
)
@Column
(
name
=
"create_time"
)
@Search
private
Date
createTime
;
@Id
private
Long
id
;
@ApiModelProperty
(
"采集状态"
)
@Column
(
name
=
"status"
)
private
String
status
;
}
src/main/java/net/vtstar/zhongtong/avi/gateway/painting/job/PaintingRobotRecordMachineJob.java
0 → 100644
View file @
b4b2a7e0
package
net
.
vtstar
.
zhongtong
.
avi
.
gateway
.
painting
.
job
;
import
lombok.extern.slf4j.Slf4j
;
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.gateway.painting.domain.PaintingRobotRecordMachine
;
import
net.vtstar.zhongtong.avi.gateway.painting.mapper.PaintingRobotRecordMapper
;
import
net.vtstar.zhongtong.avi.monitoring.domain.StationPassInfo
;
import
net.vtstar.zhongtong.avi.monitoring.mapper.StationPassInfoMapper
;
import
net.vtstar.zhongtong.avi.sqlserver.domain.MesWorkOrderInfo
;
import
net.vtstar.zhongtong.avi.sqlserver.mapper.MesWorkOrderMapper
;
import
org.quartz.JobExecutionContext
;
import
org.quartz.JobExecutionException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.quartz.QuartzJobBean
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* 喷涂机器人运行次数统计JOB
*/
@Slf4j
@Component
public
class
PaintingRobotRecordMachineJob
extends
QuartzJobBean
{
@Autowired
private
PaintingRobotRecordMapper
recordMapper
;
@Autowired
private
MesWorkOrderMapper
mesWorkOrderMapper
;
@Autowired
private
StationPassInfoMapper
mapper
;
@Override
protected
void
executeInternal
(
JobExecutionContext
context
)
throws
JobExecutionException
{
String
startOfDay
=
DateUtils
.
parseDateToString
(
DateUtils
.
getStartOfDay
(
0
,
new
Date
()),
"yyyy-MM-dd HH:mm:ss"
);
String
endOfDay
=
DateUtils
.
parseDateToString
(
DateUtils
.
getEndOfDay
(
0
,
new
Date
()),
"yyyy-MM-dd HH:mm:ss"
);
List
<
StationPassInfo
>
list
=
mapper
.
findList
(
new
WhereFilter
()
{{
addFilter
(
StationPassInfo
.
class
,
"station_no"
,
Operation
.
EQUAL
,
"HDG1-125"
);
addFilter
(
StationPassInfo
.
class
,
"in_time"
,
Operation
.
IS_NOT
,
"null"
);
addFilter
(
StationPassInfo
.
class
,
"create_time"
,
Operation
.
EQUAL_GREATER_THAN
,
startOfDay
);
addFilter
(
StationPassInfo
.
class
,
"create_time"
,
Operation
.
EQUAL_LESS_THAN
,
endOfDay
);
}},
StationPassInfo
.
class
);
list
.
stream
().
filter
(
s
->
s
.
getVIN
()
!=
null
).
forEach
(
stationPassInfo
->
{
List
<
MesWorkOrderInfo
>
orderNo
=
mesWorkOrderMapper
.
findList
(
new
WhereFilter
()
{{
addFilter
(
"work_order_no"
,
Operation
.
EQUAL
,
stationPassInfo
.
getVIN
());
addFilter
(
"status"
,
Operation
.
EQUAL
,
"4"
);
}},
MesWorkOrderInfo
.
class
);
if
(!
CollecUtils
.
isEmpty
(
orderNo
)){
stationPassInfo
.
setBusType
(
orderNo
.
get
(
0
).
getVehicleModel
());
}
});
Map
<
String
,
List
<
StationPassInfo
>>
collect
=
list
.
stream
().
filter
(
s
->
s
.
getBusType
()
!=
null
).
collect
(
Collectors
.
groupingBy
(
StationPassInfo:
:
getBusType
));
for
(
Map
.
Entry
<
String
,
List
<
StationPassInfo
>>
entry
:
collect
.
entrySet
()){
List
<
PaintingRobotRecordMachine
>
recordMachines
=
recordMapper
.
findList
(
new
WhereFilter
()
{{
addFilter
(
"bus_type"
,
Operation
.
EQUAL
,
entry
.
getKey
());
addFilter
(
"create_time"
,
Operation
.
EQUAL_GREATER_THAN
,
startOfDay
);
addFilter
(
"create_time"
,
Operation
.
EQUAL_LESS_THAN
,
endOfDay
);
}},
PaintingRobotRecordMachine
.
class
);
if
(
CollecUtils
.
isEmpty
(
recordMachines
)){
PaintingRobotRecordMachine
machine
=
new
PaintingRobotRecordMachine
();
machine
.
setEquipCode
(
"喷涂机器人"
);
machine
.
setBusType
(
entry
.
getKey
());
machine
.
setNum
(
entry
.
getValue
().
size
());
machine
.
setCreateTime
(
new
Date
());
recordMapper
.
insert
(
machine
);
}
else
{
PaintingRobotRecordMachine
machine
=
recordMachines
.
get
(
0
);
machine
.
setBusType
(
entry
.
getKey
());
machine
.
setNum
(
entry
.
getValue
().
size
());
machine
.
setCreateTime
(
new
Date
());
recordMapper
.
update
(
machine
);
}
}
}
}
src/main/java/net/vtstar/zhongtong/avi/gateway/painting/listener/SprayBoothListener.java
View file @
b4b2a7e0
...
...
@@ -46,37 +46,37 @@ public class SprayBoothListener implements CommandLineRunner {
String
name
=
""
;
switch
(
deviceId
)
{
case
30019199
:
name
=
"
喷漆室-01
"
;
name
=
"
底架喷漆室
"
;
break
;
case
30019212
:
name
=
"
喷漆室-02
"
;
name
=
"
中涂喷漆室349
"
;
break
;
case
30019220
:
name
=
"
喷漆室-03
"
;
name
=
"
中涂喷漆室350
"
;
break
;
case
30019158
:
name
=
"
喷漆室-04
"
;
name
=
"
彩条喷漆室365
"
;
break
;
case
30019217
:
name
=
"
喷漆室-05
"
;
name
=
"
彩条喷漆室367
"
;
break
;
case
30019414
:
name
=
"
喷漆室-06
"
;
name
=
"
彩条喷漆室369
"
;
break
;
case
30019151
:
name
=
"
喷漆室-07
"
;
name
=
"
彩条喷漆室371
"
;
break
;
case
30019183
:
name
=
"
喷漆室-08
"
;
name
=
"
罩光喷漆室374
"
;
break
;
case
30019370
:
name
=
"
喷漆室-0
9"
;
name
=
"
面漆喷漆室35
9"
;
break
;
case
30018326
:
name
=
"
喷漆室-10
"
;
name
=
"
面漆喷漆室363
"
;
break
;
case
30019186
:
name
=
"
喷漆室-1
1"
;
name
=
"
面漆喷漆室36
1"
;
break
;
case
30019193
:
name
=
"喷漆室-12"
;
...
...
@@ -85,6 +85,7 @@ public class SprayBoothListener implements CommandLineRunner {
name
=
"喷漆室-13"
;
break
;
default
:
name
=
"彩条喷漆室369"
;
break
;
}
...
...
src/main/java/net/vtstar/zhongtong/avi/gateway/painting/mapper/PaintingRobotRecordMapper.java
0 → 100644
View file @
b4b2a7e0
package
net
.
vtstar
.
zhongtong
.
avi
.
gateway
.
painting
.
mapper
;
import
net.vtstar.user.mybatis.BaseMapper
;
import
net.vtstar.zhongtong.avi.gateway.painting.domain.PaintingRobotRecordMachine
;
import
org.apache.ibatis.annotations.Mapper
;
@Mapper
public
interface
PaintingRobotRecordMapper
extends
BaseMapper
<
PaintingRobotRecordMachine
>
{
}
src/main/java/net/vtstar/zhongtong/avi/gateway/parts/job/DustingLineMachineJob.java
View file @
b4b2a7e0
...
...
@@ -53,6 +53,9 @@ public class DustingLineMachineJob extends GatherJob {
return
"喷粉"
;
}
}
if
(
"chainSpeed"
.
equals
(
fieldName
)
&&
null
!=
value
){
return
Integer
.
valueOf
(
value
.
toString
())
/
100
;
}
return
value
;
}
...
...
src/main/java/net/vtstar/zhongtong/avi/laboratory/controller/DailyCheckController.java
View file @
b4b2a7e0
...
...
@@ -11,6 +11,7 @@ import net.vtstar.zhongtong.avi.laboratory.domain.DailyCheckModel;
import
net.vtstar.zhongtong.avi.laboratory.domain.DailyItemModel
;
import
net.vtstar.zhongtong.avi.laboratory.domain.DailyItemRecord
;
import
net.vtstar.zhongtong.avi.laboratory.domain.vo.CheckRecordVo
;
import
net.vtstar.zhongtong.avi.laboratory.domain.vo.DailyItemRecordVo
;
import
net.vtstar.zhongtong.avi.laboratory.service.DailyCheckService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.format.annotation.DateTimeFormat
;
...
...
@@ -127,10 +128,9 @@ public class DailyCheckController {
@GetMapping
(
"/getCheckItemRecord"
)
public
Return
getCheckItemRecord
(
@RequestParam
(
value
=
"modelId"
)
Long
modelId
,
@RequestParam
(
value
=
"itemNames"
,
required
=
false
)
String
[]
itemNames
,
@RequestParam
(
value
=
"beginTime"
,
required
=
false
)
@DateTimeFormat
(
iso
=
DateTimeFormat
.
ISO
.
DATE
)
Date
beginTime
,
@RequestParam
(
value
=
"endTime"
,
required
=
false
)
@DateTimeFormat
(
iso
=
DateTimeFormat
.
ISO
.
DATE
)
Date
endTime
)
{
@RequestParam
(
value
=
"currentMonth"
,
required
=
false
)
@DateTimeFormat
(
iso
=
DateTimeFormat
.
ISO
.
DATE
)
Date
currentMonth
)
{
ParamAssert
.
notNull
(
modelId
,
"模板ID不能为空!"
);
Map
<
String
,
List
<
DailyItemRecord
>>
map
=
service
.
getCheckItemRecord
(
modelId
,
itemNames
,
beginTime
,
endTime
);
List
<
DailyItemRecordVo
>
map
=
service
.
getCheckItemRecord
(
modelId
,
itemNames
,
currentMonth
);
return
Return
.
success
(
map
);
}
}
src/main/java/net/vtstar/zhongtong/avi/laboratory/domain/vo/DailyItemRecordVo.java
0 → 100644
View file @
b4b2a7e0
package
net
.
vtstar
.
zhongtong
.
avi
.
laboratory
.
domain
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
net.vtstar.zhongtong.avi.laboratory.domain.DailyItemRecord
;
import
java.util.List
;
/**
* @Author: xiadongwei
* @Date: 2019/10/20 16:23
*/
@Data
public
class
DailyItemRecordVo
{
@ApiModelProperty
(
notes
=
"检测项名称"
)
private
String
name
;
@ApiModelProperty
(
notes
=
"检测项记录"
)
private
List
<
DailyItemRecord
>
itemRecords
;
}
src/main/java/net/vtstar/zhongtong/avi/laboratory/service/DailyCheckService.java
View file @
b4b2a7e0
...
...
@@ -8,12 +8,14 @@ import net.vtstar.user.mybatis.provider.OrderBy;
import
net.vtstar.user.mybatis.provider.WhereFilter
;
import
net.vtstar.user.search.service.SearchService
;
import
net.vtstar.user.util.UserUtil
;
import
net.vtstar.utils.CollecUtils
;
import
net.vtstar.utils.DateUtils
;
import
net.vtstar.zhongtong.avi.laboratory.domain.DailyCheckModel
;
import
net.vtstar.zhongtong.avi.laboratory.domain.DailyCheckRecord
;
import
net.vtstar.zhongtong.avi.laboratory.domain.DailyItemModel
;
import
net.vtstar.zhongtong.avi.laboratory.domain.DailyItemRecord
;
import
net.vtstar.zhongtong.avi.laboratory.domain.vo.CheckRecordVo
;
import
net.vtstar.zhongtong.avi.laboratory.domain.vo.DailyItemRecordVo
;
import
net.vtstar.zhongtong.avi.laboratory.mapper.DailyCheckModelMapper
;
import
net.vtstar.zhongtong.avi.laboratory.mapper.DailyCheckRecordMapper
;
import
net.vtstar.zhongtong.avi.laboratory.mapper.DailyItemModelMapper
;
...
...
@@ -120,10 +122,12 @@ public class DailyCheckService {
DailyCheckRecord
checkRecord
=
checkRecordVo
.
getCheckRecord
();
checkRecordMapper
.
insertRecord
(
checkRecord
);
List
<
DailyItemRecord
>
itemRecords
=
checkRecordVo
.
getItemRecords
();
for
(
DailyItemRecord
itemRecord
:
itemRecords
)
{
itemRecord
.
setCheckRecordId
(
checkRecord
.
getId
());
}
itemRecordMapper
.
insertList
(
itemRecords
);
itemRecords
.
forEach
(
item
->
{
if
(
null
!=
item
.
getCheckResult
()){
item
.
setCheckRecordId
(
checkRecord
.
getId
());
itemRecordMapper
.
insert
(
item
);
}
});
}
/**
...
...
@@ -236,11 +240,14 @@ public class DailyCheckService {
}},
DailyItemModel
.
class
);
}
public
Map
<
String
,
List
<
DailyItemRecord
>>
getCheckItemRecord
(
Long
modelId
,
String
[]
itemNames
,
Date
beginTime
,
Date
endTime
)
{
if
(
null
==
beginTime
||
null
==
endTime
){
beginTime
=
DateUtils
.
getMonthStart
(
0
,
new
Date
());
endTime
=
DateUtils
.
getMonthEnd
(
0
,
new
Date
());
public
List
<
DailyItemRecordVo
>
getCheckItemRecord
(
Long
modelId
,
String
[]
itemNames
,
Date
currentMonth
)
{
if
(
null
==
currentMonth
){
currentMonth
=
new
Date
();
}
Map
<
String
,
List
<
DailyItemRecord
>>
map
=
new
HashMap
<>();
List
<
DailyItemRecordVo
>
voList
=
new
ArrayList
();
Date
beginTime
=
DateUtils
.
getMonthStart
(
0
,
currentMonth
);
Date
endTime
=
DateUtils
.
getMonthEnd
(
0
,
currentMonth
);
String
startTimeStr
=
DateUtils
.
parseDateToString
(
beginTime
,
"yyyy-MM-dd HH:mm:ss"
);
String
endTimeStr
=
DateUtils
.
parseDateToString
(
endTime
,
"yyyy-MM-dd HH:mm:ss"
);
if
(
null
==
itemNames
||
itemNames
.
length
==
0
){
...
...
@@ -259,20 +266,30 @@ public class DailyCheckService {
addFilter
(
"create_time"
,
Operation
.
LESS_THAN
,
endTimeStr
);
addOrderBy
(
"create_time"
,
OrderBy
.
ASC
);
}},
DailyItemRecord
.
class
);
return
list
.
stream
().
collect
(
Collectors
.
groupingBy
(
DailyItemRecord
::
getName
));
}
StringBuffer
sbuffer
=
new
StringBuffer
();
for
(
String
itemName
:
itemNames
){
sbuffer
.
append
(
"'"
);
sbuffer
.
append
(
itemName
);
sbuffer
.
append
(
"',"
);
map
=
list
.
stream
().
collect
(
Collectors
.
groupingBy
(
DailyItemRecord:
:
getName
));
}
else
{
StringBuffer
sbuffer
=
new
StringBuffer
();
for
(
String
itemName
:
itemNames
){
sbuffer
.
append
(
"'"
);
sbuffer
.
append
(
itemName
);
sbuffer
.
append
(
"',"
);
}
List
<
DailyItemRecord
>
list
=
itemRecordMapper
.
findList
(
new
WhereFilter
()
{{
addFilter
(
"name"
,
Operation
.
IN
,
sbuffer
.
substring
(
1
,
sbuffer
.
length
()-
2
));
addFilter
(
"create_time"
,
Operation
.
GREATER_THAN
,
startTimeStr
);
addFilter
(
"create_time"
,
Operation
.
LESS_THAN
,
endTimeStr
);
addOrderBy
(
"create_time"
,
OrderBy
.
ASC
);
}},
DailyItemRecord
.
class
);
map
=
list
.
stream
().
collect
(
Collectors
.
groupingBy
(
DailyItemRecord
::
getName
));
}
List
<
DailyItemRecord
>
list
=
itemRecordMapper
.
findList
(
new
WhereFilter
()
{{
addFilter
(
"name"
,
Operation
.
IN
,
sbuffer
.
substring
(
1
,
sbuffer
.
length
()-
2
));
addFilter
(
"create_time"
,
Operation
.
GREATER_THAN
,
startTimeStr
);
addFilter
(
"create_time"
,
Operation
.
LESS_THAN
,
endTimeStr
);
addOrderBy
(
"create_time"
,
OrderBy
.
ASC
);
}},
DailyItemRecord
.
class
);
return
list
.
stream
().
collect
(
Collectors
.
groupingBy
(
DailyItemRecord
::
getName
));
map
.
forEach
((
name
,
dailyItemRecords
)
->
{
if
(!
CollecUtils
.
isEmpty
(
dailyItemRecords
)){
DailyItemRecordVo
itemRecordVo
=
new
DailyItemRecordVo
();
itemRecordVo
.
setName
(
name
);
itemRecordVo
.
setItemRecords
(
dailyItemRecords
);
voList
.
add
(
itemRecordVo
);
}
});
return
voList
;
}
}
src/main/java/net/vtstar/zhongtong/avi/monitoring/controller/AreaController.java
View file @
b4b2a7e0
...
...
@@ -148,7 +148,9 @@ public class AreaController {
@ApiOperation
(
value
=
"根据车身号获得当前车体信息"
,
response
=
Bus
.
class
)
@GetMapping
(
"/detail/busNo"
)
private
Return
getBusDetail
(
@RequestParam
(
value
=
"busNo"
,
required
=
false
)
String
busNo
)
{
if
(
null
==
busNo
){
return
Return
.
success
();
}
Bus
bus
=
areaService
.
getByBusNo
(
busNo
);
return
Return
.
success
(
bus
);
}
...
...
src/main/java/net/vtstar/zhongtong/avi/monitoring/domain/StationPassInfo.java
View file @
b4b2a7e0
...
...
@@ -33,4 +33,9 @@ public class StationPassInfo {
@Column
(
name
=
"out_time"
)
private
Date
outTime
;
@Column
(
name
=
"create_time"
)
private
Date
createTime
;
private
String
busType
;
}
src/main/java/net/vtstar/zhongtong/avi/monitoring/job/AVIElectrophoresisJob.java
0 → 100644
View file @
b4b2a7e0
package
net
.
vtstar
.
zhongtong
.
avi
.
monitoring
.
job
;
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.equipmgt.domain.*
;
import
net.vtstar.scada.base.equipmgt.service.EquipInfoService
;
import
net.vtstar.scada.base.gather.job.GatherJob
;
import
net.vtstar.scada.base.global.service.ModbusService
;
import
net.vtstar.utils.CollecUtils
;
import
net.vtstar.zhongtong.avi.equipment.domain.PaintshopStation
;
import
net.vtstar.zhongtong.avi.global.constant.Constant
;
import
net.vtstar.zhongtong.avi.monitoring.domain.enums.StationState
;
import
net.wimpi.modbus.io.ModbusTCPTransaction
;
import
net.wimpi.modbus.msg.*
;
import
net.wimpi.modbus.net.TCPMasterConnection
;
import
org.quartz.JobExecutionContext
;
import
org.quartz.JobExecutionException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.Cache
;
import
org.springframework.data.redis.core.ValueOperations
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
java.net.InetAddress
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
@Slf4j
@Component
public
class
AVIElectrophoresisJob
extends
GatherJob
{
//电泳空中行车
private
static
final
String
EQUIPMENT_TYPE
=
"PLC_E"
;
@Autowired
private
EquipInfoService
equipInfoService
;
@Autowired
private
ModbusService
modbusService
;
@Resource
(
name
=
"redisTemplate"
)
private
ValueOperations
valueOperations
;
@Resource
(
name
=
"laneStationCache"
)
private
Cache
laneStationCache
;
@Override
protected
void
executeInternal
(
JobExecutionContext
context
)
throws
JobExecutionException
{
log
.
info
(
"-------------------------------"
);
log
.
info
(
"AVIElectrophoresisJob start"
);
List
<
PaintshopStation
>
temStation
=
laneStationCache
.
get
(
Long
.
valueOf
(
"111"
),
ArrayList
.
class
);
if
(
CollecUtils
.
isEmpty
(
temStation
)
||
temStation
.
size
()
!=
14
){
log
.
error
(
"空中行车的工位数不对!"
);
return
;
}
Map
<
Integer
,
List
<
PaintshopStation
>>
collect
=
temStation
.
stream
().
collect
(
Collectors
.
groupingBy
(
PaintshopStation:
:
getSequence
));
//处理空中行车
List
<
EquipCommunication
>
commList
=
equipInfoService
.
getCommunicationListByEquipType
(
EQUIPMENT_TYPE
,
1
);
if
(
CollectionUtils
.
isEmpty
(
commList
))
{
return
;
}
for
(
EquipCommunication
communication
:
commList
)
{
EquipDataChannel
dataChannel
=
communication
.
getDataChannel
();
if
(
null
!=
dataChannel
.
getEquipCode
()
&&
!
dataChannel
.
getEquipCode
().
startsWith
(
EQUIPMENT_TYPE
))
{
continue
;
}
String
ip
=
dataChannel
.
getIp
();
Integer
port
=
dataChannel
.
getPort
();
PoolKey
poolKey
=
NettyUtils
.
wrapPoolKey
(
ip
,
port
);
Integer
slaveId
=
dataChannel
.
getNo
();
EquipDataTemplate
template
=
communication
.
getDataTemplate
();
if
(
template
==
null
)
{
log
.
info
(
"无法获取设备的数据模板,设备编号:{}"
,
dataChannel
.
getEquipCode
());
continue
;
}
List
<
EquipDataTemplateItem
>
templateItemList
=
template
.
getTemplateItemList
();
if
(
CollectionUtils
.
isEmpty
(
templateItemList
))
{
// log.info("无法获取数据模板的条目,设备编号:{},模板名称:{}", dataChannel.getEquipCode(), template.getName());
continue
;
}
Map
<
Integer
,
List
<
EquipDataTemplateItem
>>
listMap
=
modbusService
.
groupByFuntionCode
(
templateItemList
);
for
(
Map
.
Entry
<
Integer
,
List
<
EquipDataTemplateItem
>>
entry
:
listMap
.
entrySet
())
{
List
<
EquipDataTemplateItem
>
value
=
entry
.
getValue
();
if
(
CollectionUtils
.
isEmpty
(
value
))
{
continue
;
}
Integer
start
=
value
.
get
(
0
).
getAddress
();
Integer
end
=
value
.
get
(
value
.
size
()
-
1
).
getAddress
();
Integer
size
=
value
.
get
(
value
.
size
()
-
1
).
getLength
();
Integer
quantity
=
end
+
size
-
start
;
Integer
functionCode
=
entry
.
getKey
();
ModbusRequest
modbusRequest
=
null
;
ModbusResponse
response
=
null
;
if
(
1
==
functionCode
)
{
modbusRequest
=
new
ReadCoilsRequest
(
start
,
quantity
);
}
else
if
(
2
==
functionCode
)
{
modbusRequest
=
new
ReadInputDiscretesRequest
(
start
,
quantity
);
}
else
if
(
3
==
functionCode
)
{
modbusRequest
=
new
ReadMultipleRegistersRequest
(
start
,
quantity
);
}
else
if
(
4
==
functionCode
)
{
modbusRequest
=
new
ReadInputRegistersRequest
(
start
,
quantity
);
}
modbusRequest
.
setUnitID
(
slaveId
);
try
{
TCPMasterConnection
connection
=
new
TCPMasterConnection
(
InetAddress
.
getByName
(
poolKey
.
getHost
()));
connection
.
setPort
(
port
);
connection
.
setTimeout
(
3000
);
connection
.
connect
();
ModbusTCPTransaction
transaction
=
new
ModbusTCPTransaction
(
connection
);
transaction
.
setReconnecting
(
false
);
transaction
.
setRequest
(
modbusRequest
);
transaction
.
execute
();
response
=
transaction
.
getResponse
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
if
(
null
==
response
)
{
log
.
error
(
"读取失败! response 为空!"
);
return
;
}
String
[]
hexStrs
=
response
.
getHexMessage
().
split
(
" "
);
if
(
hexStrs
.
length
==
9
)
{
log
.
error
(
"读取失败! length 为9!"
);
return
;
}
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
9
;
i
<
hexStrs
.
length
;
i
++)
{
Integer
newValue
=
Integer
.
valueOf
(
hexStrs
[
i
],
16
);
int
j
=
0
;
while
(
j
<
8
)
{
sb
.
append
(
newValue
%
2
);
newValue
=
newValue
/
2
;
j
++;
}
}
byte
[]
bytes
=
sb
.
toString
().
getBytes
();
for
(
EquipDataTemplateItem
templateItem
:
value
)
{
Integer
address
=
templateItem
.
getAddress
();
int
quality
=
address
-
start
;
byte
state
=
bytes
[
quality
];
String
fieldName
=
templateItem
.
getFieldName
();
String
sequence
=
fieldName
.
split
(
":"
)[
1
];
PaintshopStation
station
=
collect
.
get
(
Integer
.
valueOf
(
sequence
)).
get
(
0
);
if
(
state
==
48
)
{
station
.
setState
(
StationState
.
FREE
);
}
else
{
station
.
setState
(
StationState
.
USE
);
}
valueOperations
.
set
(
Constant
.
STATION_PREFIX
+
station
.
getCode
(),
station
);
}
}
}
}
}
\ No newline at end of file
src/main/java/net/vtstar/zhongtong/avi/monitoring/job/AVIMonitorJob.java
View file @
b4b2a7e0
...
...
@@ -345,9 +345,9 @@ public class AVIMonitorJob extends GatherJob {
PaintshopStation
end
=
lands
.
get
(
lands
.
size
()
-
1
);
//下车时, 记录进去车道的开始时间, 并将记录ID绑定在工位上
Long
passInfoId
=
0L
;
if
(
null
!=
skid
){
/*
if (null != skid){
passInfoId = passInfoService.createPassInfo(skid.getWorkOrderNo(), skid.getRfid(), station.getAreaName(), station.getLandNo());
}
}
*/
if
(
start
.
getCode
().
equals
(
station
.
getCode
()))
{
for
(
int
j
=
lands
.
size
()
-
1
;
j
>
0
;
j
--)
{
PaintshopStation
tem
=
lands
.
get
(
j
);
...
...
src/main/java/net/vtstar/zhongtong/avi/monitoring/service/AreaService.java
View file @
b4b2a7e0
...
...
@@ -42,7 +42,11 @@ public class AreaService {
for
(
PaintshopArea
area
:
areas
)
{
if
(
areaNo
.
equals
(
area
.
getCode
()))
{
int
num
=
0
;
for
(
Map
.
Entry
<
String
,
PaintshopStation
>
entry
:
area
.
getStationMap
().
entrySet
()){
Map
<
String
,
PaintshopStation
>
stationMap
=
area
.
getStationMap
();
if
(
null
==
stationMap
){
continue
;
}
for
(
Map
.
Entry
<
String
,
PaintshopStation
>
entry
:
stationMap
.
entrySet
()){
PaintshopStation
value
=
entry
.
getValue
();
if
(
StationState
.
USE
.
equals
(
value
.
getState
())){
num
++;
...
...
@@ -84,10 +88,10 @@ public class AreaService {
PaintshopStation
value
=
entry
.
getValue
();
String
key
=
entry
.
getKey
();
for
(
String
no
:
nos
)
{
if
(
null
==
value
.
get
Bus
No
())
{
if
(
null
==
value
.
get
WorkOrder
No
())
{
continue
;
}
if
(
value
.
get
Bus
No
().
equals
(
no
))
{
if
(
value
.
get
WorkOrder
No
().
equals
(
no
))
{
newMap
.
put
(
key
,
value
);
}
}
...
...
src/main/java/net/vtstar/zhongtong/avi/monitoring/service/PDAService.java
View file @
b4b2a7e0
...
...
@@ -8,7 +8,9 @@ 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.enums.StationState
;
import
net.vtstar.zhongtong.avi.sqlserver.domain.MesHZWorkOrderInfo
;
import
net.vtstar.zhongtong.avi.sqlserver.domain.MesWorkOrderInfo
;
import
net.vtstar.zhongtong.avi.sqlserver.mapper.MesHZWorkOrderMapper
;
import
net.vtstar.zhongtong.avi.sqlserver.mapper.MesWorkOrderMapper
;
import
net.vtstar.zhongtong.avi.utils.EquipDataUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -30,7 +32,7 @@ public class PDAService {
@Resource
(
name
=
"redisTemplate"
)
protected
ValueOperations
valueOperations
;
@Autowired
private
MesWorkOrderMapper
mesWorkOrderMapper
;
private
Mes
HZ
WorkOrderMapper
mesWorkOrderMapper
;
@Resource
(
name
=
"redisTemplate"
)
protected
ValueOperations
testValueOperations
;
@Resource
(
name
=
"laneStationCache"
)
...
...
@@ -40,16 +42,16 @@ public class PDAService {
public
boolean
bound
(
String
vehicleNo
,
String
busNo
,
String
workOrderNo
)
{
// TODO: 2019-11-02 判断车身工单号是否在计划中
List
<
MesWorkOrderInfo
>
list
=
mesWorkOrderMapper
.
findList
(
new
WhereFilter
()
{{
addFilter
(
"work_order_no"
,
Operation
.
EQUAL
,
workOrderNo
);
addFilter
(
"status"
,
Operation
.
EQUAL
,
4
);
}},
MesWorkOrderInfo
.
class
);
List
<
MesHZWorkOrderInfo
>
list
=
mesWorkOrderMapper
.
findList
(
new
WhereFilter
()
{{
addFilter
(
"WONo"
,
Operation
.
EQUAL
,
workOrderNo
);
}},
MesHZWorkOrderInfo
.
class
);
if
(
CollecUtils
.
isEmpty
(
list
)){
return
false
;
}
if
(
null
==
busNo
){
busNo
=
""
;
}
workOrderNo
.
replace
(
"HZ"
,
"TZ"
);
String
keyW
=
EquipDataUtil
.
getTestValueKey
(
"ROTARY_ROLLER_BED_W"
);
testValueOperations
.
set
(
keyW
,
null
==
testValueOperations
.
get
(
keyW
)
?
0
:
((
int
)
testValueOperations
.
get
(
keyW
))
+
1
);
if
(
vehicleNo
.
equals
(
"HZC1"
))
{
...
...
src/main/java/net/vtstar/zhongtong/avi/monitoring/service/StationPassInfoService.java
View file @
b4b2a7e0
...
...
@@ -56,13 +56,17 @@ public class StationPassInfoService {
public
Long
createPassInfo
(
String
workOrderNo
,
String
rfid
,
String
areaNo
,
String
stationNo
){
StationPassInfo
info
=
new
StationPassInfo
();
info
.
setVIN
(
workOrderNo
);
info
.
setAreaNo
(
areaNo
);
if
(
null
==
workOrderNo
){
info
.
setVIN
(
""
);
}
if
(
null
==
areaNo
){
info
.
setAreaNo
(
""
);
}
info
.
setRfid
(
rfid
);
info
.
setAreaNo
(
areaNo
);
info
.
setStationNo
(
stationNo
);
info
.
setInTime
(
new
Date
());
info
.
setCreateTime
(
new
Date
());
passInfoMapper
.
insert
(
info
);
String
sql
=
"INSERT INTO VEHICLE_PASSING_INFO VALUES (?,?,?,?,?,?,?)"
;
mesSqlServerJdbcTemplate
.
update
(
sql
,
new
Object
[]{
info
.
getVIN
(),
info
.
getRfid
(),
info
.
getAreaNo
(),
...
...
@@ -74,13 +78,17 @@ public class StationPassInfoService {
public
void
endPassInfo
(
PaintshopStation
station
){
StationPassInfo
info
=
new
StationPassInfo
();
info
.
setVIN
(
station
.
getSkid
().
getWorkOrderNo
());
info
.
setAreaNo
(
station
.
getAreaName
());
if
(
null
==
station
.
getSkid
().
getWorkOrderNo
()){
info
.
setVIN
(
""
);
}
if
(
null
==
station
.
getAreaName
()){
info
.
setAreaNo
(
""
);
}
info
.
setRfid
(
station
.
getSkid
().
getRfid
());
info
.
setAreaNo
(
station
.
getAreaName
());
info
.
setStationNo
(
station
.
getCode
());
info
.
setOutTime
(
new
Date
());
info
.
setCreateTime
(
new
Date
());
passInfoMapper
.
insert
(
info
);
//todo:!!!!!!!!!!!!!!!!
String
sql
=
"INSERT INTO VEHICLE_PASSING_INFO VALUES (?,?,?,?,?,?,?)"
;
...
...
src/main/java/net/vtstar/zhongtong/avi/report/controller/ReportController.java
View file @
b4b2a7e0
...
...
@@ -6,12 +6,15 @@ import io.swagger.annotations.ApiImplicitParams;
import
io.swagger.annotations.ApiOperation
;
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.utils.CollecUtils
;
import
net.vtstar.utils.DateUtils
;
import
net.vtstar.utils.domain.Return
;
import
net.vtstar.zhongtong.avi.equipment.domain.EquipInfo
;
import
net.vtstar.zhongtong.avi.equipment.domain.RuntimeRecord
;
import
net.vtstar.zhongtong.avi.equipment.mapper.RuntimeRecordMapper
;
import
net.vtstar.zhongtong.avi.equipment.service.EquipmentService
;
import
net.vtstar.zhongtong.avi.global.constant.Constant
;
import
net.vtstar.zhongtong.avi.monitoring.domain.Warning
;
import
net.vtstar.zhongtong.avi.report.domain.vo.EquStatePercent
;
...
...
@@ -28,10 +31,8 @@ import org.springframework.web.bind.annotation.RestController;
import
javax.annotation.Resource
;
import
java.math.BigDecimal
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Random
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Slf4j
@Api
(
description
=
"中控室监控页面"
)
...
...
@@ -46,6 +47,9 @@ public class ReportController {
@Autowired
private
RuntimeRecordMapper
runtimeRecordMapper
;
@Autowired
private
EquipmentService
equipmentService
;
private
Integer
errNum
=
2
;
private
Integer
runNum
=
5
;
...
...
@@ -207,14 +211,42 @@ public class ReportController {
@GetMapping
(
"/runTimeList"
)
private
Return
getMachineRunTime
(
@RequestParam
String
workshopCode
){
List
<
RuntimeRecord
>
list
=
new
ArrayList
<>();
String
startOfDay
=
DateUtils
.
parseDateToString
(
DateUtils
.
getStartOfDay
(
0
),
"yyyy-MM-dd HH:mm:ss"
);
String
startOfDay
=
DateUtils
.
parseDateToString
(
DateUtils
.
getStartOfDay
(
7
),
"yyyy-MM-dd HH:mm:ss"
);
String
endOfDay
=
DateUtils
.
parseDateToString
(
DateUtils
.
getEndOfDay
(
0
),
"yyyy-MM-dd HH:mm:ss"
);
int
hour
=
DateUtil
.
getHour
(
new
Date
());
list
=
runtimeRecordMapper
.
findList
(
new
WhereFilter
()
{{
addFilter
(
RuntimeRecord
.
class
,
"create_time"
,
Operation
.
GREATER_THAN
,
startOfDay
);
addFilter
(
RuntimeRecord
.
class
,
"create_time"
,
Operation
.
LESS_THAN
,
endOfDay
);
addFilter
(
RuntimeRecord
.
class
,
"workshop_code"
,
Operation
.
EQUAL
,
workshopCode
);
addJoin
(
RuntimeRecord
.
class
,
"machine_id"
,
EquipInfo
.
class
,
"id"
);
addOrderBy
(
RuntimeRecord
.
class
,
"create_time"
,
OrderBy
.
DESC
);
}},
RuntimeRecord
.
class
);
return
Return
.
success
(
list
);
Map
<
Long
,
List
<
RuntimeRecord
>>
map
=
list
.
stream
().
collect
(
Collectors
.
groupingBy
(
RuntimeRecord:
:
getMachineId
));
List
<
RuntimeRecord
>
listNew
=
new
ArrayList
<>();
if
(
"PAINTING"
.
equals
(
workshopCode
)){
for
(
Map
.
Entry
<
Long
,
List
<
RuntimeRecord
>>
entry
:
map
.
entrySet
()){
RuntimeRecord
record
=
entry
.
getValue
().
get
(
0
);
record
.
setEquipCode
(
record
.
getAlias
());
listNew
.
add
(
record
);
}
return
Return
.
success
(
listNew
);
}
List
<
EquipInfo
>
equipInfos
=
equipmentService
.
findByShopCode
(
workshopCode
);
for
(
EquipInfo
info
:
equipInfos
){
List
<
RuntimeRecord
>
runtimeRecords
=
map
.
get
(
info
.
getId
());
if
(
CollecUtils
.
isEmpty
(
runtimeRecords
)){
RuntimeRecord
record
=
new
RuntimeRecord
();
record
.
setWorkshopCode
(
info
.
getWorkshopCode
());
record
.
setEquipCode
(
info
.
getAlias
());
record
.
setAlias
(
info
.
getEquipCode
());
record
.
setCurrentRuntime
(
new
BigDecimal
(
0
));
listNew
.
add
(
record
);
}
else
{
RuntimeRecord
record
=
runtimeRecords
.
get
(
0
);
record
.
setEquipCode
(
record
.
getAlias
());
listNew
.
add
(
record
);
}
}
return
Return
.
success
(
listNew
);
}
}
src/main/java/net/vtstar/zhongtong/avi/sqlserver/domain/MesHZWorkOrderInfo.java
0 → 100644
View file @
b4b2a7e0
package
net
.
vtstar
.
zhongtong
.
avi
.
sqlserver
.
domain
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.persistence.Column
;
import
javax.persistence.Table
;
import
java.util.Date
;
/**
* @Author: xiadongwei
* @Date: 2019/10/29 9:31
*/
@ApiModel
(
"焊装车间工单表"
)
@Data
@Table
(
name
=
"mes_hz_work_order"
)
public
class
MesHZWorkOrderInfo
{
@ApiModelProperty
(
notes
=
"销售订单号"
)
@Column
(
name
=
"SaleOrderNo"
)
private
String
salesOrderNo
;
@ApiModelProperty
(
notes
=
"主计划工单号"
)
@Column
(
name
=
"PlannedOrderNo"
)
private
String
masterWorkOrderNo
;
@ApiModelProperty
(
notes
=
"车间计划工单号"
)
@Column
(
name
=
"WONo"
)
private
String
workOrderNo
;
@ApiModelProperty
(
notes
=
"开始时间"
)
@Column
(
name
=
"RealStartTime"
)
private
String
realStartTime
;
@ApiModelProperty
(
notes
=
"结束时间"
)
@Column
(
name
=
"RealEndTime"
)
private
String
realEndTime
;
}
src/main/java/net/vtstar/zhongtong/avi/sqlserver/job/MesHZWorkOrderJob.java
0 → 100644
View file @
b4b2a7e0
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.CollecUtils
;
import
net.vtstar.utils.DateUtils
;
import
net.vtstar.zhongtong.avi.sqlserver.domain.MesHZWorkOrderInfo
;
import
net.vtstar.zhongtong.avi.sqlserver.domain.MesWorkOrderInfo
;
import
net.vtstar.zhongtong.avi.sqlserver.mapper.MesHZWorkOrderMapper
;
import
net.vtstar.zhongtong.avi.utils.PingIpUtils
;
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
;
/**
* mes工单同步数据
* @Author: xiadongwei
* @Date: 2019/11/4 18:20
*/
@Slf4j
@Component
public
class
MesHZWorkOrderJob
extends
QuartzJobBean
{
@Resource
(
name
=
"mesSqlServerJdbcTemplate"
)
private
JdbcTemplate
mesSqlServerJdbcTemplate
;
@Autowired
private
MesHZWorkOrderMapper
mapper
;
@Value
(
"${zt.ip.mes}"
)
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: {}失败, 此次同步mes数据操作结束!"
,
ipAddress
);
return
;
}
log
.
info
(
"--------开始同步mes焊装数据--------"
);
Date
startOfDay
=
DateUtils
.
getStartOfDay
(
0
);
String
dateString
=
DateUtils
.
parseDateToString
(
startOfDay
,
"yyyy-MM-dd HH:mm:ss"
);
StringBuilder
sql
=
new
StringBuilder
();
sql
.
append
(
"SELECT WONo, SaleOrderNo, PlannedOrderNo, RealStartTime, RealEndTime FROM APS_WeldingWorkOrder "
+
"WHERE RealEndTime > '"
+
dateString
+
"'"
);
List
<
MesHZWorkOrderInfo
>
query
=
mesSqlServerJdbcTemplate
.
query
(
sql
.
toString
(),
(
rs
,
rowNum
)
->
{
MesHZWorkOrderInfo
map
=
new
MesHZWorkOrderInfo
();
map
.
setSalesOrderNo
(
rs
.
getString
(
"SaleOrderNo"
));
map
.
setMasterWorkOrderNo
(
rs
.
getString
(
"PlannedOrderNo"
));
map
.
setWorkOrderNo
(
rs
.
getString
(
"WONo"
));
map
.
setRealStartTime
(
rs
.
getString
(
"RealStartTime"
));
map
.
setRealEndTime
(
rs
.
getString
(
"RealEndTime"
));
return
map
;
});
log
.
error
(
"mes查询到焊装数据: {} 条"
,
query
.
size
());
if
(
CollectionUtils
.
isEmpty
(
query
))
{
//todo: ping通
log
.
error
(
"连接mesSQL SERVER失败!"
);
return
;
}
for
(
MesHZWorkOrderInfo
info
:
query
){
List
<
MesHZWorkOrderInfo
>
orderNo
=
mapper
.
findList
(
new
WhereFilter
()
{{
addFilter
(
"WONo"
,
Operation
.
EQUAL
,
info
.
getWorkOrderNo
());
}},
MesWorkOrderInfo
.
class
);
if
(
CollecUtils
.
isEmpty
(
orderNo
)){
mapper
.
insert
(
info
);
}
}
log
.
info
(
"--------同步mes焊装数据结束--------"
);
}
}
src/main/java/net/vtstar/zhongtong/avi/sqlserver/mapper/MesHZWorkOrderMapper.java
0 → 100644
View file @
b4b2a7e0
package
net
.
vtstar
.
zhongtong
.
avi
.
sqlserver
.
mapper
;
import
net.vtstar.user.mybatis.BaseMapper
;
import
net.vtstar.zhongtong.avi.sqlserver.domain.MesHZWorkOrderInfo
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* @Author: xiadongwei
* @Date: 2019/9/20 9:31
*/
@Mapper
public
interface
MesHZWorkOrderMapper
extends
BaseMapper
<
MesHZWorkOrderInfo
>
{
}
src/main/resources/config/application-dev.properties
View file @
b4b2a7e0
spring.profiles.include
=
mybatis,quartz,swagger,security,mqtt,ztip,modbus
spring.profiles.include
=
mybatis,quartz
2
,swagger,security,mqtt,ztip,modbus
# Mysql
spring.datasource.driver-class-name
=
com.mysql.cj.jdbc.Driver
...
...
@@ -42,4 +42,9 @@ logging.level.root=info
logging.level.net.vtstar.scada.base.equipmgt.mapper
=
error
logging.level.net.vtstar.zhongtong.avi.equipment.mapper
=
error
logging.level.net.vtstar.protocol.modbus.tcp.netty.service
=
error
logging.level.net.vtstar.scada.base.equipmgt.service.EquipDataService
=
error
logging.level.net.vtstar.zhongtong.avi.monitoring.job.AVIMonitorJob
=
error
logging.level.net.vtstar.zhongtong.avi.monitoring.job.RedisToCacheJob
=
error
logging.level.net.vtstar.scada.base.gather.job.GatherJob
=
error
logging.level.net.vtstar.protocol.modbus.tcp.netty.handler.ModbusClientHandler
=
error
logging.level.net.vtstar.protocol.modbus.tcp.netty.handler.ModbusRequestEncoder
=
error
logging.level.net.vtstar.scada.base.global.service.ModbusService
=
error
src/main/resources/config/application-quartz.properties
View file @
b4b2a7e0
This diff is collapsed.
Click to expand it.
src/main/resources/config/application-xdw.properties
View file @
b4b2a7e0
...
...
@@ -36,7 +36,15 @@ spring.mes.sqlserver.username=wanteng
spring.mes.sqlserver.password
=
wanteng@2019
server.port
=
8082
mqtt.server-uri
=
tcp://
localhost
:1883
mqtt.server-uri
=
tcp://
10.1.25.223
:1883
logging.level.root
=
info
logging.level.net.vtstar
=
debug
#logging.level.net.vtstar=info
logging.level.net.vtstar.scada.base.equipmgt.mapper
=
error
logging.level.net.vtstar.zhongtong.avi.equipment.mapper
=
error
logging.level.net.vtstar.protocol.modbus.tcp.netty.service
=
error
logging.level.net.vtstar.zhongtong.avi.monitoring.job.AVIMonitorJob
=
error
logging.level.net.vtstar.zhongtong.avi.monitoring.job.RedisToCacheJob
=
error
logging.level.net.vtstar.scada.base.gather.job.GatherJob
=
error
logging.level.net.vtstar.protocol.modbus.tcp.netty.handler.ModbusClientHandler
=
error
logging.level.net.vtstar.protocol.modbus.tcp.netty.handler.ModbusRequestEncoder
=
error
\ No newline at end of file
src/main/resources/config/application-ztip.properties
View file @
b4b2a7e0
...
...
@@ -16,11 +16,11 @@ zt.ip.assemblynewenergy3=10.1.25.130
zt.ip.assemblynewenergy4
=
10.1.25.131
#底盘车间--四轮定位A线
zt.ip.wheelalignment1
=
10.1.
5.25
zt.ip.wheelalignment1
=
10.1.
25.87
#底盘车间--四轮定位B线
zt.ip.wheelalignment2
=
10.1.
5.87
zt.ip.wheelalignment2
=
10.1.
25.86
#底盘车间--四轮定位C线
zt.ip.wheelalignment3
=
10.1.
5.33
zt.ip.wheelalignment3
=
10.1.
25.88
#试交车间
#检测线
...
...
src/main/resources/mapper/mysql/MesHZWorkOrderMapper.xml
0 → 100644
View file @
b4b2a7e0
<?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.MesHZWorkOrderMapper"
>
</mapper>
\ No newline at end of file
src/main/resources/mapper/mysql/PaintingRobotRecordMapper.xml
0 → 100644
View file @
b4b2a7e0
<?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.gateway.painting.mapper.PaintingRobotRecordMapper"
>
</mapper>
\ No newline at end of file
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