Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
SmdBox
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit b1cd5c35
由
sunke
编写于
2020-03-24 14:03:41 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
中英文,料仓状态页面放入缓存
1 个父辈
3d5aabd7
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
27 个修改的文件
包含
344 行增加
和
182 行删除
README.md
myproject/src/main/java/com/myproject/bean/update/DataLog.java
myproject/src/main/java/com/myproject/bean/update/Storage.java
myproject/src/main/java/com/myproject/bean/update/StoragePos.java
myproject/src/main/java/com/myproject/util/BarcodeRule.java
myproject/src/main/java/com/myproject/webapp/controller/FileUploadController.java
myproject/src/main/java/com/myproject/webapp/controller/cloud/StorageCloudUpdateController.java
myproject/src/main/java/com/myproject/webapp/controller/storage/AccShelfController.java
myproject/src/main/java/com/myproject/webapp/controller/storage/StoragePosFindController.java
myproject/src/main/java/com/myproject/webapp/controller/storage/StorageUpdateController.java
myproject/src/main/java/com/myproject/webapp/controller/storage/VirtualBoxController.java
myproject/src/main/java/com/myproject/webapp/controller/user/DataLogSearchController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/DataCache.java
myproject/src/main/java/com/myproject/webapp/controller/webService/MesApiController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/StatusController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/StorageDataController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/TaskService.java
myproject/src/main/resources/StorageResources.properties
myproject/src/main/resources/StorageResources_en.properties
myproject/src/main/resources/StorageResources_zh_CN.properties
myproject/src/main/webapp/WEB-INF/pages/barcode/barcodeSearch.jsp
myproject/src/main/webapp/WEB-INF/pages/component/storagePosFind.jsp
myproject/src/main/webapp/WEB-INF/pages/dataLog/dataLogSearch.jsp
myproject/src/main/webapp/WEB-INF/pages/storage/accShelf.jsp
myproject/src/main/webapp/WEB-INF/pages/storage/allBoxView.jsp
myproject/src/main/webapp/WEB-INF/pages/storage/batchBoxView.jsp
myproject/src/main/webapp/WEB-INF/pages/storage/boxView.jsp
README.md
查看文件 @
b1cd5c3
To get started, please complete the following steps:
1.
Download and install a MySQL 5.x database from
## 阳光电源:
http://dev.mysql.com/downloads/mysql/5.0.html#downloads.
2.
Install maven 3.x, and configure it.
与扫码贴标batch连接:
3.
Modify the jdbc property in the pom.xml of myproject, make sure th
e
> URL: http://IP:port/myproject/rest/api/v2/mes/barcod
e
jdbc url, username and password is correct.
> 参数:
4.
Run "mvn install" to install the parent pom.xml to your local repository.
>> codeStr 条码字符串
>> batch 批次字符串
5.
Run "mvn jetty:run" under myproject, and view the application at http://localhost:8080.
It takes long time to download jars at the first time, so be patient.
By the way, there wasn't data in your database, so you need run "mvn dbunit:operation"
to insert the basic data to your DB. Use admin/admin to login the system.
6.
If you want to make a war file, just run "mvn package -DskipTests" under myproject,
it will generate a war file under myproject/target.
More information please contact Lu xiaojun.
C:
\W
indows
\s
ystem32>mongod --storageEngine=mmapv1 --logappend --directoryperdb --serviceName MongoDB --install
C:
\W
indows
\s
ystem32>mongod --storageEngine=mmapv1 --logappend --directoryperdb --serviceName MongoDB --install
打印机静默打印: Chrome快捷方式增加:--kiosk-printing
打印机静默打印: Chrome快捷方式增加:--kiosk-printing
...
...
myproject/src/main/java/com/myproject/bean/update/DataLog.java
查看文件 @
b1cd5c3
...
@@ -70,7 +70,7 @@ public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ {
...
@@ -70,7 +70,7 @@ public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ {
private
String
batchId
;
private
String
batchId
;
/**
/**
*
指定
批次显示内容
* 批次显示内容
*/
*/
private
String
batchInfo
;
private
String
batchInfo
;
...
...
myproject/src/main/java/com/myproject/bean/update/Storage.java
查看文件 @
b1cd5c3
package
com
.
myproject
.
bean
.
update
;
package
com
.
myproject
.
bean
.
update
;
import
com.myproject.bean.BaseMongoBean
;
import
com.myproject.bean.BaseMongoBean
;
import
com.myproject.bean.json.PlateSizeBean
;
import
com.myproject.bean.json.UsageItem
;
import
com.myproject.util.PLATE_SIZE
;
import
com.myproject.util.PLATE_SIZE
;
import
com.myproject.util.StorageConstants
;
import
com.myproject.util.StorageConstants
;
import
org.hibernate.validator.constraints.NotEmpty
;
import
org.hibernate.validator.constraints.NotEmpty
;
import
org.springframework.data.annotation.Transient
;
import
org.springframework.data.annotation.Transient
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
/**
* Created by kangmor on 2015/12/3.
* Created by kangmor on 2015/12/3.
...
@@ -42,27 +46,19 @@ public class Storage extends BaseMongoBean {
...
@@ -42,27 +46,19 @@ public class Storage extends BaseMongoBean {
}
}
/**
/**
*
禁止出入库的 box
*
使用情况
*/
*/
private
List
<
Integer
>
disableBoxes
;
private
Map
<
String
,
UsageItem
>
usageMap
=
new
ConcurrentHashMap
<>();
/**
/**
*
允许放入的料盘尺寸信息
*
禁止出入库的 box
*/
*/
@Transient
private
List
<
Integer
>
disableBoxes
;
private
List
<
PLATE_SIZE
>
plateSizes
;
public
List
<
Integer
>
getDisableBoxes
()
{
public
List
<
Integer
>
getDisableBoxes
()
{
return
disableBoxes
;
return
disableBoxes
;
}
}
public
List
<
PLATE_SIZE
>
getPlateSizes
()
{
return
plateSizes
;
}
public
void
setPlateSizes
(
List
<
PLATE_SIZE
>
plateSizes
)
{
this
.
plateSizes
=
plateSizes
;
}
/**
/**
* 判断 box 是否可用
* 判断 box 是否可用
*/
*/
...
@@ -214,9 +210,9 @@ public class Storage extends BaseMongoBean {
...
@@ -214,9 +210,9 @@ public class Storage extends BaseMongoBean {
* 判断料盘是否能够放入该仓库: 0=完全匹配,1=完全兼容,2=同尺寸兼容
* 判断料盘是否能够放入该仓库: 0=完全匹配,1=完全兼容,2=同尺寸兼容
*/
*/
public
boolean
canPutIn
(
int
w
,
int
h
){
public
boolean
canPutIn
(
int
w
,
int
h
){
if
(
plateSizes
!=
null
){
if
(
usageMap
!=
null
){
for
(
PLATE_SIZE
plateSize
:
plateSizes
)
{
for
(
UsageItem
usageItem
:
usageMap
.
values
()
)
{
if
(
canPutInPos
(
w
,
h
,
plateSize
.
getW
(),
plateSize
.
getH
())){
if
(
canPutInPos
(
w
,
h
,
usageItem
.
getW
(),
usageItem
.
getH
())){
return
true
;
return
true
;
}
}
}
}
...
@@ -239,4 +235,69 @@ public class Storage extends BaseMongoBean {
...
@@ -239,4 +235,69 @@ public class Storage extends BaseMongoBean {
public
void
setCompatibleType
(
StorageConstants
.
COMPATIBLE_TYPE
compatibleType
)
{
public
void
setCompatibleType
(
StorageConstants
.
COMPATIBLE_TYPE
compatibleType
)
{
this
.
compatibleType
=
compatibleType
;
this
.
compatibleType
=
compatibleType
;
}
}
public
Map
<
String
,
UsageItem
>
getUsageMap
()
{
return
usageMap
;
}
public
void
setUsageMap
(
Map
<
String
,
UsageItem
>
usageMap
)
{
this
.
usageMap
=
usageMap
;
}
/**
* 使用一个仓位,更新使用情况
*/
public
void
useOnePos
(
StoragePos
pos
){
if
(
usageMap
!=
null
){
String
sizeStr
=
pos
.
getSizeStr
();
UsageItem
usageItem
=
usageMap
.
get
(
sizeStr
);
if
(
usageItem
!=
null
){
this
.
emptySlots
=
this
.
emptySlots
-
1
;
int
usedCount
=
usageItem
.
getUsedCount
();
usageItem
.
setUsedCount
(
usedCount
+
1
);
usageMap
.
put
(
sizeStr
,
usageItem
);
}
}
}
public
void
emptyOnePos
(
StoragePos
pos
){
if
(
usageMap
!=
null
){
String
sizeStr
=
pos
.
getSizeStr
();
UsageItem
usageItem
=
usageMap
.
get
(
sizeStr
);
if
(
usageItem
!=
null
){
this
.
emptySlots
=
this
.
emptySlots
+
1
;
int
usedCount
=
usageItem
.
getUsedCount
();
usageItem
.
setUsedCount
(
usedCount
-
1
);
usageMap
.
put
(
sizeStr
,
usageItem
);
}
}
}
public
void
initUsage
(
List
<
PlateSizeBean
>
plateSizeBeanList
){
usageMap
=
new
ConcurrentHashMap
<>();
int
totalPosCount
=
0
;
int
emptyPosCount
=
0
;
for
(
PlateSizeBean
plateSizeBean
:
plateSizeBeanList
)
{
String
sizeStr
=
plateSizeBean
.
getSizeStr
();
UsageItem
usageItem
=
usageMap
.
get
(
sizeStr
);
if
(
usageItem
==
null
){
usageItem
=
new
UsageItem
();
usageItem
.
setW
(
plateSizeBean
.
getPlateSize
().
getW
());
usageItem
.
setH
(
plateSizeBean
.
getPlateSize
().
getH
());
}
if
(
plateSizeBean
.
getPlateSize
().
isUsed
()){
int
usedCount
=
plateSizeBean
.
getCount
();
usageItem
.
setUsedCount
(
usedCount
);
usageItem
.
setTotalCount
(
usedCount
+
usageItem
.
getTotalCount
());
}
else
{
//未使用的数量
int
idleCount
=
plateSizeBean
.
getCount
();
usageItem
.
setTotalCount
(
idleCount
+
usageItem
.
getTotalCount
());
emptyPosCount
=
emptyPosCount
+
idleCount
;
}
totalPosCount
=
totalPosCount
+
plateSizeBean
.
getCount
();
usageMap
.
put
(
sizeStr
,
usageItem
);
}
this
.
setEmptySlots
(
emptyPosCount
);
this
.
setTotalSlots
(
totalPosCount
);
}
}
}
myproject/src/main/java/com/myproject/bean/update/StoragePos.java
查看文件 @
b1cd5c3
...
@@ -200,4 +200,8 @@ public class StoragePos extends BaseMongoBean {
...
@@ -200,4 +200,8 @@ public class StoragePos extends BaseMongoBean {
public
void
setMergePosList
(
List
<
String
>
mergePosList
)
{
public
void
setMergePosList
(
List
<
String
>
mergePosList
)
{
this
.
mergePosList
=
mergePosList
;
this
.
mergePosList
=
mergePosList
;
}
}
public
String
getSizeStr
(){
return
w
+
"x"
+
h
;
}
}
}
myproject/src/main/java/com/myproject/util/BarcodeRule.java
查看文件 @
b1cd5c3
...
@@ -544,12 +544,13 @@ public class BarcodeRule {
...
@@ -544,12 +544,13 @@ public class BarcodeRule {
codeStr
=
")》@06@120S002@P8908018028@1PBLM18PG121SH1D@31PBLM18PG121SH1D@12V690588124@10VJPN-AM@2P@20P@6D192400@14D210205@30PY@Z1@K0@16K0@V97294419@3SS191908055X1Z@Q4000NAR000@20T1@1TAM961458E@2T@1Z@@"
;
codeStr
=
")》@06@120S002@P8908018028@1PBLM18PG121SH1D@31PBLM18PG121SH1D@12V690588124@10VJPN-AM@2P@20P@6D192400@14D210205@30PY@Z1@K0@16K0@V97294419@3SS191908055X1Z@Q4000NAR000@20T1@1TAM961458E@2T@1Z@@"
;
// codeStr = "=1+0x0-0x0=A0002";
// codeStr = "=1+0x0-0x0=A0002";
//阳光电源
//阳光电源
//[RI]_PN_PRODATEyyMMdd_QTYxxxx
rule
=
"[RI]_PN_PRODATEyyMMdd_QTYxxxx"
;
rule
=
"[RI]_PN_PRODATEyyMMdd_QTY[0:5:4]"
;
//rule = "[RI]_PN_PRODATEyyMMdd_QTY[0:5:4]";
codeStr
=
"4500065747_CS000069_180101_0300000041"
;
codeStr
=
"4500065747_CS000069_180101_030000041"
;
codeStr
=
"4500089600_DC000045_190528_003000006"
;
//佳世达
//佳世达
rule
=
"BATCH;PRODATEyyyyMMdd[1:8:-1]EXPD[-1:-4:-1];PN[1:12:-1]SP[13:5:-1]QTY[-1:-5:-1];RI"
;
//
rule ="BATCH;PRODATEyyyyMMdd[1:8:-1]EXPD[-1:-4:-1];PN[1:12:-1]SP[13:5:-1]QTY[-1:-5:-1];RI";
codeStr
=
"L00002019090199951797;E20190901 0365;B8C.R2003.V81506072019090103000;R506072019102200356"
;
//
codeStr = "L00002019090199951797;E20190901 0365;B8C.R2003.V81506072019090103000;R506072019102200356";
BarcodeRule
br
=
BarcodeRule
.
newRule
(
rule
);
BarcodeRule
br
=
BarcodeRule
.
newRule
(
rule
);
Barcode
b
=
br
.
toCodeBean
(
codeStr
).
getBarcode
();
Barcode
b
=
br
.
toCodeBean
(
codeStr
).
getBarcode
();
if
(
b
!=
null
){
if
(
b
!=
null
){
...
...
myproject/src/main/java/com/myproject/webapp/controller/FileUploadController.java
查看文件 @
b1cd5c3
...
@@ -392,7 +392,7 @@ public class FileUploadController extends BaseFormController {
...
@@ -392,7 +392,7 @@ public class FileUploadController extends BaseFormController {
storagePosManager
.
save
(
storagePos
);
storagePosManager
.
save
(
storagePos
);
}
}
}
}
dataCache
.
update
Storage
(
storage
);
dataCache
.
reload
Storage
(
storage
);
String
msg
=
"读取到["
+
list
.
size
()+
"]个位置信息:新增【"
+
newRowCount
+
"】更新【"
+
updateRowCount
+
"】"
;
String
msg
=
"读取到["
+
list
.
size
()+
"]个位置信息:新增【"
+
newRowCount
+
"】更新【"
+
updateRowCount
+
"】"
;
log
.
info
(
msg
);
log
.
info
(
msg
);
...
...
myproject/src/main/java/com/myproject/webapp/controller/cloud/StorageCloudUpdateController.java
查看文件 @
b1cd5c3
...
@@ -85,13 +85,13 @@ public class StorageCloudUpdateController extends BaseUpdateController {
...
@@ -85,13 +85,13 @@ public class StorageCloudUpdateController extends BaseUpdateController {
}
else
{
}
else
{
try
{
try
{
Storage
storage
=
storageUpdateForm
.
getStorage
();
Storage
storage
=
storageUpdateForm
.
getStorage
();
storage
=
dataCache
.
update
Storage
(
storage
);
storage
=
dataCache
.
reload
Storage
(
storage
);
fileUpload
.
setParam
(
storage
.
getId
());
fileUpload
.
setParam
(
storage
.
getId
());
saveMessage
(
request
,
getText
(
"storage.saveSuccess"
,
request
.
getLocale
()));
saveMessage
(
request
,
getText
(
"storage.saveSuccess"
,
request
.
getLocale
()));
return
"redirect:storageUpdate.html?id="
+
storage
.
getId
();
return
"redirect:storageUpdate.html?id="
+
storage
.
getId
();
}
catch
(
Validate
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
e
);
log
.
error
(
e
);
String
errormsg
=
getText
(
e
.
getMessage
(),
e
.
getParams
(),
request
.
getLocale
());
String
errormsg
=
getText
(
e
.
getMessage
(),
request
.
getLocale
());
log
.
error
(
errormsg
);
log
.
error
(
errormsg
);
saveError
(
request
,
errormsg
);
saveError
(
request
,
errormsg
);
}
}
...
...
myproject/src/main/java/com/myproject/webapp/controller/storage/AccShelfController.java
查看文件 @
b1cd5c3
...
@@ -173,6 +173,12 @@ public class AccShelfController extends BaseController {
...
@@ -173,6 +173,12 @@ public class AccShelfController extends BaseController {
if
(
storage
.
isAccShelf
()){
if
(
storage
.
isAccShelf
()){
Barcode
barcode
=
codeBean
.
getBarcode
();
Barcode
barcode
=
codeBean
.
getBarcode
();
try
{
try
{
if
(
barcode
.
getPlateSize
()
==
1
){
//长宽为1的需要弹框设置尺寸
throw
new
ValidateException
(
"error.barcode.errorSize"
,
"条码未设置尺寸"
);
}
long
now
=
System
.
currentTimeMillis
();
long
now
=
System
.
currentTimeMillis
();
//5秒内同一个条码忽略
//5秒内同一个条码忽略
Date
usedDate
=
barcode
.
getUsedDate
();
Date
usedDate
=
barcode
.
getUsedDate
();
...
@@ -216,7 +222,7 @@ public class AccShelfController extends BaseController {
...
@@ -216,7 +222,7 @@ public class AccShelfController extends BaseController {
}
}
}
catch
(
ValidateException
e
)
{
}
catch
(
ValidateException
e
)
{
log
.
error
(
"Error:"
+
e
.
getMessage
());
log
.
error
(
"Error:"
+
e
.
getMessage
());
return
e
.
getMessage
(
);
return
getText
(
e
.
getMessage
(),
e
.
getParams
(),
request
.
getLocale
(),
e
.
getMessage
()
);
}
}
}
}
}
else
{
}
else
{
...
...
myproject/src/main/java/com/myproject/webapp/controller/storage/StoragePosFindController.java
查看文件 @
b1cd5c3
...
@@ -121,6 +121,13 @@ public class StoragePosFindController extends BaseSearchController {
...
@@ -121,6 +121,13 @@ public class StoragePosFindController extends BaseSearchController {
request
.
setAttribute
(
"lockId"
,
lockId
);
request
.
setAttribute
(
"lockId"
,
lockId
);
}
}
String
batch
=
request
.
getParameter
(
"batch"
);
if
(!
Strings
.
isNullOrEmpty
(
batch
)){
Pattern
pattern
=
Pattern
.
compile
(
batch
,
Pattern
.
CASE_INSENSITIVE
);
baseCriteria
.
and
(
"barcode.batch"
).
regex
(
pattern
);
request
.
setAttribute
(
"batch"
,
batch
);
}
addLikeParam
(
baseCriteria
,
request
,
"otherField1"
);
addLikeParam
(
baseCriteria
,
request
,
"otherField1"
);
addLikeParam
(
baseCriteria
,
request
,
"otherField2"
);
addLikeParam
(
baseCriteria
,
request
,
"otherField2"
);
addLikeParam
(
baseCriteria
,
request
,
"otherField3"
);
addLikeParam
(
baseCriteria
,
request
,
"otherField3"
);
...
...
myproject/src/main/java/com/myproject/webapp/controller/storage/StorageUpdateController.java
查看文件 @
b1cd5c3
...
@@ -66,13 +66,13 @@ public class StorageUpdateController extends BaseUpdateController {
...
@@ -66,13 +66,13 @@ public class StorageUpdateController extends BaseUpdateController {
return
getSuccessView
();
return
getSuccessView
();
}
else
{
}
else
{
try
{
try
{
dataCache
.
update
Storage
(
storage
);
dataCache
.
reload
Storage
(
storage
);
//fileUpload.setParam(storage.getId());
//fileUpload.setParam(storage.getId());
saveMessage
(
request
,
getText
(
"storage.saveSuccess"
,
request
.
getLocale
()));
saveMessage
(
request
,
getText
(
"storage.saveSuccess"
,
request
.
getLocale
()));
//return "redirect:storageUpdate.html?id="+storage.getId();
//return "redirect:storageUpdate.html?id="+storage.getId();
}
catch
(
Validate
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
e
);
log
.
error
(
e
);
String
errormsg
=
getText
(
e
.
getMessage
(),
e
.
getParams
(),
request
.
getLocale
());
String
errormsg
=
getText
(
e
.
getMessage
(),
request
.
getLocale
());
log
.
error
(
errormsg
);
log
.
error
(
errormsg
);
saveError
(
request
,
errormsg
);
saveError
(
request
,
errormsg
);
}
}
...
...
myproject/src/main/java/com/myproject/webapp/controller/storage/VirtualBoxController.java
查看文件 @
b1cd5c3
...
@@ -204,7 +204,7 @@ public class VirtualBoxController extends BaseController{
...
@@ -204,7 +204,7 @@ public class VirtualBoxController extends BaseController{
}
}
storagePosManager
.
insertAll
(
posList
);
storagePosManager
.
insertAll
(
posList
);
dataCache
.
update
Storage
(
virtualStorage
);
dataCache
.
reload
Storage
(
virtualStorage
);
return
"保存成功"
;
return
"保存成功"
;
...
...
myproject/src/main/java/com/myproject/webapp/controller/user/DataLogSearchController.java
查看文件 @
b1cd5c3
...
@@ -70,10 +70,11 @@ public class DataLogSearchController extends BaseSearchController {
...
@@ -70,10 +70,11 @@ public class DataLogSearchController extends BaseSearchController {
criteria
.
and
(
"subSourceId"
).
is
(
pid
);
criteria
.
and
(
"subSourceId"
).
is
(
pid
);
}
}
String
b
id
=
request
.
getParameter
(
"bid
"
);
String
b
atch
=
request
.
getParameter
(
"batch
"
);
if
(!
Strings
.
isNullOrEmpty
(
bid
)){
if
(!
Strings
.
isNullOrEmpty
(
batch
)){
criteria
.
and
(
"batchId"
).
is
(
bid
);
Pattern
pattern
=
Pattern
.
compile
(
batch
,
Pattern
.
CASE_INSENSITIVE
);
criteria
.
and
(
"batchInfo"
).
regex
(
pattern
);
}
}
if
(
taskSource
!=
null
){
if
(
taskSource
!=
null
){
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/DataCache.java
查看文件 @
b1cd5c3
...
@@ -7,6 +7,7 @@ import com.google.common.collect.Maps;
...
@@ -7,6 +7,7 @@ import com.google.common.collect.Maps;
import
com.google.common.collect.Multiset
;
import
com.google.common.collect.Multiset
;
import
com.myproject.bean.CodeBean
;
import
com.myproject.bean.CodeBean
;
import
com.myproject.bean.json.InventoryItem
;
import
com.myproject.bean.json.InventoryItem
;
import
com.myproject.bean.json.PlateSizeBean
;
import
com.myproject.bean.update.*
;
import
com.myproject.bean.update.*
;
import
com.myproject.dao.mongo.*
;
import
com.myproject.dao.mongo.*
;
import
com.myproject.exception.ValidateException
;
import
com.myproject.exception.ValidateException
;
...
@@ -505,9 +506,13 @@ public class DataCache{
...
@@ -505,9 +506,13 @@ public class DataCache{
if
(
all
!=
null
){
if
(
all
!=
null
){
Map
<
String
,
Storage
>
map
=
new
ConcurrentHashMap
<>();
Map
<
String
,
Storage
>
map
=
new
ConcurrentHashMap
<>();
for
(
Storage
storage
:
all
){
for
(
Storage
storage
:
all
){
List
<
PLATE_SIZE
>
plateSizes
=
storagePosManager
.
distinctPlateSize
(
storage
.
getId
());
storage
.
setPlateSizes
(
plateSizes
);
List
<
PlateSizeBean
>
plateSizeBeanList
=
storagePosManager
.
getStoragePosUsage
(
storage
.
getId
());
storage
.
initUsage
(
plateSizeBeanList
);
map
.
put
(
storage
.
getCid
(),
storage
);
map
.
put
(
storage
.
getCid
(),
storage
);
}
}
allStorage
=
map
;
allStorage
=
map
;
log
.
info
(
"加载所有料仓["
+
all
.
size
()+
"]信息到缓存"
);
log
.
info
(
"加载所有料仓["
+
all
.
size
()+
"]信息到缓存"
);
...
@@ -552,24 +557,10 @@ public class DataCache{
...
@@ -552,24 +557,10 @@ public class DataCache{
return
null
;
return
null
;
}
}
/**
public
Storage
reloadStorage
(
Storage
storage
){
* 更新料仓信息
List
<
PlateSizeBean
>
plateSizeBeanList
=
storagePosManager
.
getStoragePosUsage
(
storage
.
getId
());
*/
storage
.
initUsage
(
plateSizeBeanList
);
public
Storage
updateStorage
(
String
cid
)
throws
ValidateException
{
allStorage
.
put
(
storage
.
getCid
(),
storage
);
Storage
storage
=
getStorage
(
cid
);
return
updateStorage
(
storage
);
}
/**
* 更新料仓信息
*/
public
Storage
updateStorage
(
Storage
storage
)
throws
ValidateException
{
storage
.
setTotalSlots
(
storagePosManager
.
countTotalStorageSize
(
storage
.
getId
()));
storage
.
setEmptySlots
(
storagePosManager
.
countEmptyStorageSize
(
storage
.
getId
()));
storageManager
.
save
(
storage
);
List
<
PLATE_SIZE
>
plateSizes
=
storagePosManager
.
distinctPlateSize
(
storage
.
getId
());
storage
.
setPlateSizes
(
plateSizes
);
getAllStorage
().
put
(
storage
.
getCid
(),
storage
);
return
storage
;
return
storage
;
}
}
...
@@ -677,7 +668,24 @@ public class DataCache{
...
@@ -677,7 +668,24 @@ public class DataCache{
/**
/**
* 修改库存,出库为负,入库为正
* 修改库存,出库为负,入库为正
*/
*/
public
int
updateInventory
(
String
cid
,
String
partNumber
,
int
amount
){
public
int
updateInventory
(
StoragePos
pos
,
Barcode
barcode
){
Storage
storage
=
getStorageById
(
pos
.
getStorageId
());
String
cid
=
storage
.
getCid
();
String
partNumber
=
barcode
.
getPartNumber
();
int
amount
=
0
;
String
sizeStr
=
pos
.
getSizeStr
();
if
(
pos
.
getBarcode
()
==
null
){
//出库
amount
=
-
barcode
.
getAmount
();
storage
.
emptyOnePos
(
pos
);
}
else
{
//入库
amount
=
barcode
.
getAmount
();
storage
.
useOnePos
(
pos
);
}
allStorage
.
put
(
cid
,
storage
);
if
(
amount
!=
0
){
if
(
amount
!=
0
){
InventoryItem
inventoryItem
=
getStorageInventoryByPartNumber
(
cid
,
partNumber
);
InventoryItem
inventoryItem
=
getStorageInventoryByPartNumber
(
cid
,
partNumber
);
if
(
inventoryItem
==
null
){
if
(
inventoryItem
==
null
){
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/MesApiController.java
查看文件 @
b1cd5c3
...
@@ -4,6 +4,7 @@ import com.google.common.base.Strings;
...
@@ -4,6 +4,7 @@ import com.google.common.base.Strings;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.google.common.collect.Maps
;
import
com.google.common.collect.Sets
;
import
com.google.common.collect.Sets
;
import
com.myproject.bean.CodeBean
;
import
com.myproject.bean.update.*
;
import
com.myproject.bean.update.*
;
import
com.myproject.dao.mongo.IDataLogDao
;
import
com.myproject.dao.mongo.IDataLogDao
;
import
com.myproject.exception.ValidateException
;
import
com.myproject.exception.ValidateException
;
...
@@ -89,6 +90,32 @@ public class MesApiController extends BaseController {
...
@@ -89,6 +90,32 @@ public class MesApiController extends BaseController {
return
value
;
return
value
;
}
}
@RequestMapping
(
value
=
"/barcode"
)
@ResponseBody
public
String
barcode
(
HttpServletRequest
request
)
{
try
{
String
codeStr
=
checkParameter
(
request
,
"codeStr"
);
String
batch
=
checkParameter
(
request
,
"batch"
);
log
.
info
(
"收到MES接口条码更新指令:codeStr="
+
codeStr
+
" batch="
+
batch
);
String
sizeCodeStr
=
"=1x1="
+
codeStr
;
CodeBean
codeBean
=
dataCache
.
resolveSingleCode
(
sizeCodeStr
);
if
(
codeBean
.
isValid
()){
Barcode
barcode
=
codeBean
.
getBarcode
();
barcode
.
setBatch
(
batch
);
barcodeManager
.
save
(
barcode
);
return
"OK"
;
}
else
{
return
"Error:"
+
codeBean
.
getError
();
}
}
catch
(
ValidateException
ve
)
{
return
"Error:"
+
ve
.
getMessage
();
}
catch
(
Exception
e
){
return
"Error:"
+
e
.
getMessage
();
}
}
@RequestMapping
(
value
=
"/codeUpdate"
)
@RequestMapping
(
value
=
"/codeUpdate"
)
@ResponseBody
@ResponseBody
public
String
codeUpdate
(
HttpServletRequest
request
)
{
public
String
codeUpdate
(
HttpServletRequest
request
)
{
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/StatusController.java
查看文件 @
b1cd5c3
...
@@ -45,12 +45,11 @@ public class StatusController extends BaseController{
...
@@ -45,12 +45,11 @@ public class StatusController extends BaseController{
if
(
Strings
.
isNullOrEmpty
(
cid
)){
if
(
Strings
.
isNullOrEmpty
(
cid
)){
cid
=
dataCache
.
defaultStorageCid
();
cid
=
dataCache
.
defaultStorageCid
();
}
}
return
getStatus
(
cid
,
request
);
}
private
StatusBean
getStatus
(
String
cid
,
HttpServletRequest
request
){
StatusBean
statusBean
=
taskService
.
getStatus
(
cid
);
StatusBean
statusBean
=
taskService
.
getStatus
(
cid
);
// if(!Strings.isNullOrEmpty(statusBean.getMsgCode())){
// //String localeMsg = getText("client."+statusBean.getMsgCode(),statusBean.getMsgParam(),request.getLocale(),statusBean.msg);
// statusBean.setMsg(localeMsg);
// statusBean.setMsgEn();
// }
Exception
e
=
taskService
.
getServerException
(
cid
);
Exception
e
=
taskService
.
getServerException
(
cid
);
if
(
e
!=
null
){
if
(
e
!=
null
){
...
@@ -68,6 +67,27 @@ public class StatusController extends BaseController{
...
@@ -68,6 +67,27 @@ public class StatusController extends BaseController{
return
statusBean
;
return
statusBean
;
}
}
@RequestMapping
(
value
=
"/statusList"
)
@ResponseBody
public
List
<
StatusBean
>
statusList
(
HttpServletRequest
request
){
String
cids
=
request
.
getParameter
(
"cids"
);
Collection
<
String
>
cidList
;
if
(
Strings
.
isNullOrEmpty
(
cids
)){
cidList
=
dataCache
.
getAllStorage
().
keySet
();
}
else
{
cidList
=
Lists
.
newArrayList
(
cids
.
split
(
","
));
}
List
<
StatusBean
>
statusList
=
Lists
.
newArrayList
();
for
(
String
cid
:
cidList
)
{
if
(
cid
.
isEmpty
()){
continue
;
}
StatusBean
statusBean
=
getStatus
(
cid
,
request
);
statusList
.
add
(
statusBean
);
}
return
statusList
;
}
@RequestMapping
(
value
=
"/latestStatus"
)
@RequestMapping
(
value
=
"/latestStatus"
)
@ResponseBody
@ResponseBody
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/StorageDataController.java
查看文件 @
b1cd5c3
...
@@ -533,7 +533,7 @@ public class StorageDataController extends BaseController {
...
@@ -533,7 +533,7 @@ public class StorageDataController extends BaseController {
/**
/**
* 流水线提示消息
* 流水线提示消息
*/
*/
private
static
String
lineMsg
=
""
;
private
static
ValidateException
lineMsgParams
;
/**
/**
* 保存界面的一些操作
* 保存界面的一些操作
...
@@ -541,7 +541,10 @@ public class StorageDataController extends BaseController {
...
@@ -541,7 +541,10 @@ public class StorageDataController extends BaseController {
@RequestMapping
(
value
=
"/getLineMsg"
)
@RequestMapping
(
value
=
"/getLineMsg"
)
@ResponseBody
@ResponseBody
public
String
getLineMsg
(
HttpServletRequest
request
)
{
public
String
getLineMsg
(
HttpServletRequest
request
)
{
return
lineMsg
;
if
(
lineMsgParams
!=
null
){
return
""
;
}
return
getText
(
lineMsgParams
.
getMessage
(),
lineMsgParams
.
getParams
(),
request
.
getLocale
(),
lineMsgParams
.
getDefaultMsg
());
}
}
...
@@ -553,7 +556,7 @@ public class StorageDataController extends BaseController {
...
@@ -553,7 +556,7 @@ public class StorageDataController extends BaseController {
public
Map
<
String
,
Object
>
emptyPosForPutin
(
HttpServletRequest
request
)
{
public
Map
<
String
,
Object
>
emptyPosForPutin
(
HttpServletRequest
request
)
{
String
code
=
request
.
getParameter
(
"code"
);
String
code
=
request
.
getParameter
(
"code"
);
String
cids
=
request
.
getParameter
(
"cids"
);
String
cids
=
request
.
getParameter
(
"cids"
);
lineMsg
=
""
;
lineMsg
Params
=
null
;
Map
<
String
,
Object
>
resultMap
=
Maps
.
newHashMap
();
Map
<
String
,
Object
>
resultMap
=
Maps
.
newHashMap
();
if
(
Strings
.
isNullOrEmpty
(
cids
)){
if
(
Strings
.
isNullOrEmpty
(
cids
)){
resultMap
.
put
(
"result"
,
"101"
);
resultMap
.
put
(
"result"
,
"101"
);
...
@@ -568,8 +571,9 @@ public class StorageDataController extends BaseController {
...
@@ -568,8 +571,9 @@ public class StorageDataController extends BaseController {
}
}
if
(
storageList
.
isEmpty
()){
if
(
storageList
.
isEmpty
()){
resultMap
.
put
(
"result"
,
"102"
);
resultMap
.
put
(
"result"
,
"102"
);
lineMsg
=
"无可用的料仓"
;
lineMsgParams
=
new
ValidateException
(
"error.storage.noStorage"
,
"无可用的料仓"
);
resultMap
.
put
(
"msg"
,
lineMsg
);
String
msg
=
getText
(
lineMsgParams
.
getMessage
(),
lineMsgParams
.
getParams
(),
request
.
getLocale
(),
lineMsgParams
.
getDefaultMsg
());
resultMap
.
put
(
"msg"
,
msg
);
}
else
{
}
else
{
Collection
<
CodeBean
>
codeBeans
=
dataCache
.
resolveCodeStr
(
code
);
Collection
<
CodeBean
>
codeBeans
=
dataCache
.
resolveCodeStr
(
code
);
Barcode
barcode
=
null
;
Barcode
barcode
=
null
;
...
@@ -581,8 +585,9 @@ public class StorageDataController extends BaseController {
...
@@ -581,8 +585,9 @@ public class StorageDataController extends BaseController {
}
}
if
(
barcode
==
null
){
if
(
barcode
==
null
){
resultMap
.
put
(
"result"
,
"103"
);
resultMap
.
put
(
"result"
,
"103"
);
lineMsg
=
"无效的条码"
;
lineMsgParams
=
new
ValidateException
(
"error.barcode.invalid"
,
new
String
[]{
code
},
"无效的条码"
);
resultMap
.
put
(
"msg"
,
lineMsg
);
String
msg
=
getText
(
lineMsgParams
.
getMessage
(),
lineMsgParams
.
getParams
(),
request
.
getLocale
(),
lineMsgParams
.
getDefaultMsg
());
resultMap
.
put
(
"msg"
,
msg
);
}
else
{
}
else
{
StoragePos
pos
=
null
;
StoragePos
pos
=
null
;
try
{
try
{
...
@@ -594,17 +599,20 @@ public class StorageDataController extends BaseController {
...
@@ -594,17 +599,20 @@ public class StorageDataController extends BaseController {
resultMap
.
put
(
"barcode"
,
barcode
.
getBarcode
());
resultMap
.
put
(
"barcode"
,
barcode
.
getBarcode
());
Storage
theStorage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
Storage
theStorage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
resultMap
.
put
(
"cid"
,
theStorage
.
getCid
());
resultMap
.
put
(
"cid"
,
theStorage
.
getCid
());
lineMsg
=
"["
+
barcode
.
getBarcode
()+
"]准备入库到["
+
pos
.
getPosName
()+
"]"
;
String
lineMsg
=
"["
+
barcode
.
getBarcode
()+
"]准备入库到["
+
pos
.
getPosName
()+
"]"
;
lineMsgParams
=
new
ValidateException
(
"msg.line.putIn"
,
new
String
[]{
code
},
lineMsg
);
}
else
{
}
else
{
resultMap
.
put
(
"result"
,
"104"
);
resultMap
.
put
(
"result"
,
"104"
);
lineMsg
=
"未找到可用的仓位"
;
lineMsgParams
=
new
ValidateException
(
"error.storage.noPosFind"
,
new
String
[]{
code
},
"未找到可用的仓位"
);
resultMap
.
put
(
"msg"
,
lineMsg
);
String
msg
=
getText
(
lineMsgParams
.
getMessage
(),
lineMsgParams
.
getParams
(),
request
.
getLocale
(),
lineMsgParams
.
getDefaultMsg
());
resultMap
.
put
(
"msg"
,
msg
);
}
}
}
catch
(
ValidateException
e
)
{
}
catch
(
ValidateException
e
)
{
lineMsg
=
e
.
getMessage
();
lineMsgParams
=
e
;
log
.
info
(
"查找空库位失败:"
+
lineMsg
);
resultMap
.
put
(
"result"
,
"105"
);
resultMap
.
put
(
"result"
,
"105"
);
resultMap
.
put
(
"msg"
,
lineMsg
);
String
msg
=
getText
(
lineMsgParams
.
getMessage
(),
lineMsgParams
.
getParams
(),
request
.
getLocale
(),
lineMsgParams
.
getDefaultMsg
());
log
.
info
(
"查找空库位失败:"
+
msg
);
resultMap
.
put
(
"msg"
,
msg
);
}
}
}
}
}
}
...
@@ -640,16 +648,32 @@ public class StorageDataController extends BaseController {
...
@@ -640,16 +648,32 @@ public class StorageDataController extends BaseController {
return
componentList
.
getList
();
return
componentList
.
getList
();
}
}
@RequestMapping
(
"/getStorage
Useage
"
)
@RequestMapping
(
"/getStorage"
)
@ResponseBody
@ResponseBody
public
List
<
PlateSizeBean
>
getStorageUseage
(
HttpServletRequest
request
,
HttpServletResponse
response
){
public
Storage
getStorageUseage
(
HttpServletRequest
request
,
HttpServletResponse
response
){
String
cid
=
request
.
getParameter
(
"cid"
);
String
cid
=
request
.
getParameter
(
"cid"
);
Storage
storage
=
dataCache
.
getStorage
(
cid
);
return
dataCache
.
getStorage
(
cid
);
if
(
storage
==
null
){
}
return
null
;
@RequestMapping
(
"/storageList"
)
@ResponseBody
public
Collection
<
Storage
>
usageMap
(
HttpServletRequest
request
,
HttpServletResponse
response
){
String
cids
=
request
.
getParameter
(
"cids"
);
Collection
<
Storage
>
storageList
=
null
;
if
(
Strings
.
isNullOrEmpty
(
cids
)){
storageList
=
dataCache
.
getAllStorage
().
values
();
}
else
{
storageList
=
new
ArrayList
<>();
for
(
String
cid
:
Lists
.
newArrayList
(
cids
.
split
(
","
)))
{
Storage
storage
=
dataCache
.
getStorage
(
cid
);
if
(
storage
==
null
){
continue
;
}
storageList
.
add
(
storage
);
}
}
}
String
storageId
=
storage
.
getId
();
return
storage
PosManager
.
getStoragePosUsage
(
storageId
)
;
return
storage
List
;
}
}
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/TaskService.java
查看文件 @
b1cd5c3
...
@@ -1321,8 +1321,8 @@ public class TaskService implements ITaskService {
...
@@ -1321,8 +1321,8 @@ public class TaskService implements ITaskService {
task
.
setNum
(
barcode
.
getAmount
());
task
.
setNum
(
barcode
.
getAmount
());
task
.
setMemo
(
barcode
.
getMemo
());
task
.
setMemo
(
barcode
.
getMemo
());
dataCache
.
updateInventory
(
task
.
getCid
(),
barcode
.
getPartNumber
(),
barcode
.
getAmount
()
);
dataCache
.
updateInventory
(
pos
,
barcode
);
dataCache
.
updateStorage
(
task
.
getCid
());
//
dataCache.updateStorage(task.getCid());
}
else
{
}
else
{
barcode
=
pos
.
getBarcode
();
barcode
=
pos
.
getBarcode
();
...
@@ -1339,9 +1339,8 @@ public class TaskService implements ITaskService {
...
@@ -1339,9 +1339,8 @@ public class TaskService implements ITaskService {
pos
.
setUsed
(
false
);
pos
.
setUsed
(
false
);
storagePosManager
.
save
(
pos
);
storagePosManager
.
save
(
pos
);
dataCache
.
updateInventory
(
pos
,
barcode
);
dataCache
.
updateInventory
(
task
.
getCid
(),
barcode
.
getPartNumber
(),
-
barcode
.
getAmount
());
//dataCache.updateStorage(task.getCid());
dataCache
.
updateStorage
(
task
.
getCid
());
}
}
...
@@ -1476,9 +1475,9 @@ public class TaskService implements ITaskService {
...
@@ -1476,9 +1475,9 @@ public class TaskService implements ITaskService {
//更新缓存中的库存信息
//更新缓存中的库存信息
int
stockReel
=
dataCache
.
updateInventory
(
task
.
getCid
(),
componentBarcode
.
getPartNumber
(),
componentBarcode
.
getAmount
()
);
int
stockReel
=
dataCache
.
updateInventory
(
storagePos
,
componentBarcode
);
dataCache
.
updateStorage
(
task
.
getCid
());
//
dataCache.updateStorage(task.getCid());
log
.
info
(
"入库"
+
componentBarcode
.
getPartNumber
()+
"["
+
componentBarcode
.
getBarcode
()+
"]当前库存:"
+
stockReel
+
"到"
+
componentPos
.
getPosName
()+
"可出库时间:"
+
new
Date
(
canCheckOutTime
));
log
.
info
(
"入库"
+
componentBarcode
.
getPartNumber
()+
"["
+
componentBarcode
.
getBarcode
()+
"]当前库存:"
+
stockReel
+
"到"
+
componentPos
.
getPosName
()+
"可出库时间:"
+
new
Date
(
canCheckOutTime
));
componentPos
.
setBarcode
(
componentBarcode
);
componentPos
.
setBarcode
(
componentBarcode
);
...
@@ -1511,9 +1510,9 @@ public class TaskService implements ITaskService {
...
@@ -1511,9 +1510,9 @@ public class TaskService implements ITaskService {
storagePosManager
.
save
(
storagePos
);
storagePosManager
.
save
(
storagePos
);
//更新缓存中的库存信息
//更新缓存中的库存信息
dataCache
.
updateInventory
(
task
.
getCid
(),
task
.
getPartNumber
(),
barcode
.
getAmount
()
);
dataCache
.
updateInventory
(
storagePos
,
barcode
);
dataCache
.
updateStorage
(
task
.
getCid
());
//
dataCache.updateStorage(task.getCid());
Storage
storage
=
dataCache
.
getStorage
(
task
.
getCid
());
Storage
storage
=
dataCache
.
getStorage
(
task
.
getCid
());
if
(
storage
!=
null
){
if
(
storage
!=
null
){
...
@@ -1523,6 +1522,7 @@ public class TaskService implements ITaskService {
...
@@ -1523,6 +1522,7 @@ public class TaskService implements ITaskService {
//记录日志,完成 task
//记录日志,完成 task
task
.
setBatchInfo
(
barcode
.
getBatch
());
task
.
setNum
(
barcode
.
getAmount
());
task
.
setNum
(
barcode
.
getAmount
());
task
.
setStatus
(
StorageConstants
.
OP_STATUS
.
FINISHED
.
name
());
task
.
setStatus
(
StorageConstants
.
OP_STATUS
.
FINISHED
.
name
());
dataLogDao
.
save
(
task
);
dataLogDao
.
save
(
task
);
...
@@ -1605,11 +1605,12 @@ public class TaskService implements ITaskService {
...
@@ -1605,11 +1605,12 @@ public class TaskService implements ITaskService {
barcode
.
setPosName
(
""
);
barcode
.
setPosName
(
""
);
barcodeManager
.
save
(
barcode
);
barcodeManager
.
save
(
barcode
);
String
specifiedBatchId
=
barcode
.
getLockId
();
// String specifiedBatchId = barcode.getLockId();
if
(!
Strings
.
isNullOrEmpty
(
specifiedBatchId
)){
// if(!Strings.isNullOrEmpty(specifiedBatchId)){
task
.
setBatchId
(
specifiedBatchId
);
// task.setBatchId(specifiedBatchId);
task
.
setBatchInfo
(
barcode
.
getLockName
());
// task.setBatchInfo(barcode.getLockName());
}
// }
task
.
setBatchInfo
(
barcode
.
getBatch
());
}
}
storagePos
.
setBarcode
(
null
);
storagePos
.
setBarcode
(
null
);
...
@@ -1617,9 +1618,9 @@ public class TaskService implements ITaskService {
...
@@ -1617,9 +1618,9 @@ public class TaskService implements ITaskService {
storagePosManager
.
save
(
storagePos
);
storagePosManager
.
save
(
storagePos
);
log
.
info
(
"出库完成,清空仓位: "
+
storagePos
.
getId
()
+
"["
+
storagePos
.
getPosName
()
+
"]"
);
log
.
info
(
"出库完成,清空仓位: "
+
storagePos
.
getId
()
+
"["
+
storagePos
.
getPosName
()
+
"]"
);
dataCache
.
updateStorage
(
task
.
getCid
());
//更新缓存中的库存信息
//更新缓存中的库存信息
dataCache
.
updateInventory
(
task
.
getCid
(),
task
.
getPartNumber
(),
0
-
task
.
getNum
()
);
dataCache
.
updateInventory
(
storagePos
,
barcode
);
//通知消息
//通知消息
...
@@ -1636,7 +1637,7 @@ public class TaskService implements ITaskService {
...
@@ -1636,7 +1637,7 @@ public class TaskService implements ITaskService {
finishedTaskMap
.
put
(
task
.
getBarcode
(),
task
);
finishedTaskMap
.
put
(
task
.
getBarcode
(),
task
);
//notifyTask(task);
//notifyTask(task);
dataCache
.
updateStorage
(
task
.
getCid
());
//
dataCache.updateStorage(task.getCid());
finishedOrderTask
(
task
);
finishedOrderTask
(
task
);
//checkTaskSetFinished(task);
//checkTaskSetFinished(task);
...
...
myproject/src/main/resources/StorageResources.properties
查看文件 @
b1cd5c3
...
@@ -412,6 +412,7 @@ error.pos.inQueue=Failed\: The location [{0}] is in queue.
...
@@ -412,6 +412,7 @@ error.pos.inQueue=Failed\: The location [{0}] is in queue.
error.barcode.empty
=
No barcode is scanned.
error.barcode.empty
=
No barcode is scanned.
error.barcode.many
=
more than one valid barcodes were found.
error.barcode.many
=
more than one valid barcodes were found.
error.storage.unavailable
=
The storage is unavailable.
error.storage.unavailable
=
The storage is unavailable.
error.storage.noStorage
=
There is no storage can use.
error.storage.noPos
=
There is no availble position of [{0}]
error.storage.noPos
=
There is no availble position of [{0}]
error.barcode.wrongSize
=
The reel has wrong size [{0}]
error.barcode.wrongSize
=
The reel has wrong size [{0}]
error.barcode.executing
=
The task of barcode [{0}] is executing.
error.barcode.executing
=
The task of barcode [{0}] is executing.
...
@@ -427,4 +428,7 @@ error.barcode.noRule=There is no rule of the barcode is setted.
...
@@ -427,4 +428,7 @@ error.barcode.noRule=There is no rule of the barcode is setted.
error.barcode.wrongLength
=
The code string [{0}] has wrong length.
error.barcode.wrongLength
=
The code string [{0}] has wrong length.
error.barcode.noField
=
There is no {0} field in the code string.
error.barcode.noField
=
There is no {0} field in the code string.
error.barcode.wrongPn
=
The partnumber is wrong
error.barcode.wrongPn
=
The partnumber is wrong
error.barcode.pnNotExist
=
x Component {0} does not exist
\ No newline at end of file
\ No newline at end of file
error.barcode.pnNotExist
=
x Component {0} does not exist
error.barcode.errorSize
=
x The reel has no size.
error.storage.noPosFind
=
No availble position is found.
msg.line.putIn
=
Put [{0}] into [{1}]
\ No newline at end of file
\ No newline at end of file
myproject/src/main/resources/StorageResources_en.properties
查看文件 @
b1cd5c3
...
@@ -423,4 +423,8 @@ error.barcode.noRule=There is no rule of the barcode is setted.
...
@@ -423,4 +423,8 @@ error.barcode.noRule=There is no rule of the barcode is setted.
error.barcode.wrongLength
=
The code string [{0}] has wrong length.
error.barcode.wrongLength
=
The code string [{0}] has wrong length.
error.barcode.noField
=
There is no {0} field in the code string.
error.barcode.noField
=
There is no {0} field in the code string.
error.barcode.wrongPn
=
The partnumber is wrong
error.barcode.wrongPn
=
The partnumber is wrong
error.barcode.pnNotExist
=
x Component {0} does not exist
\ No newline at end of file
\ No newline at end of file
error.barcode.pnNotExist
=
x Component {0} does not exist
error.barcode.errorSize
=
x The reel has no size.
error.storage.noStorage
=
There is no storage can use.
error.storage.noPosFind
=
No availble position is found.
msg.line.putIn
=
Put [{0}] into [{1}]
\ No newline at end of file
\ No newline at end of file
myproject/src/main/resources/StorageResources_zh_CN.properties
查看文件 @
b1cd5c3
...
@@ -405,6 +405,7 @@ error.barcode.empty=\u672A\u626B\u63CF\u5230\u6761\u7801
...
@@ -405,6 +405,7 @@ error.barcode.empty=\u672A\u626B\u63CF\u5230\u6761\u7801
error.barcode.many
=
\u
53D1
\u
73B0
\u
591A
\u
4E2A
\u6709\u6548\u6761\u7801
error.barcode.many
=
\u
53D1
\u
73B0
\u
591A
\u
4E2A
\u6709\u6548\u6761\u7801
error.storage.unavailable
=
\u6599\u
4ED3[{0}]
\u
4E0D
\u
53EF
\u7528
error.storage.unavailable
=
\u6599\u
4ED3[{0}]
\u
4E0D
\u
53EF
\u7528
error.storage.noPos
=
\u
65E0
\u
53EF
\u7528\u7684\u6599\u
683C[{0}],
\u
65E0
\u
6CD5
\u
7EE7
\u
7EED
\u
653E
\u5165
error.storage.noPos
=
\u
65E0
\u
53EF
\u7528\u7684\u6599\u
683C[{0}],
\u
65E0
\u
6CD5
\u
7EE7
\u
7EED
\u
653E
\u5165
error.storage.noPosFind
=
\u
672A
\u
627E
\u5230\u
53EF
\u7528\u7684\u
4ED3
\u
4F4D
error.barcode.wrongSize
=
\u6599\u
76D8
\u
5C3A
\u
5BF8[{0}]
\u
4E0D
\u
7B26
error.barcode.wrongSize
=
\u6599\u
76D8
\u
5C3A
\u
5BF8[{0}]
\u
4E0D
\u
7B26
error.barcode.executing
=
\u6761\u7801
[{0}]
\u7684\u
4EFB
\u
52A1
\u
6B63
\u5728\u6267\u
884C
error.barcode.executing
=
\u6761\u7801
[{0}]
\u7684\u
4EFB
\u
52A1
\u
6B63
\u5728\u6267\u
884C
error.pos.notExist
=
\u
5E93
\u
4F4D
\u3010
{0}
\u3011\u
4E0D
\u
5B58
\u5728
,
\u
65E0
\u
6CD5
\u5165\u
5E93
error.pos.notExist
=
\u
5E93
\u
4F4D
\u3010
{0}
\u3011\u
4E0D
\u
5B58
\u5728
,
\u
65E0
\u
6CD5
\u5165\u
5E93
...
@@ -413,10 +414,13 @@ error.pos.wrong=\u5E93\u4F4D\u3010{0}\u3011\u4E0E\u6599\u4ED3[{1}]\u4E0D\u5339\u
...
@@ -413,10 +414,13 @@ error.pos.wrong=\u5E93\u4F4D\u3010{0}\u3011\u4E0E\u6599\u4ED3[{1}]\u4E0D\u5339\u
error.pos.sizeNotMatch
=
\u6599\u
76D8
\u
5C3A
\u
5BF8[{0}]
\u
4E0E
\u
5E93
\u
4F4D{1}
\u
5C3A
\u
5BF8[{2}]
\u
4E0D
\u
7B26,
\u
65E0
\u
6CD5
\u5165\u
5E93
error.pos.sizeNotMatch
=
\u6599\u
76D8
\u
5C3A
\u
5BF8[{0}]
\u
4E0E
\u
5E93
\u
4F4D{1}
\u
5C3A
\u
5BF8[{2}]
\u
4E0D
\u
7B26,
\u
65E0
\u
6CD5
\u5165\u
5E93
error.barcode.invalid
=
{0}
\u
4E0D
\u
662F
\u6709\u6548\u7684\u6761\u7801
error.barcode.invalid
=
{0}
\u
4E0D
\u
662F
\u6709\u6548\u7684\u6761\u7801
error.barcode.expired
=
\u7269\u6599\u
5DF2
\u
8FC7
\u
671F,
\u
65E0
\u
6CD5
\u5165\u
5E93.
error.barcode.expired
=
\u7269\u6599\u
5DF2
\u
8FC7
\u
671F,
\u
65E0
\u
6CD5
\u5165\u
5E93.
error.barcode.wrongQty
=
\u6599\u
76D8[
0
]
\u6570\u
91CF[{1}]
\u9519\u
8BEF.
error.barcode.wrongQty
=
\u6599\u
76D8[
{0}
]
\u6570\u
91CF[{1}]
\u9519\u
8BEF.
error.barcode.inStorage
=
\u6599\u
76D8[0]
\u
5DF2
\u5728\u6599\u
4ED3[1]
\u7684\u
5E93
\u
4F4D[2]
\u
4E2D
error.barcode.inStorage
=
\u6599\u
76D8[0]
\u
5DF2
\u5728\u6599\u
4ED3[1]
\u7684\u
5E93
\u
4F4D[2]
\u
4E2D
error.barcode.noRule
=
\u6761\u7801\u
89E3
\u6790\u
89C4
\u5219\u
672A
\u
5B9A
\u
4E49
error.barcode.noRule
=
\u6761\u7801\u
89E3
\u6790\u
89C4
\u5219\u
672A
\u
5B9A
\u
4E49
error.barcode.wrongLength
=
\u6761\u7801
[{0}]
\u
957F
\u
5EA6
\u9519\u
8BEF
error.barcode.wrongLength
=
\u6761\u7801
[{0}]
\u
957F
\u
5EA6
\u9519\u
8BEF
error.barcode.noField
=
\u6761\u7801\u
89E3
\u6790\u5931\u
8D25,
\u
672A
\u
627E
\u5230
{0}
\u
5B57
\u
6BB5
error.barcode.noField
=
\u6761\u7801\u
89E3
\u6790\u5931\u
8D25,
\u
672A
\u
627E
\u5230
{0}
\u
5B57
\u
6BB5
error.barcode.wrongPn
=
PartNumber
\u
4E0D
\u
4E00
\u
81F4
error.barcode.wrongPn
=
PartNumber
\u
4E0D
\u
4E00
\u
81F4
error.barcode.pnNotExist
=
x
\u6863\u6848
{0}
\u
4E0D
\u
5B58
\u5728
\ No newline at end of file
\ No newline at end of file
error.barcode.pnNotExist
=
x
\u6863\u6848
{0}
\u
4E0D
\u
5B58
\u5728
error.barcode.errorSize
=
x
\u6599\u
76D8
\u
672A
\u
8BBE
\u
7F6E
\u
5C3A
\u
5BF8
error.storage.noStorage
=
\u
65E0
\u
53EF
\u7528\u7684\u6599\u
4ED3
msg.line.putIn
=
[{0}]
\u
51C6
\u5907\u5165\u
5E93
\u5230
[{1}]
\ No newline at end of file
\ No newline at end of file
myproject/src/main/webapp/WEB-INF/pages/barcode/barcodeSearch.jsp
查看文件 @
b1cd5c3
...
@@ -68,6 +68,7 @@
...
@@ -68,6 +68,7 @@
<a href="${ctx}/barcode/barcodeUpdate.html?id=${barcode.id}">${barcode.barcode}</a>
<a href="${ctx}/barcode/barcodeUpdate.html?id=${barcode.id}">${barcode.barcode}</a>
</display:column>
</display:column>
<display:column property="partNumber" sortProperty="partNumber" sortable="true" titleKey="barcode.partNumber"/>
<display:column property="partNumber" sortProperty="partNumber" sortable="true" titleKey="barcode.partNumber"/>
<display:column property="batch" escapeXml="true" titleKey="barcode.batch" sortable="true" sortProperty="batch"/>
<!-- 成都凯天-->
<!-- 成都凯天-->
<c:if test='<%=DataCache.isProductionFor("ChengDuKaiTian") %>'>
<c:if test='<%=DataCache.isProductionFor("ChengDuKaiTian") %>'>
<display:column property="otherField2" sortProperty="otherField2" sortable="true" titleKey="产品型号"/>
<display:column property="otherField2" sortProperty="otherField2" sortable="true" titleKey="产品型号"/>
...
...
myproject/src/main/webapp/WEB-INF/pages/component/storagePosFind.jsp
查看文件 @
b1cd5c3
...
@@ -59,7 +59,7 @@
...
@@ -59,7 +59,7 @@
</div>
</div>
<label class="control-label col-md-1"><fmt:message key="dataLog.date"/></label>
<label class="control-label col-md-1"><fmt:message key="dataLog.date"/></label>
<div class="col-md-3">
<div class="col-md-3"
style="padding-left:0px;"
>
<div class="input-group input-large date-picker input-daterange" data-date="2017-05-10" data-date-format="${datePatten}">
<div class="input-group input-large date-picker input-daterange" data-date="2017-05-10" data-date-format="${datePatten}">
<input type="text" class="form-control" name="startDay" value="${startDay}">
<input type="text" class="form-control" name="startDay" value="${startDay}">
<span class="input-group-addon">
<span class="input-group-addon">
...
@@ -70,6 +70,10 @@
...
@@ -70,6 +70,10 @@
<span class="help-block"> </span>
<span class="help-block"> </span>
</div>
</div>
<div class="col-md-2">
<button class="btn purple" type="submit"><i class="fa fa-search"></i><fmt:message key="button.search"/> </button>
</div>
</div>
</div>
<div class="form-group">
<div class="form-group">
...
@@ -102,10 +106,13 @@
...
@@ -102,10 +106,13 @@
</div>
</div>
</div>
</div>
<label class="control-label col-md-1"><fmt:message key="barcode.batch"/></label>
<div class="col-md-2">
<div class="col-md-2">
<button class="btn purple" type="submit"><i class="fa fa-search"></i><fmt:message key="button.search"/> </button>
<div style="text-align:left">
<input id="batch" name="batch" class="form-control" value="${batch}"/>
</div>
</div>
</div>
</div>
</div>
</form:form>
</form:form>
...
@@ -165,10 +172,11 @@
...
@@ -165,10 +172,11 @@
<c:if test="${pos.barcode.type == 4}"><fmt:message key="inOutList.type.fixture"/></c:if>
<c:if test="${pos.barcode.type == 4}"><fmt:message key="inOutList.type.fixture"/></c:if>
</display:column>
</display:column>
<display:column property="barcode.barcode" titleKey="barcode.barcode"/>
<display:column property="barcode.barcode" titleKey="barcode.barcode"/>
<display:column property="barcode.inFixture" titleKey="storagePosFind.inFixture"/>
<%--<display:column property="barcode.inFixture" titleKey="storagePosFind.inFixture"/>--%>
<display:column property="barcode.batch" titleKey="barcode.batch" sortable="true" sortProperty="barcode.batch"/>
<%--<display:column property="barcode.providerNumber" titleKey="component.providerNumber"/>--%>
<%--<display:column property="barcode.providerNumber" titleKey="component.providerNumber"/>--%>
<%--<display:column property="barcode.amount" titleKey="数量"/>--%>
<%--<display:column property="barcode.amount" titleKey="数量"/>--%>
<
display:column property="barcode.lockName" titleKey="menu.inRule"/
>
<
%--<display:column property="barcode.lockName" titleKey="menu.inRule"/>--%
>
<display:column property="posName" titleKey="checkOut.pos" sortProperty="posName" sortable="true"/>
<display:column property="posName" titleKey="checkOut.pos" sortProperty="posName" sortable="true"/>
<display:column titleKey="barcode.inStoreRemainTime" sortProperty="barcode.putInTime" sortable="true">
<display:column titleKey="barcode.inStoreRemainTime" sortProperty="barcode.putInTime" sortable="true">
...
...
myproject/src/main/webapp/WEB-INF/pages/dataLog/dataLogSearch.jsp
查看文件 @
b1cd5c3
...
@@ -53,10 +53,6 @@
...
@@ -53,10 +53,6 @@
</div>
</div>
<div class="col-md-2 col-xs-2">
<button class="btn purple" type="submit"><i class="fa fa-search"></i><fmt:message
key="button.search"/></button>
</div>
</div>
</div>
<div class="form-group">
<div class="form-group">
...
@@ -100,6 +96,22 @@
...
@@ -100,6 +96,22 @@
</div>
</div>
<div class="col-md-2 col-xs-2">
<button class="btn purple" type="submit"><i class="fa fa-search"></i><fmt:message
key="button.search"/></button>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-1 col-xs-2"><fmt:message key="barcode.batch"/></label>
<div class="col-md-2 col-xs-4">
<div style="text-align:left" class="input-group">
<input type="text" name="batch" class="form-control" value="${batch}"/>
</div>
</div>
<label class="control-label col-md-1 col-xs-2"><fmt:message key="dataLog.orderSource"/></label>
<label class="control-label col-md-1 col-xs-2"><fmt:message key="dataLog.orderSource"/></label>
<div class="col-md-2 col-xs-4">
<div class="col-md-2 col-xs-4">
...
@@ -108,6 +120,8 @@
...
@@ -108,6 +120,8 @@
</div>
</div>
</div>
</div>
</div>
</div>
</form:form>
</form:form>
...
@@ -142,7 +156,7 @@
...
@@ -142,7 +156,7 @@
<display:column titleKey="dataLog.orderSource" sortable="true" sortProperty="sourceName">
<display:column titleKey="dataLog.orderSource" sortable="true" sortProperty="sourceName">
${dataLog.sourceStr}
${dataLog.sourceStr}
</display:column>
</display:column>
<display:column titleKey="
dataLog
.batch" sortable="true" sortProperty="batchInfo" property="batchInfo"/>
<display:column titleKey="
barcode
.batch" sortable="true" sortProperty="batchInfo" property="batchInfo"/>
<display:column property="operator" titleKey="dataLog.operator" sortable="true" sortProperty="operator"/>
<display:column property="operator" titleKey="dataLog.operator" sortable="true" sortProperty="operator"/>
<display:column titleKey="dataLog.date" sortable="true" sortProperty="updateDate">
<display:column titleKey="dataLog.date" sortable="true" sortProperty="updateDate">
<fmt:formatDate value="${dataLog.updateDate}" pattern="yyyy-MM-dd HH:mm"/>
<fmt:formatDate value="${dataLog.updateDate}" pattern="yyyy-MM-dd HH:mm"/>
...
...
myproject/src/main/webapp/WEB-INF/pages/storage/accShelf.jsp
查看文件 @
b1cd5c3
...
@@ -130,9 +130,9 @@
...
@@ -130,9 +130,9 @@
</div>
</div>
<div class="modal-body">
<div class="modal-body">
<div class="row">
<div class="row">
<c:forEach items="${storage.
plateSizes}" var="psize
">
<c:forEach items="${storage.
usageMap}" var="usageEntry
">
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-3">
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-3">
<div class="bg-blue-madison partnumber-box psizeBox">${
psiz
e.sizeStr}</div>
<div class="bg-blue-madison partnumber-box psizeBox">${
usageEntry.valu
e.sizeStr}</div>
</div>
</div>
</c:forEach>
</c:forEach>
</div>
</div>
...
...
myproject/src/main/webapp/WEB-INF/pages/storage/allBoxView.jsp
查看文件 @
b1cd5c3
此文件的差异被折叠,
点击展开。
myproject/src/main/webapp/WEB-INF/pages/storage/batchBoxView.jsp
查看文件 @
b1cd5c3
...
@@ -587,32 +587,16 @@
...
@@ -587,32 +587,16 @@
}
}
function flushUsageItem(){
function flushUsageItem(){
$.post("${ctx}/service/store/getStorageUseage", {cid: '${show}'}, function (data) {
$.post("${ctx}/service/store/getStorage", {cid: '${show}'}, function (storage) {
if(!isLimitOpt(data)){
if(!isLimitOpt(storage)){
var sizeData = {};
var sizeData = storage.usageMap;
for(var i in data){
var itemData = data[i];
var sizeItem = sizeData[itemData.sizeStr];
if(!sizeItem){
sizeItem = {};
sizeItem["w"] = itemData.plateSize.w;
sizeItem["h"] = itemData.plateSize.h;
sizeItem["usedCount"] = 0;
sizeItem["idleCount"] = 0;
}
if(itemData.plateSize.used){
sizeItem["usedCount"] = itemData.count;
}else{
sizeItem["idleCount"] = itemData.count;
}
sizeData[itemData.sizeStr] = sizeItem;
}
var totalCount = 0;
var cid = storage.cid;
var totalCount = storage.totalSlots;
for(var sizeStr in sizeData){
for(var sizeStr in sizeData){
sizeItem = sizeData[sizeStr];
var
sizeItem = sizeData[sizeStr];
totalCount = totalCount + sizeItem["usedCount"] + sizeItem["idleCount"]
;
var idleCount = sizeItem.totalCount - sizeItem.usedCount
;
var html = getItemBar(sizeItem["w"],sizeItem["h"],sizeItem["usedCount"],
sizeItem["idleCount"]
);
var html = getItemBar(sizeItem["w"],sizeItem["h"],sizeItem["usedCount"],
idleCount
);
var sizeDom = $("#"+sizeStr);
var sizeDom = $("#"+sizeStr);
if(sizeDom.length == 0){
if(sizeDom.length == 0){
...
...
myproject/src/main/webapp/WEB-INF/pages/storage/boxView.jsp
查看文件 @
b1cd5c3
...
@@ -3,8 +3,7 @@
...
@@ -3,8 +3,7 @@
<%@ page language="java" pageEncoding="UTF-8" %>
<%@ page language="java" pageEncoding="UTF-8" %>
<style type="text/css">
<style type="text/css">
.kabanTitle{
.kabanTitle{
padding: 10px;
padding: 10px;
font-size: 30px;
font-size: 30px;
margin-bottom: 10px;
margin-bottom: 10px;
...
@@ -58,15 +57,16 @@
...
@@ -58,15 +57,16 @@
background-color: #FFFFFF;
background-color: #FFFFFF;
margin: 0px 10px;
margin: 0px 10px;
padding: 10px;
padding: 10px;
height: 200px
;
text-align: center
;
}
}
#clientMsg{
#clientMsg{
margin-left: 30px;
margin-left: 30px;
font-size:
30
px;
font-size:
18
px;
color: #ff5500;
color: #ff5500;
text-align: center;
}
}
#smdstatus{
#smdstatus{
line-height:
20
0px;
line-height:
8
0px;
font-size: 30px;
font-size: 30px;
}
}
.barheight{
.barheight{
...
@@ -100,6 +100,13 @@
...
@@ -100,6 +100,13 @@
border-color: #c8c8c8 !important;
border-color: #c8c8c8 !important;
text-decoration:line-through;
text-decoration:line-through;
}
}
.red{
color:red;
}
.green{
color:green;
}
</style>
</style>
<link href="${ctx}/scripts/lobibox/css/lobibox.min.css?id=2" rel="stylesheet" type="text/css"/>
<link href="${ctx}/scripts/lobibox/css/lobibox.min.css?id=2" rel="stylesheet" type="text/css"/>
...
@@ -127,7 +134,8 @@
...
@@ -127,7 +134,8 @@
</div>
</div>
<div class="statusMsg">
<div class="statusMsg">
<span id="smdstatus"></span><span id="clientMsg"></span>
<div id="smdstatus"></div>
<div id="clientMsg"></div>
</div>
</div>
</div>
</div>
...
@@ -474,32 +482,16 @@
...
@@ -474,32 +482,16 @@
}
}
function flushUsageItem(){
function flushUsageItem(){
$.post("${ctx}/service/store/getStorageUseage", {cid: '${show}'}, function (data) {
$.post("${ctx}/service/store/getStorage", {cid: '${show}'}, function (storage) {
if(!isLimitOpt(data)){
if(!isLimitOpt(storage)){
var sizeData = {};
var sizeData = storage.usageMap;
for(var i in data){
var itemData = data[i];
var sizeItem = sizeData[itemData.sizeStr];
if(!sizeItem){
sizeItem = {};
sizeItem["w"] = itemData.plateSize.w;
sizeItem["h"] = itemData.plateSize.h;
sizeItem["usedCount"] = 0;
sizeItem["idleCount"] = 0;
}
if(itemData.plateSize.used){
sizeItem["usedCount"] = itemData.count;
}else{
sizeItem["idleCount"] = itemData.count;
}
sizeData[itemData.sizeStr] = sizeItem;
}
var totalCount = 0;
var cid = storage.cid;
var totalCount = storage.totalSlots;
for(var sizeStr in sizeData){
for(var sizeStr in sizeData){
sizeItem = sizeData[sizeStr];
var
sizeItem = sizeData[sizeStr];
totalCount = totalCount + sizeItem["usedCount"] + sizeItem["idleCount"]
;
var idleCount = sizeItem.totalCount - sizeItem.usedCount
;
var html = getItemBar(sizeItem["w"],sizeItem["h"],sizeItem["usedCount"],
sizeItem["idleCount"]
);
var html = getItemBar(sizeItem["w"],sizeItem["h"],sizeItem["usedCount"],
idleCount
);
var sizeDom = $("#"+sizeStr);
var sizeDom = $("#"+sizeStr);
if(sizeDom.length == 0){
if(sizeDom.length == 0){
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论