Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
Gree
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 1c0d8da7
由
LN
编写于
2021-09-03 11:24:01 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.Datalog增加执行时间和在库时长.
2.库位上传优化.
1 个父辈
ebb0f334
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
224 行增加
和
31 行删除
myproject/src/main/java/com/csvreader/CsvReader.java
myproject/src/main/java/com/myproject/api/OrderFileWatch.java
myproject/src/main/java/com/myproject/bean/update/DataLog.java
myproject/src/main/java/com/myproject/bean/utils/BoxStatusBean.java
myproject/src/main/java/com/myproject/manager/IStoragePosManager.java
myproject/src/main/java/com/myproject/manager/impl/StoragePosManagerImpl.java
myproject/src/main/java/com/myproject/webapp/controller/FileUploadController.java
myproject/src/main/java/com/myproject/webapp/controller/qisda/DifferentInventoryController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/TaskService.java
myproject/src/main/java/com/csvreader/CsvReader.java
查看文件 @
1c0d8da
...
...
@@ -20,6 +20,9 @@
*/
package
com
.
csvreader
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
java.io.BufferedReader
;
import
java.io.File
;
import
java.io.FileInputStream
;
...
...
@@ -38,6 +41,32 @@ import java.util.HashMap;
* stream.
*/
public
class
CsvReader
{
protected
static
transient
Logger
log
=
LogManager
.
getLogger
(
CsvReader
.
class
);
public
static
CsvReader
newReader
(
String
fileURL
,
String
...
headerNameAlias
)
throws
IOException
{
String
reloadEncodeing
=
"UTF-8"
;
CsvReader
csvRead
=
new
CsvReader
(
fileURL
);
csvRead
.
setSkipEmptyRecords
(
true
);
csvRead
.
setTrimWhitespace
(
true
);
csvRead
.
readHeaders
();
int
index
=
csvRead
.
getIndex
(
headerNameAlias
);
//未找到列,重新读取
if
(
index
==
-
1
)
{
String
logName
=
""
;
for
(
String
str:
headerNameAlias
)
{
logName
+=
str
+
","
;
}
log
.
info
(
"文件未包含列["
+
logName
+
"] ,改为"
+
reloadEncodeing
+
"重新读取"
);
csvRead
=
new
CsvReader
(
fileURL
,
CsvReader
.
Letters
.
COMMA
,
Charset
.
forName
(
reloadEncodeing
));
csvRead
.
setSkipEmptyRecords
(
true
);
csvRead
.
setTrimWhitespace
(
true
);
csvRead
.
readHeaders
();
}
return
csvRead
;
}
private
Reader
inputStream
=
null
;
private
String
fileName
=
null
;
...
...
@@ -1454,7 +1483,20 @@ public class CsvReader {
return
-
1
;
}
}
public
int
getIndex
(
String
...
headerNameAlias
){
for
(
String
headName:
headerNameAlias
)
{
try
{
int
index
=
getIndex
(
headName
);
if
(
index
!=
-
1
){
return
index
;
}
}
catch
(
Exception
e
){
}
}
return
-
1
;
}
/**
* Skips the next record of data by parsing each column. Does not
* increment
...
...
myproject/src/main/java/com/myproject/api/OrderFileWatch.java
查看文件 @
1c0d8da
...
...
@@ -278,10 +278,13 @@ public class OrderFileWatch {
private
LiteOrder
readCsv
(
File
csvFile
){
List
<
LiteOrderItem
>
items
=
Lists
.
newArrayList
();
try
{
CsvReader
csvRead
=
new
CsvReader
(
csvFile
.
getAbsolutePath
());
csvRead
.
setSkipEmptyRecords
(
true
);
//忽略空行
csvRead
.
setTrimWhitespace
(
true
);
//去除空格
csvRead
.
readHeaders
();
// CsvReader csvRead = new CsvReader(csvFile.getAbsolutePath());
// csvRead.setSkipEmptyRecords(true);//忽略空行
// csvRead.setTrimWhitespace(true);//去除空格
// csvRead.readHeaders();
CsvReader
csvRead
=
CsvReader
.
newReader
(
csvFile
.
getAbsolutePath
(),
"PN"
);
int
partNumberIndex
=
csvRead
.
getIndex
(
"PN"
);
if
(
partNumberIndex
==
-
1
){
log
.
info
(
"未包含PN列"
);
...
...
myproject/src/main/java/com/myproject/bean/update/DataLog.java
查看文件 @
1c0d8da
...
...
@@ -160,6 +160,32 @@ public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ {
*/
private
int
outOrder
=
0
;
/**
* 出入库执行时间,秒
*/
private
int
executeTime
=
0
;
/**
* 出库时记录此料在库时长 ,分钟
*/
private
long
inStoreTime
=
0
l
;
public
long
getInStoreTime
()
{
return
inStoreTime
;
}
public
void
setInStoreTime
(
long
inStoreTime
)
{
this
.
inStoreTime
=
inStoreTime
;
}
public
int
getExecuteTime
()
{
return
executeTime
;
}
public
void
setExecuteTime
(
int
executeTime
)
{
this
.
executeTime
=
executeTime
;
}
public
String
getStorageName
()
{
return
storageName
;
}
...
...
myproject/src/main/java/com/myproject/bean/utils/BoxStatusBean.java
查看文件 @
1c0d8da
...
...
@@ -126,4 +126,14 @@ public class BoxStatusBean {
public
String
getPosId
(){
return
data
.
get
(
"posId"
);
}
/**
* 获取客户端发送上来的出入库完成的库位信息
*/
public
int
getExecuteTime
(){
if
(
data
!=
null
&&
data
.
containsKey
(
"executeTime"
)){
return
Integer
.
parseInt
(
data
.
get
(
"executeTime"
));
}
return
-
1
;
}
}
myproject/src/main/java/com/myproject/manager/IStoragePosManager.java
查看文件 @
1c0d8da
...
...
@@ -20,6 +20,7 @@ import java.util.Map;
* Created by kangmor on 2015/12/4.
*/
public
interface
IStoragePosManager
extends
IManager
<
StoragePos
>
{
List
<
StoragePos
>
findByStorage
(
String
storageId
);
StoragePos
findByStorage
(
String
storageId
,
String
storagePosName
);
StoragePos
findOneLockPos
(
String
partNumber
,
String
lockId
,
Collection
<
String
>
excludePosIds
);
...
...
myproject/src/main/java/com/myproject/manager/impl/StoragePosManagerImpl.java
查看文件 @
1c0d8da
...
...
@@ -48,6 +48,10 @@ public class StoragePosManagerImpl implements IStoragePosManager {
public
StoragePos
findByStorage
(
String
storageId
,
String
storagePosName
)
{
return
storagePosDao
.
findOneByCondition
(
new
String
[]{
"storageId"
,
"posName"
},
new
String
[]{
storageId
,
storagePosName
});
}
@Override
public
List
<
StoragePos
>
findByStorage
(
String
storageId
)
{
return
storagePosDao
.
findListByCondition
(
new
String
[]{
"storageId"
},
new
String
[]{
storageId
});
}
@Override
public
StoragePos
get
(
String
id
)
{
...
...
myproject/src/main/java/com/myproject/webapp/controller/FileUploadController.java
查看文件 @
1c0d8da
...
...
@@ -218,10 +218,14 @@ public class FileUploadController extends BaseFormController {
// }
// return StorageConstants.BARCODE_SEARCH_VIEW;
log
.
info
(
"开始更新条码信息"
);
CsvReader
csvRead
=
new
CsvReader
(
fileURL
);
csvRead
.
setSkipEmptyRecords
(
true
);
//忽略空行
csvRead
.
setTrimWhitespace
(
true
);
//去除空格
csvRead
.
readHeaders
();
// CsvReader csvRead = new CsvReader(fileURL);
// csvRead.setSkipEmptyRecords(true);//忽略空行
// csvRead.setTrimWhitespace(true);//去除空格
// csvRead.readHeaders();
CsvReader
csvRead
=
CsvReader
.
newReader
(
fileURL
,
"PN"
);
int
reelIdIndex
=
csvRead
.
getIndex
(
"RI"
);
int
partNumberIndex
=
csvRead
.
getIndex
(
"PN"
);
if
(
partNumberIndex
==
-
1
){
...
...
@@ -301,10 +305,13 @@ public class FileUploadController extends BaseFormController {
log
.
error
(
"Storage id is not exist"
);
throw
new
ValidateException
(
"storage.error.notExist"
);
}
CsvReader
csvRead
=
new
CsvReader
(
fileURL
);
csvRead
.
setSkipEmptyRecords
(
true
);
//忽略空行
csvRead
.
setTrimWhitespace
(
true
);
//去除空格
csvRead
.
readHeaders
();
// CsvReader csvRead = new CsvReader(fileURL);
// csvRead.setSkipEmptyRecords(true);//忽略空行
// csvRead.setTrimWhitespace(true);//去除空格
// csvRead.readHeaders();
CsvReader
csvRead
=
CsvReader
.
newReader
(
fileURL
,
"位置"
,
"pos"
);
int
posIndex
=
csvRead
.
getIndex
(
"位置"
);
if
(
posIndex
==
-
1
){
posIndex
=
csvRead
.
getIndex
(
"pos"
);
...
...
@@ -356,32 +363,83 @@ public class FileUploadController extends BaseFormController {
}
}
int
newRowCount
=
0
;
int
existRowCount
=
0
;
int
updateRowCount
=
0
;
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByStorage
(
storage
.
getId
());
List
<
StoragePos
>
newList
=
new
ArrayList
<>();
if
(
list
!=
null
&&
list
.
size
()
>
0
)
{
for
(
StoragePosExcel
storagePosExcel
:
list
)
{
StoragePos
storagePos
=
storagePosManager
.
findByStorage
(
storage
.
getId
(),
storagePosExcel
.
getPosName
());
// StoragePos storagePos = storagePosManager.findByStorage(storage.getId(), storagePosExcel.getPosName());
StoragePos
storagePos
=
findFormList
(
storagePosList
,
storage
.
getId
(),
storagePosExcel
.
getPosName
());
if
(
storagePos
==
null
)
{
storagePos
=
new
StoragePos
();
newRowCount
++;
storagePos
.
setPosName
(
storagePosExcel
.
getPosName
());
storagePos
.
setPriority
(
storagePosExcel
.
getPriority
());
storagePos
.
setW
(
storagePosExcel
.
getW
());
storagePos
.
setH
(
storagePosExcel
.
getH
());
storagePos
.
setStorageId
(
storage
.
getId
());
Point
point
=
PointUtil
.
getPosPoint
(
storagePos
.
getPosName
());
storagePos
.
setCoordinate
(
new
double
[]{
point
.
getX
(),
point
.
getY
()});
newList
.
add
(
storagePos
);
}
else
{
updateRowCount
++;
boolean
needUpdate
=
false
;
if
(!
storagePos
.
getPosName
().
equals
(
storagePosExcel
.
getPosName
())){
needUpdate
=
true
;
storagePos
.
setPosName
(
storagePosExcel
.
getPosName
());
}
if
(
storagePos
.
getPriority
()!=
storagePosExcel
.
getPriority
())
{
needUpdate
=
true
;
storagePos
.
setPriority
(
storagePosExcel
.
getPriority
());
}
if
(
storagePos
.
getW
()!=
storagePosExcel
.
getW
())
{
needUpdate
=
true
;
storagePos
.
setW
(
storagePosExcel
.
getW
());
}
if
(
storagePos
.
getH
()!=
storagePosExcel
.
getH
())
{
needUpdate
=
true
;
storagePos
.
setH
(
storagePosExcel
.
getH
());
}
if
(!
storagePos
.
getStorageId
().
equals
(
storage
.
getId
())){
needUpdate
=
true
;
storagePos
.
setStorageId
(
storage
.
getId
());
}
Point
point
=
PointUtil
.
getPosPoint
(
storagePos
.
getPosName
());
if
(
storagePos
.
getCoordinate
()==
null
||
storagePos
.
getCoordinate
().
length
!=
2
||
(
storagePos
.
getCoordinate
()[
0
]!=
point
.
getX
())
||(
storagePos
.
getCoordinate
()[
1
]!=
point
.
getY
())){
needUpdate
=
true
;
storagePos
.
setCoordinate
(
new
double
[]{
point
.
getX
(),
point
.
getY
()});
}
if
(
needUpdate
){
updateRowCount
++;
storagePosManager
.
save
(
storagePos
);
}
else
{
existRowCount
++;
}
}
storagePos
.
setPosName
(
storagePosExcel
.
getPosName
());
storagePos
.
setPriority
(
storagePosExcel
.
getPriority
());
storagePos
.
setW
(
storagePosExcel
.
getW
());
storagePos
.
setH
(
storagePosExcel
.
getH
());
storagePos
.
setStorageId
(
storage
.
getId
());
Point
point
=
PointUtil
.
getPosPoint
(
storagePos
.
getPosName
());
storagePos
.
setCoordinate
(
new
double
[]{
point
.
getX
(),
point
.
getY
()});
storagePosManager
.
save
(
storagePos
);
}
if
(
newList
.
size
()>
0
){
storagePosManager
.
insertAll
(
newList
);
}
}
dataCache
.
reloadStorage
(
storage
);
String
msg
=
"读取到["
+
list
.
size
()+
"]个位置信息:新增【"
+
newRowCount
+
"】更新【"
+
updateRowCount
+
"】"
;
String
msg
=
"读取到["
+
list
.
size
()+
"]个位置信息:新增【"
+
newRowCount
+
"】
,已存在【"
+
existRowCount
+
"】,
更新【"
+
updateRowCount
+
"】"
;
log
.
info
(
msg
);
return
msg
;
}
private
StoragePos
findFormList
(
List
<
StoragePos
>
list
,
String
storageId
,
String
posName
)
{
for
(
StoragePos
pos
:
list
)
{
if
(
pos
.
getStorageId
().
equals
(
storageId
)&&
pos
.
getPosName
().
equals
(
posName
)){
return
pos
;
}
}
return
null
;
}
/*protected String handleStoragePos(String fileURL, String params) throws ExcelParseException, IOException, ValidateException, IllegalAccessException, InvocationTargetException {
if (StringUtils.isEmpty(params)) {
log.error("Storage id is null");
...
...
myproject/src/main/java/com/myproject/webapp/controller/qisda/DifferentInventoryController.java
查看文件 @
1c0d8da
...
...
@@ -137,10 +137,14 @@ public class DifferentInventoryController extends BaseController {
private
Map
<
String
,
DiffInfo
>
readQisda
(
String
filePath
){
Map
<
String
,
DiffInfo
>
itemMap
=
Maps
.
newHashMap
();
try
{
CsvReader
csvRead
=
new
CsvReader
(
filePath
);
csvRead
.
setSkipEmptyRecords
(
true
);
//忽略空行
csvRead
.
setTrimWhitespace
(
true
);
//去除空格
csvRead
.
readHeaders
();
// CsvReader csvRead = new CsvReader(filePath);
// csvRead.setSkipEmptyRecords(true);//忽略空行
// csvRead.setTrimWhitespace(true);//去除空格
// csvRead.readHeaders();
CsvReader
csvRead
=
CsvReader
.
newReader
(
filePath
,
"ReelId"
);
int
reelIDIndex
=
csvRead
.
getIndex
(
"ReelID"
);
int
facilityIndex
=
csvRead
.
getIndex
(
"Facility"
);
int
locationIndex
=
csvRead
.
getIndex
(
"Location"
);
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/TaskService.java
查看文件 @
1c0d8da
...
...
@@ -27,8 +27,10 @@ import com.myproject.model.User;
import
com.myproject.service.UserManager
;
import
com.myproject.util.QisdaApi
;
import
com.myproject.util.StorageConstants
;
import
com.myproject.util.StringHelper
;
import
com.myproject.webapp.controller.qisda.util.OutInfoCache
;
import
com.myproject.webapp.controller.qisda.util.SoseqCache
;
import
org.apache.commons.lang.ObjectUtils
;
import
org.apache.commons.lang.math.RandomUtils
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
...
...
@@ -1232,8 +1234,9 @@ public class TaskService implements ITaskService {
if
(!
Strings
.
isNullOrEmpty
(
posName
)){
//客户端发一次完成之后,会发空的 posName,不需要处理
if
(
StorageConstants
.
BOX_STATUS
.
IN_FINISHED
==
status
)
{
//入仓完成
DataLog
task
=
findExecutingTask
(
statusBeanToSave
.
getCid
(),
boxStatus
.
getPosId
(),
StorageConstants
.
OP
.
PUT_IN
);
int
exTime
=
boxStatus
.
getExecuteTime
();
if
(
task
!=
null
&&
task
.
isPutInTask
())
{
log
.
info
(
task
.
getBarcode
()
+
"入仓位["
+
task
.
getPosName
()
+
"]完成"
);
log
.
info
(
task
.
getBarcode
()
+
"入仓位["
+
task
.
getPosName
()
+
"]完成
,执行时间["
+
exTime
+
"]
"
);
QisdaCache
.
removeReelLockPosInfo
(
task
.
getBarcode
());
DataLog
cancelTask
=
findFinishedTask
(
statusBeanToSave
.
getCid
(),
boxStatus
.
getPosId
());
if
(
cancelTask
!=
null
&&
cancelTask
.
isCancel
()){
...
...
@@ -1241,13 +1244,22 @@ public class TaskService implements ITaskService {
finishedTaskMap
.
remove
(
cancelTask
.
getBarcode
());
log
.
info
(
"从已完成的任务列表中删除之前取消的任务:"
+
cancelTask
.
getPosName
()
+
" ReelId:"
+
cancelTask
.
getBarcode
());
}
if
(
exTime
>
0
){
task
.
setExecuteTime
(
exTime
);
updatePosExecuteTime
(
boxStatus
.
getPosId
(),
exTime
);
}
putInFinished
(
task
);
}
else
{
//从已完成列表中找,如果还找不到就忽略
task
=
findFinishedTask
(
statusBeanToSave
.
getCid
(),
boxStatus
.
getPosId
());
if
(
task
!=
null
)
{
if
(
task
.
isCancel
()){
//被取消的任务,客户端发完成信号过来,修改取消状态为已完成
log
.
info
(
task
.
getBarcode
()
+
"入仓位["
+
task
.
getPosName
()
+
"]完成,但任务已被取消,修改为完成"
);
log
.
info
(
task
.
getBarcode
()
+
"入仓位["
+
task
.
getPosName
()
+
"]完成,但任务已被取消,修改为完成,执行时间["
+
exTime
+
"]"
);
if
(
exTime
>
0
){
task
.
setExecuteTime
(
exTime
);
updatePosExecuteTime
(
boxStatus
.
getPosId
(),
exTime
);
}
putInFinished
(
task
);
}
}
else
{
...
...
@@ -1259,14 +1271,18 @@ public class TaskService implements ITaskService {
//暂不处理
}
else
if
(
StorageConstants
.
BOX_STATUS
.
OUT_FINISHED
==
status
)
{
//出仓完成
DataLog
task
=
findExecutingTask
(
statusBeanToSave
.
getCid
(),
boxStatus
.
getPosId
(),
StorageConstants
.
OP
.
CHECKOUT
);
int
exTime
=
boxStatus
.
getExecuteTime
();
if
(
task
!=
null
)
{
log
.
info
(
"任务["
+
task
.
getId
()+
"]"
+
task
.
getBarcode
()
+
"出仓位["
+
task
.
getPosName
()
+
"]完成,当前状态:"
+
task
.
getStatus
());
log
.
info
(
"任务["
+
task
.
getId
()+
"]"
+
task
.
getBarcode
()
+
"出仓位["
+
task
.
getPosName
()
+
"]完成,当前状态:"
+
task
.
getStatus
()
+
",执行时间["
+
exTime
+
"]"
);
DataLog
cancelTask
=
findFinishedTask
(
statusBeanToSave
.
getCid
(),
boxStatus
.
getPosId
());
if
(
cancelTask
!=
null
&&
cancelTask
.
isCancel
()){
//将相同库位已经取消的任务从完成队列里删除
finishedTaskMap
.
remove
(
cancelTask
.
getBarcode
());
log
.
info
(
"从已完成的任务列表中删除之前取消的任务:"
+
cancelTask
.
getPosName
()
+
" ReelId:"
+
cancelTask
.
getBarcode
());
}
if
(
exTime
>
0
){
task
.
setExecuteTime
(
exTime
);
}
//dataCache.unLockOneReel(task.getCid(),task.getPartNumber());
checkoutFinished
(
task
);
}
else
{
...
...
@@ -1275,7 +1291,10 @@ public class TaskService implements ITaskService {
task
=
findFinishedTask
(
statusBeanToSave
.
getCid
(),
boxStatus
.
getPosId
());
if
(
task
!=
null
)
{
if
(
task
.
isCancel
()){
//被取消的任务,客户端发完成信号过来,修改取消状态为已完成
log
.
info
(
task
.
getBarcode
()
+
"出仓位["
+
task
.
getPosName
()
+
"]完成,但任务已被取消,修改为完成"
);
log
.
info
(
task
.
getBarcode
()
+
"出仓位["
+
task
.
getPosName
()
+
"]完成,但任务已被取消,修改为完成,执行时间["
+
exTime
+
"]"
);
if
(
exTime
>
0
){
task
.
setExecuteTime
(
exTime
);
}
checkoutFinished
(
task
);
}
}
else
{
...
...
@@ -1298,6 +1317,30 @@ public class TaskService implements ITaskService {
return
statusBean
;
}
/**
* 入库完成时,更新库位的最小入库时间
* @param posId
* @param exTime
*/
private
void
updatePosExecuteTime
(
String
posId
,
double
exTime
)
{
if
(
posId
==
null
||
exTime
<=
0
)
{
return
;
}
StoragePos
pos
=
storagePosManager
.
getByPosName
(
posId
);
if
(
pos
!=
null
)
{
if
(
pos
.
getPriority
()
<=
0
||
pos
.
getPriority
()
>
exTime
)
{
pos
.
setPriority
(
exTime
);
log
.
info
(
"更改库位["
+
posId
+
"]的最小入库时间=["
+
exTime
+
"]秒"
);
try
{
storagePosManager
.
save
(
pos
);
}
catch
(
ValidateException
e
)
{
log
.
error
(
"更改库位["
+
posId
+
"]的最小入库时间=["
+
exTime
+
"]秒 出错: "
+
e
.
toString
());
}
}
}
}
private
DataLog
findFinishedTask
(
String
cid
,
String
posName
){
Collection
<
DataLog
>
areaFinishedTasks
=
getFinishedTasks
();
for
(
DataLog
task
:
areaFinishedTasks
)
{
...
...
@@ -1745,6 +1788,8 @@ public class TaskService implements ITaskService {
log
.
warn
(
"任务:"
+
task
.
getBarcode
()
+
" 仓位:"
+
task
.
getPosName
()+
" 的 Barcode 为null, 之前可能处理过直接返回"
);
return
;
}
//记录在库时长
task
.
setInStoreTime
(
barcode
.
getInStoreMiniute
());
barcode
=
barcodeManager
.
get
(
barcode
.
getId
());
if
(
barcode
!=
null
){
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论