Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit c8c51f1f
由
LN
编写于
2023-02-28 16:26:14 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1053:1.Pn出库增加数量。2.工单上传修改。
1 个父辈
23cc13c3
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
98 行增加
和
32 行删除
src/main/java/com/neotel/smfcore/common/excel/ExcelReader.java
src/main/java/com/neotel/smfcore/core/order/listener/DefaultOrderFileListener.java
src/main/java/com/neotel/smfcore/core/storage/rest/dto/TacticsOutDto.java
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
src/main/java/com/neotel/smfcore/custom/micron1053/controller/MicronDeviceController.java
src/main/java/com/neotel/smfcore/custom/micron1053/util/MicronDataCache.java
src/main/resources/messages.properties
src/main/resources/messages_en_US.properties
src/main/resources/messages_ja_JP.properties
src/main/resources/messages_zh_CN.properties
src/main/resources/messages_zh_TW.properties
src/main/java/com/neotel/smfcore/common/excel/ExcelReader.java
查看文件 @
c8c51f1
...
...
@@ -8,10 +8,16 @@ import java.util.Map;
public
class
ExcelReader
{
public
static
List
<
Map
<
Integer
,
String
>>
noModelRead
(
String
fileName
)
{
public
static
List
<
Map
<
Integer
,
String
>>
noModelRead
(
String
fileName
,
int
headRowNumber
)
{
// 这里 只要,然后读取第一个sheet 同步读取会自动finish
NoModelDataListener
listener
=
new
NoModelDataListener
();
EasyExcel
.
read
(
fileName
,
listener
).
sheet
().
doRead
();
if
(
headRowNumber
<=
1
){
EasyExcel
.
read
(
fileName
,
listener
).
sheet
().
doRead
();
}
else
{
EasyExcel
.
read
(
fileName
,
listener
).
sheet
().
headRowNumber
(
headRowNumber
).
doRead
();
}
List
<
Map
<
Integer
,
String
>>
data
=
listener
.
getData
();
Map
<
Integer
,
String
>
headerMap
=
listener
.
getHeaderMap
();
if
(
headerMap
!=
null
)
{
...
...
@@ -22,18 +28,7 @@ public class ExcelReader {
}
return
data
;
}
// public static List<OrderLineItem> ReadOrder(String fileName){
// ExcelReaderBuilder workBook = EasyExcel.read
// (fileName, OrderLineItem.class, new OrderReaderListener());
//
// // 封装工作表
// ExcelReaderSheetBuilder sheet1 = workBook.sheet();
// // 读取
// sheet1.doRead();
//
// //写入数据库
// List<OrderLineItem> orderLineItems = OrderReaderListener.getStudentList();
// return orderLineItems;
//
// }
public
static
List
<
Map
<
Integer
,
String
>>
noModelRead
(
String
fileName
)
{
return
noModelRead
(
fileName
,
1
);
}
}
src/main/java/com/neotel/smfcore/core/order/listener/DefaultOrderFileListener.java
查看文件 @
c8c51f1
...
...
@@ -202,14 +202,17 @@ public class DefaultOrderFileListener implements IOrderFileListener {
return
null
;
}
public
Map
<
String
,
List
<
LiteOrderItem
>>
readExcelFile
(
String
fileName
,
String
fileURL
)
{
return
readExcelFile
(
fileName
,
fileURL
,
1
);
}
public
Map
<
String
,
List
<
LiteOrderItem
>>
readExcelFile
(
String
fileName
,
String
fileURL
)
{
public
Map
<
String
,
List
<
LiteOrderItem
>>
readExcelFile
(
String
fileName
,
String
fileURL
,
int
headRowNumber
)
{
try
{
fileName
=
fileName
.
replace
(
".xlsx"
,
""
);
Map
<
String
,
List
<
LiteOrderItem
>>
itemMap
=
new
HashMap
<>();
List
<
Map
<
Integer
,
String
>>
data
=
ExcelReader
.
noModelRead
(
fileURL
);
List
<
Map
<
Integer
,
String
>>
data
=
ExcelReader
.
noModelRead
(
fileURL
,
headRowNumber
);
if
(
data
!=
null
&&
data
.
size
()>=
2
){
...
...
@@ -217,14 +220,27 @@ public class DefaultOrderFileListener implements IOrderFileListener {
Map
<
String
,
Integer
>
headerMap
=
new
HashMap
<>();
for
(
Integer
key
:
headerData
.
keySet
())
{
if
(
ObjectUtil
.
isEmpty
(
key
)){
continue
;
}
String
v
=
headerData
.
get
(
key
);
headerMap
.
put
(
v
,
key
);
}
}
OrderSetting
orderSetting
=
dataCache
.
getOrderSetting
();
int
partNumberIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getPn
(),-
1
);
int
riIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getRi
(),-
1
);
if
(
partNumberIndex
==-
1
&&
riIndex
==-
1
){
if
(
headRowNumber
<=
1
){
log
.
error
(
"文件["
+
fileName
+
"],未找到列PN或RI,当前headRowNumber=["
+
headRowNumber
+
"],设置headRowNumber=3重新读取"
);
return
readExcelFile
(
fileName
,
fileURL
,
3
);
}
else
{
log
.
error
(
"文件["
+
fileName
+
"],未找到列PN或RI,当前headRowNumber=["
+
headRowNumber
+
"],读取文件失败,返回null"
);
}
}
int
qtyIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getQty
(),-
1
);
int
feederIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getFeeder
(),-
1
);
int
riIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getRi
(),-
1
);
int
soIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getSo
(),-
1
);
int
numIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getNum
(),-
1
);
int
mpnIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getMpn
(),-
1
);
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/dto/TacticsOutDto.java
查看文件 @
c8c51f1
...
...
@@ -15,6 +15,10 @@ public class TacticsOutDto implements Serializable {
@ApiModelProperty
(
"出库盘数"
)
private
Integer
plateNumber
;
@ApiModelProperty
(
"数量"
)
private
int
needNum
=
0
;
@ApiModelProperty
(
"料仓Id"
)
private
String
storageId
;
}
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
c8c51f1
...
...
@@ -985,11 +985,14 @@ public class TaskService {
//其他出库模式一次性全部生成任务
for
(
TacticsOutDto
item
:
tacticsOutDtos
)
{
log
.
info
(
"开始执行策略出库["
+
item
.
getPartNumber
()
+
"] ["
+
item
.
getStorageId
()
+
"] 盘数="
+
item
.
getPlateNumber
());
log
.
info
(
"开始执行策略出库["
+
item
.
getPartNumber
()
+
"] ["
+
item
.
getStorageId
()
+
"] 盘数="
+
item
.
getPlateNumber
()
+
",数量="
+
item
.
getNeedNum
()
);
String
partNumber
=
item
.
getPartNumber
();
for
(
int
i
=
1
;
i
<=
item
.
getPlateNumber
();
i
++)
{
Collection
<
String
>
excludePosIds
=
excludePosIds
();
int
currNum
=
0
;
int
reelNum
=
0
;
while
(
reelNum
<
item
.
getPlateNumber
()||
currNum
<
item
.
getNeedNum
())
// for (int i = 1; i <= item.getPlateNumber(); i++) {
{
Collection
<
String
>
excludePosIds
=
excludePosIds
();
StoragePos
pos
=
null
;
if
(
item
.
getStorageId
()
!=
null
)
{
String
[]
storageIds
=
new
String
[]{
item
.
getStorageId
()};
...
...
@@ -1001,7 +1004,9 @@ public class TaskService {
log
.
error
(
"策略出库["
+
item
.
getPartNumber
()
+
"] 未找到可以出库的物料["
+
partNumber
+
"]"
);
break
;
}
else
{
log
.
info
(
"策略出库,PN["
+
item
.
getPartNumber
()
+
"]第["
+
i
+
"]盘, 出库位置仓位【"
+
pos
.
getPosName
()
+
"】RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"] PN=["
+
partNumber
+
"] num:"
+
pos
.
getBarcode
().
getAmount
());
currNum
+=
pos
.
getBarcode
().
getAmount
();
reelNum
+=
1
;
log
.
info
(
"策略出库,PN["
+
item
.
getPartNumber
()
+
"]第["
+
reelNum
+
"]盘, 出库位置仓位【"
+
pos
.
getPosName
()
+
"】RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"] PN=["
+
partNumber
+
"] num:"
+
pos
.
getBarcode
().
getAmount
()+
",累计数量:"
+
currNum
);
DataLog
task
=
newTask
(
pos
);
task
.
setType
(
OP
.
CHECKOUT
);
task
.
setOperator
(
SecurityUtils
.
getCurrentUsername
());
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/controller/MicronDeviceController.java
查看文件 @
c8c51f1
...
...
@@ -78,8 +78,25 @@ public class MicronDeviceController {
return
ResultBean
.
newOkResult
(
resultMap
);
}
@ApiOperation
(
"更新设备数据"
)
@PostMapping
(
value
=
"/updateData"
)
@ResponseBody
@AnonymousAccess
public
ResultBean
updateData
(
HttpServletRequest
request
)
{
String
key
=
request
.
getParameter
(
"key"
);
Object
value
=
request
.
getParameter
(
"value"
);
MicronDataCache
.
updateDData
(
key
,
value
);
return
ResultBean
.
newOkResult
(
key
);
}
@ApiOperation
(
"获取设备数据"
)
@PostMapping
(
value
=
"/getData"
)
@ResponseBody
@AnonymousAccess
public
ResultBean
getData
(
HttpServletRequest
request
)
{
String
key
=
request
.
getParameter
(
"key"
);
Object
value
=
MicronDataCache
.
getDDate
(
key
);
return
ResultBean
.
newOkResult
(
value
);
}
// @ApiOperation("ML5设备状态更新")
// @PostMapping(value = "ml5/updateStatus")
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/util/MicronDataCache.java
查看文件 @
c8c51f1
package
com
.
neotel
.
smfcore
.
custom
.
micron1053
.
util
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.custom.micron1053.bean.EquipMsg
;
import
com.neotel.smfcore.custom.micron1053.bean.MicronEquipStatus
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.*
;
/**
* 设备状态缓存类
...
...
@@ -19,8 +20,22 @@ public class MicronDataCache {
if
(
bean
==
null
)
{
return
;
}
bean
.
setUpdateTime
(
System
.
currentTimeMillis
());
List
<
EquipMsg
>
msgs
=
new
ArrayList
<>();
if
(
bean
.
getMsgList
()!=
null
&&
bean
.
getMsgList
().
size
()>
0
){
for
(
EquipMsg
msg
:
bean
.
getMsgList
())
{
if
(
ObjectUtil
.
isEmpty
(
msg
.
getName
())){
msg
.
setName
(
bean
.
getEquipName
());
}
if
(
msg
.
getTime
()==
null
){
msg
.
setTime
(
new
Date
());
}
msgs
.
add
(
msg
);
}
bean
.
setMsgList
(
msgs
);
}
bean
.
setUpdateTime
(
System
.
currentTimeMillis
());
if
(
equipStatusMap
.
containsKey
(
bean
.
getEquipName
()))
{
equipStatusMap
.
remove
(
bean
.
getEquipName
());
}
...
...
@@ -121,4 +136,13 @@ public class MicronDataCache {
}
}
private
static
Map
<
String
,
Object
>
deviceDataMap
=
new
HashMap
<>();
public
static
void
updateDData
(
String
key
,
Object
value
){
deviceDataMap
.
put
(
key
,
value
);
}
public
static
Object
getDDate
(
String
key
)
{
Object
value
=
deviceDataMap
.
getOrDefault
(
key
,
""
);
return
value
;
}
}
src/main/resources/messages.properties
查看文件 @
c8c51f1
...
...
@@ -303,6 +303,7 @@ smfcore.ml2=MI2
smfcore.diagnosis
=
Diagnosis
smfcore.helps
=
Help
smfcore.error.storage.noPos
=
{0}
\u7684\u6599\u
683C[{1}]
\u
5DF2
\u
6EE1,
\u
65E0
\u
6CD5
\u
7EE7
\u
7EED
\u
653E
\u5165
smfcore.status
=
Status
#smfclient.nlp.onlyOneTray=\u4E0D\u53EF\u540C\u65F6\u653E\u5165\u591A\u76D8\u7269\u6599:{0}
#smfclient.nlp.cannotFindPos={0}\u672A\u627E\u5230\u5E93\u4F4D:{1}
#smfclient.nlp.inputOk={0}\u5165\u5E93\u5230{1}\u6210\u529F
...
...
src/main/resources/messages_en_US.properties
查看文件 @
c8c51f1
...
...
@@ -301,4 +301,5 @@ smfcore.ml=MI1
smfcore.ml2
=
MI2
smfcore.diagnosis
=
Diagnosis
smfcore.helps
=
Help
smfcore.error.storage.noPos
=
{0}'s cell [{1}] is full and cannot be added
\ No newline at end of file
smfcore.error.storage.noPos
=
{0}'s cell [{1}] is full and cannot be added
smfcore.status
=
Status
\ No newline at end of file
src/main/resources/messages_ja_JP.properties
查看文件 @
c8c51f1
...
...
@@ -299,3 +299,4 @@ smfcore.ml2=MI2
smfcore.diagnosis
=
Diagnosis
smfcore.helps
=
Help
smfcore.error.storage.noPos
=
{0}
\u7684\u6599\u
683C[{1}]
\u
5DF2
\u
6EE1,
\u
65E0
\u
6CD5
\u
7EE7
\u
7EED
\u
653E
\u5165
smfcore.status
=
Status
src/main/resources/messages_zh_CN.properties
查看文件 @
c8c51f1
...
...
@@ -298,4 +298,5 @@ smfcore.ml=MI1
smfcore.ml2
=
MI2
smfcore.diagnosis
=
Diagnosis
smfcore.helps
=
Help
smfcore.error.storage.noPos
=
{0}
\u7684\u6599\u
683C[{1}]
\u
5DF2
\u
6EE1,
\u
65E0
\u
6CD5
\u
7EE7
\u
7EED
\u
653E
\u5165
\ No newline at end of file
smfcore.error.storage.noPos
=
{0}
\u7684\u6599\u
683C[{1}]
\u
5DF2
\u
6EE1,
\u
65E0
\u
6CD5
\u
7EE7
\u
7EED
\u
653E
\u5165
smfcore.status
=
Status
\ No newline at end of file
src/main/resources/messages_zh_TW.properties
查看文件 @
c8c51f1
...
...
@@ -299,4 +299,5 @@ smfcore.ml=MI1
smfcore.ml2
=
MI2
smfcore.diagnosis
=
Diagnosis
smfcore.helps
=
Help
smfcore.error.storage.noPos
=
{0}
\u7684\u6599\u
683C[{1}]
\u
5DF2
\u
6EFF,
\u7121\u
6CD5
\u
7E7C
\u
7E8C
\u
653E
\u5165
\ No newline at end of file
smfcore.error.storage.noPos
=
{0}
\u7684\u6599\u
683C[{1}]
\u
5DF2
\u
6EFF,
\u7121\u
6CD5
\u
7E7C
\u
7E8C
\u
653E
\u5165
smfcore.status
=
Status
\ No newline at end of file
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论