Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
SmdBox
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit a20fc42c
由
sunke
编写于
2021-02-24 14:17:53 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
条码规则中日期解析失败时,认为不合规则
扫码料架逻辑优化 扫码料架多工单支持
1 个父辈
69e2c14e
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
28 个修改的文件
包含
420 行增加
和
88 行删除
myproject/src/main/java/com/myproject/bean/json/ShelfOperateBean.java
myproject/src/main/java/com/myproject/bean/update/Component.java
myproject/src/main/java/com/myproject/bean/update/DataLog.java
myproject/src/main/java/com/myproject/manager/IComponentManager.java
myproject/src/main/java/com/myproject/manager/impl/ComponentManagerImpl.java
myproject/src/main/java/com/myproject/util/BarcodeRule.java
myproject/src/main/java/com/myproject/util/StorageConstants.java
myproject/src/main/java/com/myproject/webapp/controller/storage/AccShelfController.java
myproject/src/main/java/com/myproject/webapp/controller/storage/BoxChartController.java
myproject/src/main/java/com/myproject/webapp/controller/storage/CodeShelfController.java
myproject/src/main/java/com/myproject/webapp/controller/storage/StoragePosUpdateController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/MesApiController.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/ApplicationResources.properties
myproject/src/main/resources/ApplicationResources_en.properties
myproject/src/main/resources/ApplicationResources_jp.properties
myproject/src/main/resources/ApplicationResources_zh.properties
myproject/src/main/resources/StorageResources.properties
myproject/src/main/resources/StorageResources_en.properties
myproject/src/main/resources/StorageResources_jp.properties
myproject/src/main/resources/StorageResources_zh_CN.properties
myproject/src/main/resources/displaytag_jp.properties
myproject/src/main/webapp/WEB-INF/pages/component/componentUpdate.jsp
myproject/src/main/webapp/WEB-INF/pages/storage/allBoxView.jsp
myproject/src/main/webapp/WEB-INF/pages/storage/codeShelf.jsp
myproject/src/main/webapp/WEB-INF/pages/storage/storageSearch.jsp
myproject/src/main/webapp/resources/admin/linePositions.csv
myproject/src/main/java/com/myproject/bean/json/ShelfOperateBean.java
查看文件 @
a20fc42
...
@@ -23,9 +23,9 @@ public class ShelfOperateBean {
...
@@ -23,9 +23,9 @@ public class ShelfOperateBean {
private
StoragePos
posToClose
;
private
StoragePos
posToClose
;
/**
/**
*
上
一个库位的Id,用于自动推荐库位
*
下
一个库位的Id,用于自动推荐库位
*/
*/
private
String
las
tPosId
;
private
String
nex
tPosId
;
public
StoragePos
getOpPos
()
{
public
StoragePos
getOpPos
()
{
...
@@ -67,13 +67,12 @@ public class ShelfOperateBean {
...
@@ -67,13 +67,12 @@ public class ShelfOperateBean {
setUpdateTime
(
System
.
currentTimeMillis
());
setUpdateTime
(
System
.
currentTimeMillis
());
}
}
public
String
get
Las
tPosId
()
{
public
String
get
Nex
tPosId
()
{
return
las
tPosId
;
return
nex
tPosId
;
}
}
public
void
setLastPosId
(
String
lastPosId
)
{
public
void
setNextPosId
(
String
nextPosId
)
{
updateOpTime
();
this
.
nextPosId
=
nextPosId
;
this
.
lastPosId
=
lastPosId
;
}
}
/**
/**
...
...
myproject/src/main/java/com/myproject/bean/update/Component.java
查看文件 @
a20fc42
...
@@ -73,6 +73,11 @@ public class Component extends BaseMongoBean {
...
@@ -73,6 +73,11 @@ public class Component extends BaseMongoBean {
//@NotEmpty(message = "{component.partNumber.empty}")
//@NotEmpty(message = "{component.partNumber.empty}")
@NotEmpty
(
message
=
"{component.partNumber.empty}"
)
@NotEmpty
(
message
=
"{component.partNumber.empty}"
)
private
String
partNumber
;
private
String
partNumber
;
/**
* 供应商PN,用于扫码贴标机转换PN
*/
private
String
supplierPn
;
//uid
//uid
private
String
uid
;
private
String
uid
;
...
@@ -126,7 +131,7 @@ public class Component extends BaseMongoBean {
...
@@ -126,7 +131,7 @@ public class Component extends BaseMongoBean {
/**
/**
* 有效时长(生产日期+此天数为过期日期),设置默认有效期为2年
* 有效时长(生产日期+此天数为过期日期),设置默认有效期为2年
*/
*/
private
int
validDay
=
73
0
;
private
int
validDay
=
0
;
public
Component
()
{
public
Component
()
{
//this.height = StorageConstants.DEFAULT_HEIGHT;
//this.height = StorageConstants.DEFAULT_HEIGHT;
...
@@ -393,4 +398,12 @@ public class Component extends BaseMongoBean {
...
@@ -393,4 +398,12 @@ public class Component extends BaseMongoBean {
public
boolean
isSolder
(){
public
boolean
isSolder
(){
return
type
==
StorageConstants
.
COMPONENT_TYPE
.
SOLDERPASTE
;
return
type
==
StorageConstants
.
COMPONENT_TYPE
.
SOLDERPASTE
;
}
}
public
String
getSupplierPn
()
{
return
supplierPn
;
}
public
void
setSupplierPn
(
String
supplierPn
)
{
this
.
supplierPn
=
supplierPn
;
}
}
}
myproject/src/main/java/com/myproject/bean/update/DataLog.java
查看文件 @
a20fc42
...
@@ -118,6 +118,11 @@ public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ {
...
@@ -118,6 +118,11 @@ public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ {
*/
*/
private
int
mixTime
;
private
int
mixTime
;
/**
* 亮灯料架颜色
*/
private
String
lightColor
=
"FF0000"
;
public
String
getStorageName
()
{
public
String
getStorageName
()
{
return
storageName
;
return
storageName
;
}
}
...
@@ -352,7 +357,7 @@ public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ {
...
@@ -352,7 +357,7 @@ public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ {
}
}
/**
/**
* 正在执行的出库任务,如果
3
0秒还未完成,再次发送到客户端
* 正在执行的出库任务,如果
6
0秒还未完成,再次发送到客户端
*/
*/
public
boolean
needReSendToClient
(){
public
boolean
needReSendToClient
(){
if
(
isCheckOutTask
()
&&
isExecuting
()){
if
(
isCheckOutTask
()
&&
isExecuting
()){
...
@@ -485,4 +490,12 @@ public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ {
...
@@ -485,4 +490,12 @@ public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ {
public
void
setMixTime
(
int
mixTime
)
{
public
void
setMixTime
(
int
mixTime
)
{
this
.
mixTime
=
mixTime
;
this
.
mixTime
=
mixTime
;
}
}
public
String
getLightColor
()
{
return
lightColor
;
}
public
void
setLightColor
(
String
lightColor
)
{
this
.
lightColor
=
lightColor
;
}
}
}
myproject/src/main/java/com/myproject/manager/IComponentManager.java
查看文件 @
a20fc42
...
@@ -13,6 +13,8 @@ public interface IComponentManager extends IManager<Component> {
...
@@ -13,6 +13,8 @@ public interface IComponentManager extends IManager<Component> {
List
<
Component
>
allNeedAlarmComponents
();
List
<
Component
>
allNeedAlarmComponents
();
List
<
Component
>
listPnBySupplierPn
(
String
providerPn
);
List
<
Component
>
findByType
(
int
type
);
List
<
Component
>
findByType
(
int
type
);
//List<Component> listByPartNumber(String partNumber);
//List<Component> listByPartNumber(String partNumber);
...
...
myproject/src/main/java/com/myproject/manager/impl/ComponentManagerImpl.java
查看文件 @
a20fc42
...
@@ -47,6 +47,13 @@ public class ComponentManagerImpl implements IComponentManager {
...
@@ -47,6 +47,13 @@ public class ComponentManagerImpl implements IComponentManager {
}
}
@Override
@Override
public
List
<
Component
>
listPnBySupplierPn
(
String
supplierPn
){
Criteria
c
=
Criteria
.
where
(
"supplierPn"
).
is
(
supplierPn
);
Query
query
=
Query
.
query
(
c
);
return
componentDao
.
findByQuery
(
query
);
}
@Override
public
PageList
findByQuery
(
Query
query
,
PageList
pageList
)
public
PageList
findByQuery
(
Query
query
,
PageList
pageList
)
{
{
...
...
myproject/src/main/java/com/myproject/util/BarcodeRule.java
查看文件 @
a20fc42
...
@@ -508,6 +508,11 @@ public class BarcodeRule {
...
@@ -508,6 +508,11 @@ public class BarcodeRule {
}
}
Date
produceDate
=
produceDate_item
.
getDateValue
(
codeArr
);
Date
produceDate
=
produceDate_item
.
getDateValue
(
codeArr
);
if
(
produceDate_item
.
hasThisField
()
&&
produceDate
==
null
){
log
.
info
(
"条码解析失败,PRODATE字段不合规则"
);
codeBean
.
setError
(
"error.barcode.noField"
,
new
String
[]{
"PRODATE"
},
"条码解析失败,未找到PRODATE字段"
);
return
codeBean
;
}
Date
expireDate
=
expireDate_item
.
getDateValue
(
codeArr
);
Date
expireDate
=
expireDate_item
.
getDateValue
(
codeArr
);
if
(
produceDate
!=
null
&&
expireDate
==
null
){
if
(
produceDate
!=
null
&&
expireDate
==
null
){
Calendar
c
=
Calendar
.
getInstance
();
Calendar
c
=
Calendar
.
getInstance
();
...
@@ -633,8 +638,10 @@ public class BarcodeRule {
...
@@ -633,8 +638,10 @@ public class BarcodeRule {
//803
//803
//rule = "PN[6:0:-1],EXPDATEyyyy-MM-dd[-1:0:-1],BATCH,RI";
//rule = "PN[6:0:-1],EXPDATEyyyy-MM-dd[-1:0:-1],BATCH,RI";
//codeStr = "ALPHA OL107E,2021-11-11,00714026Z,002";
//codeStr = "ALPHA OL107E,2021-11-11,00714026Z,002";
codeStr
=
"LOCTITE3609,20200930,001"
;
codeStr
=
"IAC;6013A0073981;20200810;R2032E1128;10000;MI020A600568;"
;
rule
=
"PN,EXPDATEyyyyMMdd,RI"
;
//codeStr = "IAC;B23D45;20200204;DCRFFD;45;WER23;";
rule
=
"SP;PN;PRODATEyyw[0:4:0];BATCH;QTY;RI;"
;
//rule = "SP;PN;PRODATEyyyyMMdd[0:8:0];BATCH;QTY;RI;";
BarcodeRule
br
=
BarcodeRule
.
newRule
(
rule
);
BarcodeRule
br
=
BarcodeRule
.
newRule
(
rule
);
Barcode
b
=
br
.
toCodeBean
(
codeStr
).
getBarcode
();
Barcode
b
=
br
.
toCodeBean
(
codeStr
).
getBarcode
();
...
...
myproject/src/main/java/com/myproject/util/StorageConstants.java
查看文件 @
a20fc42
...
@@ -2,8 +2,7 @@ package com.myproject.util;
...
@@ -2,8 +2,7 @@ package com.myproject.util;
import
com.google.common.base.Strings
;
import
com.google.common.base.Strings
;
import
java.util.HashMap
;
import
java.util.*
;
import
java.util.Map
;
/**
/**
* Created by kangmor on 2015/12/2.
* Created by kangmor on 2015/12/2.
...
@@ -477,7 +476,7 @@ public class StorageConstants {
...
@@ -477,7 +476,7 @@ public class StorageConstants {
/**
/**
* 夹具类型
* 夹具类型
*/
*/
public
static
enum
PACKAGE_TYPE
{
public
enum
PACKAGE_TYPE
{
PCB_FIXTURE
(
"PCB 夹具"
,
420
,
45
,
"PCB_FIXTURE"
),
SOLDER_FIXTURE
(
"锡膏夹具"
,
325
,
65
,
"SOLDER_FIXTURE"
);
PCB_FIXTURE
(
"PCB 夹具"
,
420
,
45
,
"PCB_FIXTURE"
),
SOLDER_FIXTURE
(
"锡膏夹具"
,
325
,
65
,
"SOLDER_FIXTURE"
);
private
String
showStr
;
private
String
showStr
;
/**
/**
...
@@ -696,4 +695,68 @@ public class StorageConstants {
...
@@ -696,4 +695,68 @@ public class StorageConstants {
*/
*/
public
static
int
RETREAT_STORAGE
=
7
;
public
static
int
RETREAT_STORAGE
=
7
;
}
}
private
static
int
currentColorIndex
=
-
1
;
/**
* 工单颜色, 入库绿色,出库红色,库位检查使用黄色, 其他颜色用于工单出库颜色
*/
public
enum
ORDER_COLOR
{
//magenta,cyan,firebrick,purple,skyblue,pink,forestgreen,lightblue,indianred,darkgreen
//洋红,青色,砖红色,紫色,天蓝色,粉色,森林绿,浅蓝色,印度红,深绿色
BLUE
(
"0000FF"
),
MAGENTA
(
"FF00FF"
),
CYAN
(
"00FFFF"
),
FIREBRICK
(
"B22222"
),
PURPLE
(
"A020F0"
),
SKYBLUE
(
"6CA6CD"
),
PINK
(
"FF1493"
),
FORESTGREEN
(
"228B22"
),
LIGHTBLUE
(
"8470FF"
),
INDIANRED
(
"8B3A3A"
),
DARKGREEN
(
"556B2F"
);
private
String
rgb
;
ORDER_COLOR
(
String
rgb
){
this
.
rgb
=
rgb
;
}
public
String
getRgb
()
{
return
rgb
;
}
public
void
setRgb
(
String
rgb
)
{
this
.
rgb
=
rgb
;
}
public
static
ORDER_COLOR
fromRgb
(
String
rgb
){
for
(
ORDER_COLOR
order_color
:
values
())
{
if
(
order_color
.
getRgb
().
equals
(
rgb
)){
return
order_color
;
}
}
return
null
;
}
public
static
ORDER_COLOR
nextColor
(
Collection
<
String
>
excludeColors
){
ORDER_COLOR
[]
allColors
=
values
();
if
(
excludeColors
.
size
()
>=
allColors
.
length
){
return
null
;
}
int
nextColorIndex
=
(
currentColorIndex
+
1
)
%
allColors
.
length
;
for
(
ORDER_COLOR
color
:
allColors
)
{
if
(!
excludeColors
.
contains
(
color
.
getRgb
())
&&
color
.
ordinal
()
>=
nextColorIndex
){
currentColorIndex
=
color
.
ordinal
();
return
color
;
}
}
return
null
;
}
}
}
}
myproject/src/main/java/com/myproject/webapp/controller/storage/AccShelfController.java
查看文件 @
a20fc42
...
@@ -53,6 +53,9 @@ public class AccShelfController extends BaseController {
...
@@ -53,6 +53,9 @@ public class AccShelfController extends BaseController {
public
String
cabinetView
(
@PathVariable
String
cid
,
HttpServletRequest
request
){
public
String
cabinetView
(
@PathVariable
String
cid
,
HttpServletRequest
request
){
request
.
getSession
().
setAttribute
(
"show"
,
cid
);
request
.
getSession
().
setAttribute
(
"show"
,
cid
);
Storage
storage
=
dataCache
.
getStorage
(
cid
);
Storage
storage
=
dataCache
.
getStorage
(
cid
);
if
(
storage
.
isCodeShelf
()){
return
"redirect:/storage/codeShelf"
;
}
request
.
setAttribute
(
"storage"
,
storage
);
request
.
setAttribute
(
"storage"
,
storage
);
return
"storage/accShelf"
;
return
"storage/accShelf"
;
}
}
...
@@ -94,7 +97,7 @@ public class AccShelfController extends BaseController {
...
@@ -94,7 +97,7 @@ public class AccShelfController extends BaseController {
if
(
pos
!=
null
){
if
(
pos
!=
null
){
log
.
info
(
pos
.
getBarcode
().
getBarcode
()
+
" 从["
+
pos
.
getPosName
()+
"]出库,点亮对应库位"
);
log
.
info
(
pos
.
getBarcode
().
getBarcode
()
+
" 从["
+
pos
.
getPosName
()+
"]出库,点亮对应库位"
);
int
delayCloseTime
=
30000
;
int
delayCloseTime
=
30000
;
String
color
=
"
blue
"
;
String
color
=
"
red
"
;
openAndCloseLights
(
storage
,
pos
.
getPosName
(),
delayCloseTime
,
color
);
openAndCloseLights
(
storage
,
pos
.
getPosName
(),
delayCloseTime
,
color
);
taskService
.
addTaskToFinished
(
pos
,
null
,
null
);
taskService
.
addTaskToFinished
(
pos
,
null
,
null
);
return
"OK"
+
getText
(
"shelf.msg.outOk"
,
new
String
[]{
pos
.
getPosName
()},
request
.
getLocale
(),
"操作成功,请从库位["
+
pos
.
getPosName
()+
"]中取出物料"
);
return
"OK"
+
getText
(
"shelf.msg.outOk"
,
new
String
[]{
pos
.
getPosName
()},
request
.
getLocale
(),
"操作成功,请从库位["
+
pos
.
getPosName
()+
"]中取出物料"
);
...
@@ -147,7 +150,7 @@ public class AccShelfController extends BaseController {
...
@@ -147,7 +150,7 @@ public class AccShelfController extends BaseController {
}
}
List
<
StoragePos
>
allPos
=
storagePosManager
.
findNotEmptyByStorageId
(
storage
.
getId
());
List
<
StoragePos
>
allPos
=
storagePosManager
.
findNotEmptyByStorageId
(
storage
.
getId
());
for
(
StoragePos
pos
:
allPos
)
{
for
(
StoragePos
pos
:
allPos
)
{
opPosLight
(
"open"
,
storage
,
pos
,
"
Green
"
);
opPosLight
(
"open"
,
storage
,
pos
,
"
yellow
"
);
}
}
return
"OK"
+
getText
(
"shelf.msg.opSucess"
,
request
.
getLocale
(),
"操作成功"
);
return
"OK"
+
getText
(
"shelf.msg.opSucess"
,
request
.
getLocale
(),
"操作成功"
);
}
}
...
...
myproject/src/main/java/com/myproject/webapp/controller/storage/BoxChartController.java
查看文件 @
a20fc42
...
@@ -325,6 +325,8 @@ public class BoxChartController extends BaseController {
...
@@ -325,6 +325,8 @@ public class BoxChartController extends BaseController {
public
List
<
DataLog
>
allTasks
(
HttpServletRequest
request
)
throws
Exception
{
public
List
<
DataLog
>
allTasks
(
HttpServletRequest
request
)
throws
Exception
{
try
{
try
{
String
cid
=
request
.
getParameter
(
"cid"
);
String
cid
=
request
.
getParameter
(
"cid"
);
String
codeShelf
=
request
.
getParameter
(
"codeShelf"
);
Comparator
<
DataLog
>
comparator
=
new
Comparator
<
DataLog
>()
{
Comparator
<
DataLog
>
comparator
=
new
Comparator
<
DataLog
>()
{
@Override
@Override
public
int
compare
(
DataLog
o1
,
DataLog
o2
)
{
public
int
compare
(
DataLog
o1
,
DataLog
o2
)
{
...
@@ -351,8 +353,18 @@ public class BoxChartController extends BaseController {
...
@@ -351,8 +353,18 @@ public class BoxChartController extends BaseController {
if
(!
Strings
.
isNullOrEmpty
(
cid
)){
if
(!
Strings
.
isNullOrEmpty
(
cid
)){
List
<
DataLog
>
cidTasks
=
Lists
.
newArrayList
();
List
<
DataLog
>
cidTasks
=
Lists
.
newArrayList
();
for
(
DataLog
task:
allTasks
)
{
for
(
DataLog
task:
allTasks
)
{
if
(
task
.
getCid
().
equals
(
cid
)){
String
taskCid
=
task
.
getCid
();
cidTasks
.
add
(
task
);
if
(!
Strings
.
isNullOrEmpty
(
codeShelf
)){
//扫码料架
Storage
storage
=
dataCache
.
getStorage
(
taskCid
);
if
(
storage
.
isCodeShelf
()){
cidTasks
.
add
(
task
);
}
}
else
{
if
(
taskCid
.
equals
(
cid
)){
cidTasks
.
add
(
task
);
}
}
}
}
}
return
cidTasks
;
return
cidTasks
;
...
...
myproject/src/main/java/com/myproject/webapp/controller/storage/CodeShelfController.java
查看文件 @
a20fc42
此文件的差异被折叠,
点击展开。
myproject/src/main/java/com/myproject/webapp/controller/storage/StoragePosUpdateController.java
查看文件 @
a20fc42
...
@@ -10,6 +10,8 @@ import com.myproject.manager.IBarcodeManager;
...
@@ -10,6 +10,8 @@ import com.myproject.manager.IBarcodeManager;
import
com.myproject.manager.IStoragePosManager
;
import
com.myproject.manager.IStoragePosManager
;
import
com.myproject.util.StorageConstants
;
import
com.myproject.util.StorageConstants
;
import
com.myproject.webapp.controller.webService.DataCache
;
import
com.myproject.webapp.controller.webService.DataCache
;
import
com.myproject.webapp.controller.webService.ITaskService
;
import
com.myproject.webapp.controller.webService.StorageDataController
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.stereotype.Controller
;
...
@@ -34,6 +36,9 @@ public class StoragePosUpdateController extends BaseUpdateController {
...
@@ -34,6 +36,9 @@ public class StoragePosUpdateController extends BaseUpdateController {
@Autowired
@Autowired
private
DataCache
dataCache
;
private
DataCache
dataCache
;
@Autowired
private
ITaskService
taskService
;
private
final
static
String
UPDATE_VIEW
=
"storage/storagePosUpdate"
;
private
final
static
String
UPDATE_VIEW
=
"storage/storagePosUpdate"
;
@RequestMapping
(
"/storage/getStoragePos"
)
@RequestMapping
(
"/storage/getStoragePos"
)
...
@@ -66,18 +71,24 @@ public class StoragePosUpdateController extends BaseUpdateController {
...
@@ -66,18 +71,24 @@ public class StoragePosUpdateController extends BaseUpdateController {
Barcode
barcode
=
storagePos
.
getBarcode
();
Barcode
barcode
=
storagePos
.
getBarcode
();
if
(
barcode
!=
null
){
if
(
barcode
!=
null
){
log
.
info
(
"清理库位["
+
storagePos
.
getPosName
()+
"]中的库存"
+
barcode
.
getBarcode
());
barcode
=
barcodeManager
.
findByBarcode
(
barcode
.
getBarcode
());
String
opUser
=
StorageDataController
.
getLoginUsername
();
barcode
.
setPosName
(
""
);
log
.
info
(
opUser
+
"清理库位["
+
storagePos
.
getPosName
()+
"]"
);
barcodeManager
.
save
(
barcode
);
taskService
.
addTaskToFinished
(
storagePos
,
null
,
opUser
+
"-clear"
);
storagePos
.
setBarcode
(
null
);
storagePos
.
setUsed
(
false
);
// log.info("清理库位["+storagePos.getPosName()+"]中的库存"+barcode.getBarcode());
storagePos
=
storagePosManager
.
save
(
storagePos
);
//
dataCache
.
updateInventory
(
storagePos
,
barcode
);
// barcode = barcodeManager.findByBarcode(barcode.getBarcode());
// barcode.setPosName("");
// barcodeManager.save(barcode);
// storagePos.setBarcode(null);
// storagePos.setUsed(false);
// storagePos = storagePosManager.save(storagePos);
// dataCache.updateInventory(storagePos,barcode);
}
}
return
""
;
return
""
;
}
catch
(
Validate
Exception
e
)
{
}
catch
(
Exception
e
)
{
return
e
.
getMessage
();
return
e
.
getMessage
();
}
}
}
}
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/MesApiController.java
查看文件 @
a20fc42
...
@@ -424,6 +424,16 @@ public class MesApiController extends BaseController {
...
@@ -424,6 +424,16 @@ public class MesApiController extends BaseController {
return
results
;
return
results
;
}
}
@RequestMapping
(
value
=
"/listPnBySupplierPn"
)
@ResponseBody
public
List
<
Component
>
getPnByProviderPn
(
HttpServletRequest
request
){
String
supplierPn
=
request
.
getParameter
(
"supplierPn"
);
if
(
Strings
.
isNullOrEmpty
(
supplierPn
)){
return
new
ArrayList
<>();
}
return
componentManager
.
listPnBySupplierPn
(
supplierPn
);
}
private
Date
toDate
(
String
dateStr
){
private
Date
toDate
(
String
dateStr
){
try
{
try
{
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/StorageDataController.java
查看文件 @
a20fc42
...
@@ -235,7 +235,7 @@ public class StorageDataController extends BaseController {
...
@@ -235,7 +235,7 @@ public class StorageDataController extends BaseController {
if
(
Strings
.
isNullOrEmpty
(
result
)){
if
(
Strings
.
isNullOrEmpty
(
result
)){
return
"0"
+
super
.
getText
(
"checkout.sucess"
,
request
.
getLocale
());
return
"0"
+
super
.
getText
(
"checkout.sucess"
,
request
.
getLocale
());
}
}
return
"1"
+
result
;
return
"1"
+
super
.
getText
(
result
,
request
.
getLocale
())
;
}
}
...
@@ -783,6 +783,35 @@ public class StorageDataController extends BaseController {
...
@@ -783,6 +783,35 @@ public class StorageDataController extends BaseController {
}
}
/**
/**
* 取消入库任务
*/
@RequestMapping
(
value
=
"/cancelPutInTask"
)
@ResponseBody
public
ResultBean
cancelPutInTask
(
HttpServletRequest
request
)
{
String
codeStr
=
request
.
getParameter
(
"barcode"
);
try
{
Collection
<
DataLog
>
tasks
=
taskService
.
getQueueTasks
();
for
(
DataLog
task
:
tasks
)
{
if
(
codeStr
.
contains
(
task
.
getBarcode
())){
if
(
task
.
isPutInTask
()){
boolean
cancelResult
=
taskService
.
cancelTask
(
task
.
getId
());
log
.
info
(
"客户端取消["
+
codeStr
+
"]的入库任务结果:"
+
cancelResult
);
return
ResultBean
.
newOkResult
(
cancelResult
);
}
// else{
// boolean hideResult = taskService.hideTask(task.getId());
// log.info("客户端取消["+codeStr+"]的出库任务结果:" + hideResult);
// return ResultBean.newOkResult(hideResult);
// }
}
}
}
catch
(
Exception
e
){
return
ResultBean
.
newErrorResult
(
2002
,
"客户端取消入库任务["
+
codeStr
+
"]失败:"
+
e
.
getMessage
());
}
return
ResultBean
.
newErrorResult
(
2003
,
"客户端取消任务["
+
codeStr
+
"]失败"
);
}
/**
* 备份的所有版本
* 备份的所有版本
*/
*/
@RequestMapping
(
"/backupVersions"
)
@RequestMapping
(
"/backupVersions"
)
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/TaskService.java
查看文件 @
a20fc42
...
@@ -866,20 +866,32 @@ public class TaskService implements ITaskService {
...
@@ -866,20 +866,32 @@ public class TaskService implements ITaskService {
return
null
;
return
null
;
}
}
@Override
@Override
public
synchronized
String
checkOutLiteOrder
(
String
orderNo
,
boolean
outBom
){
public
synchronized
String
checkOutLiteOrder
(
String
orderNo
,
boolean
outBom
){
LiteOrder
cacheOrder
=
liteOrderMap
.
get
(
orderNo
);
LiteOrder
cacheOrder
=
liteOrderMap
.
get
(
orderNo
);
if
(
cacheOrder
!=
null
&&
!
cacheOrder
.
isTaskFinished
()
&&
!
cacheOrder
.
isNew
()){
if
(
cacheOrder
!=
null
&&
!
cacheOrder
.
isTaskFinished
()
&&
!
cacheOrder
.
isNew
()){
log
.
info
(
"工单["
+
orderNo
+
"]正在执行"
);
log
.
info
(
"工单["
+
orderNo
+
"]正在执行"
);
return
"
当前工单正在执行
"
;
return
"
order.out.executing
"
;
}
}
if
(
cacheOrder
==
null
){
if
(
cacheOrder
==
null
){
cacheOrder
=
liteOrderDao
.
findWithItemsByOrderNo
(
orderNo
);
cacheOrder
=
liteOrderDao
.
findWithItemsByOrderNo
(
orderNo
);
}
}
if
(
cacheOrder
==
null
){
if
(
cacheOrder
==
null
){
return
"未找到工单"
;
return
"order.out.notFound"
;
}
//设置颜色
Set
<
String
>
currentColors
=
new
HashSet
<>();
for
(
DataLog
dataLog
:
getQueueTasks
())
{
currentColors
.
add
(
dataLog
.
getLightColor
());
}
StorageConstants
.
ORDER_COLOR
nextColor
=
StorageConstants
.
ORDER_COLOR
.
nextColor
(
currentColors
);
if
(
nextColor
==
null
){
log
.
info
(
"执行工单["
+
orderNo
+
"] outBom="
+
outBom
+
"时,已达最大可执行工单数"
);
return
"order.out.maxOrder"
;
}
}
log
.
info
(
"开始执行工单["
+
orderNo
+
"] outBom="
+
outBom
);
log
.
info
(
"开始执行工单["
+
orderNo
+
"] outBom="
+
outBom
);
...
@@ -901,6 +913,8 @@ public class TaskService implements ITaskService {
...
@@ -901,6 +913,8 @@ public class TaskService implements ITaskService {
availableStorageIds
.
add
(
storage
.
getId
());
availableStorageIds
.
add
(
storage
.
getId
());
}
}
}
}
//其他出库模式一次性全部生成任务
//其他出库模式一次性全部生成任务
for
(
LiteOrderItem
orderItem
:
cacheOrder
.
getOrderItems
())
{
for
(
LiteOrderItem
orderItem
:
cacheOrder
.
getOrderItems
())
{
//剩余未出数量
//剩余未出数量
...
@@ -929,6 +943,7 @@ public class TaskService implements ITaskService {
...
@@ -929,6 +943,7 @@ public class TaskService implements ITaskService {
task
.
setSubSourceId
(
orderItem
.
getId
());
task
.
setSubSourceId
(
orderItem
.
getId
());
task
.
setSubSourceInfo
(
orderItem
.
getFeederInfo
());
task
.
setSubSourceInfo
(
orderItem
.
getFeederInfo
());
task
.
setType
(
StorageConstants
.
OP
.
CHECKOUT
);
task
.
setType
(
StorageConstants
.
OP
.
CHECKOUT
);
task
.
setLightColor
(
nextColor
.
getRgb
());
task
.
setStatus
(
StorageConstants
.
OP_STATUS
.
WAIT
.
name
());
task
.
setStatus
(
StorageConstants
.
OP_STATUS
.
WAIT
.
name
());
task
=
dataLogDao
.
save
(
task
);
task
=
dataLogDao
.
save
(
task
);
addTaskToExecute
(
task
);
addTaskToExecute
(
task
);
...
@@ -943,6 +958,7 @@ public class TaskService implements ITaskService {
...
@@ -943,6 +958,7 @@ public class TaskService implements ITaskService {
if
(
taskReelCount
<=
0
){
if
(
taskReelCount
<=
0
){
cacheOrder
.
finishedTasks
();
cacheOrder
.
finishedTasks
();
}
}
liteOrderDao
.
save
(
cacheOrder
);
liteOrderDao
.
save
(
cacheOrder
);
liteOrderMap
.
put
(
cacheOrder
.
getOrderNo
(),
cacheOrder
);
liteOrderMap
.
put
(
cacheOrder
.
getOrderNo
(),
cacheOrder
);
if
(
taskReelCount
<=
0
){
if
(
taskReelCount
<=
0
){
...
@@ -1063,13 +1079,31 @@ public class TaskService implements ITaskService {
...
@@ -1063,13 +1079,31 @@ public class TaskService implements ITaskService {
//出库任务开灯或者开门
//出库任务开灯或者开门
Collection
<
DataLog
>
areaWaitTasks
=
taskMap
.
values
();
Collection
<
DataLog
>
areaWaitTasks
=
taskMap
.
values
();
for
(
DataLog
task
:
areaWaitTasks
)
{
for
(
DataLog
task
:
areaWaitTasks
)
{
if
(
storage
.
getCid
().
equals
(
task
.
getCid
())
&&
task
.
isCheckOutTask
()
&&
task
.
isWait
()){
if
(
storage
.
getCid
().
equals
(
task
.
getCid
())
&&
task
.
isCheckOutTask
()){
//加入到正在执行的列表中
statusBean
.
addData
(
"open"
,
task
.
getPosName
());
String
lightColor
=
task
.
getLightColor
();
//从等待列表中删除,加入到执行列表中
String
opValue
=
task
.
getPosName
();
task
.
setStatus
(
StorageConstants
.
OP_STATUS
.
EXECUTING
.
name
());
if
(!
Strings
.
isNullOrEmpty
(
lightColor
)){
taskMap
.
put
(
task
.
getId
(),
task
);
StorageConstants
.
ORDER_COLOR
orderColor
=
StorageConstants
.
ORDER_COLOR
.
fromRgb
(
lightColor
);
dataLogDao
.
save
(
task
);
if
(
orderColor
!=
null
){
opValue
=
opValue
+
"="
+
orderColor
.
name
().
toLowerCase
();
}
}
if
(
task
.
isWait
()){
//加入到正在执行的列表中
log
.
info
(
"执行开灯:"
+
opValue
);
statusBean
.
addData
(
"open"
,
opValue
);
//从等待列表中删除,加入到执行列表中
task
.
setStatus
(
StorageConstants
.
OP_STATUS
.
EXECUTING
.
name
());
taskMap
.
put
(
task
.
getId
(),
task
);
dataLogDao
.
save
(
task
);
}
else
if
(
task
.
isExecuting
()
&&
task
.
needReSendToClient
()){
// log.error("cid["+storage.getCid() + "]的出库任务["+ task.getPosName()+"]超过60秒仍未完成,重新发送到客户端!");
// task.setUpdateDate(new Date());
// statusBean.addData("open", opValue);
// taskMap.put(task.getId(), task);
}
}
}
}
}
return
statusBean
;
return
statusBean
;
...
@@ -1174,7 +1208,7 @@ public class TaskService implements ITaskService {
...
@@ -1174,7 +1208,7 @@ public class TaskService implements ITaskService {
//暂不处理
//暂不处理
}
else
if
(
StorageConstants
.
BOX_STATUS
.
OUT_FINISHED
==
status
)
{
//出仓完成
}
else
if
(
StorageConstants
.
BOX_STATUS
.
OUT_FINISHED
==
status
)
{
//出仓完成
DataLog
task
=
findExecutingTask
(
statusBean
.
getCid
(),
boxStatus
.
getPosId
());
DataLog
task
=
findExecutingTask
(
statusBean
.
getCid
(),
boxStatus
.
getPosId
());
if
(
task
!=
null
)
{
if
(
task
!=
null
&&
task
.
isCheckOutTask
()
)
{
log
.
info
(
task
.
getBarcode
()
+
"出仓位["
+
task
.
getPosName
()
+
"]完成"
);
log
.
info
(
task
.
getBarcode
()
+
"出仓位["
+
task
.
getPosName
()
+
"]完成"
);
DataLog
cancelTask
=
findFinishedTask
(
statusBean
.
getCid
(),
boxStatus
.
getPosId
());
DataLog
cancelTask
=
findFinishedTask
(
statusBean
.
getCid
(),
boxStatus
.
getPosId
());
if
(
cancelTask
!=
null
&&
cancelTask
.
isCancel
()){
if
(
cancelTask
!=
null
&&
cancelTask
.
isCancel
()){
...
@@ -1188,7 +1222,7 @@ public class TaskService implements ITaskService {
...
@@ -1188,7 +1222,7 @@ public class TaskService implements ITaskService {
//log.error(operationKey + "触发仓位完成时,操作队列中不存在");
//log.error(operationKey + "触发仓位完成时,操作队列中不存在");
//从已完成列表中找,如果还找不到就忽略
//从已完成列表中找,如果还找不到就忽略
task
=
findFinishedTask
(
statusBean
.
getCid
(),
boxStatus
.
getPosId
());
task
=
findFinishedTask
(
statusBean
.
getCid
(),
boxStatus
.
getPosId
());
if
(
task
!=
null
)
{
if
(
task
!=
null
&&
task
.
isCheckOutTask
()
)
{
if
(
task
.
isCancel
()){
//被取消的任务,客户端发完成信号过来,修改取消状态为已完成
if
(
task
.
isCancel
()){
//被取消的任务,客户端发完成信号过来,修改取消状态为已完成
log
.
info
(
task
.
getBarcode
()
+
"出仓位["
+
task
.
getPosName
()
+
"]完成,但任务已被取消,修改为完成"
);
log
.
info
(
task
.
getBarcode
()
+
"出仓位["
+
task
.
getPosName
()
+
"]完成,但任务已被取消,修改为完成"
);
checkoutFinished
(
task
);
checkoutFinished
(
task
);
...
@@ -1337,6 +1371,7 @@ public class TaskService implements ITaskService {
...
@@ -1337,6 +1371,7 @@ public class TaskService implements ITaskService {
//清空 msg 的内容,因为客户端会据此决定命令是否执行
//清空 msg 的内容,因为客户端会据此决定命令是否执行
statusBean
.
setMsg
(
""
);
statusBean
.
setMsg
(
""
);
statusBean
.
setMsgEn
(
""
);
return
statusBean
;
return
statusBean
;
}
}
...
...
myproject/src/main/resources/ApplicationResources.properties
查看文件 @
a20fc42
...
@@ -3,10 +3,10 @@
...
@@ -3,10 +3,10 @@
# to the other resource bundles.
# to the other resource bundles.
webapp.name
=
BSP
webapp.name
=
BSP
webapp.tagline
=
Providing integration and style to open source Java.
webapp.tagline
=
Providing integration and style to open source Java.
webapp.version
=
Version
${pom.version}
webapp.version
=
Version
1.0
company.name
=
Your Company Here
company.name
=
Your Company Here
company.url
=
http://raibledesigns.com
company.url
=
http://raibledesigns.com
copyright.year
=
${copyright.year}
copyright.year
=
2003-2015
user.status
=
Logged in as:
user.status
=
Logged in as:
...
...
myproject/src/main/resources/ApplicationResources_en.properties
查看文件 @
a20fc42
此文件的差异被折叠,
点击展开。
myproject/src/main/resources/ApplicationResources_jp.properties
查看文件 @
a20fc42
此文件的差异被折叠,
点击展开。
myproject/src/main/resources/ApplicationResources_zh.properties
查看文件 @
a20fc42
此文件的差异被折叠,
点击展开。
myproject/src/main/resources/StorageResources.properties
查看文件 @
a20fc42
...
@@ -93,6 +93,7 @@ barcode.amount=Qty
...
@@ -93,6 +93,7 @@ barcode.amount=Qty
barcode.plateSize
=
Diameter
barcode.plateSize
=
Diameter
barcode.height
=
Height
barcode.height
=
Height
barcode.provider
=
Supplier
barcode.provider
=
Supplier
barcode.supplierPn
=
Supplier PN
barcode.batch
=
Batch
barcode.batch
=
Batch
barcode.expireDate
=
Expiration Date
barcode.expireDate
=
Expiration Date
barcode.saveSuccess
=
Barcode Saved
barcode.saveSuccess
=
Barcode Saved
...
@@ -339,8 +340,8 @@ batch.btn.singleOut=Single Out
...
@@ -339,8 +340,8 @@ batch.btn.singleOut=Single Out
batch.btn.batchOut
=
Batch Out
batch.btn.batchOut
=
Batch Out
batch.btn.singleIn
=
Single In
batch.btn.singleIn
=
Single In
batch.btn.closeDoor
=
Close Door
batch.btn.closeDoor
=
Close Door
alarm.inaction.title
=
Inaction
Alarm
alarm.inaction.title
=
Sluggish Material
Alarm
alarm.inaction.msg
=
The
amount of inaction material {0} days ago was [{1}]
alarm.inaction.msg
=
The
quantity of sluggish materials {0} days ago was [{1}], please deal with it in time
alarm.expire.title
=
Expire Alarm
alarm.expire.title
=
Expire Alarm
alarm.expire.msg
=
The amount of expire material is [{0}]
alarm.expire.msg
=
The amount of expire material is [{0}]
...
@@ -365,9 +366,10 @@ shelf.msg.hasReel=There position [{0}] already has material
...
@@ -365,9 +366,10 @@ shelf.msg.hasReel=There position [{0}] already has material
shelf.msg.tipScanReel
=
Please scan the material to put in [{0}]
shelf.msg.tipScanReel
=
Please scan the material to put in [{0}]
shelf.msg.fastop
=
Barcode operate is too fast
shelf.msg.fastop
=
Barcode operate is too fast
shelf.msg.scanPos
=
Please scan the position code
shelf.msg.scanPos
=
Please scan the position code
shelf.nextPos.hasTask
=
Next Position [{0}] already has task, please scan a new position code.
shelf.nextPos.hasTask
=
Location [{0}] already has an existing task, please scan a new location code.
shelf.nextPos.hasReel
=
Next Position [{0}] already has material, please scan a new position code.
shelf.nextPos.hasReel
=
A material is already in the location [{0}], please scan a new location code.
shelf.nextPos.wrongSize
=
Next Position [{0}] size [{1}] is different from material size [{2}] please scan a new position code.
shelf.nextPos.wrongSize
=
x The size [{1}] of location [{0}] does not match the material size [{2}], please scan a new location code.
shelf.error.orderError
=
The task does not match the specified order [{0}].
order.out.set
=
set of materials
order.out.set
=
set of materials
order.out.surplus
=
surplus material
order.out.surplus
=
surplus material
...
@@ -423,6 +425,7 @@ error.barcode.noRule=There is no rule of the barcode is setted.
...
@@ -423,6 +425,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.wrongProduceDate
=
The manufacturing date is wrong
error.barcode.pnNotExist
=
x Component {0} does not exist
error.barcode.pnNotExist
=
x Component {0} does not exist
error.barcode.errorSize
=
x The reel has no size.
error.barcode.errorSize
=
x The reel has no size.
error.storage.noPosFind
=
No availble position is found.
error.storage.noPosFind
=
No availble position is found.
...
@@ -440,4 +443,7 @@ solder.status.3=Waiting to stir
...
@@ -440,4 +443,7 @@ solder.status.3=Waiting to stir
solder.status.4
=
Strring
solder.status.4
=
Strring
solder.status.5
=
Waiting shipment
solder.status.5
=
Waiting shipment
solder.status.6
=
Outting
solder.status.6
=
Outting
solder.status.7
=
Retreat storage
\ No newline at end of file
\ No newline at end of file
solder.status.7
=
Retreat storage
order.out.executing
=
The order is executing.
order.out.maxOrder
=
The maximum number of executable orders has been reached
order.out.noTask
=
The order has no reel to out.
\ No newline at end of file
\ No newline at end of file
myproject/src/main/resources/StorageResources_en.properties
查看文件 @
a20fc42
此文件的差异被折叠,
点击展开。
myproject/src/main/resources/StorageResources_jp.properties
查看文件 @
a20fc42
此文件的差异被折叠,
点击展开。
myproject/src/main/resources/StorageResources_zh_CN.properties
查看文件 @
a20fc42
此文件的差异被折叠,
点击展开。
myproject/src/main/resources/displaytag_jp.properties
0 → 100644
查看文件 @
a20fc42
#For a list of settings you can customize, see
# http://displaytag.sourceforge.net/configuration.html
basic.empty.showtable
=
true
paging.banner.onepage
=
basic.msg.empty_list
=
結果がありません。
basic.msg.empty_list_row
=
<tr class="empty"><td colspan="{0}">結果がありません。</td></tr></tr>
paging.banner.no_items_found
=
<span class="pagebanner">記録{0}が見つかりません。</span>
paging.banner.one_item_found
=
<span class="pagebanner">一個{0}の記録を見つかりました。</span>
paging.banner.all_items_found
=
<span class="pagebanner">{0}個の記録を見つかりました。{1}记录,显示所有{2}记录。</span>
paging.banner.some_items_found
=
<span class="pagebanner">{0}個{1}記録を見つかった、第{2}個から第{3}個まで表示しています。</span>
paging.banner.full
=
<span class="pagelinks">[<a href="{1}">トップページ</a>/<a href="{2}">前のページ</a>]{0}[<a href="{3}">次のページ</a>/<a href="{4}">最後のページ</a>]</span>
paging.banner.first
=
<span class="pagelinks">[トップページ/前のページ] {0}[<a href="{3}">次のページ</a>/<a href="{4}">最後のページ</a>]</span>
paging.banner.last
=
<span class="pagelinks">[<a href="{1}">トップページ</a>/<a href="{2}">前のページ</a>]{0} [次のページ/最後のページ]</span>
paging.banner.page.link
=
<a href="{1}" title="第{0}ページに行きます。">{0}</a>
paging.banner.item_name
=
paging.banner.items_name
=
paging.banner.placement
=
bottom
export.banner
=
<div style="float:right"> {0}まで出力</div>
myproject/src/main/webapp/WEB-INF/pages/component/componentUpdate.jsp
查看文件 @
a20fc42
此文件的差异被折叠,
点击展开。
myproject/src/main/webapp/WEB-INF/pages/storage/allBoxView.jsp
查看文件 @
a20fc42
...
@@ -142,6 +142,11 @@
...
@@ -142,6 +142,11 @@
color:green;
color:green;
}
}
.lobibox-notify-wrapper{
max-height: 100%;
overflow-y: auto;
}
</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"/>
...
@@ -517,10 +522,10 @@
...
@@ -517,10 +522,10 @@
for(var i in data){
for(var i in data){
var opStr = '<button class="btn yellow" onclick="checkoutByPartNumber(\''+data[i].pn+'\',\''+data[i].id+'\');"><i class="fa fa-upload"></i>补料</button>';
var opStr = '<button class="btn yellow" onclick="checkoutByPartNumber(\''+data[i].pn+'\',\''+data[i].id+'\');"><i class="fa fa-upload"></i>补料</button>';
if(data[i].inventoryNum <= 0 || data[i].outFinished ){
//
if(data[i].inventoryNum <= 0 || data[i].outFinished ){
//已出完或库存不足
//
//已出完或库存不足
opStr = "";
//
opStr = "";
}
//
}
table.row.add( [ i, data[i].pn, data[i].feederInfo,data[i].outNum+"/"+data[i].needNum,data[i].inventoryNum,opStr] );
table.row.add( [ i, data[i].pn, data[i].feederInfo,data[i].outNum+"/"+data[i].needNum,data[i].inventoryNum,opStr] );
}
}
table.order( [ 3, 'asc' ] ).draw();
table.order( [ 3, 'asc' ] ).draw();
...
@@ -661,10 +666,10 @@
...
@@ -661,10 +666,10 @@
var opLabelMap={
var opLabelMap={
"op1":"${op_1}",
"op1":"${op_1}",
"op
1
":"${op_2}",
"op
2
":"${op_2}",
"op
1
":"${op_6}",
"op
6
":"${op_6}",
"op
1
":"${op_7}",
"op
7
":"${op_7}",
"op
1
":"${op_8}"
"op
8
":"${op_8}"
}
}
var allTasks = {};
var allTasks = {};
...
@@ -689,8 +694,8 @@
...
@@ -689,8 +694,8 @@
//var showStr = partNumber + " ["+barcode+"] ${in_label}" + posStr;
//var showStr = partNumber + " ["+barcode+"] ${in_label}" + posStr;
var opLabel = opLabelMap["op
_
"+data[item].type]
var opLabel = opLabelMap["op"+data[item].type]
var showStr = posStr+ opLabel + partNumber + "["+barcode+"]";
var showStr = posStr+ opLabel +
"<br/>"+
partNumber + "["+barcode+"]";
var status = data[item].status.toLowerCase();
var status = data[item].status.toLowerCase();
options['status'] = status;
options['status'] = status;
...
@@ -1091,15 +1096,17 @@
...
@@ -1091,15 +1096,17 @@
}
}
var statusHtml = "<span class='orderStatus'>["+statusStr+"]</span>";
var statusHtml = "<span class='orderStatus'>["+statusStr+"]</span>";
var titleStr = "<a href='#' onclick=\"showOrderDetail('"+orderNo+"')\">"+orderNo+"</a>";
var titleStr = "<a href='#' onclick=\"showOrderDetail('"+orderNo+"')\">"+orderNo+"</a>";
var msgStr =
order.finishedReelCount + "/" + order.taskReelCount + statusHtml
;
var msgStr =
"<div onclick=\"showOrderDetail('"+orderNo+"')\">" + order.finishedReelCount + "/" + order.taskReelCount + statusHtml+"</div>"
;
newOrders.push(orderNo);
newOrders.push(orderNo);
orderOption['orderNo']=orderNo;
orderOption['orderNo']=orderNo;
orderOption['onClose']= hideOrder;
orderOption['onClose']= hideOrder;
var orderWindow = orderWindows[orderNo];
var orderWindow = orderWindows[orderNo];
if(!orderWindow){
if(!orderWindow){
orderOption.title=titleStr;
orderOption.title=titleStr;
orderOption.msg = msgStr;
orderOption.msg = msgStr;
orderWindow =Lobibox.notify('success', orderOption);
orderWindow =Lobibox.notify('success', orderOption);
orderWindows[orderNo] = orderWindow;
orderWindows[orderNo] = orderWindow;
}else{
}else{
...
...
myproject/src/main/webapp/WEB-INF/pages/storage/codeShelf.jsp
查看文件 @
a20fc42
...
@@ -57,6 +57,39 @@
...
@@ -57,6 +57,39 @@
<%--<fmt:message key="shelf.btn.closeAll"/>--%>
<%--<fmt:message key="shelf.btn.closeAll"/>--%>
<%--</button>--%>
<%--</button>--%>
<div class="btn-group">
<a href="" class="btn grey-steel btn-sm dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
<span id="currentOrderNo">All</span> <span class="fa fa-angle-down"></span>
</a>
<ul class="dropdown-menu pull-right" id="orderNoList">
<li>
<a href="javascript:;" style="background-color: #e9edef;">
All
</a>
</li>
<li>
<a href="javascript:;" style="background-color: #FF0000;">
Q1 2014
</a>
</li>
<li>
<a href="javascript:;" style="background-color: #FFFF00;">
Q2 2014
</a>
</li>
<li class="active">
<a href="javascript:;" style="background-color: #FF00FF;">
Q3 2014
</a>
</li>
<li>
<a href="javascript:;" style="background-color: #FFFF00;">
Q4 2014
</a>
</li>
</ul>
</div>
<button type="button" class="btn btn-fit-height yellow" onclick="showPartNumbers();">
<button type="button" class="btn btn-fit-height yellow" onclick="showPartNumbers();">
<i class="fa fa-sign-out"></i><fmt:message key="button.checkout"/>
<i class="fa fa-sign-out"></i><fmt:message key="button.checkout"/>
</button>
</button>
...
@@ -69,6 +102,7 @@
...
@@ -69,6 +102,7 @@
<tr role="row">
<tr role="row">
<th><fmt:message key="barcode.barcode"/></th>
<th><fmt:message key="barcode.barcode"/></th>
<th><fmt:message key="barcode.partNumber"/></th>
<th><fmt:message key="barcode.partNumber"/></th>
<th><fmt:message key="dataLog.orderSource"/></th>
<th><fmt:message key="checkOut.pos"/></th>
<th><fmt:message key="checkOut.pos"/></th>
<th><fmt:message key="dataLog.type"/></th>
<th><fmt:message key="dataLog.type"/></th>
<th><fmt:message key="dataLog.status"/></th>
<th><fmt:message key="dataLog.status"/></th>
...
@@ -189,12 +223,39 @@
...
@@ -189,12 +223,39 @@
}
}
}
}
$(".dropdown-menu>li>a").live('click', function(){
var bgColor = $(this).attr("bgColor");
var text = $(this).text();
$("#currentOrderNo").css("background-color",bgColor);
$("#currentOrderNo").css("color","#FFFFFF;");
$("#currentOrderNo").parent().css("background-color",bgColor);
$("#currentOrderNo").text(text);
});
$(".dropdown-menu>li>a").live({
mouseenter:
function()
{
var bgColor = $(this).css("background-color");
$(this).attr("bgColor",bgColor);
$(this).css("background-color","#bfbfbf");
},
mouseleave:
function()
{
var bgColor = $(this).attr("bgColor");
$(this).attr("bgColor","");
$(this).css("background-color",bgColor);
}
});
$("#scan-code").change(function () {
$("#scan-code").change(function () {
var codeValue = $(this).val();
var codeValue = $(this).val();
$(this).val("");
$(this).val("");
showMsg("");
showMsg("");
$(this).attr("placeholder", codeValue);
$(this).attr("placeholder", codeValue);
$.post("${ctx}/service/store/codeShelf/codeIn", {cid: '${show}', code: codeValue}, function (data) {
var currentOrderNo = $("#currentOrderNo").text();
$.post("${ctx}/service/store/codeShelf/codeIn", {code: codeValue,sourceName:currentOrderNo}, function (data) {
showMsg(data);
showMsg(data);
if(data.indexOf("x") == 0){
if(data.indexOf("x") == 0){
//弹框,添加=7x8=尺寸信息后重新请求
//弹框,添加=7x8=尺寸信息后重新请求
...
@@ -356,10 +417,12 @@
...
@@ -356,10 +417,12 @@
});
});
}
}
function updateTasks(cid
,seconds
){
function updateTasks(cid){
//任务列表
//任务列表
$.post("${ctx}/service/store/tasks", {cid: cid,
seconds:seconds
}, function (data) {
$.post("${ctx}/service/store/tasks", {cid: cid,
codeShelf:true
}, function (data) {
$(".dataTable").html("");
$(".dataTable").html("");
var currentOrderNo = $("#currentOrderNo").text();
var sourceArr = [];
for(var item in data){
for(var item in data){
var taskId = data[item].id;
var taskId = data[item].id;
...
@@ -367,45 +430,78 @@
...
@@ -367,45 +430,78 @@
var barcode = data[item].barcode;
var barcode = data[item].barcode;
var posStr = data[item].posStr;
var posStr = data[item].posStr;
var typeStr = "${in_label}";
var typeStr = "${in_label}";
var source = data[item].sourceStr;
var lightColor = "";
var sourceName = data[item].sourceName;
if(data[item].type == 2){//出库
if(data[item].type == 2){//出库
typeStr = "${out_label}";
typeStr = "${out_label}";
lightColor = "#"+data[item].lightColor;
if(sourceName){
var hasSourceName = false;
sourceArr.forEach(function(item,i){
if(item.sourceName === sourceName){
hasSourceName = true;
}
})
if(!hasSourceName){
var sourceData = {sourceName:sourceName, lightColor:lightColor};
sourceArr.push(sourceData);
}
}
}
}
var statusStr = "";
if(currentOrderNo == "All" || currentOrderNo == sourceName){
if(data[item].cancel){
var statusStr = "";
statusStr ="${op_status_cancel}";
if(data[item].cancel){
} else if(data[item].executing){
statusStr ="${op_status_cancel}";
statusStr ="${op_status_executing}";
} else if(data[item].executing){
}else if(data[item].finished){
statusStr ="${op_status_executing}";
statusStr ="${op_status_finished}";
}else if(data[item].finished){
}else if(data[item].wait){
statusStr ="${op_status_finished}";
statusStr ="${op_status_wait}";
}else if(data[item].wait){
}else if(data[item].end){
statusStr ="${op_status_wait}";
statusStr ="${op_status_end}";
}else if(data[item].end){
statusStr ="${op_status_end}";
}
var dateStr = data[item].updateDateStr;
var style = "";
if(lightColor){
style = "background-color: " + lightColor+";color:#FFFFFF;";
}
var tdStr =
"<td>"+barcode+"</td>"+
"<td>"+partNumber+"</td>"+
"<td style='"+style+"'>"+source+"</td>"+
"<td>"+posStr+"</td>"+
"<td>"+typeStr+"</td>"+
"<td><span class='label label-sm label-"+data[item].status.toLowerCase()+"'>"+statusStr+"</span></td>"+
"<td>"+dateStr+"</td>";
var trStr = "<tr>" + tdStr+ "</tr>";
$(".dataTable").append(trStr);
}
}
var dateStr = data[item].updateDateStr;
var tdStr =
"<td>"+barcode+"</td>"+
"<td>"+partNumber+"</td>"+
"<td>"+posStr+"</td>"+
"<td>"+typeStr+"</td>"+
"<td><span class='label label-sm label-"+data[item].status.toLowerCase()+"'>"+statusStr+"</span></td>"+
"<td>"+dateStr+"</td>";
var trStr = "<tr>" + tdStr+ "</tr>";
$(".dataTable").append(trStr);
}
}
var sourceListHtml = '<li><a href="javascript:;" style="background-color: #95a5a6;color:#FFFFFF;">All</a></li>';
sourceArr.forEach(function(item,i){
var bgColor = item.lightColor;
sourceListHtml = sourceListHtml + '<li><a href="javascript:;" style="background-color:'+bgColor+';color:#FFFFFF; ">'+item.sourceName+'</a></li>';
})
$("#orderNoList").html(sourceListHtml);
});
});
}
}
//updateTasks('${show}'
,-10*60
);
//updateTasks('${show}');
setInterval(function(){
setInterval(function(){
updateTasks('${show}'
,-10*60
);
updateTasks('${show}');
}, 1000);
}, 1000);
waitting = function(){
waitting = function(){
...
...
myproject/src/main/webapp/WEB-INF/pages/storage/storageSearch.jsp
查看文件 @
a20fc42
...
@@ -46,12 +46,12 @@
...
@@ -46,12 +46,12 @@
</div>
</div>
</form:form>
</form:form>
<display:table name="searchCriteria.pageList" id="storage"
<display:table name="searchCriteria.pageList" id="storage"
defaultsort="1" class="table table-striped table-bordered table-hover" export="false">
defaultsort="1" class="table table-striped table-bordered table-hover" export="false"
requestURI="storageSearch.html"
>
<display:column property="name" escapeXml="true" titleKey="storage.name"/>
<display:column property="name" escapeXml="true" titleKey="storage.name"/>
<display:column titleKey="storage.type" property="type"/>
<display:column titleKey="storage.type" property="type"/>
<display:column titleKey="storage.slotAmount">
<display:column titleKey="storage.slotAmount">
${storage.totalSlots
- storage.emptySlots} / ${storage.totalSlots
}
${storage.totalSlots}
</display:column>
</display:column>
<display:setProperty name="paging.banner.items_name"><fmt:message
<display:setProperty name="paging.banner.items_name"><fmt:message
key="storage.item.name"/></display:setProperty>
key="storage.item.name"/></display:setProperty>
...
...
myproject/src/main/webapp/resources/admin/linePositions.csv
查看文件 @
a20fc42
此文件的差异被折叠,
点击展开。
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论