Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 6f25a841
由
LN
编写于
2023-02-14 13:26:37 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1053:SBSH,SBDH页面功能,过期物料和呆滞物料增加时间过滤
1 个父辈
92b0f22c
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
158 行增加
和
98 行删除
src/main/java/com/neotel/smfcore/common/init/MenuInit.java
src/main/java/com/neotel/smfcore/core/storage/rest/query/StoragePosFindCriteria.java
src/main/java/com/neotel/smfcore/custom/micron1053/bean/ML5StatusBean.java
src/main/java/com/neotel/smfcore/custom/micron1053/bean/MicronEquipStatus.java
src/main/java/com/neotel/smfcore/custom/micron1053/bean/dto/MicronEquipStatusDto.java
src/main/java/com/neotel/smfcore/custom/micron1053/bean/dto/SBDHViewDto.java
src/main/java/com/neotel/smfcore/custom/micron1053/bean/mapstruct/ML5StatusMapper.java
src/main/java/com/neotel/smfcore/custom/micron1053/controller/MicronML5Controller.java
src/main/java/com/neotel/smfcore/custom/micron1053/controller/MicronServiceController.java
src/main/java/com/neotel/smfcore/custom/micron1053/controller/MicronStatusController.java
src/main/java/com/neotel/smfcore/custom/micron1053/enums/MicronEquipName.java
src/main/java/com/neotel/smfcore/custom/micron1053/util/MicronDataCache.java
src/main/java/com/neotel/smfcore/common/init/MenuInit.java
查看文件 @
6f25a84
...
...
@@ -137,6 +137,7 @@ public class MenuInit {
addDefaultFunctionMenu
(
9
,
poutOut
,
"呆滞物料"
,
"sluggishMaterials"
,
"system/sluggishMaterials/index"
,
"sMaterial"
);
addDefaultFunctionMenu
(
10
,
poutOut
,
"安全库存"
,
"safetyInventory"
,
"system/safetyInventory/index"
,
"safeInventory"
);
addDefaultFunctionMenu
(
11
,
poutOut
,
"过期物料"
,
"expireMaterials"
,
"system/expireMaterials/index"
,
"sMaterial"
);
addDefaultFunctionMenu
(
12
,
poutOut
,
"生成工单"
,
"createOrder"
,
"system/createOrder/index"
,
"createOrder"
);
//MSD管理:MSD库存.MSD追溯性.MSD设置
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/query/StoragePosFindCriteria.java
查看文件 @
6f25a84
...
...
@@ -25,6 +25,12 @@ public class StoragePosFindCriteria {
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
BetweenData
<
Date
>
putInDate
;
@QueryCondition
(
type
=
QueryCondition
.
Type
.
BETWEEN
,
propName
=
"barcode.expireDate"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
BetweenData
<
Date
>
expireDate
;
@QueryCondition
@ApiModelProperty
(
"料仓ID"
)
private
String
storageId
;
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/bean/ML5StatusBean.java
deleted
100644 → 0
查看文件 @
92b0f22
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
bean
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.List
;
@Data
public
class
ML5StatusBean
implements
Serializable
{
/**
* L1状态 1=正常运行,2=报警
*/
private
int
l1Status
=
0
;
/**
* L2状态 1=正常运行,2=报警
*/
private
int
l2Status
=
0
;
/**
* R1状态 1=正常运行,2=报警
*/
private
int
r1Status
=
0
;
/**
* R2状态 1=正常运行,2=报警
*/
private
int
r2Status
=
0
;
/**
* NG1处料盘数量
*/
private
int
ng1Count
=
0
;
/**
* NG2处料盘数量
*/
private
int
ng2Count
=
0
;
/**
* 消息列表
*/
private
List
<
EquipMsg
>
msgList
=
null
;
private
long
updateTime
=
System
.
currentTimeMillis
();
/**
* 10秒超时
* @return
*/
public
boolean
timeOut
(){
return
(
System
.
currentTimeMillis
()-
updateTime
)>(
10
*
1000
);}
}
src/main/java/com/neotel/smfcore/custom/micron1053/bean/MicronEquipStatus.java
查看文件 @
6f25a84
...
...
@@ -13,12 +13,17 @@ import java.util.List;
public
class
MicronEquipStatus
implements
Serializable
{
/**
* 设备名称:ML5,CI,R1,R2,R3,M1-M8,SBDH1,SBDH2,SBDH3,SBSH1,SBSH2
* ML5-R1,ML5-R2,ML5-L1,ML5-R2
*/
private
String
equipName
;
/**
* 1=正常运行,2=报警
*/
private
int
status
;
/**
* 当name为ML5-R1对应右侧的ng,ML5-L1对应左侧的ng
*/
private
int
ngCount
;
private
long
updateTime
;
private
List
<
EquipMsg
>
msgList
=
null
;
/**
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/bean/dto/MicronEquipStatusDto.java
查看文件 @
6f25a84
...
...
@@ -17,7 +17,7 @@ import java.util.Map;
@NoArgsConstructor
public
class
MicronEquipStatusDto
implements
Serializable
{
@ApiModelProperty
(
"设备状态集合,KEY为设备名词(ML5,CI,R1,R2,R3,M1-M8,SBDH1,SBDH2,SBDH3,SBSH1,SBSH2)"
)
@ApiModelProperty
(
"设备状态集合,KEY为设备名词(ML5,CI,R1,R2,R3,M1-M8,SBDH1,SBDH2,SBDH3,SBSH1,SBSH2)
,value为状态(0=离线,1=正常,2=报警)
"
)
private
Map
<
String
,
Integer
>
statusMap
=
new
HashMap
<>();
@ApiModelProperty
(
"消息列表"
)
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/bean/dto/SBDHViewDto.java
查看文件 @
6f25a84
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
bean
.
dto
;
import
com.neotel.smfcore.core.report.bean.ChartItem
;
import
com.neotel.smfcore.core.storage.bean.UsageItem
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.Map
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
SBDHViewDto
implements
Serializable
{
private
String
boxName
;
@ApiModelProperty
(
"单台BOX状态,key=CID,0=离线,1=正常运行中, 2=急停,3=故障,4=警告,5=调试中,6入库执行中,7入仓位完成,8入库失败, 9出库执行中,10出仓位完成,11出库失败,12移栽出库,13 重置中,14 扫码入库失败 "
)
private
Map
<
String
,
Integer
>
statuMap
=
new
HashMap
<>();
@ApiModelProperty
(
"料仓文本,key=CID,value=文本"
)
private
Map
<
String
,
String
>
msgMap
=
new
HashMap
<>();
@ApiModelProperty
(
"温度"
)
private
String
temperature
;
@ApiModelProperty
(
"湿度"
)
...
...
@@ -25,11 +30,11 @@ public class SBDHViewDto implements Serializable {
@ApiModelProperty
(
"今天出入库数量"
)
private
Integer
todayCounts
;
@ApiModelProperty
(
"库存使用率"
)
private
Integer
Usage
;
@ApiModelProperty
(
"使用仓位数"
)
private
Integer
usedCount
;
@ApiModelProperty
(
"总仓位数"
)
private
Integer
totalCount
;
@ApiModelProperty
(
"使用情况"
)
private
Map
<
String
,
UsageItem
>
usageMap
=
new
ConcurrentHashMap
<>();
@ApiModelProperty
(
"出入库报表"
)
private
List
<
ChartItem
>
chartItems
;
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/bean/mapstruct/ML5StatusMapper.java
deleted
100644 → 0
查看文件 @
92b0f22
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
bean
.
mapstruct
;
import
com.neotel.smfcore.common.base.BaseMapper
;
import
com.neotel.smfcore.custom.micron1053.bean.ML5StatusBean
;
import
com.neotel.smfcore.custom.micron1053.bean.dto.ML5StatusDto
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.ReportingPolicy
;
@Mapper
(
componentModel
=
"spring"
,
unmappedTargetPolicy
=
ReportingPolicy
.
IGNORE
)
public
interface
ML5StatusMapper
extends
BaseMapper
<
ML5StatusDto
,
ML5StatusBean
>
{
}
src/main/java/com/neotel/smfcore/custom/micron1053/controller/MicronML5Controller.java
查看文件 @
6f25a84
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
controller
;
import
com.neotel.smfcore.custom.micron1053.bean.EquipMsg
;
import
com.neotel.smfcore.custom.micron1053.bean.MicronEquipStatus
;
import
com.neotel.smfcore.custom.micron1053.bean.dto.ML5StatusDto
;
import
com.neotel.smfcore.custom.micron1053.
bean.mapstruct.ML5StatusMapper
;
import
com.neotel.smfcore.custom.micron1053.
enums.MicronEquipName
;
import
com.neotel.smfcore.custom.micron1053.util.MicronDataCache
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.ArrayList
;
import
java.util.List
;
@Slf4j
@RestController
@Api
(
tags
=
"1053:ML5"
)
@RequestMapping
(
"/rest/micron/ml5"
)
public
class
MicronML5Controller
{
@Autowired
private
ML5StatusMapper
ml5StatusMapper
;
@ApiOperation
(
"ML5页面数据获取"
)
@GetMapping
(
"/status"
)
@AnonymousAccess
public
ML5StatusDto
ml5Status
(
)
{
if
(
MicronDataCache
.
ml5StatusBean
!=
null
){
if
(!
MicronDataCache
.
ml5StatusBean
.
timeOut
()){
ML5StatusDto
dto
=
ml5StatusMapper
.
toDto
(
MicronDataCache
.
ml5StatusBean
);
return
dto
;
}
}
return
new
ML5StatusDto
();
ML5StatusDto
dto
=
new
ML5StatusDto
();
MicronEquipStatus
r1
=
MicronDataCache
.
getStatus
(
MicronEquipName
.
ML5_R1
.
getName
());
MicronEquipStatus
r2
=
MicronDataCache
.
getStatus
(
MicronEquipName
.
ML5_R2
.
getName
());
MicronEquipStatus
l1
=
MicronDataCache
.
getStatus
(
MicronEquipName
.
ML5_L1
.
getName
());
MicronEquipStatus
l2
=
MicronDataCache
.
getStatus
(
MicronEquipName
.
ML5_L2
.
getName
());
dto
.
setL1Status
(
l1
.
getStatus
());
dto
.
setL2Status
(
l2
.
getStatus
());
dto
.
setR1Status
(
r1
.
getStatus
());
dto
.
setR2Status
(
r2
.
getStatus
());
dto
.
setNg1Count
(
l1
.
getNgCount
());
dto
.
setNg2Count
(
r1
.
getNgCount
());
List
<
EquipMsg
>
msgs
=
new
ArrayList
<>();
msgs
.
addAll
(
r1
.
getMsgList
());
msgs
.
addAll
(
r2
.
getMsgList
());
msgs
.
addAll
(
l1
.
getMsgList
());
msgs
.
addAll
(
l2
.
getMsgList
());
dto
.
setMsgList
(
msgs
);
return
dto
;
}
}
src/main/java/com/neotel/smfcore/custom/micron1053/controller/MicronServiceController.java
查看文件 @
6f25a84
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
controller
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.custom.micron1053.bean.ML5StatusBean
;
import
com.neotel.smfcore.custom.micron1053.bean.MicronEquipStatus
;
import
com.neotel.smfcore.custom.micron1053.util.MicronDataCache
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
...
...
@@ -37,16 +36,16 @@ public class MicronServiceController {
return
ResultBean
.
newOkResult
(
""
);
}
@ApiOperation
(
"ML5设备状态更新"
)
@PostMapping
(
value
=
"ml5/updateStatus"
)
@ResponseBody
@AnonymousAccess
public
ResultBean
ml5Status
(
@RequestBody
final
ML5StatusBean
statusBean
,
HttpServletRequest
request
)
{
//记录设备状态
if
(
statusBean
!=
null
){
statusBean
.
setUpdateTime
(
System
.
currentTimeMillis
());
MicronDataCache
.
ml5StatusBean
=
statusBean
;
}
return
ResultBean
.
newOkResult
(
""
);
}
//
@ApiOperation("ML5设备状态更新")
//
@PostMapping(value = "ml5/updateStatus")
//
@ResponseBody
//
@AnonymousAccess
//
public ResultBean ml5Status(@RequestBody final ML5StatusBean statusBean, HttpServletRequest request) {
//
//记录设备状态
//
if(statusBean!=null){
//
statusBean.setUpdateTime(System.currentTimeMillis());
//
MicronDataCache.ml5StatusBean=statusBean;
//
}
//
return ResultBean.newOkResult("");
//
}
}
src/main/java/com/neotel/smfcore/custom/micron1053/controller/MicronStatusController.java
查看文件 @
6f25a84
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
controller
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.neotel.smfcore.common.utils.DateUtil
;
import
com.neotel.smfcore.core.device.bean.BoxStatusBean
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.report.bean.ChartItem
;
import
com.neotel.smfcore.core.storage.bean.UsageItem
;
import
com.neotel.smfcore.core.storage.service.manager.IStorageManager
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.custom.micron1053.bean.EquipMsg
;
...
...
@@ -20,6 +25,7 @@ import org.springframework.web.bind.annotation.*;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Slf4j
...
...
@@ -30,6 +36,8 @@ public class MicronStatusController {
@Autowired
private
DataCache
dataCache
;
@Autowired
private
IStorageManager
storageManager
;
@ApiOperation
(
"设备状态页面"
)
@GetMapping
(
"/equipView"
)
...
...
@@ -39,9 +47,11 @@ public class MicronStatusController {
dto
.
setMsgList
(
new
ArrayList
<>());
dto
.
setStatusMap
(
new
HashMap
<>());
// ML5,CI,R1,R2,R3
List
<
MicronEquipStatus
>
statuses
=
new
ArrayList
<>(
MicronDataCache
.
equipStatusMap
.
values
());
for
(
MicronEquipStatus
s:
statuses
String
[]
names
=
new
String
[]{
"ML5"
,
"CI"
,
"R1"
,
"R2"
,
"R3"
};
for
(
String
name
:
names
)
{
MicronEquipStatus
s
=
MicronDataCache
.
getStatus
(
name
);
if
(!
s
.
timeOut
()){
dto
.
getStatusMap
().
put
(
s
.
getEquipName
(),
s
.
getStatus
()
);
if
(
s
.
getMsgList
()!=
null
&&
s
.
getMsgList
().
size
()>
0
)
{
...
...
@@ -79,6 +89,8 @@ public class MicronStatusController {
allStorages
.
values
())
{
if
(
storage
.
getCid
().
contains
(
boxName
))
{
cids
.
add
(
storage
.
getCid
());
}
else
if
(
storage
.
getName
().
equals
(
boxName
)){
cids
.
add
(
storage
.
getCid
());
}
}
return
cids
;
...
...
@@ -87,7 +99,7 @@ public class MicronStatusController {
private
MicronEquipStatus
getBoxEquip
(
String
boxName
)
{
List
<
String
>
cids
=
getCidsByBoxName
(
boxName
);
MicronEquipStatus
dto
=
new
MicronEquipStatus
(
boxName
,
0
,
System
.
currentTimeMillis
(),
new
ArrayList
<>());
MicronEquipStatus
dto
=
new
MicronEquipStatus
(
boxName
,
0
,
0
,
System
.
currentTimeMillis
(),
new
ArrayList
<>());
List
<
StatusBean
>
statusBeans
=
new
ArrayList
<>();
for
(
String
cid
:
cids
)
{
...
...
@@ -117,11 +129,73 @@ public class MicronStatusController {
}
@ApiOperation
(
"SBDH SBSH 页面"
)
@ApiOperation
(
"SBDH SBSH 页面
,发送boxName(SBDH1,SBDH2,SBDH3,SBSH1,SBSH2)
"
)
@GetMapping
(
"/SBDHView"
)
@AnonymousAccess
public
SBDHViewDto
SBDHView
(
String
boxName
,
HttpServletRequest
servletRequest
)
{
SBDHViewDto
dto
=
new
SBDHViewDto
();
SBDHViewDto
dto
=
new
SBDHViewDto
();
List
<
String
>
cids
=
getCidsByBoxName
(
boxName
);
int
useCount
=
0
;
int
totalCount
=
0
;
int
todayCounts
=
0
;
List
<
StatusBean
>
statusBeans
=
new
ArrayList
<>();
Map
<
String
,
ChartItem
>
chartItemMap
=
new
HashMap
<>();
for
(
String
cid
:
cids
)
{
Storage
storage
=
dataCache
.
getStorage
(
cid
);
for
(
UsageItem
item
:
storage
.
getUsageMap
().
values
()
)
{
useCount
+=
item
.
getUsedCount
();
totalCount
+=
item
.
getTotalCount
();
}
StatusBean
statusBean
=
DevicesStatusUtil
.
getStatusBean
(
cid
);
if
(
statusBean
!=
null
&&
(!
statusBean
.
timeOut
()))
{
for
(
BoxStatusBean
boxStatus
:
statusBean
.
getBoxStatus
().
values
())
{
if
(
ObjectUtil
.
isEmpty
(
dto
.
getHumidity
()))
{
String
humidity
=
boxStatus
.
getHumidity
();
String
temperature
=
boxStatus
.
getTemperature
();
dto
.
setHumidity
(
humidity
);
dto
.
setTemperature
(
temperature
);
}
dto
.
getStatuMap
().
put
(
cid
,
boxStatus
.
getStatus
());
dto
.
getMsgMap
().
put
(
cid
,
statusBean
.
getShowMsg
(
servletRequest
.
getLocale
()));
}
}
else
{
dto
.
getStatuMap
().
put
(
cid
,
0
);
dto
.
getMsgMap
().
put
(
cid
,
""
);
}
//出入库报表 默认过去一周到现在的
Calendar
time
=
Calendar
.
getInstance
();
time
.
setTime
(
new
Date
());
time
.
add
(
Calendar
.
DAY_OF_YEAR
,
-
6
);
String
today
=
DateUtil
.
toDateTimeString
(
new
Date
());
List
<
ChartItem
>
chartItems
=
storageManager
.
getRunStatusData
(
time
.
getTime
(),
new
Date
(),
""
);
for
(
ChartItem
chartItem
:
chartItems
)
{
if
(
chartItemMap
.
containsKey
(
chartItem
.
getLabel
()))
{
ChartItem
item
=
chartItemMap
.
get
(
chartItem
.
getLabel
());
int
newOut
=
item
.
getCheckOutValue
()
+
chartItem
.
getCheckOutValue
();
int
newIn
=
item
.
getPutInValue
()
+
chartItem
.
getPutInValue
();
chartItemMap
.
get
(
chartItem
.
getLabel
()).
setPutInValue
(
newIn
);
chartItemMap
.
get
(
chartItem
.
getLabel
()).
setCheckOutValue
(
newOut
);
}
else
{
chartItemMap
.
put
(
chartItem
.
getLabel
(),
chartItem
);
}
if
(
chartItem
.
getLabel
().
equals
(
today
))
{
todayCounts
+=
chartItem
.
getCheckOutValue
()
+
chartItem
.
getPutInValue
();
}
}
}
dto
.
setTotalCount
(
totalCount
);
dto
.
setUsedCount
(
useCount
);
dto
.
setChartItems
(
chartItemMap
.
values
().
stream
().
collect
(
Collectors
.
toList
()));
dto
.
setTodayCounts
(
todayCounts
);
return
dto
;
}
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/enums/MicronEquipName.java
查看文件 @
6f25a84
...
...
@@ -19,7 +19,11 @@ public enum MicronEquipName {
SBDH2
(
"SBDH2"
),
SBDH3
(
"SBDH3"
),
SBSH1
(
"SBSH1"
),
SBSH2
(
"SBSH2"
);
SBSH2
(
"SBSH2"
),
ML5_R1
(
"ML5-R1"
),
ML5_R2
(
"ML5-R2"
),
ML5_L1
(
"ML5-L1"
),
ML5_L2
(
"ML5-L2"
);
private
String
key
;
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/util/MicronDataCache.java
查看文件 @
6f25a84
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
util
;
import
com.neotel.smfcore.custom.micron1053.bean.ML5StatusBean
;
import
com.neotel.smfcore.custom.micron1053.bean.MicronEquipStatus
;
import
java.util.HashMap
;
...
...
@@ -11,7 +10,7 @@ import java.util.Map;
*/
public
class
MicronDataCache
{
public
static
ML5StatusBean
ml5StatusBean
=
null
;
//
public static ML5StatusBean ml5StatusBean=null;
public
static
Map
<
String
,
MicronEquipStatus
>
equipStatusMap
=
new
HashMap
<>();
...
...
@@ -26,4 +25,14 @@ public class MicronDataCache {
}
equipStatusMap
.
put
(
bean
.
getEquipName
(),
bean
);
}
public
static
MicronEquipStatus
getStatus
(
String
name
){
if
(
equipStatusMap
.
containsKey
(
name
)){
MicronEquipStatus
result
=
equipStatusMap
.
get
(
name
);
if
(!
result
.
timeOut
()){
return
result
;
}
}
return
new
MicronEquipStatus
();
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论