Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 6987646e
由
LN
编写于
2023-02-14 16:45:42 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1053:生成工单。麦康尼获取库位号失败修改。增加根据任务获取料架类型。
1 个父辈
c4c0caef
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
198 行增加
和
9 行删除
src/main/java/com/neotel/smfcore/core/device/handler/impl/RobotBoxHandler.java
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
src/main/java/com/neotel/smfcore/custom/micron1053/bean/dto/ML5StatusDto.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/util/MicronDataCache.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/RobotBoxHandler.java
查看文件 @
6987646
...
...
@@ -236,6 +236,8 @@ public class RobotBoxHandler extends BaseDeviceHandler {
String
errorMsg
=
""
;
List
<
Storage
>
storageList
=
Lists
.
newArrayList
();
List
<
String
>
cidList
=
dataCache
.
getAvailableStorageIds
(
this
.
getDeviceType
());
List
<
String
>
thirdList
=
dataCache
.
getAvailableStorageIds
(
DeviceType
.
SMDBOX_THIRD
);
cidList
.
addAll
(
thirdList
);
for
(
String
cid
:
cidList
)
{
String
notIntoCids
=
dataCache
.
getSettings
().
getNotIntoCids
();
if
(
notIntoCids
!=
null
)
{
...
...
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
查看文件 @
6987646
...
...
@@ -611,4 +611,54 @@ public class OrderController {
return
null
;
}
@ApiOperation
(
"生成工单"
)
@PostMapping
(
value
=
"/createOrder"
)
@PreAuthorize
(
"@el.check('createOrder')"
)
public
ResultBean
createOrder
(
@RequestBody
Map
<
String
,
Object
>
paramsMap
)
{
String
orderNo
=
paramsMap
.
get
(
"orderNo"
).
toString
();
List
<
String
>
realIds
=
(
List
<
String
>)
paramsMap
.
get
(
"realIds"
);
if
(
ObjectUtil
.
isEmpty
(
orderNo
))
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyyMMddHHmmss"
);
orderNo
=
"WO"
+
format
.
format
(
new
Date
());
}
//创建新工单
LiteOrder
fileNameOrder
=
liteOrderManager
.
findBySource
(
orderNo
);
if
(
fileNameOrder
==
null
)
{
try
{
List
<
LiteOrderItem
>
items
=
new
ArrayList
<>();
for
(
String
realId
:
realIds
)
{
LiteOrderItem
item
=
new
LiteOrderItem
();
item
.
setRi
(
realId
);
item
.
setNeedReelCount
(
1
);
item
.
setNeedNum
(
1
);
items
.
add
(
item
);
}
LiteOrder
liteOrder
=
new
LiteOrder
(
orderNo
,
items
);
LiteOrder
dbOrder
=
liteOrderManager
.
findByOrderNo
(
liteOrder
.
getOrderNo
());
if
(
dbOrder
!=
null
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyyMMddHHmmss"
);
//把名字改为带时间的
String
newOrderNo
=
liteOrder
.
getOrderNo
()
+
"-"
+
format
.
format
(
new
Date
());
dbOrder
=
liteOrderManager
.
findByOrderNo
(
newOrderNo
);
if
(
dbOrder
==
null
)
{
liteOrder
.
setOrderNo
(
newOrderNo
);
}
else
{
return
ResultBean
.
newErrorResult
(-
99
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
}
}
log
.
info
(
"生成工单:"
+
liteOrder
.
getOrderNo
()
+
",共"
+
items
.
size
()
+
"条工单详情"
);
liteOrder
=
liteOrderManager
.
createWithItems
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
}
catch
(
Exception
e
)
{
log
.
error
(
"生成工单 error :"
,
e
);
//resultFile = new File(localDir+File.separator + "error",backupFileName);
}
}
return
ResultBean
.
newOkResult
(
""
);
}
}
src/main/java/com/neotel/smfcore/custom/micron1053/bean/dto/ML5StatusDto.java
查看文件 @
6987646
...
...
@@ -6,6 +6,7 @@ import lombok.Data;
import
java.io.Serializable
;
import
java.util.List
;
import
java.util.Map
;
/**
* ML5页面状态
...
...
@@ -30,4 +31,8 @@ public class ML5StatusDto implements Serializable {
@ApiModelProperty
(
"消息列表"
)
private
List
<
EquipMsg
>
msgList
=
null
;
@ApiModelProperty
(
"需要的料架列表,key=料架类型,value=数量"
)
private
Map
<
String
,
Integer
>
needShelfs
=
null
;
}
src/main/java/com/neotel/smfcore/custom/micron1053/controller/MicronML5Controller.java
查看文件 @
6987646
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
controller
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.util.TaskService
;
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
;
...
...
@@ -9,19 +11,23 @@ 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.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Slf4j
@RestController
@Api
(
tags
=
"1053:ML5"
)
@RequestMapping
(
"/rest/micron/ml5"
)
public
class
MicronML5Controller
{
@Autowired
private
TaskService
taskService
;
@ApiOperation
(
"ML5页面数据获取"
)
@GetMapping
(
"/status"
)
...
...
@@ -46,6 +52,24 @@ public class MicronML5Controller {
msgs
.
addAll
(
l1
.
getMsgList
());
msgs
.
addAll
(
l2
.
getMsgList
());
dto
.
setMsgList
(
msgs
);
Map
<
String
,
Integer
>
needShelfs
=
new
HashMap
<>();
List
<
DataLog
>
dataLogs
=
taskService
.
getAllTasks
();
for
(
DataLog
task
:
dataLogs
)
{
String
taskType
=
MicronDataCache
.
GetMaterialType
(
task
);
String
shelf
=
MicronDataCache
.
getShelfType
(
taskType
);
if
(
needShelfs
.
containsKey
(
shelf
)){
int
newCount
=
needShelfs
.
get
(
shelf
)+
1
;
needShelfs
.
put
(
shelf
,
newCount
);
}
else
{
needShelfs
.
put
(
shelf
,
1
);
}
}
if
(
needShelfs
.
size
()>
0
){
dto
.
setNeedShelfs
(
needShelfs
);
}
return
dto
;
}
}
src/main/java/com/neotel/smfcore/custom/micron1053/controller/MicronServiceController.java
查看文件 @
6987646
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
controller
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.utils.JsonUtil
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.micron1053.bean.MicronEquipStatus
;
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.*
;
import
javax.servlet.http.HttpServletRequest
;
...
...
@@ -17,24 +21,65 @@ import java.util.List;
@Api
(
tags
=
"1053:设备端接口"
)
@RequestMapping
(
"/rest/micron/service"
)
public
class
MicronServiceController
{
@Autowired
private
TaskService
taskService
;
@ApiOperation
(
"单个设备状态更新,可传集合,也可只传一个设备状态 (ML5,CI,R1,R2,R3) (1=正常运行,2=报警) "
)
@PostMapping
(
value
=
"/updateStatus"
)
@ResponseBody
@AnonymousAccess
public
ResultBean
status
(
@RequestBody
Object
param
,
HttpServletRequest
request
)
{
if
(
param
instanceof
MicronEquipStatus
)
{
MicronEquipStatus
mStatusBean
=
(
MicronEquipStatus
)
param
;
MicronDataCache
.
updateEquipStatus
(
mStatusBean
);
}
else
{
List
<
MicronEquipStatus
>
list
=(
List
<
MicronEquipStatus
>)
param
;
for
(
MicronEquipStatus
mStatusBean:
list
)
{
if
(
param
instanceof
List
)
{
List
<
Object
>
list
=
(
List
<
Object
>)
param
;
for
(
Object
object
:
list
)
{
MicronEquipStatus
mStatusBean
=
JsonUtil
.
toObj
(
object
.
toString
(),
MicronEquipStatus
.
class
);
MicronDataCache
.
updateEquipStatus
(
mStatusBean
);
}
}
else
{
MicronEquipStatus
mStatusBean
=
JsonUtil
.
toObj
(
param
.
toString
(),
MicronEquipStatus
.
class
);
MicronDataCache
.
updateEquipStatus
(
mStatusBean
);
}
return
ResultBean
.
newOkResult
(
""
);
}
@ApiOperation
(
" 获取治具任务数量,料盘任务数量 "
)
@PostMapping
(
value
=
"/getTaskCount"
)
@ResponseBody
@AnonymousAccess
public
ResultBean
getTaskCount
(
HttpServletRequest
request
)
{
String
type
=
request
.
getParameter
(
"type"
);
int
count
=
0
;
List
<
DataLog
>
dataLogs
=
taskService
.
getAllTasks
();
for
(
DataLog
task
:
dataLogs
)
{
String
taskType
=
MicronDataCache
.
GetMaterialType
(
task
);
if
(
taskType
.
toLowerCase
().
equals
(
type
.
toLowerCase
())){
count
++;
}
}
//SBSH1,SBSH2,SBDH1-1,SBDH1-2,SBDH2-1.SBDH2-2这些都是Pizza box,对应的料架是M01开头的,每个料架可以放5盘料
//SBDH3-1里面有pcb,对应的料架是M02开头,每个料架可以放5盘料。
// tray对应的料架是M03开头,每个料架可以放4盘料,
// 还有reel料盘尺寸是13*44,13*56,13*72
//SBDH3-2里面是pcb物料
// 310*80是PCB
// 330*120是tray
// 13*72的入13*44,13*56,13*72的料盘
//pizzaBox (料架M01,每个料架5盘) SBSH1,SBSH2,SBDH1-1,SBDH1-2,SBDH2-1.SBDH2-2
//pcb (料架M02,每个料架5盘) SBDH3-2,SBDH3-1部分
//tray (料架M03,每个料架4盘) SBDH3-1 里
//reel (料架M01,每个料架5盘) SBDH3-1 13*44,13*56,13*72
return
ResultBean
.
newOkResult
(
count
);
}
// @ApiOperation("ML5设备状态更新")
// @PostMapping(value = "ml5/updateStatus")
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/util/MicronDataCache.java
查看文件 @
6987646
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
util
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.custom.micron1053.bean.MicronEquipStatus
;
import
java.util.HashMap
;
...
...
@@ -35,4 +36,66 @@ public class MicronDataCache {
}
return
new
MicronEquipStatus
();
}
public
static
String
PIZZABOX
=
"pizzaBox"
;
public
static
String
PCB
=
"pcb"
;
public
static
String
TRAY
=
"tray"
;
public
static
String
REEL
=
"reel"
;
public
static
String
GetMaterialType
(
String
cid
,
String
storageId
,
int
w
,
int
h
){
String
[]
pizzaCids
=
new
String
[]{
"SBSH1"
,
"SBSH2"
,
"SBDH1-1"
,
"SBDH1-2"
,
"SBDH2-1"
,
"SBDH2-2"
};
for
(
String
pizzaCid
:
pizzaCids
)
{
if
(
pizzaCid
.
equals
(
cid
))
{
return
PIZZABOX
;
}
}
if
(
cid
.
equals
(
"SBDH3-1"
))
{
if
(
w
==
310
&&
h
==
80
)
{
return
PCB
;
}
else
if
(
w
==
330
&&
h
==
120
)
{
return
TRAY
;
}
else
if
(
w
==
13
)
{
return
PCB
;
}
}
else
if
(
cid
.
equals
(
"SBDH3-2"
)){
return
PCB
;
}
// else if(storage.isType(new DeviceType[] {DeviceType.SMDBOX_THIRD} )){
// return REEL;
// }
return
REEL
;
//SBSH1,SBSH2,SBDH1-1,SBDH1-2,SBDH2-1.SBDH2-2这些都是Pizza box,对应的料架是M01开头的,每个料架可以放5盘料
//SBDH3-1里面有pcb,对应的料架是M02开头,每个料架可以放5盘料。
// tray对应的料架是M03开头,每个料架可以放4盘料,
// 还有reel料盘尺寸是13*44,13*56,13*72
//SBDH3-2里面是pcb物料
// 310*80是PCB
// 330*120是tray
// 13*72的入13*44,13*56,13*72的料盘
//386*86的这个库位设计的时候错了,就不使用了
//pizzaBox (料架M01,每个料架5盘) SBSH1,SBSH2,SBDH1-1,SBDH1-2,SBDH2-1.SBDH2-2
//pcb (料架M02,每个料架5盘) SBDH3-2,SBDH3-1部分
//tray (料架M03,每个料架4盘) SBDH3-1 里
//reel (料架M01,每个料架5盘) SBDH3-1 13*44,13*56,13*72
}
public
static
String
GetMaterialType
(
DataLog
dataLog
){
return
REEL
;
}
public
static
String
getShelfType
(
String
materialType
){
if
(
materialType
.
equals
(
PIZZABOX
)){
return
"M01"
;
}
else
if
(
materialType
.
equals
(
PCB
)){
return
"M02"
;
}
else
if
(
materialType
.
equals
(
TRAY
)){
return
"M03"
;
}
return
""
;
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论