Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 5aab6932
由
LN
编写于
2023-02-24 13:53:20 +0800
浏览文件
选项
浏览文件
标签
下载
差异文件
Merge remote-tracking branch 'origin/master'
2 个父辈
ad7cafb0
4e1d8062
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
50 行增加
和
69 行删除
src/main/java/com/neotel/smfcore/core/barcode/bean/BarcodeRule.java
src/main/java/com/neotel/smfcore/core/barcode/service/po/Barcode.java
src/main/java/com/neotel/smfcore/custom/panacim/PanaApiController.java
src/main/java/com/neotel/smfcore/core/barcode/bean/BarcodeRule.java
查看文件 @
5aab693
...
...
@@ -24,6 +24,7 @@ import java.util.Map;
* BATCH 为批次
* MSL 为MSL等级
* MEMO 备注信息
* MPN 生产商物料编号
*
*
*
...
...
@@ -135,9 +136,11 @@ public class BarcodeRule {
for
(
int
i
=
0
;
i
<
tempArr
.
length
;
i
++)
{
String
fieldValue
=
tempArr
[
i
];
fieldValue
=
resolveField
(
newRule
.
mpn_item
,
fieldValue
,
i
);
if
(!
newRule
.
partNumber_item
.
hasThisField
()){
if
(
newRule
.
partNumber_item
.
matchRule
(
fieldValue
,
i
)){
log
.
info
(
"partNumber: 为"
+
newRule
.
partNumber_item
.
toString
());
fieldValue
=
fieldValue
.
replace
(
newRule
.
partNumber_item
.
name
,
""
);
}
}
if
(!
newRule
.
whole_reelId_item
.
hasThisField
()
&&
!
newRule
.
reelId_item
.
hasThisField
()){
...
...
@@ -216,6 +219,17 @@ public class BarcodeRule {
return
newRule
;
}
private
static
String
resolveField
(
RuleItem
ruleItem
,
String
fieldValue
,
int
ruleIndex
){
if
(!
ruleItem
.
hasThisField
()){
if
(
ruleItem
.
matchRule
(
fieldValue
,
ruleIndex
)){
log
.
info
(
ruleItem
.
name
+
" 为"
+
ruleItem
.
toString
());
fieldValue
=
fieldValue
.
replace
(
ruleItem
.
name
,
""
);
}
}
return
fieldValue
;
}
private
String
ruleStr
;
private
String
separator
;
private
int
length
=
0
;
...
...
@@ -234,6 +248,7 @@ public class BarcodeRule {
private
RuleItem
batch_item
=
new
RuleItem
(
"BATCH"
);
private
RuleItem
msl_item
=
new
RuleItem
(
"MSL"
);
private
RuleItem
memo_item
=
new
RuleItem
(
"MEMO"
);
private
RuleItem
mpn_item
=
new
RuleItem
(
"MPN"
);
private
class
RuleItem
{
private
RuleItem
(
String
ruleName
)
{
...
...
@@ -476,10 +491,6 @@ public class BarcodeRule {
}
}
public
static
void
toRule
(
String
codeStr
){
String
[]
codeArr
=
new
String
[]{
codeStr
};
}
/**
* 从条码中解析尺寸和条码
...
...
@@ -540,54 +551,6 @@ public class BarcodeRule {
log
.
info
(
"开始解析条码["
+
codeStr
+
"]"
);
CodeBean
codeBean
=
splitCodeAndSize
(
codeStr
);
// CodeBean codeBean = new CodeBean();
// codeBean.setCodeStr(codeStr);
// //是否带有位置信息
// float locationX = -1f;
// float locationY = -1f;
// int reelWidth = -1;
// int reelHeight = -1;
// //=摄像头编号+条码X坐标x条码Y坐标-料盘尺寸=CODE
// //=1+123.4x100.5-7x12=CODE或者7x12=CODE
// if(codeStr.startsWith("=") && codeStr.contains("x")){
// codeStr = codeStr.substring(1);
// String[] arr = codeStr.split("=", 2);
// String sizeStr = arr[0];
// if(sizeStr.contains("+") && sizeStr.contains("-")){
// String[] locationSizeArr = sizeStr.split("-",2);
// //尺寸信息
// sizeStr = locationSizeArr[1];
//
// String[] locationInfoArr = locationSizeArr[0].split("\\+");
// String cameraIndexStr = locationInfoArr[0];
// //摄像头编号信息
// int cameraIndex = Integer.valueOf(cameraIndexStr);
//
// codeBean.setCameraIndex(cameraIndex);
//
// String locationStr = locationInfoArr[1];
//
// //带有位置信息
// String[] locationArr = locationStr.split("x");
// locationX = Float.valueOf(locationArr[0].trim());
// locationY = Float.valueOf(locationArr[1].trim());
// }
//
// //带有料盘宽高信息
// if(!Strings.isNullOrEmpty(sizeStr)){
// String[] sizeInfoArr = sizeStr.split("x",2);
// reelWidth = Integer.parseInt(sizeInfoArr[0].trim());
// reelHeight = Integer.parseInt(sizeInfoArr[1].trim());
// }
//
// codeBean.setLocationX(locationX);
// codeBean.setLocationY(locationY);
// codeBean.setReelWidth(reelWidth);
// codeBean.setReelHeight(reelHeight);
// codeStr = arr[1];
//
// }
// codeBean.setCodeStr(codeStr);
if
(!
isValidRule
()){
codeBean
.
setError
(
"smfcore.error.barcode.noRule"
,
"解析规则未定义"
);
return
codeBean
;
...
...
@@ -629,6 +592,16 @@ public class BarcodeRule {
codeBean
.
setError
(
"smfcore.error.barcode.noField"
,
new
String
[]{
"PN"
},
"条码解析失败,未找到{0}字段"
);
return
codeBean
;
}
if
(
mpn_item
.
hasThisField
()){
String
mpn
=
mpn_item
.
getStrValue
(
codeArr
);
b
.
setMpn
(
mpn
);
if
(
Strings
.
isNullOrEmpty
(
mpn
)){
log
.
info
(
"MPN解析失败"
);
codeBean
.
setError
(
"smfcore.error.mpn.noField"
,
new
String
[]{
"MPN"
},
"MPN解析失败"
);
return
codeBean
;
}
}
if
(
batch_item
.
hasThisField
()){
String
batch
=
batch_item
.
getStrValue
(
codeArr
);
b
.
setBatch
(
batch
);
...
...
@@ -865,7 +838,7 @@ public class BarcodeRule {
rule
=
"EXPDATEyyMMdd[12:0:-1]|BATCH[2:0:-1]|QTY[2:0:-1]|RI[2:0:-1]|PN[1:0:-1]|XXX"
;
codeStr
=
"=1+0x0-400x62=zJFSRW46.11+250205|1TJFSRW46.11|7Q404|1TJFSRW46.11|P530828|1PMT29F2T08ELLEEG7-QD:E"
;
rule
=
"EXPDATEyyMMdd[12:0:-1]|BATCH[2:0:-1]|QTY[2:0:-1]|RI[2:0:-1]|PN[1:0:-1]|
XXX
"
;
rule
=
"EXPDATEyyMMdd[12:0:-1]|BATCH[2:0:-1]|QTY[2:0:-1]|RI[2:0:-1]|PN[1:0:-1]|
MPN[-1:0:2]
"
;
// rule="PN[1:0:-1]|BATCH[2:0:-1]|LOT[2:0:-1]|QTY[2_7Q:0:-1]|RI[1:0:-1]|SP[3:0:-1]|PRODATEyyyyMMdd[2:0:-1]|xxx";
BarcodeRule
br
=
BarcodeRule
.
newRule
(
rule
);
...
...
@@ -880,6 +853,7 @@ public class BarcodeRule {
System
.
out
.
println
(
"EXPDATE:"
+
b
.
getExpireDate
());
System
.
out
.
println
(
"Supllier:"
+
b
.
getProvider
());
System
.
out
.
println
(
"Memo:"
+
b
.
getMemo
());
System
.
out
.
println
(
"MPN:"
+
b
.
getMpn
());
}
else
{
System
.
out
.
println
(
"解析失败"
);
log
.
info
(
"解析失败"
);
...
...
src/main/java/com/neotel/smfcore/core/barcode/service/po/Barcode.java
查看文件 @
5aab693
...
...
@@ -66,6 +66,11 @@ public class Barcode extends BasePo implements Serializable {
* 料件编号
*/
private
String
partNumber
;
/**
* 制造商物料编号
*/
private
String
mpn
;
/**
* 供应商编号
*/
...
...
src/main/java/com/neotel/smfcore/custom/panacim/PanaApiController.java
查看文件 @
5aab693
...
...
@@ -48,6 +48,8 @@ public class PanaApiController extends BaseSmfApiListener {
protected
static
DataCache
dataCache
;
private
static
String
PanaTowerID
=
"SMDBOX"
;
@Autowired
protected
CodeResolve
codeResolve
;
...
...
@@ -154,7 +156,7 @@ public class PanaApiController extends BaseSmfApiListener {
result
.
put
(
"TransactionID"
,
TransactionID
);
result
.
put
(
"ErrorCode"
,
"0"
);
result
.
put
(
"JobID"
,
JobID
);
result
.
put
(
"TowerID"
,
TowerID
);
result
.
put
(
"TowerID"
,
Pana
TowerID
);
result
.
put
(
"ReelBarcodesDelivered"
,
ReelBarcodesDelivered
);
result
.
put
(
"ReelBarcodesNonExisting"
,
ReelBarcodesNonExisting
);
...
...
@@ -187,24 +189,24 @@ public class PanaApiController extends BaseSmfApiListener {
}
*/
Collection
<
Storage
>
allStorage
=
dataCache
.
getAllStorage
().
values
();
List
<
Storage
>
storageList
=
Lists
.
newArrayList
()
;
if
(
Strings
.
isNullOrEmpty
(
TowerID
)){
storageList
.
addAll
(
allStorage
);
}
else
{
for
(
Storage
storage
:
allStorage
)
{
if
(
storage
.
getName
().
equals
(
TowerID
)){
storageList
.
add
(
storage
);
break
;
}
}
}
Collection
<
Storage
>
storageList
=
allStorage
;
//
if(Strings.isNullOrEmpty(TowerID)){
//
storageList.addAll(allStorage);
//
}else{
//
for (Storage storage : allStorage) {
//
if(storage.getName().equals(TowerID)){
//
storageList.add(storage);
//
break;
//
}
//
}
//
}
List
ReelBarCodes
=
Lists
.
newArrayList
();
for
(
Storage
storage
:
storageList
)
{
List
<
StoragePos
>
poses
=
storagePosManager
.
findNotEmptyByStorageId
(
storage
.
getId
());
for
(
StoragePos
pos
:
poses
){
Barcode
barcode
=
pos
.
getBarcode
();
Map
<
String
,
Object
>
item
=
Maps
.
newHashMap
();
item
.
put
(
"TowerID"
,
TowerID
);
item
.
put
(
"TowerID"
,
Pana
TowerID
);
item
.
put
(
"JobID"
,
barcode
.
getLockName
());
item
.
put
(
"ReelBarcode"
,
barcode
.
getBarcode
());
item
.
put
(
"PartNo"
,
barcode
.
getPartNumber
());
...
...
@@ -363,7 +365,7 @@ public class PanaApiController extends BaseSmfApiListener {
result
.
put
(
"TransactionID"
,
TransactionID
);
result
.
put
(
"ErrorCode"
,
"0"
);
result
.
put
(
"JobID"
,
JobID
);
result
.
put
(
"TowerID"
,
TowerID
);
result
.
put
(
"TowerID"
,
Pana
TowerID
);
result
.
put
(
"ReelBarcodesFailed"
,
ReelBarcodesFailed
);
}
...
...
@@ -571,7 +573,7 @@ public class PanaApiController extends BaseSmfApiListener {
params
.
put
(
"Msd"
,
false
);
params
.
put
(
"MsdLevel"
,
"1"
);
params
.
put
(
"Location"
,
"0"
);
params
.
put
(
"TowerID"
,
task
.
getStorageName
()
);
params
.
put
(
"TowerID"
,
PanaTowerID
);
log
.
info
(
"向 PanaCIM["
+
inNotifyApi
+
"] 通知料盘【"
+
task
.
getBarcode
()+
"】的入库信息:"
+
params
);
String
result
=
HttpHelper
.
postJson
(
inNotifyApi
,
params
);
log
.
info
(
"Response Of checkInNotification From PanaCIM:"
+
result
);
...
...
@@ -599,7 +601,7 @@ public class PanaApiController extends BaseSmfApiListener {
params
.
put
(
"Quantity"
,
task
.
getNum
());
SimpleDateFormat
dataformat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
params
.
put
(
"Timestamp"
,
dataformat
.
format
(
new
Date
()));
params
.
put
(
"TowerID"
,
task
.
getStorageName
()
);
params
.
put
(
"TowerID"
,
PanaTowerID
);
params
.
put
(
"JobID"
,
task
.
getSourceId
());
params
.
put
(
"Msd"
,
false
);
params
.
put
(
"MsdLevel"
,
"1"
);
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论