Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
Gree
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 4d567aba
由
sunke
编写于
2020-11-02 08:54:33 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
空出时禁用库位
1 个父辈
edd9f66c
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
156 行增加
和
29 行删除
myproject/src/main/java/com/myproject/webapp/controller/qisda/util/OutInfoCache.java
myproject/src/main/java/com/myproject/webapp/controller/storage/BoxChartController.java
myproject/src/main/java/com/myproject/webapp/controller/user/DataLogSearchController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/ITaskService.java
myproject/src/main/java/com/myproject/webapp/controller/webService/QisdaDeviceController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/TaskService.java
myproject/src/main/webapp/WEB-INF/pages/dataLog/dataLogSearch.jsp
myproject/src/main/webapp/WEB-INF/pages/updateHistory.jsp
myproject/src/main/webapp/assets/global/plugins/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js
myproject/src/main/webapp/decorators/metro.jsp
myproject/src/main/java/com/myproject/webapp/controller/qisda/util/OutInfoCache.java
查看文件 @
4d567ab
...
@@ -91,23 +91,71 @@ public class OutInfoCache {
...
@@ -91,23 +91,71 @@ public class OutInfoCache {
}
}
}
}
public
void
executeOutTask
(){
public
void
executeOutTask
(){
long
now
=
System
.
currentTimeMillis
();
//优先队列中最先出的需求单
OutInfo
mustOutInfo
=
null
;
//已到达建议时间的需求单
OutInfo
suggestOutInfo
=
null
;
Date
now
=
new
Date
();
for
(
OutInfo
unEndOutInfo
:
getCachedOutInfos
())
{
for
(
OutInfo
unEndOutInfo
:
getCachedOutInfos
())
{
//未执行过的或任务已完成的才可以执行
if
(
unEndOutInfo
.
isReelCutAction
()
||
unEndOutInfo
.
isUrgentAction
()
||
unEndOutInfo
.
isCheckAction
()){
if
(
unEndOutInfo
.
isTaskEnd
()
||
unEndOutInfo
.
isNew
()){
//单独出库,分盘料或盘点料,不按时间可直接执行,距离上次任务完成5分钟后才可再次执行
long
lastEndTime
=
unEndOutInfo
.
getTaskEndTime
();
if
(
unEndOutInfo
.
isTaskEnd
()
||
unEndOutInfo
.
isNew
()){
//距离上次任务完成5分钟后才可再次执行
long
lastEndTime
=
unEndOutInfo
.
getTaskEndTime
();
if
(
now
-
lastEndTime
>=
5
*
60
*
1000
){
if
(
now
.
getTime
()
-
lastEndTime
>=
5
*
60
*
1000
){
checkOutOutItems
(
unEndOutInfo
.
gethSerial
());
checkOutOutItems
(
unEndOutInfo
.
gethSerial
());
}
}
}
else
if
(
unEndOutInfo
.
isNew
()){
//寻找未执行过的到达建议时间和必须出库时间的工单料(首盘或补料)
if
(
unEndOutInfo
.
isTailAction
()
||
unEndOutInfo
.
isFirstReelAction
()){
long
firstExecuteTime
=
unEndOutInfo
.
getFirstExecuteTime
();
if
(
firstExecuteTime
<
0
){
if
(
mustOutInfo
==
null
||
firstExecuteTime
>
mustOutInfo
.
getFirstExecuteTime
()){
mustOutInfo
=
unEndOutInfo
;
}
}
else
if
(
firstExecuteTime
==
0
){
//到达建议时间,且时间最早的
Date
suggestDate
=
unEndOutInfo
.
getSdate
();
if
(
suggestDate
.
before
(
now
)){
if
(
suggestOutInfo
==
null
||
suggestDate
.
before
(
suggestOutInfo
.
getSdate
())){
suggestOutInfo
=
unEndOutInfo
;
}
}
}
}
}
}
}
}
if
(
mustOutInfo
!=
null
||
suggestOutInfo
!=
null
){
//先看当前是否有执行中的任务
Collection
<
DataLog
>
queueTasks
=
taskService
.
getQueueTasks
();
List
<
DataLog
>
allTasks
=
taskService
.
getFinishedTasks
();
if
(!
queueTasks
.
isEmpty
()){
allTasks
.
addAll
(
queueTasks
);
}
//是否有工单料任务
boolean
hasOrderTask
=
false
;
for
(
DataLog
dataLog
:
allTasks
)
{
if
(
dataLog
.
isCheckOutTask
()){
if
(!
dataLog
.
isUrgentReel
()
&&
!
dataLog
.
isCutReel
()
&&
!
dataLog
.
isLessSendReel
()){
//工单料(不是指定料也不是分盘料即首盘或补料)
hasOrderTask
=
true
;
}
}
}
if
(!
hasOrderTask
){
//无工单料任务,如果有优先执行任务先执行,如果没有执行到达建议时间的任务
if
(
mustOutInfo
!=
null
){
log
.
info
(
"执行优先工单需求单:"
+
mustOutInfo
.
gethSerial
());
checkOutOutItems
(
mustOutInfo
.
gethSerial
());
}
else
if
(
suggestOutInfo
!=
null
){
log
.
info
(
"执行到达建议时间工单需求单:"
+
suggestOutInfo
.
gethSerial
());
checkOutOutItems
(
suggestOutInfo
.
gethSerial
());
}
}
}
}
}
}
/**
/**
...
...
myproject/src/main/java/com/myproject/webapp/controller/storage/BoxChartController.java
查看文件 @
4d567ab
...
@@ -327,7 +327,9 @@ public class BoxChartController extends BaseController {
...
@@ -327,7 +327,9 @@ public class BoxChartController extends BaseController {
@ResponseBody
@ResponseBody
public
void
removeTaskFromQueue
(
HttpServletRequest
request
)
throws
Exception
{
public
void
removeTaskFromQueue
(
HttpServletRequest
request
)
throws
Exception
{
String
taskId
=
request
.
getParameter
(
"tid"
);
String
taskId
=
request
.
getParameter
(
"tid"
);
taskService
.
hideTask
(
taskId
);
//禁用库位
boolean
prohibitePos
=
false
;
taskService
.
hideTask
(
taskId
,
prohibitePos
);
}
}
/**
/**
...
...
myproject/src/main/java/com/myproject/webapp/controller/user/DataLogSearchController.java
查看文件 @
4d567ab
...
@@ -96,7 +96,14 @@ public class DataLogSearchController extends BaseSearchController {
...
@@ -96,7 +96,14 @@ public class DataLogSearchController extends BaseSearchController {
addFromToDateParam
(
request
,
criteria
,
"updateDate"
);
addFromToDateParam
(
request
,
criteria
,
"updateDate"
);
addIntEqParam
(
request
,
criteria
,
"type"
);
addIntEqParam
(
request
,
criteria
,
"type"
);
addStrEqParam
(
request
,
criteria
,
"status"
);
String
statusStr
=
request
.
getParameter
(
"status"
);
if
(!
Strings
.
isNullOrEmpty
(
statusStr
)
&&
statusStr
.
equals
(
"UN_END"
)){
request
.
setAttribute
(
"status"
,
statusStr
);
criteria
.
and
(
"status"
).
nin
(
StorageConstants
.
OP_STATUS
.
END
.
name
(),
StorageConstants
.
OP_STATUS
.
FINISHED
.
name
());
}
else
{
addStrEqParam
(
request
,
criteria
,
"status"
);
}
addLikeParam
(
request
,
criteria
,
"sourceName"
);
addLikeParam
(
request
,
criteria
,
"sourceName"
);
addStrEqParam
(
request
,
criteria
,
"storageId"
);
addStrEqParam
(
request
,
criteria
,
"storageId"
);
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/ITaskService.java
查看文件 @
4d567ab
...
@@ -73,7 +73,7 @@ public interface ITaskService {
...
@@ -73,7 +73,7 @@ public interface ITaskService {
//void checkOutInaction(String areaId, int day) throws ValidateException;
//void checkOutInaction(String areaId, int day) throws ValidateException;
boolean
hideTask
(
String
taskId
);
boolean
hideTask
(
String
taskId
,
boolean
prohibitePos
);
Collection
<
String
>
excludePosIds
();
Collection
<
String
>
excludePosIds
();
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/QisdaDeviceController.java
查看文件 @
4d567ab
...
@@ -601,7 +601,7 @@ public class QisdaDeviceController extends BaseController {
...
@@ -601,7 +601,7 @@ public class QisdaDeviceController extends BaseController {
}
}
/**
/**
* 取消
入
库任务
* 取消
出
库任务
*/
*/
@RequestMapping
(
value
=
"/cancelOutTask"
)
@RequestMapping
(
value
=
"/cancelOutTask"
)
@ResponseBody
@ResponseBody
...
@@ -618,7 +618,9 @@ public class QisdaDeviceController extends BaseController {
...
@@ -618,7 +618,9 @@ public class QisdaDeviceController extends BaseController {
log
.
info
(
"客户端取消["
+
codeStr
+
"]的未执行完成的出库任务结果:"
+
cancelResult
);
log
.
info
(
"客户端取消["
+
codeStr
+
"]的未执行完成的出库任务结果:"
+
cancelResult
);
return
ResultBean
.
newOkResult
(
cancelResult
);
return
ResultBean
.
newOkResult
(
cancelResult
);
}
else
{
}
else
{
boolean
hideResult
=
taskService
.
hideTask
(
task
.
getId
());
//禁用库位
boolean
prohibitePos
=
true
;
boolean
hideResult
=
taskService
.
hideTask
(
task
.
getId
(),
prohibitePos
);
log
.
info
(
"客户端取消["
+
codeStr
+
"]已完成的出库任务结果:"
+
hideResult
);
log
.
info
(
"客户端取消["
+
codeStr
+
"]已完成的出库任务结果:"
+
hideResult
);
return
ResultBean
.
newOkResult
(
hideResult
);
return
ResultBean
.
newOkResult
(
hideResult
);
}
}
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/TaskService.java
查看文件 @
4d567ab
...
@@ -776,8 +776,14 @@ public class TaskService implements ITaskService {
...
@@ -776,8 +776,14 @@ public class TaskService implements ITaskService {
return
cancelTask
(
task
);
return
cancelTask
(
task
);
}
}
/**
* 隐藏任务
* @param taskId
* @param prohibitePos 是否禁用库位(料仓空出时,需要禁用库位)
* @return
*/
@Override
@Override
public
boolean
hideTask
(
String
taskId
)
{
public
boolean
hideTask
(
String
taskId
,
boolean
prohibitePos
)
{
DataLog
task
=
null
;
DataLog
task
=
null
;
List
<
DataLog
>
finishedTasks
=
getFinishedTasks
();
List
<
DataLog
>
finishedTasks
=
getFinishedTasks
();
for
(
DataLog
finishedTask
:
finishedTasks
)
{
for
(
DataLog
finishedTask
:
finishedTasks
)
{
...
@@ -793,6 +799,19 @@ public class TaskService implements ITaskService {
...
@@ -793,6 +799,19 @@ public class TaskService implements ITaskService {
AppendInfo
taskAppendInfo
=
task
.
getAppendInfo
();
AppendInfo
taskAppendInfo
=
task
.
getAppendInfo
();
boolean
stopSendToQisda
=
task
.
isStopSendToQisda
();
boolean
stopSendToQisda
=
task
.
isStopSendToQisda
();
finishedTaskMap
.
remove
(
task
.
getBarcode
());
finishedTaskMap
.
remove
(
task
.
getBarcode
());
if
(
prohibitePos
){
log
.
info
(
"库位["
+
task
.
getPosName
()+
"]料盘["
+
task
.
getBarcode
()+
"]空出,禁用库位"
);
task
.
setOutOrder
(-
task
.
getOutOrder
());
try
{
StoragePos
pos
=
storagePosManager
.
get
(
task
.
getPosId
());
pos
.
setEnabled
(
false
);
storagePosManager
.
save
(
pos
);
}
catch
(
ValidateException
e
)
{
}
}
task
.
setStopSendToQisda
(
true
);
task
.
setStopSendToQisda
(
true
);
task
=
dataLogDao
.
save
(
task
);
task
=
dataLogDao
.
save
(
task
);
...
...
myproject/src/main/webapp/WEB-INF/pages/dataLog/dataLogSearch.jsp
查看文件 @
4d567ab
...
@@ -96,6 +96,7 @@
...
@@ -96,6 +96,7 @@
<div style="text-align:left">
<div style="text-align:left">
<select name="status" class="form-control">
<select name="status" class="form-control">
<option value=""><fmt:message key="select.all"/></option>
<option value=""><fmt:message key="select.all"/></option>
<option value="UN_END" <c:if test="${status=='UN_END'}"> selected </c:if> ><fmt:message key="未完成"/></option>
<option value="WAIT" <c:if test="${status=='WAIT'}"> selected </c:if> > <fmt:message key="op.status.wait"/></option>
<option value="WAIT" <c:if test="${status=='WAIT'}"> selected </c:if> > <fmt:message key="op.status.wait"/></option>
<option value="EXECUTING" <c:if test="${status=='EXECUTING'}"> selected </c:if> > <fmt:message key="op.status.executing"/></option>
<option value="EXECUTING" <c:if test="${status=='EXECUTING'}"> selected </c:if> > <fmt:message key="op.status.executing"/></option>
<option value="FINISHED" <c:if test="${status=='FINISHED'}"> selected </c:if> > <fmt:message key="op.status.finished"/></option>
<option value="FINISHED" <c:if test="${status=='FINISHED'}"> selected </c:if> > <fmt:message key="op.status.finished"/></option>
...
@@ -125,7 +126,11 @@
...
@@ -125,7 +126,11 @@
<display:setProperty name="export.csv.filename" value="dataLog.csv" />
<display:setProperty name="export.csv.filename" value="dataLog.csv" />
<display:column property="partNumber" titleKey="dataLog.partNumber" sortable="true" sortProperty="partNumber"/>
<display:column property="partNumber" titleKey="dataLog.partNumber" sortable="true" sortProperty="partNumber"/>
<display:column property="barcode" titleKey="barcode.barcode" sortable="true" sortProperty="barcode"/>
<display:column property="barcode" titleKey="barcode.barcode" sortable="true" sortProperty="barcode"/>
<display:column titleKey="dataLog.storageName" sortable="true" sortProperty="posName">
<c:set var="posDisabledClass" value=""/>
<c:if test='${dataLog.outOrder < 0}'>
<c:set var="posDisabledClass" value="bg-red"/>
</c:if>
<display:column titleKey="dataLog.storageName" sortable="true" sortProperty="posName" class="${posDisabledClass}">
<c:if test="${not empty dataLog.storageName}">
<c:if test="${not empty dataLog.storageName}">
${dataLog.storageName}[${dataLog.posName}]
${dataLog.storageName}[${dataLog.posName}]
</c:if>
</c:if>
...
...
myproject/src/main/webapp/WEB-INF/pages/updateHistory.jsp
查看文件 @
4d567ab
...
@@ -12,6 +12,40 @@
...
@@ -12,6 +12,40 @@
<div class="row">
<div class="row">
<div class="col-md-12">
<div class="col-md-12">
<ul class="timeline">
<ul class="timeline">
<li class="timeline-blue">
<div class="timeline-time">
<span class="date">2020 </span>
<span class="time">10-30 </span>
</div>
<div class="timeline-icon">
<i class="fa fa-clock-o"></i>
</div>
<div class="timeline-body">
<h2>版本: V2020103017</h2>
<div class="timeline-content">
<ul>
<li>逻辑优化:库位物料取不出来时,禁用库位</li>
</ul>
</div>
</div>
</li>
<li class="timeline-yellow">
<div class="timeline-time">
<span class="date">2020 </span>
<span class="time">10-29 </span>
</div>
<div class="timeline-icon">
<i class="fa fa-clock-o"></i>
</div>
<div class="timeline-body">
<h2>版本: V2020102910</h2>
<div class="timeline-content">
<ul>
<li>需求单插队(接收时间晚于必须出库时间几个小时)导致的需求单未完全按照时间先后顺序执行的问题</li>
</ul>
</div>
</div>
</li>
<li class="timeline-grey">
<li class="timeline-grey">
<div class="timeline-time">
<div class="timeline-time">
<span class="date">2020 </span>
<span class="date">2020 </span>
...
...
myproject/src/main/webapp/assets/global/plugins/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js
查看文件 @
4d567ab
/**
/**
* Simplified Chinese translation for bootstrap-date
time
picker
* Simplified Chinese translation for bootstrap-datepicker
* Yuan Cheung <advanimal@gmail.com>
* Yuan Cheung <advanimal@gmail.com>
*/
*/
;(
function
(
$
){
;(
function
(
$
){
$
.
fn
.
datetimepicker
.
dates
[
'zh-CN'
]
=
{
$
.
fn
.
datepicker
.
dates
[
'zh-CN'
]
=
{
days
:
[
"星期日"
,
"星期一"
,
"星期二"
,
"星期三"
,
"星期四"
,
"星期五"
,
"星期六"
,
"星期日"
],
days
:
[
"\u661F\u671F\u65E5"
,
"\u661F\u671F\u4E00"
,
"\u661F\u671F\u4E8C"
,
"\u661F\u671F\u4E09"
,
"\u661F\u671F\u56DB"
,
"\u661F\u671F\u4E94"
,
"\u661F\u671F\u516D"
,
"\u661F\u671F\u65E5"
],
daysShort
:
[
"周日"
,
"周一"
,
"周二"
,
"周三"
,
"周四"
,
"周五"
,
"周六"
,
"周日"
],
daysShort
:
[
"\u5468\u65E5"
,
"\u5468\u4E00"
,
"\u5468\u4E8C"
,
"\u5468\u4E09"
,
"\u5468\u56DB"
,
"\u5468\u4E94"
,
"\u5468\u516D"
,
"\u5468\u65E5"
],
daysMin
:
[
"日"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
,
"日"
],
daysMin
:
[
"\u65E5"
,
"\u4E00"
,
"\u4E8C"
,
"\u4E09"
,
"\u56DB"
,
"\u4E94"
,
"\u516D"
,
"\u65E5"
],
months
:
[
"一月"
,
"二月"
,
"三月"
,
"四月"
,
"五月"
,
"六月"
,
"七月"
,
"八月"
,
"九月"
,
"十月"
,
"十一月"
,
"十二月"
],
months
:
[
"\u4E00\u6708"
,
"\u4E8C\u6708"
,
"\u4E09\u6708"
,
"\u56DB\u6708"
,
"\u4E94\u6708"
,
"\u516D\u6708"
,
"\u4E03\u6708"
,
"\u516B\u6708"
,
"\u4E5D\u6708"
,
"\u5341\u6708"
,
"\u5341\u4E00\u6708"
,
"\u5341\u4E8C\u6708"
],
monthsShort
:
[
"一月"
,
"二月"
,
"三月"
,
"四月"
,
"五月"
,
"六月"
,
"七月"
,
"八月"
,
"九月"
,
"十月"
,
"十一月"
,
"十二月"
],
monthsShort
:
[
"\u4E00\u6708"
,
"\u4E8C\u6708"
,
"\u4E09\u6708"
,
"\u56DB\u6708"
,
"\u4E94\u6708"
,
"\u516D\u6708"
,
"\u4E03\u6708"
,
"\u516B\u6708"
,
"\u4E5D\u6708"
,
"\u5341\u6708"
,
"\u5341\u4E00\u6708"
,
"\u5341\u4E8C\u6708"
],
today
:
"今日"
,
today
:
"\u4ECA\u65E5"
,
suffix
:
[],
weekStart
:
1
meridiem
:
[]
};
$
.
fn
.
datepicker
.
dates
[
'en'
]
=
{
days
:
[
"Sunday"
,
"Monday"
,
"Tuesday"
,
"Wednesday"
,
"Thursday"
,
"Friday"
,
"Saturday"
],
daysShort
:
[
"Sun"
,
"Mon"
,
"Tue"
,
"Wed"
,
"Thu"
,
"Fri"
,
"Sat"
],
daysMin
:
[
"Su"
,
"Mo"
,
"Tu"
,
"We"
,
"Th"
,
"Fr"
,
"Sa"
],
months
:
[
"January"
,
"February"
,
"March"
,
"April"
,
"May"
,
"June"
,
"July"
,
"August"
,
"September"
,
"October"
,
"November"
,
"December"
],
monthsShort
:
[
"Jan"
,
"Feb"
,
"Mar"
,
"Apr"
,
"May"
,
"Jun"
,
"Jul"
,
"Aug"
,
"Sep"
,
"Oct"
,
"Nov"
,
"Dec"
],
today
:
"Today"
,
clear
:
"Clear"
,
titleFormat
:
"MM yyyy"
,
/* Leverages same syntax as 'format' */
weekStart
:
0
};
};
}(
jQuery
));
}(
jQuery
));
myproject/src/main/webapp/decorators/metro.jsp
查看文件 @
4d567ab
...
@@ -239,7 +239,7 @@
...
@@ -239,7 +239,7 @@
<div
class=
"page-footer-inner"
>
<div
class=
"page-footer-inner"
>
2016
©
<a
href=
"${ctx}/updateHistory.html"
>
SMD BOX
</a>
2016
©
<a
href=
"${ctx}/updateHistory.html"
>
SMD BOX
</a>
</div>
</div>
<span
class=
"right"
style=
"color: #a3a3a3;"
>
Version: 2020.10.
28
</span>
<span
class=
"right"
style=
"color: #a3a3a3;"
>
Version: 2020.10.
30
</span>
<div
class=
"scroll-to-top"
>
<div
class=
"scroll-to-top"
>
<i
class=
"icon-arrow-up"
></i>
<i
class=
"icon-arrow-up"
></i>
</div>
</div>
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论