Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
SmdBox
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 9e195110
由
zshaohui
编写于
2023-07-17 11:39:33 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
mes接口增加亮灯颜色
1 个父辈
8ea5424c
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
137 行增加
和
85 行删除
myproject/src/main/java/com/myproject/webapp/controller/webService/ITaskService.java
myproject/src/main/java/com/myproject/webapp/controller/webService/MesApiController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/TaskService.java
myproject/src/main/resources/StorageResources_jp.properties
myproject/src/main/resources/StorageResources_zh_CN.properties
myproject/src/main/java/com/myproject/webapp/controller/webService/ITaskService.java
查看文件 @
9e19511
...
@@ -81,4 +81,6 @@ public interface ITaskService {
...
@@ -81,4 +81,6 @@ public interface ITaskService {
void
addTaskToFinished
(
StoragePos
pos
,
Barcode
barcode
,
String
opUser
);
void
addTaskToFinished
(
StoragePos
pos
,
Barcode
barcode
,
String
opUser
);
void
addTaskToExecute
(
DataLog
task
);
void
addTaskToExecute
(
DataLog
task
);
String
checkout
(
StoragePos
pos
,
boolean
forceOut
,
String
subSourceId
,
boolean
isSingleOut
,
String
rgbCode
);
}
}
myproject/src/main/java/com/myproject/webapp/controller/webService/MesApiController.java
查看文件 @
9e19511
...
@@ -19,6 +19,7 @@ import com.myproject.util.DateUtil;
...
@@ -19,6 +19,7 @@ import com.myproject.util.DateUtil;
import
com.myproject.util.StorageConstants
;
import
com.myproject.util.StorageConstants
;
import
com.myproject.webapp.controller.storage.BaseController
;
import
com.myproject.webapp.controller.storage.BaseController
;
import
com.myproject.webapp.filter.LocaleFilter
;
import
com.myproject.webapp.filter.LocaleFilter
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.apache.logging.log4j.Logger
;
import
org.apache.logging.log4j.core.util.Integers
;
import
org.apache.logging.log4j.core.util.Integers
;
...
@@ -28,6 +29,7 @@ import org.springframework.web.bind.annotation.RequestBody;
...
@@ -28,6 +29,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
javax.annotation.PostConstruct
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.text.ParseException
;
import
java.text.ParseException
;
...
@@ -59,6 +61,30 @@ public class MesApiController extends BaseController {
...
@@ -59,6 +61,30 @@ public class MesApiController extends BaseController {
protected
final
static
Logger
log
=
LogManager
.
getLogger
(
MesApiController
.
class
);
protected
final
static
Logger
log
=
LogManager
.
getLogger
(
MesApiController
.
class
);
private
Map
<
String
,
String
>
colorMap
=
Maps
.
newConcurrentMap
();
@PostConstruct
private
void
initColor
()
{
colorMap
.
put
(
"FF0000"
,
"Red"
);
colorMap
.
put
(
"FFC0CB"
,
"Pink"
);
colorMap
.
put
(
"C71585"
,
"Medium Violet Red"
);
colorMap
.
put
(
"FF8C00"
,
"Dark Orange"
);
colorMap
.
put
(
"FFFF00"
,
"Yellow"
);
colorMap
.
put
(
"BDB76B"
,
"Dark Khaki"
);
colorMap
.
put
(
"E6E6FA"
,
"Lavender"
);
colorMap
.
put
(
"9370DB"
,
"Medium Purple"
);
colorMap
.
put
(
"800080"
,
"Purple"
);
colorMap
.
put
(
"ADFF2F"
,
"Green Yellow"
);
colorMap
.
put
(
"98FB98"
,
"Pale Green"
);
colorMap
.
put
(
"008000"
,
"Green"
);
colorMap
.
put
(
"808000"
,
"Olive"
);
colorMap
.
put
(
"00FFFF"
,
"Aqua"
);
colorMap
.
put
(
"7FFFD4"
,
"Aquamarine"
);
colorMap
.
put
(
"B0C4DE"
,
"Light Steel Blue"
);
colorMap
.
put
(
"0000FF"
,
"Blue"
);
colorMap
.
put
(
"FFE4C4"
,
"Bisque"
);
colorMap
.
put
(
"f4A460"
,
"Sandy Brown"
);
}
/**
/**
* 基础数据同步
* 基础数据同步
*/
*/
...
@@ -159,22 +185,31 @@ public class MesApiController extends BaseController {
...
@@ -159,22 +185,31 @@ public class MesApiController extends BaseController {
try
{
try
{
String
[]
REEL_IDS
=
request
.
getParameterValues
(
"RIS"
);
String
[]
REEL_IDS
=
request
.
getParameterValues
(
"RIS"
);
String
rgbCode
=
request
.
getParameter
(
"rgbCode"
);
//亮灯颜色
if
(
REEL_IDS
==
null
||
REEL_IDS
.
length
==
0
){
if
(
REEL_IDS
==
null
||
REEL_IDS
.
length
==
0
){
return
"Error: RI 为必须项"
;
return
"Error"
+
getText
(
"smfcore.mesApi.codeResolveUrl.paramNull"
,
new
String
[]{
"RIS"
},
request
.
getLocale
());
//return "Error: RI 为必须项";
}
//判断亮灯颜色是否在这20种内
if
(
StringUtils
.
isBlank
(
colorMap
.
get
(
rgbCode
))){
return
"Error"
+
getText
(
"color.error.notExist"
,
new
String
[]{
"rgbCode"
},
request
.
getLocale
());
//return "Error: rgbCode 不在颜色范围内";
}
}
ArrayList
<
StoragePos
>
poses
=
Lists
.
newArrayList
();
ArrayList
<
StoragePos
>
poses
=
Lists
.
newArrayList
();
for
(
String
REEL_ID
:
REEL_IDS
)
{
for
(
String
REEL_ID
:
REEL_IDS
)
{
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
REEL_ID
);
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
REEL_ID
);
if
(
pos
==
null
){
if
(
pos
==
null
){
return
"Error: RI["
+
REEL_ID
+
"]在BOX中不存在"
;
return
"Error"
+
getText
(
"barcode.error.notExist"
,
new
String
[]{
REEL_ID
},
request
.
getLocale
());
//return "Error: RI["+REEL_ID+"]在BOX中不存在";
}
}
poses
.
add
(
pos
);
poses
.
add
(
pos
);
}
}
for
(
StoragePos
pos
:
poses
)
{
for
(
StoragePos
pos
:
poses
)
{
log
.
info
(
"出库位置仓位【"
+
pos
.
getPosName
()+
"】"
);
log
.
info
(
"出库位置仓位【"
+
pos
.
getPosName
()+
"】"
);
taskService
.
checkout
(
pos
,
false
,
null
,
false
);
taskService
.
checkout
(
pos
,
false
,
null
,
false
,
rgbCode
);
}
}
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/TaskService.java
查看文件 @
9e19511
...
@@ -21,6 +21,7 @@ import com.myproject.webapp.controller.webService.boxHandler.SmdXlBoxHandler;
...
@@ -21,6 +21,7 @@ import com.myproject.webapp.controller.webService.boxHandler.SmdXlBoxHandler;
import
com.myproject.webapp.controller.webService.boxHandler.VerticalBoxHandler
;
import
com.myproject.webapp.controller.webService.boxHandler.VerticalBoxHandler
;
import
com.myproject.util.HttpHelper
;
import
com.myproject.util.HttpHelper
;
import
com.myproject.util.StorageConstants
;
import
com.myproject.util.StorageConstants
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -1095,6 +1096,8 @@ public class TaskService implements ITaskService {
...
@@ -1095,6 +1096,8 @@ public class TaskService implements ITaskService {
StorageConstants
.
ORDER_COLOR
orderColor
=
StorageConstants
.
ORDER_COLOR
.
fromRgb
(
lightColor
);
StorageConstants
.
ORDER_COLOR
orderColor
=
StorageConstants
.
ORDER_COLOR
.
fromRgb
(
lightColor
);
if
(
orderColor
!=
null
)
{
if
(
orderColor
!=
null
)
{
opValue
=
opValue
+
"="
+
orderColor
.
name
().
toLowerCase
();
opValue
=
opValue
+
"="
+
orderColor
.
name
().
toLowerCase
();
}
else
{
opValue
=
opValue
+
"=#"
+
lightColor
;
}
}
}
}
...
@@ -1542,88 +1545,7 @@ public class TaskService implements ITaskService {
...
@@ -1542,88 +1545,7 @@ public class TaskService implements ITaskService {
@Override
@Override
public
synchronized
String
checkout
(
StoragePos
pos
,
boolean
forceOut
,
String
subSourceId
,
boolean
isSingleOut
)
{
public
synchronized
String
checkout
(
StoragePos
pos
,
boolean
forceOut
,
String
subSourceId
,
boolean
isSingleOut
)
{
return
checkout
(
pos
,
forceOut
,
subSourceId
,
isSingleOut
,
""
);
Barcode
barcode
=
pos
.
getBarcode
();
if
(
barcode
!=
null
)
{
if
(
barcode
.
isSolder
())
{
//锡膏出库
log
.
info
(
"设置库位["
+
pos
.
getPosName
()
+
"]中的锡膏["
+
barcode
.
getBarcode
()
+
"]的出库时间为立即出库"
);
try
{
barcode
.
setNeedOutDate
(
new
Date
());
barcode
=
barcodeManager
.
save
(
barcode
);
pos
.
setBarcode
(
barcode
);
storagePosManager
.
save
(
pos
);
return
""
;
}
catch
(
ValidateException
e
)
{
e
.
printStackTrace
();
}
}
}
else
{
if
(!
forceOut
)
{
String
msg
=
"库位["
+
pos
.
getPosName
()
+
"]中已无物料,忽略"
;
log
.
info
(
msg
);
//return msg;
return
"allBoxView.noReel"
;
}
}
Collection
<
DataLog
>
allTasks
=
taskMap
.
values
();
for
(
DataLog
taskInList
:
allTasks
)
{
if
(
taskInList
.
getPosId
()
==
null
)
continue
;
if
(
taskInList
.
getPosId
().
equals
(
pos
.
getId
()))
{
String
msg
=
"库位【"
+
pos
.
getPosName
()
+
"已在任务列表中,忽略】"
;
log
.
info
(
msg
);
//return msg;
return
"order.error.executing"
;
}
}
DataLog
task
=
newTask
(
pos
);
task
.
setType
(
StorageConstants
.
OP
.
CHECKOUT
);
task
.
setStatus
(
StorageConstants
.
OP_STATUS
.
WAIT
.
name
());
task
.
setSingleOut
(
isSingleOut
);
//工单出库任务
if
(!
Strings
.
isNullOrEmpty
(
subSourceId
))
{
LiteOrderItem
liteOrderItem
=
liteOrderItemDao
.
findOneById
(
subSourceId
);
if
(
liteOrderItem
!=
null
)
{
String
orderNo
=
liteOrderItem
.
getOrderNo
();
LiteOrder
cacheOrder
=
liteOrderMap
.
get
(
orderNo
);
if
(
cacheOrder
==
null
||
cacheOrder
.
isOutOne
()
||
cacheOrder
.
isTaskFinished
()
||
cacheOrder
.
isNew
())
{
if
(
cacheOrder
==
null
)
{
//缓存中没有,加入到缓存中
cacheOrder
=
liteOrderDao
.
findWithItemsByOrderNo
(
orderNo
);
cacheOrder
.
setTaskReelCount
(
1
);
cacheOrder
.
setFinishedReelCount
(
0
);
}
else
if
(
cacheOrder
.
isOutOne
()
||
cacheOrder
.
isOutOneFinished
())
{
//数量+上去
cacheOrder
.
setTaskReelCount
(
cacheOrder
.
getTaskReelCount
()
+
1
);
}
else
{
cacheOrder
.
setTaskReelCount
(
1
);
cacheOrder
.
setFinishedReelCount
(
0
);
}
cacheOrder
.
setTaskFinishedTime
(-
1
);
log
.
info
(
"订单["
+
orderNo
+
"]补料任务"
+
task
.
getBarcode
()
+
" 任务数:"
+
cacheOrder
.
getFinishedReelCount
()
+
"/"
+
cacheOrder
.
getTaskReelCount
());
task
.
setSourceId
(
cacheOrder
.
getId
());
task
.
setSourceName
(
orderNo
);
task
.
setSubSourceId
(
liteOrderItem
.
getId
());
task
.
setSubSourceInfo
(
liteOrderItem
.
getFeederInfo
());
cacheOrder
.
setStatus
(
StorageConstants
.
LITEORDER_STATUS
.
ONE
);
liteOrderDao
.
save
(
cacheOrder
);
liteOrderMap
.
put
(
orderNo
,
cacheOrder
);
}
else
{
//return "无法执行工单补料任务";
return
"order.out.failed"
;
}
}
else
{
//return "未找到工单信息";
return
"order.out.notFound"
;
}
}
task
=
dataLogDao
.
save
(
task
);
addTaskToExecute
(
task
);
return
""
;
}
}
...
@@ -1741,6 +1663,95 @@ public class TaskService implements ITaskService {
...
@@ -1741,6 +1663,95 @@ public class TaskService implements ITaskService {
taskMap
.
put
(
task
.
getId
(),
task
);
taskMap
.
put
(
task
.
getId
(),
task
);
}
}
@Override
public
String
checkout
(
StoragePos
pos
,
boolean
forceOut
,
String
subSourceId
,
boolean
isSingleOut
,
String
rgbCode
)
{
Barcode
barcode
=
pos
.
getBarcode
();
if
(
barcode
!=
null
)
{
if
(
barcode
.
isSolder
())
{
//锡膏出库
log
.
info
(
"设置库位["
+
pos
.
getPosName
()
+
"]中的锡膏["
+
barcode
.
getBarcode
()
+
"]的出库时间为立即出库"
);
try
{
barcode
.
setNeedOutDate
(
new
Date
());
barcode
=
barcodeManager
.
save
(
barcode
);
pos
.
setBarcode
(
barcode
);
storagePosManager
.
save
(
pos
);
return
""
;
}
catch
(
ValidateException
e
)
{
e
.
printStackTrace
();
}
}
}
else
{
if
(!
forceOut
)
{
String
msg
=
"库位["
+
pos
.
getPosName
()
+
"]中已无物料,忽略"
;
log
.
info
(
msg
);
//return msg;
return
"allBoxView.noReel"
;
}
}
Collection
<
DataLog
>
allTasks
=
taskMap
.
values
();
for
(
DataLog
taskInList
:
allTasks
)
{
if
(
taskInList
.
getPosId
()
==
null
)
continue
;
if
(
taskInList
.
getPosId
().
equals
(
pos
.
getId
()))
{
String
msg
=
"库位【"
+
pos
.
getPosName
()
+
"已在任务列表中,忽略】"
;
log
.
info
(
msg
);
//return msg;
return
"order.error.executing"
;
}
}
DataLog
task
=
newTask
(
pos
);
task
.
setType
(
StorageConstants
.
OP
.
CHECKOUT
);
task
.
setStatus
(
StorageConstants
.
OP_STATUS
.
WAIT
.
name
());
task
.
setSingleOut
(
isSingleOut
);
//判断颜色是否为空
if
(
StringUtils
.
isNotBlank
(
rgbCode
)){
task
.
setLightColor
(
rgbCode
);
}
//工单出库任务
if
(!
Strings
.
isNullOrEmpty
(
subSourceId
))
{
LiteOrderItem
liteOrderItem
=
liteOrderItemDao
.
findOneById
(
subSourceId
);
if
(
liteOrderItem
!=
null
)
{
String
orderNo
=
liteOrderItem
.
getOrderNo
();
LiteOrder
cacheOrder
=
liteOrderMap
.
get
(
orderNo
);
if
(
cacheOrder
==
null
||
cacheOrder
.
isOutOne
()
||
cacheOrder
.
isTaskFinished
()
||
cacheOrder
.
isNew
())
{
if
(
cacheOrder
==
null
)
{
//缓存中没有,加入到缓存中
cacheOrder
=
liteOrderDao
.
findWithItemsByOrderNo
(
orderNo
);
cacheOrder
.
setTaskReelCount
(
1
);
cacheOrder
.
setFinishedReelCount
(
0
);
}
else
if
(
cacheOrder
.
isOutOne
()
||
cacheOrder
.
isOutOneFinished
())
{
//数量+上去
cacheOrder
.
setTaskReelCount
(
cacheOrder
.
getTaskReelCount
()
+
1
);
}
else
{
cacheOrder
.
setTaskReelCount
(
1
);
cacheOrder
.
setFinishedReelCount
(
0
);
}
cacheOrder
.
setTaskFinishedTime
(-
1
);
log
.
info
(
"订单["
+
orderNo
+
"]补料任务"
+
task
.
getBarcode
()
+
" 任务数:"
+
cacheOrder
.
getFinishedReelCount
()
+
"/"
+
cacheOrder
.
getTaskReelCount
());
task
.
setSourceId
(
cacheOrder
.
getId
());
task
.
setSourceName
(
orderNo
);
task
.
setSubSourceId
(
liteOrderItem
.
getId
());
task
.
setSubSourceInfo
(
liteOrderItem
.
getFeederInfo
());
cacheOrder
.
setStatus
(
StorageConstants
.
LITEORDER_STATUS
.
ONE
);
liteOrderDao
.
save
(
cacheOrder
);
liteOrderMap
.
put
(
orderNo
,
cacheOrder
);
}
else
{
//return "无法执行工单补料任务";
return
"order.out.failed"
;
}
}
else
{
//return "未找到工单信息";
return
"order.out.notFound"
;
}
}
task
=
dataLogDao
.
save
(
task
);
addTaskToExecute
(
task
);
return
""
;
}
/**
/**
* 加入要执行的任务
* 加入要执行的任务
*/
*/
...
...
myproject/src/main/resources/StorageResources_jp.properties
查看文件 @
9e19511
...
@@ -430,3 +430,5 @@ storage.type.smdDuo=SMD-DUO
...
@@ -430,3 +430,5 @@ storage.type.smdDuo=SMD-DUO
error.storage.offline
=
\u
30C7
\u
30D0
\u
30A4
\u
30B9[{0}]
\u
30AA
\u
30D5
\u
30E9
\u
30A4
\u
30F3
error.storage.offline
=
\u
30C7
\u
30D0
\u
30A4
\u
30B9[{0}]
\u
30AA
\u
30D5
\u
30E9
\u
30A4
\u
30F3
barcode.error.maxRule
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u
30EB
\u
30FC
\u
30EB
\u
306E
\u6700\u5927\u5024\u
306F12
barcode.error.maxRule
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u
30EB
\u
30FC
\u
30EB
\u
306E
\u6700\u5927\u5024\u
306F12
error.barcode.taskNotEnd
=
\u
30D1
\u
30EC
\u
30C3
\u
30C8[{0}]
\u
306B
\u
5BFE
\u3059\u
308B
\u
64CD
\u
4F5C
\u
304C
\u
5B8C
\u
4E86
\u3057\u3066\u
304A
\u3089\u
305A
\u3001\u
53CE
\u
7D0D
\u
64CD
\u
4F5C
\u
304C
\u3067\u
304D
\u
307E
\u
305B
\u3093\u3002
error.barcode.taskNotEnd
=
\u
30D1
\u
30EC
\u
30C3
\u
30C8[{0}]
\u
306B
\u
5BFE
\u3059\u
308B
\u
64CD
\u
4F5C
\u
304C
\u
5B8C
\u
4E86
\u3057\u3066\u
304A
\u3089\u
305A
\u3001\u
53CE
\u
7D0D
\u
64CD
\u
4F5C
\u
304C
\u3067\u
304D
\u
307E
\u
305B
\u3093\u3002
smfcore.mesApi.codeResolveUrl.paramNull
=
[{0}]NULL
\u5024\u
306F
\u6307\u
5B9A
\u3067\u
304D
\u
307E
\u
305B
\u3093
color.error.notExist
=
\u
30AB
\u
30E9
\u
30FC[{0}]
\u
5B58
\u5728\u3057\u
306A
\u3044
\ No newline at end of file
\ No newline at end of file
myproject/src/main/resources/StorageResources_zh_CN.properties
查看文件 @
9e19511
...
@@ -431,3 +431,5 @@ storage.type.smdDuo=SMD-DUO
...
@@ -431,3 +431,5 @@ storage.type.smdDuo=SMD-DUO
error.storage.offline
=
\u
8BBE
\u5907
[{0}]
\u
79BB
\u
7EBF
error.storage.offline
=
\u
8BBE
\u5907
[{0}]
\u
79BB
\u
7EBF
barcode.error.maxRule
=
\u6761\u7801\u
89C4
\u5219\u7684\u6700\u5927\u6570\u
91CF
\u
4E3A12
barcode.error.maxRule
=
\u6761\u7801\u
89C4
\u5219\u7684\u6700\u5927\u6570\u
91CF
\u
4E3A12
error.barcode.taskNotEnd
=
\u6599\u
76D8[{0}]
\u7684\u
64CD
\u
4F5C
\u
672A
\u
5B8C
\u6210
,
\u
65E0
\u
6CD5
\u6267\u
884C
\u5165\u
5E93
\u
64CD
\u
4F5C
error.barcode.taskNotEnd
=
\u6599\u
76D8[{0}]
\u7684\u
64CD
\u
4F5C
\u
672A
\u
5B8C
\u6210
,
\u
65E0
\u
6CD5
\u6267\u
884C
\u5165\u
5E93
\u
64CD
\u
4F5C
smfcore.mesApi.codeResolveUrl.paramNull
=
[{0}]
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
color.error.notExist
=
\u
989C
\u8272
{0}
\u
4E0D
\u
5B58
\u5728
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论