Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit d1c67edd
由
LN
编写于
2022-02-28 10:23:35 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
增加设备通信接口:cidIsExists和uploadStoragePos
1 个父辈
76e4e688
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
237 行增加
和
115 行删除
src/main/java/com/neotel/smfcore/core/device/bean/PosInfo.java
src/main/java/com/neotel/smfcore/core/device/bean/StatusBean.java
src/main/java/com/neotel/smfcore/core/device/rest/DeviceController.java
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
src/main/java/com/neotel/smfcore/core/storage/service/po/StoragePos.java
src/main/java/com/neotel/smfcore/core/device/bean/PosInfo.java
0 → 100644
查看文件 @
d1c67ed
package
com
.
neotel
.
smfcore
.
core
.
device
.
bean
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
public
class
PosInfo
implements
Serializable
{
/**
* 库位号
*/
private
String
pos
;
/**
* 优先级
*/
private
Integer
pri
;
/**
* 高度
*/
private
Integer
h
;
/**
* 宽度
*/
private
Integer
w
;
}
src/main/java/com/neotel/smfcore/core/device/bean/StatusBean.java
查看文件 @
d1c67ed
...
@@ -102,6 +102,8 @@ public class StatusBean {
...
@@ -102,6 +102,8 @@ public class StatusBean {
*/
*/
private
long
offlineTime
=-
1
;
private
long
offlineTime
=-
1
;
private
List
<
PosInfo
>
posList
=
null
;
/**
/**
* 获取已经结束(缓存中存在,但新的报警列表不存在)的报警列表,同时将新的报警加入到缓存中
* 获取已经结束(缓存中存在,但新的报警列表不存在)的报警列表,同时将新的报警加入到缓存中
*/
*/
...
@@ -289,77 +291,6 @@ public class StatusBean {
...
@@ -289,77 +291,6 @@ public class StatusBean {
return
System
.
currentTimeMillis
()
-
lastSaveTime
>=
5
*
60
*
1000
;
return
System
.
currentTimeMillis
()
-
lastSaveTime
>=
5
*
60
*
1000
;
}
}
// public long getLastSaveTime() {
// return lastSaveTime;
// }
//
// public void setLastSaveTime(long lastSaveTime) {
// this.lastSaveTime = lastSaveTime;
// }
//
// public long getTime() {
// return time;
// }
//
// public void setTime(long time) {
// this.time = time;
// }
//
// public String getCid() {
// return cid;
// }
//
// public void setCid(String cid) {
// this.cid = cid;
// }
//
// public int getSeq() {
// return seq;
// }
//
// public void setSeq(int seq) {
// this.seq = seq;
// }
//
// public int getOp() {
// return op;
// }
//
// public void setOp(int op) {
// this.op = op;
// }
//
// public Map<String, String> getData() {
// return data;
// }
//
// public void setData(Map<String, String> data) {
// this.data = data;
// }
//
// public int getStatus() {
// return status;
// }
//
// public void setStatus(int status) {
// this.status = status;
// }
//
// public String getMsg() {
// return msg;
// }
//
// public void setMsg(String msg) {
// this.msg = msg;
// }
//
// public String getClientIp() {
// return clientIp;
// }
//
// public void setClientIp(String clientIp) {
// this.clientIp = clientIp;
// }
// public void setShowMsg(Locale local){
// public void setShowMsg(Locale local){
// String lang = local.getLanguage();
// String lang = local.getLanguage();
...
@@ -374,13 +305,6 @@ public class StatusBean {
...
@@ -374,13 +305,6 @@ public class StatusBean {
// this.msg = showMsg;
// this.msg = showMsg;
// }
// }
//
//
// public Map<String, BoxStatusBean> getBoxStatus() {
// return boxStatus;
// }
//
// public void setBoxStatus(Map<String, BoxStatusBean> boxStatus) {
// this.boxStatus = boxStatus;
// }
public
boolean
isAvailable
(){
public
boolean
isAvailable
(){
if
(!
timeOut
()){
if
(!
timeOut
()){
...
@@ -466,21 +390,7 @@ public class StatusBean {
...
@@ -466,21 +390,7 @@ public class StatusBean {
// }
// }
// }
// }
// public String getMsgEn() {
// return msgEn;
// }
//
// public void setMsgEn(String msgEn) {
// this.msgEn = msgEn;
// }
//
// public Map<String, String> getMsgData() {
// return msgData;
// }
//
// public void setMsgData(Map<String, String> msgData) {
// this.msgData = msgData;
// }
public
String
getDoorReelSingnal
()
{
public
String
getDoorReelSingnal
()
{
String
doorReelSignal
=
getFromData
(
"doorReelSignal"
);
String
doorReelSignal
=
getFromData
(
"doorReelSignal"
);
...
...
src/main/java/com/neotel/smfcore/core/device/rest/DeviceController.java
查看文件 @
d1c67ed
...
@@ -10,8 +10,11 @@ import com.neotel.smfcore.common.bean.ResultBean;
...
@@ -10,8 +10,11 @@ import com.neotel.smfcore.common.bean.ResultBean;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.ReelLockPosUtil
;
import
com.neotel.smfcore.common.utils.ReelLockPosUtil
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.device.bean.PosInfo
;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.message.util.DeviceMessageUtil
;
import
com.neotel.smfcore.core.message.util.DeviceMessageUtil
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
...
@@ -42,7 +45,7 @@ import java.util.*;
...
@@ -42,7 +45,7 @@ import java.util.*;
public
class
DeviceController
{
public
class
DeviceController
{
@Autowired
@Autowired
private
DataCache
dataCa
h
che
;
private
DataCache
dataCache
;
@Autowired
@Autowired
private
TaskService
taskService
;
private
TaskService
taskService
;
...
@@ -56,6 +59,9 @@ public class DeviceController {
...
@@ -56,6 +59,9 @@ public class DeviceController {
@Autowired
@Autowired
private
IStoragePosManager
storagePosManager
;
private
IStoragePosManager
storagePosManager
;
@Autowired
private
IBarcodeManager
barcodeManager
;
private
Map
<
String
,
IDeviceHandler
>
handlerMap
=
new
HashMap
<>();
private
Map
<
String
,
IDeviceHandler
>
handlerMap
=
new
HashMap
<>();
public
DeviceController
(
List
<
IDeviceHandler
>
deviceHandlerList
)
{
public
DeviceController
(
List
<
IDeviceHandler
>
deviceHandlerList
)
{
...
@@ -72,9 +78,15 @@ public class DeviceController {
...
@@ -72,9 +78,15 @@ public class DeviceController {
public
StatusBean
communication
(
@RequestBody
final
StatusBean
statusBean
,
HttpServletRequest
request
)
{
public
StatusBean
communication
(
@RequestBody
final
StatusBean
statusBean
,
HttpServletRequest
request
)
{
try
{
try
{
String
cid
=
statusBean
.
getCid
();
String
cid
=
statusBean
.
getCid
();
Storage
storage
=
dataCa
h
che
.
getStorage
(
cid
);
Storage
storage
=
dataCache
.
getStorage
(
cid
);
if
(
storage
==
null
)
{
if
(
storage
==
null
)
{
log
.
error
(
"料仓cid: ["
+
cid
+
"]不存在"
);
log
.
error
(
"料仓cid: ["
+
cid
+
"]不存在,默认自动创建料仓"
);
// //自动创建料仓
// storage = dataCahche.AutoCreateStorage(cid);
// if (storage == null) {
// return null;
// }
return
null
;
return
null
;
}
}
synchronized
(
storage
)
{
synchronized
(
storage
)
{
...
@@ -98,6 +110,7 @@ public class DeviceController {
...
@@ -98,6 +110,7 @@ public class DeviceController {
* 流水线提示消息
* 流水线提示消息
*/
*/
private
static
String
lineMsg
=
""
;
private
static
String
lineMsg
=
""
;
/**
/**
* 流水线入库查找空的料格
* 流水线入库查找空的料格
*/
*/
...
@@ -116,9 +129,9 @@ public class DeviceController {
...
@@ -116,9 +129,9 @@ public class DeviceController {
log
.
info
(
"流水线["
+
cids
+
"]获取["
+
rfid
+
"]["
+
code
+
"]的入库库位"
);
log
.
info
(
"流水线["
+
cids
+
"]获取["
+
rfid
+
"]["
+
code
+
"]的入库库位"
);
Map
<
String
,
Object
>
resultMap
=
Maps
.
newHashMap
();
Map
<
String
,
Object
>
resultMap
=
Maps
.
newHashMap
();
if
(
dataCa
h
che
.
getCache
(
Constants
.
CACHE_StopOut
))
{
if
(
dataCache
.
getCache
(
Constants
.
CACHE_StopOut
))
{
lineMsg
=
"系统更新中,暂停出入库"
;
lineMsg
=
"系统更新中,暂停出入库"
;
DeviceMessageUtil
.
updateLineMsg
(
lineMsg
,
code
,
cids
,
""
,
"smfcore.linemsg.update"
,
null
);
DeviceMessageUtil
.
updateLineMsg
(
lineMsg
,
code
,
cids
,
""
,
"smfcore.linemsg.update"
,
null
);
resultMap
.
put
(
"result"
,
"100"
);
resultMap
.
put
(
"result"
,
"100"
);
resultMap
.
put
(
"msg"
,
lineMsg
);
resultMap
.
put
(
"msg"
,
lineMsg
);
return
resultMap
;
return
resultMap
;
...
@@ -133,14 +146,14 @@ public class DeviceController {
...
@@ -133,14 +146,14 @@ public class DeviceController {
List
<
Storage
>
storageList
=
Lists
.
newArrayList
();
List
<
Storage
>
storageList
=
Lists
.
newArrayList
();
List
<
String
>
cidList
=
Lists
.
newArrayList
();
List
<
String
>
cidList
=
Lists
.
newArrayList
();
for
(
String
cid
:
cids
.
split
(
","
))
{
for
(
String
cid
:
cids
.
split
(
","
))
{
String
notIntoCids
=
dataCa
h
che
.
getSettings
().
getNotIntoCids
();
String
notIntoCids
=
dataCache
.
getSettings
().
getNotIntoCids
();
if
(
notIntoCids
!=
null
)
{
if
(
notIntoCids
!=
null
)
{
if
(
notIntoCids
.
contains
(
cid
))
{
if
(
notIntoCids
.
contains
(
cid
))
{
log
.
info
(
"料仓["
+
cid
+
"]已被屏蔽入库"
);
log
.
info
(
"料仓["
+
cid
+
"]已被屏蔽入库"
);
continue
;
continue
;
}
}
}
}
Storage
storage
=
dataCa
h
che
.
getStorage
(
cid
);
Storage
storage
=
dataCache
.
getStorage
(
cid
);
if
(
storage
!=
null
)
{
if
(
storage
!=
null
)
{
storageList
.
add
(
storage
);
storageList
.
add
(
storage
);
cidList
.
add
(
cid
);
cidList
.
add
(
cid
);
...
@@ -215,7 +228,7 @@ public class DeviceController {
...
@@ -215,7 +228,7 @@ public class DeviceController {
// }
// }
Storage
theStorage
=
dataCa
h
che
.
getStorageById
(
pos
.
getStorageId
());
Storage
theStorage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
resultMap
.
put
(
"result"
,
"0"
);
resultMap
.
put
(
"result"
,
"0"
);
resultMap
.
put
(
"msg"
,
""
);
resultMap
.
put
(
"msg"
,
""
);
...
@@ -249,10 +262,10 @@ public class DeviceController {
...
@@ -249,10 +262,10 @@ public class DeviceController {
reelLocInfo
=
ReelLockPosUtil
.
addReelLockPosInfo
(
reelLocInfo
,
cidList
);
reelLocInfo
=
ReelLockPosUtil
.
addReelLockPosInfo
(
reelLocInfo
,
cidList
);
if
(
reelLocInfo
==
null
)
{
if
(
reelLocInfo
==
null
)
{
errorMsg
=
"["
+
barcode
.
getBarcode
()
+
"]库位["
+
reelLocInfo
.
getLockPosName
()+
"]已被锁定,暂停入库"
;
errorMsg
=
"["
+
barcode
.
getBarcode
()
+
"]库位["
+
reelLocInfo
.
getLockPosName
()
+
"]已被锁定,暂停入库"
;
lineMsg
=
errorMsg
;
lineMsg
=
errorMsg
;
DeviceMessageUtil
.
updateLineMsg
(
lineMsg
,
code
,
cids
,
reelLocInfo
.
getLockPosName
(),
"smfcore.linemsg.posLock"
,
new
String
[]{
barcode
.
getBarcode
(),
reelLocInfo
.
getLockPosName
()});
DeviceMessageUtil
.
updateLineMsg
(
lineMsg
,
code
,
cids
,
reelLocInfo
.
getLockPosName
(),
"smfcore.linemsg.posLock"
,
new
String
[]{
barcode
.
getBarcode
(),
reelLocInfo
.
getLockPosName
()});
resultMap
.
put
(
"result"
,
"99"
);
resultMap
.
put
(
"result"
,
"99"
);
resultMap
.
put
(
"msg"
,
errorMsg
);
resultMap
.
put
(
"msg"
,
errorMsg
);
return
resultMap
;
return
resultMap
;
...
@@ -298,7 +311,7 @@ public class DeviceController {
...
@@ -298,7 +311,7 @@ public class DeviceController {
alarmInfoDao
.
save
(
alarmInfo
);
alarmInfoDao
.
save
(
alarmInfo
);
lineMsg
=
errorMsg
;
lineMsg
=
errorMsg
;
DeviceMessageUtil
.
updateLineMsg
(
lineMsg
,
code
,
cids
,
""
,
""
,
null
);
DeviceMessageUtil
.
updateLineMsg
(
lineMsg
,
code
,
cids
,
""
,
""
,
null
);
}
else
{
}
else
{
lineMsg
=
okMsg
;
lineMsg
=
okMsg
;
}
}
...
@@ -335,19 +348,19 @@ public class DeviceController {
...
@@ -335,19 +348,19 @@ public class DeviceController {
@AnonymousAccess
@AnonymousAccess
public
ResultBean
cancelOutTask
(
HttpServletRequest
request
)
{
public
ResultBean
cancelOutTask
(
HttpServletRequest
request
)
{
String
codeStr
=
request
.
getParameter
(
"barcode"
);
String
codeStr
=
request
.
getParameter
(
"barcode"
);
try
{
try
{
Collection
<
DataLog
>
tasks
=
taskService
.
getAllTasks
();
Collection
<
DataLog
>
tasks
=
taskService
.
getAllTasks
();
for
(
DataLog
task
:
tasks
)
{
for
(
DataLog
task
:
tasks
)
{
if
(
codeStr
.
contains
(
task
.
getBarcode
()))
{
if
(
codeStr
.
contains
(
task
.
getBarcode
()))
{
if
(
task
.
isCheckOutTask
())
{
if
(
task
.
isCheckOutTask
())
{
if
(
task
.
isWait
()
||
task
.
isExecuting
())
{
if
(
task
.
isWait
()
||
task
.
isExecuting
())
{
//未执行完成的,理论上不会从客户端取消
//未执行完成的,理论上不会从客户端取消
boolean
cancelResult
=
taskService
.
cancelTask
(
task
.
getId
());
boolean
cancelResult
=
taskService
.
cancelTask
(
task
.
getId
());
log
.
info
(
"客户端取消["
+
codeStr
+
"]的未执行完成的出库任务结果:"
+
cancelResult
);
log
.
info
(
"客户端取消["
+
codeStr
+
"]的未执行完成的出库任务结果:"
+
cancelResult
);
return
ResultBean
.
newOkResult
(
cancelResult
);
return
ResultBean
.
newOkResult
(
cancelResult
);
}
else
{
}
else
{
return
ResultBean
.
newErrorResult
(
2005
,
"smfcore.cancelOutTask.taskHasEnd"
,
"客户端取消入库任务[{0}]失败:任务已结束或已取消"
,
new
String
[]{
codeStr
});
return
ResultBean
.
newErrorResult
(
2005
,
"smfcore.cancelOutTask.taskHasEnd"
,
"客户端取消入库任务[{0}]失败:任务已结束或已取消"
,
new
String
[]{
codeStr
});
}
}
// else{
// else{
// //禁用库位
// //禁用库位
...
@@ -359,10 +372,10 @@ public class DeviceController {
...
@@ -359,10 +372,10 @@ public class DeviceController {
}
}
}
}
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
return
ResultBean
.
newErrorResult
(
2004
,
"smfcore.cancelOutTask.fail"
,
"客户端取消入库任务[{0}]失败:{1}"
,
new
String
[]{
codeStr
,
e
.
getMessage
()});
return
ResultBean
.
newErrorResult
(
2004
,
"smfcore.cancelOutTask.fail"
,
"客户端取消入库任务[{0}]失败:{1}"
,
new
String
[]{
codeStr
,
e
.
getMessage
()});
}
}
return
ResultBean
.
newErrorResult
(
2005
,
"smfcore.cancelOutTask.fail"
,
"客户端取消入库任务[{0}]失败:{1}"
,
new
String
[]{
codeStr
,
""
});
return
ResultBean
.
newErrorResult
(
2005
,
"smfcore.cancelOutTask.fail"
,
"客户端取消入库任务[{0}]失败:{1}"
,
new
String
[]{
codeStr
,
""
});
}
}
...
@@ -383,11 +396,91 @@ public class DeviceController {
...
@@ -383,11 +396,91 @@ public class DeviceController {
if
(
pos
==
null
)
{
if
(
pos
==
null
)
{
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"PosId"
,
posId
});
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"PosId"
,
posId
});
}
}
pos
.
setEnabled
(
tru
e
);
pos
.
setEnabled
(
fals
e
);
storagePosManager
.
save
(
pos
);
storagePosManager
.
save
(
pos
);
log
.
info
(
"屏蔽库位:库位号["
+
pos
.
getId
()
+
"]["
+
pos
.
getPosName
()
+
"]barcode["
+
barcode
+
"]"
);
log
.
info
(
"屏蔽库位:库位号["
+
pos
.
getId
()
+
"]["
+
pos
.
getPosName
()
+
"]barcode["
+
barcode
+
"]"
);
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
}
}
@ApiOperation
(
"客户端判断CID是否存在"
)
@RequestMapping
(
value
=
"/service/store/cidIsExists"
)
@ResponseBody
@AnonymousAccess
public
ResultBean
cidIsExists
(
HttpServletRequest
request
)
{
String
cid
=
request
.
getParameter
(
"cid"
);
Storage
storage
=
dataCache
.
getStorage
(
cid
);
if
(
storage
==
null
)
{
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"CID"
,
cid
});
}
return
ResultBean
.
newOkResult
(
cid
);
}
@ApiOperation
(
"客户端上传料仓库位列表"
)
@RequestMapping
(
value
=
"/service/store/uploadStoragePos"
)
@ResponseBody
@AnonymousAccess
public
ResultBean
uploadStoragePos
(
@RequestBody
final
StatusBean
statusBean
,
HttpServletRequest
request
)
{
String
cid
=
statusBean
.
getCid
();
Storage
storage
=
dataCache
.
getStorage
(
cid
);
if
(
storage
==
null
)
{
log
.
error
(
"uploadStoragePos料仓cid: ["
+
cid
+
"]不存在,默认自动创建料仓"
);
//自动创建料仓
storage
=
dataCache
.
AutoCreateStorage
(
cid
);
if
(
storage
==
null
)
{
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"CID"
,
cid
});
}
}
//料仓已存在,判断料仓是否有库位
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByStorage
(
storage
.
getId
());
if
(
storagePosList
.
size
()
>=
0
)
{
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.alreadyHasPos"
,
"料仓[{0}]已有库位数:[{1}]"
,
new
String
[]{
cid
,
storagePosList
.
size
()
+
""
});
}
//取库位
List
<
PosInfo
>
posInfoList
=
statusBean
.
getPosList
();
List
<
StoragePos
>
newList
=
new
ArrayList
<>();
List
<
String
>
posNameList
=
new
ArrayList
<>();
if
(
posInfoList
!=
null
&&
posInfoList
.
size
()>
0
){
int
row
=
1
;
int
newRowCount
=
0
;
for
(
PosInfo
pos
:
posInfoList
)
{
row
++;
if
(
ObjectUtil
.
isEmpty
(
pos
.
getPos
()))
{
log
.
warn
(
"第"
+
row
+
"条库位号中有空白内容,此行忽略"
);
continue
;
}
if
(
posNameList
.
contains
(
pos
.
getPos
()))
{
log
.
warn
(
"第"
+
row
+
"条库位号["
+
storage
+
"]重复,只保留第一条,忽略其他行"
);
}
else
{
StoragePos
posInfo
=
new
StoragePos
(
storage
.
getId
(),
pos
.
getPos
(),
pos
.
getH
(),
pos
.
getW
(),
pos
.
getPri
());
newRowCount
++;
newList
.
add
(
posInfo
);
}
}
if
(
newList
.
size
()>
0
){
storagePosManager
.
insertAll
(
newList
);
}
dataCache
.
reloadStorage
(
storage
,
""
);
String
msg
=
"读取到["
+
row
+
"]行数据:为料仓["
+
storage
.
getCid
()+
"]新增["
+
newRowCount
+
"]条库位号"
;
log
.
info
(
msg
);
}
return
ResultBean
.
newOkResult
(
cid
);
}
private
StoragePos
findFormList
(
List
<
StoragePos
>
list
,
String
posName
)
{
for
(
StoragePos
pos
:
list
)
{
if
(
pos
.
getPosName
().
equals
(
posName
)){
return
pos
;
}
}
return
null
;
}
}
}
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
查看文件 @
d1c67ed
...
@@ -17,6 +17,8 @@ import com.neotel.smfcore.core.language.service.po.LanguageMsg;
...
@@ -17,6 +17,8 @@ import com.neotel.smfcore.core.language.service.po.LanguageMsg;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.storage.bean.InventoryItem
;
import
com.neotel.smfcore.core.storage.bean.InventoryItem
;
import
com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE
;
import
com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE
;
import
com.neotel.smfcore.core.storage.enums.COMPATIBLE_TYPE
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.bean.OrderSetting
;
import
com.neotel.smfcore.core.system.bean.OrderSetting
;
import
com.neotel.smfcore.core.system.service.dao.ICacheItemDao
;
import
com.neotel.smfcore.core.system.service.dao.ICacheItemDao
;
...
@@ -343,6 +345,17 @@ public class DataCache {
...
@@ -343,6 +345,17 @@ public class DataCache {
}
}
return
null
;
return
null
;
}
}
/**
* 根据 料仓名称 Name 获取料仓信息
*/
public
Storage
getStorageByName
(
String
storageName
){
for
(
Storage
storage
:
getAllStorage
().
values
()){
if
(
storage
.
getName
().
equals
(
storageName
)){
return
storage
;
}
}
return
null
;
}
public
Storage
reloadStorage
(
Storage
storage
,
String
oldCid
)
throws
ValidateException
{
public
Storage
reloadStorage
(
Storage
storage
,
String
oldCid
)
throws
ValidateException
{
...
@@ -426,6 +439,9 @@ public class DataCache {
...
@@ -426,6 +439,9 @@ public class DataCache {
if
(
ObjectUtil
.
isNotEmpty
(
s
))
{
if
(
ObjectUtil
.
isNotEmpty
(
s
))
{
for
(
String
v
:
for
(
String
v
:
valueArray
)
{
valueArray
)
{
if
(
ObjectUtil
.
isEmpty
(
v
)){
continue
;
}
try
{
try
{
Pattern
pattern
=
Pattern
.
compile
(
QueryHelp
.
escapeExprSpecialWord
(
s
),
Pattern
.
CASE_INSENSITIVE
);
Pattern
pattern
=
Pattern
.
compile
(
QueryHelp
.
escapeExprSpecialWord
(
s
),
Pattern
.
CASE_INSENSITIVE
);
Matcher
m
=
pattern
.
matcher
(
v
);
Matcher
m
=
pattern
.
matcher
(
v
);
...
@@ -643,4 +659,30 @@ public class DataCache {
...
@@ -643,4 +659,30 @@ public class DataCache {
return
availableStorageIds
;
return
availableStorageIds
;
}
}
public
Storage
AutoCreateStorage
(
String
cid
)
{
//判断cid存在
Storage
storage
=
null
;
storage
=
getStorage
(
cid
);
if
(
storage
!=
null
)
{
return
storage
;
}
//判断cid是否和其他料仓名称重复,重复时无法自动创建
if
(
getStorageByName
(
cid
)
!=
null
)
{
return
null
;
}
storage
=
new
Storage
();
storage
.
setCid
(
cid
);
storage
.
setType
(
DeviceType
.
AUTO
.
getName
());
storage
.
setName
(
cid
);
storage
.
setCompatibleType
(
COMPATIBLE_TYPE
.
EXACT_MATCH
);
storage
.
setSourcePath
(
""
);
storage
.
setGroupId
(
""
);
storage
=
storageManager
.
save
(
storage
);
reloadStorage
(
storage
,
""
);
log
.
info
(
"AutoCreateStorage :自动创建料仓完成:cid["
+
storage
.
getCid
()+
"]name["
+
storage
.
getName
()+
"]type["
+
storage
.
getCompatibleType
().
name
()+
"]"
);
return
storage
;
}
}
}
src/main/java/com/neotel/smfcore/core/storage/service/po/StoragePos.java
查看文件 @
d1c67ed
...
@@ -2,8 +2,10 @@ package com.neotel.smfcore.core.storage.service.po;
...
@@ -2,8 +2,10 @@ package com.neotel.smfcore.core.storage.service.po;
import
com.google.common.base.Strings
;
import
com.google.common.base.Strings
;
import
com.neotel.smfcore.common.base.BasePo
;
import
com.neotel.smfcore.common.base.BasePo
;
import
com.neotel.smfcore.common.utils.PointUtil
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
lombok.Data
;
import
lombok.Data
;
import
org.springframework.data.geo.Point
;
import
org.springframework.data.mongodb.core.index.GeoSpatialIndexType
;
import
org.springframework.data.mongodb.core.index.GeoSpatialIndexType
;
import
org.springframework.data.mongodb.core.index.GeoSpatialIndexed
;
import
org.springframework.data.mongodb.core.index.GeoSpatialIndexed
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
org.springframework.data.mongodb.core.mapping.Document
;
...
@@ -14,6 +16,51 @@ import java.util.List;
...
@@ -14,6 +16,51 @@ import java.util.List;
@Data
@Data
@Document
@Document
public
class
StoragePos
extends
BasePo
implements
Serializable
{
public
class
StoragePos
extends
BasePo
implements
Serializable
{
public
StoragePos
(){
}
public
StoragePos
(
String
storageId
,
String
posName
,
int
h
,
int
w
,
int
priority
){
setStorageId
(
storageId
);
setPosName
(
posName
);
setH
(
h
);
setW
(
w
);
setPriority
(
priority
);
Point
point
=
PointUtil
.
getPosPoint
(
posName
);
setCoordinate
(
new
double
[]{
point
.
getX
(),
point
.
getY
()});
}
public
boolean
updatePosInfo
(
String
storageId
,
String
posName
,
int
h
,
int
w
,
int
priority
){
boolean
needUpdate
=
false
;
if
(!
getPosName
().
equals
(
posName
)){
needUpdate
=
true
;
setPosName
(
posName
);
}
if
(!
getStorageId
().
equals
(
storageId
)){
needUpdate
=
true
;
setStorageId
(
storageId
);
}
if
(
getH
()!=
h
){
needUpdate
=
true
;
setH
(
h
);
}
if
(
getW
()!=
w
){
needUpdate
=
true
;
setW
(
w
);
}
if
(
getPriority
()!=
priority
){
needUpdate
=
true
;
setPriority
(
priority
);
}
Point
point
=
PointUtil
.
getPosPoint
(
getPosName
());
if
(
getCoordinate
()==
null
||
getCoordinate
().
length
!=
2
||
(
getCoordinate
()[
0
]!=
point
.
getX
())
||(
getCoordinate
()[
1
]!=
point
.
getY
())){
needUpdate
=
true
;
setCoordinate
(
new
double
[]{
point
.
getX
(),
point
.
getY
()});
}
return
needUpdate
;
}
private
String
storageId
;
private
String
storageId
;
private
Barcode
barcode
;
private
Barcode
barcode
;
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论