Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit e9e210c8
由
LN
编写于
2021-10-26 15:55:38 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
看板修改。工单增加补料出库,线别修改,定时自动出库
1 个父辈
533db9b4
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
340 行增加
和
77 行删除
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
src/main/java/com/neotel/smfcore/common/init/MainTimer.java
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
src/main/java/com/neotel/smfcore/core/kanban/rest/BoxKanbanController.java
src/main/java/com/neotel/smfcore/core/kanban/rest/bean/dto/BoxStatusDto.java
src/main/java/com/neotel/smfcore/core/language/util/MessageUtils.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
src/main/java/com/neotel/smfcore/core/order/rest/bean/dto/OrderDto.java
src/main/java/com/neotel/smfcore/core/order/service/manager/ILiteOrderManager.java
src/main/java/com/neotel/smfcore/core/order/service/manager/impl/LiteOrderManagerImpl.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
src/main/java/com/neotel/smfcore/hella/handler/HellaServiceHandler.java
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
查看文件 @
e9e210c
...
...
@@ -41,13 +41,11 @@ public class DataInitManager {
IRoleManager
roleManager
;
@Autowired
IMenuManager
menuManager
;
// @Autowired
// IGroupManager groupManager;
@Autowired
TaskService
taskService
;
@Autowired
IDataLogManager
dataLogManager
;
MainTimer
mainTimer
;
@Autowired
PermissionInitUtil
annotationUtil
;
...
...
@@ -101,7 +99,7 @@ public class DataInitManager {
}
}
initTask
();
mainTimer
.
init
();
allPermissionSet
=
annotationUtil
.
initPermission
();
}
catch
(
Exception
exception
)
{
...
...
@@ -109,20 +107,7 @@ public class DataInitManager {
}
}
private
void
initTask
()
{
log
.
info
(
"开始加载未完成的任务..."
);
List
<
DataLog
>
unExecuteTasks
=
dataLogManager
.
findUnFinishedTasks
();
for
(
DataLog
unExecuteTask
:
unExecuteTasks
)
{
if
(
unExecuteTask
.
isExecuting
()
||
unExecuteTask
.
isWait
())
{
try
{
taskService
.
addTaskToExecute
(
unExecuteTask
);
}
catch
(
Exception
e
){
log
.
error
(
"初始化任务["
+
unExecuteTask
+
"]出错:"
+
e
);
}
}
}
log
.
info
(
"加载未完成的任务完成,共["
+
unExecuteTasks
.
size
()
+
"]条数据..."
);
}
private
int
sortValue
=
0
;
...
...
src/main/java/com/neotel/smfcore/common/init/MainTimer.java
0 → 100644
查看文件 @
e9e210c
package
com
.
neotel
.
smfcore
.
common
.
init
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.system.service.manager.IDataLogManager
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.ScheduledExecutorService
;
import
java.util.concurrent.TimeUnit
;
@Service
public
class
MainTimer
{
protected
final
transient
Logger
log
=
LogManager
.
getLogger
(
getClass
());
ScheduledExecutorService
scheduledThreadPool
=
Executors
.
newScheduledThreadPool
(
1
);
@Autowired
TaskService
taskService
;
@Autowired
IDataLogManager
dataLogManager
;
@Autowired
LiteOrderCache
liteOrderCache
;
public
void
init
(){
initTask
();
liteOrderCache
.
loadUnEndOrderInfos
();
log
.
info
(
"主定时器开启,60秒后开始执行, 每10s执行一次"
);
//1 分钟之后执行,每秒钟执行一次
scheduledThreadPool
.
scheduleAtFixedRate
(
new
Runnable
()
{
@Override
public
void
run
()
{
timerTask
();
}
},
60
,
10
,
TimeUnit
.
SECONDS
);
}
private
void
initTask
()
{
log
.
info
(
"开始加载未完成的任务..."
);
List
<
DataLog
>
unExecuteTasks
=
dataLogManager
.
findUnFinishedTasks
();
for
(
DataLog
unExecuteTask
:
unExecuteTasks
)
{
if
(
unExecuteTask
.
isExecuting
()
||
unExecuteTask
.
isWait
())
{
try
{
taskService
.
addTaskToExecute
(
unExecuteTask
);
}
catch
(
Exception
e
){
log
.
error
(
"初始化任务["
+
unExecuteTask
+
"]出错:"
+
e
);
}
}
}
log
.
info
(
"加载未完成的任务完成,共["
+
unExecuteTasks
.
size
()
+
"]条数据..."
);
}
private
void
timerTask
(){
try
{
liteOrderCache
.
runTimer
();
}
catch
(
Exception
e
){
log
.
error
(
"定时器执行出错"
,
e
);
}
finally
{
}
}
}
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
查看文件 @
e9e210c
...
...
@@ -527,4 +527,17 @@ public class DataCache {
}
return
cidList
;
}
public
List
<
String
>
getAvailableStorageIds
(){
List
<
String
>
availableStorageIds
=
new
ArrayList
<>();
for
(
Storage
storage
:
getAllStorage
().
values
())
{
//默认所有料仓可用
// StatusBean statusBean =dataCache. getStatus(storage.getCid());
// if (statusBean.isAvailable())
{
availableStorageIds
.
add
(
storage
.
getId
());
}
}
return
availableStorageIds
;
}
}
src/main/java/com/neotel/smfcore/core/kanban/rest/BoxKanbanController.java
查看文件 @
e9e210c
...
...
@@ -177,17 +177,26 @@ public class BoxKanbanController {
String
[]
blurrys
=
blurry
.
split
(
","
);
String
[]
valueArray
=
new
String
[]{
datalog
.
getPosName
(),
datalog
.
getStorageName
(),
datalog
.
getCid
(),
datalog
.
getPartNumber
(),
datalog
.
getBarcode
(),
datalog
.
getSourceName
()};
for
(
String
s
:
blurrys
)
{
for
(
String
v
:
valueArray
)
{
Pattern
pattern
=
Pattern
.
compile
(
QueryHelp
.
escapeExprSpecialWord
(
s
),
Pattern
.
CASE_INSENSITIVE
);
Matcher
m
=
pattern
.
matcher
(
v
);
while
(
m
.
find
())
{
blurryOk
=
true
;
break
;
if
(
ObjectUtil
.
isNotEmpty
(
s
)){
for
(
String
v
:
valueArray
)
{
try
{
Pattern
pattern
=
Pattern
.
compile
(
QueryHelp
.
escapeExprSpecialWord
(
s
),
Pattern
.
CASE_INSENSITIVE
);
Matcher
m
=
pattern
.
matcher
(
v
);
while
(
m
.
find
())
{
blurryOk
=
true
;
break
;
}
if
(
blurryOk
)
break
;
}
catch
(
Exception
ex
){
log
.
error
(
ex
.
toString
());
}
}
if
(
blurryOk
)
break
;
}
if
(
blurryOk
)
break
;
else
{
blurryOk
=
true
;
}
}
...
...
@@ -236,9 +245,9 @@ public class BoxKanbanController {
@ApiOperation
(
"料仓详情"
)
@GetMapping
(
"/boxView"
)
@PreAuthorize
(
"@el.check('boxkanban:boxView')"
)
public
BoxStatusDto
boxView
(
String
storageI
d
)
{
public
BoxStatusDto
boxView
(
String
i
d
)
{
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
Storage
storage
=
dataCache
.
getStorageById
(
storageI
d
);
Storage
storage
=
dataCache
.
getStorageById
(
i
d
);
BoxStatusDto
dto
=
getBoxDto
(
storage
,
allTasks
);
return
dto
;
}
...
...
src/main/java/com/neotel/smfcore/core/kanban/rest/bean/dto/BoxStatusDto.java
查看文件 @
e9e210c
...
...
@@ -29,13 +29,6 @@ public class BoxStatusDto {
@ApiModelProperty
(
"是否在线"
)
private
boolean
onLine
=
false
;
/// <summary>
/// 单台BOX状态
///1=正常运行中
/// 2=急停,3=故障,4=警告,5=调试中
/// 6入库执行中,7入仓位完成,8入库失败
/// 9出库执行中,10出仓位完成,11出库失败
/// </summary>
@ApiModelProperty
(
"单台BOX状态,0=离线,1=正常运行中, 2=急停,3=故障,4=警告,5=调试中,6入库执行中,7入仓位完成,8入库失败, 9出库执行中,10出仓位完成,11出库失败"
)
private
int
status
=
0
;
@ApiModelProperty
(
"温度"
)
...
...
@@ -56,10 +49,6 @@ public class BoxStatusDto {
@ApiModelProperty
(
"当前执行任务的,0=无,1=入库,2=出库"
)
private
int
currTaskType
=
0
;
/**
* 当前执行任务的 任务状态:OP_STATUS:NONE,WAIT=等待,EXECUTING=正在执行,PAUSE=已暂停,FINISHED=已完成,CANCEL=已取消,END=已结束
*/
@ApiModelProperty
(
"当前执行任务的 任务状态:OP_STATUS:NONE,WAIT=等待,EXECUTING=正在执行,PAUSE=已暂停,FINISHED=已完成,CANCEL=已取消,END=已结束"
)
private
String
currTaskStatus
;
...
...
src/main/java/com/neotel/smfcore/core/language/util/MessageUtils.java
查看文件 @
e9e210c
...
...
@@ -17,6 +17,10 @@ import java.util.Locale;
@Slf4j
public
class
MessageUtils
{
public
static
Locale
getDefaultLocal
(){
return
new
Locale
(
"zh-CH"
);
}
private
static
MessageSource
messageSource
;
public
MessageUtils
(
MessageSource
messageSource
)
{
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
e9e210c
package
com
.
neotel
.
smfcore
.
core
.
order
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.google.common.base.Strings
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.exception.ValidateException
;
...
...
@@ -10,6 +11,7 @@ import com.neotel.smfcore.core.device.bean.StatusBean;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.order.enums.LITEORDER_STATUS
;
import
com.neotel.smfcore.core.order.enums.ORDER_COLOR
;
import
com.neotel.smfcore.core.order.service.dao.ILiteOrderDao
;
...
...
@@ -27,6 +29,7 @@ import com.neotel.smfcore.core.system.util.TaskService;
import
javafx.concurrent.Task
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
...
...
@@ -61,6 +64,52 @@ public class LiteOrderCache implements ITaskListener {
*/
public
static
Map
<
String
,
LiteOrder
>
liteOrderMap
=
new
ConcurrentHashMap
<>();
public
void
loadUnEndOrderInfos
()
{
log
.
info
(
"开始加载未完成的需求单"
);
List
<
LiteOrder
>
unEndOutInfoList
=
liteOrderManager
.
findUnEndOrdersList
();
long
now
=
System
.
currentTimeMillis
();
for
(
LiteOrder
order
:
unEndOutInfoList
)
{
if
(
now
-
order
.
getCreateDate
().
getTime
()
>
7
*
24
*
60
*
60
*
1000
)
{
//7天前的需求单,关闭,并解绑
log
.
info
(
"需求单 =["
+
order
.
getOrderNo
()
+
"]为7天前,关闭并解绑工单"
);
closeOrder
(
order
.
getOrderNo
());
}
else
{
addOrderToMap
(
order
);
}
}
}
public
void
addOrderToMap
(
LiteOrder
order
){
if
(
order
==
null
||
order
.
getOrderNo
()==
null
){
return
;
}
if
(
liteOrderMap
.
containsKey
(
order
.
getOrderNo
())){
liteOrderMap
.
remove
(
order
.
getOrderNo
());
}
liteOrderMap
.
put
(
order
.
getOrderNo
(),
order
);
}
private
boolean
isProcessTimer
=
false
;
public
void
runTimer
(){
if
(!
isProcessTimer
){
isProcessTimer
=
true
;
try
{
boolean
stopJob
=
dataCache
.
getCache
(
Constants
.
CACHE_StopJob
);
if
(!
stopJob
){
//定时执行工单任务
executeOrderTask
();
}
}
catch
(
Exception
e
){
log
.
error
(
"需求单定时器执行出错:"
,
e
);
}
finally
{
isProcessTimer
=
false
;
}
}
}
@Override
public
void
onTaskStatusChange
(
DataLog
task
)
{
try
{
...
...
@@ -74,13 +123,32 @@ public class LiteOrderCache implements ITaskListener {
}
}
public
ResultBean
checkOutOrder
(
LiteOrder
liteOrder
)
throws
ValidateException
{
//设置颜色
Set
<
String
>
currentColors
=
new
HashSet
<>();
for
(
DataLog
dataLog
:
taskService
.
getQueueTasks
())
{
currentColors
.
add
(
dataLog
.
getLightColor
());
public
void
executeOrderTask
(){
for
(
LiteOrder
order
:
liteOrderMap
.
values
())
{
if
(
order
.
isNew
()||
order
.
isTaskFinished
()){
//判断是否到达时间
Date
curr
=
new
Date
();
if
(
order
.
getSDate
().
before
(
curr
)){
//开始自动出库
String
result
=
checkOutLiteOrder
(
order
.
getOrderNo
(),
false
);
if
(!
ObjectUtil
.
isEmpty
(
result
)){
String
msg
=
MessageUtils
.
getText
(
result
,
MessageUtils
.
getDefaultLocal
(),
""
);
log
.
info
(
"自动执行工单 【"
+
order
.
getOrderNo
()+
"】 失败:"
+
msg
);
}
else
{
log
.
info
(
"自动执行工单 【"
+
order
.
getOrderNo
()+
"】 成功"
);
}
break
;
}
}
}
ORDER_COLOR
nextColor
=
ORDER_COLOR
.
nextColor
(
currentColors
);
}
public
ResultBean
checkOutOrder
(
LiteOrder
liteOrder
)
throws
ValidateException
{
ORDER_COLOR
nextColor
=
getNextColor
();
if
(
nextColor
==
null
)
{
log
.
info
(
"执行工单["
+
liteOrder
.
getOrderNo
()
+
"] 时,已达最大可执行工单数"
);
throw
new
ValidateException
(
"order.out.maxOrder"
,
"已达最大可执行工单数"
);
...
...
@@ -212,6 +280,15 @@ public class LiteOrderCache implements ITaskListener {
}
}
public
ORDER_COLOR
getNextColor
()
{
//设置颜色
Set
<
String
>
currentColors
=
new
HashSet
<>();
for
(
DataLog
dataLog
:
taskService
.
getQueueTasks
())
{
currentColors
.
add
(
dataLog
.
getLightColor
());
}
ORDER_COLOR
nextColor
=
ORDER_COLOR
.
nextColor
(
currentColors
);
return
nextColor
;
}
/**
* 锁定物料
*/
...
...
@@ -230,13 +307,7 @@ public class LiteOrderCache implements ITaskListener {
}
//设置颜色
Set
<
String
>
currentColors
=
new
HashSet
<>();
for
(
DataLog
dataLog
:
taskService
.
getQueueTasks
())
{
currentColors
.
add
(
dataLog
.
getLightColor
());
}
ORDER_COLOR
nextColor
=
ORDER_COLOR
.
nextColor
(
currentColors
);
ORDER_COLOR
nextColor
=
getNextColor
();
if
(
nextColor
==
null
)
{
log
.
info
(
"执行工单["
+
orderNo
+
"] outBom="
+
outBom
+
"时,已达最大可执行工单数"
);
return
"smfcode.order.out.maxOrder"
;
...
...
@@ -254,15 +325,7 @@ public class LiteOrderCache implements ITaskListener {
//liteOrderMap.put(cacheOrder.getOrderNo(), cacheOrder);
int
taskReelCount
=
0
;
CHECKOUT_TYPE
checkoutType
=
dataCache
.
getCheckOutType
();
List
<
String
>
availableStorageIds
=
new
ArrayList
<>();
for
(
Storage
storage
:
dataCache
.
getAllStorage
().
values
())
{
//默认所有料仓可用
// StatusBean statusBean =dataCache. getStatus(storage.getCid());
// if (statusBean.isAvailable())
{
availableStorageIds
.
add
(
storage
.
getId
());
}
}
List
<
String
>
availableStorageIds
=
dataCache
.
getAvailableStorageIds
();
//其他出库模式一次性全部生成任务
...
...
@@ -400,4 +463,54 @@ public class LiteOrderCache implements ITaskListener {
liteOrderManager
.
save
(
liteOrder
);
return
"smfcode.order.close.success"
;
}
/**
* 工单详情补料出库
* @param orderNo
* @param orderItemId
* @return
*/
public
String
orderItemSupplementOut
(
String
orderNo
,
String
orderItemId
)
{
LiteOrder
cacheOrder
=
liteOrderMap
.
get
(
orderNo
);
if
(
cacheOrder
==
null
)
{
cacheOrder
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
if
(
cacheOrder
==
null
){
return
"smfcode.order.out.notFound"
;
}
}
if
(
cacheOrder
.
isClosed
()){
return
"smfcode.order.hasClose"
;
}
for
(
LiteOrderItem
orderItem:
cacheOrder
.
getOrderItems
()
)
{
if
(
orderItem
.
getId
().
equals
(
orderItemId
)){
CHECKOUT_TYPE
checkoutType
=
dataCache
.
getCheckOutType
();
List
<
String
>
availableStorageIds
=
dataCache
.
getAvailableStorageIds
();
Collection
<
String
>
excludePosIds
=
excludePosIds
();
String
partNumber
=
orderItem
.
getPn
();
StoragePos
pos
=
storagePosManager
.
findPartNumberInStorages
(
availableStorageIds
,
partNumber
,
excludePosIds
,
checkoutType
);
if
(
pos
==
null
)
{
return
"smfcode.order.supplementOutFail"
;
}
else
{
log
.
info
(
"工单["
+
orderNo
+
"]["
+
partNumber
+
"]补料出库:仓位["
+
pos
.
getPosName
()
+
"]RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"] PN=["
+
partNumber
+
"] num:"
+
pos
.
getBarcode
().
getAmount
());
DataLog
task
=
newTask
(
pos
)
;
task
.
setSourceId
(
cacheOrder
.
getId
());
task
.
setSourceName
(
cacheOrder
.
getOrderNo
());
task
.
setSubSourceId
(
orderItem
.
getId
());
task
.
setSubSourceInfo
(
orderItem
.
getFeederInfo
());
task
.
setType
(
OP
.
CHECKOUT
);
// task.setLightColor(nextColor.getRgb());
task
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
// task = dataLogDao.save(task);
taskService
.
addTaskToExecute
(
task
);
return
""
;
}
}
}
return
"smfcode.order.supplementOutFail"
;
}
}
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
查看文件 @
e9e210c
...
...
@@ -22,6 +22,7 @@ import com.neotel.smfcore.core.order.service.po.LiteOrder;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.rest.bean.dto.TaskDto
;
import
com.neotel.smfcore.core.system.rest.bean.mapstruct.TaskMapper
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
com.neotel.smfcore.security.bean.FileProperties
;
...
...
@@ -55,6 +56,7 @@ import org.springframework.web.multipart.MultipartFile;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.File
;
import
java.io.IOException
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
...
...
@@ -134,21 +136,25 @@ public class OrderController {
liteOrder
.
setSource
(
localFile
.
getName
());
liteOrder
.
setStatus
(
LITEORDER_STATUS
.
NEW
);
LiteOrder
dbOrder
=
liteOrderManager
.
findByOrderNo
(
liteOrder
.
getOrderNo
());
if
(
dbOrder
==
null
)
{
log
.
info
(
"新增加订单:"
+
liteOrder
.
getOrderNo
()
+
",共"
+
liteOrderItems
.
size
()
+
"条工单详情"
);
liteOrder
=
liteOrderManager
.
createWithItems
(
liteOrder
);
// TaskService.liteOrderMap.put(liteOrder.getOrderNo(), liteOrder);
}
else
{
log
.
info
(
"数据库中已存在工单号为["
+
liteOrder
.
getOrderNo
()
+
"],忽略文件:"
+
localFile
.
getAbsolutePath
());
// throw new ValidateException("smfcode.valueAlreadyExist", "{0}[{1}]已存在", new String[]{"orderNo", liteOrder.getOrderNo()});
// throw new ValidateException("工单号[" + liteOrder.getOrderNo() + "]已存在");
if
(
dbOrder
!=
null
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyyMMddHHmmss"
);
//把名字改为带时间的
String
newOrderNo
=
liteOrder
.
getOrderNo
()
+
"-"
+
format
.
format
(
new
Date
());
dbOrder
=
liteOrderManager
.
findByOrderNo
(
newOrderNo
);
if
(
dbOrder
==
null
)
{
liteOrder
.
setOrderNo
(
newOrderNo
);
}
else
{
log
.
info
(
"数据库中已存在工单号为["
+
liteOrder
.
getOrderNo
()
+
"],忽略文件:"
+
localFile
.
getAbsolutePath
());
return
ResultBean
.
newErrorResult
(-
1
,
"smfcode.order.ameExists"
,
"工单名称[{0}]已存在"
,
new
String
[]{
liteOrder
.
getOrderNo
()});
}
}
log
.
info
(
"新增加订单:"
+
liteOrder
.
getOrderNo
()
+
",共"
+
liteOrderItems
.
size
()
+
"条工单详情"
);
liteOrder
=
liteOrderManager
.
createWithItems
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
}
return
ResultBean
.
newOkResult
(
"工单上传成功"
);
return
ResultBean
.
newOkResult
(
"smfcode.order.uploadOK"
,
"工单上传成功"
,
""
);
}
@ApiOperation
(
"工单出库"
)
...
...
@@ -206,6 +212,23 @@ public class OrderController {
}
}
@ApiOperation
(
"补料出库"
)
@PostMapping
(
value
=
"/supplementOut"
)
@PreAuthorize
(
"@el.check('workOrder')"
)
public
ResultBean
supplementOut
(
@RequestBody
Map
<
String
,
String
>
mapValues
)
{
String
orderNo
=
mapValues
.
get
(
"orderNo"
);
String
orderItemId
=
mapValues
.
get
(
"orderItemId"
);
if
(
orderNo
==
null
)
{
throw
new
ValidateException
(
"smfcode.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
}
String
result
=
liteOrderCache
.
orderItemSupplementOut
(
orderNo
,
orderItemId
);
if
(
ObjectUtil
.
isEmpty
(
result
)){
return
ResultBean
.
newOkResult
(
result
);
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
result
,
result
);
}
}
@ApiOperation
(
"查询工单"
)
@GetMapping
@PreAuthorize
(
"@el.check('workOrder')"
)
...
...
@@ -248,6 +271,7 @@ public class OrderController {
protected
Map
<
String
,
List
<
LiteOrderItem
>>
handleOrderCsv
(
String
fileName
,
String
fileURL
)
{
try
{
fileName
=
fileName
.
replace
(
".csv"
,
""
);
log
.
info
(
"开始更解析上传的工单"
);
Map
<
String
,
List
<
LiteOrderItem
>>
itemMap
=
new
HashMap
<>();
List
<
LiteOrderItem
>
items
=
Lists
.
newArrayList
();
...
...
@@ -293,6 +317,9 @@ public class OrderController {
if
(
soIndex
!=-
1
){
so
=
lineValues
[
soIndex
];
}
if
(!
ObjectUtil
.
isNotEmpty
(
so
)){
so
=
fileName
;
}
LiteOrderItem
item
=
new
LiteOrderItem
();
item
.
setPn
(
partNumber
);
item
.
setNeedNum
(
num
);
...
...
@@ -362,6 +389,7 @@ public class OrderController {
}
liteOrder
.
setOrderTimes
(
orderTimes
);
liteOrderManager
.
save
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
return
ResultBean
.
newOkResult
(
orderMapper
.
toDto
(
liteOrder
)
);
}
...
...
@@ -382,4 +410,30 @@ public class OrderController {
}
}
@ApiOperation
(
"修改工单线别"
)
@PostMapping
(
value
=
"/updateLine"
)
@PreAuthorize
(
"@el.check('workOrder')"
)
public
ResultBean
updateLine
(
@RequestBody
OrderDto
param
)
{
if
(
param
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfcode.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
}
if
(
param
.
getLine
()
==
null
)
{
throw
new
ValidateException
(
"smfcode.order.lineCanotNull"
,
"线别不能为空"
);
}
LiteOrder
order
=
liteOrderManager
.
get
(
param
.
getId
());
if
(
order
==
null
)
{
throw
new
ValidateException
(
"smfcode.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
}
if
(!
order
.
isNew
())
{
throw
new
ValidateException
(
"smfcode.order.cannotUpdateLine"
,
"工单已出库,不能修改线别"
);
}
order
.
setLine
(
param
.
getLine
());
liteOrderManager
.
save
(
order
);
liteOrderCache
.
addOrderToMap
(
order
);
return
ResultBean
.
newOkResult
(
orderMapper
.
toDto
(
order
));
}
}
src/main/java/com/neotel/smfcore/core/order/rest/bean/dto/OrderDto.java
查看文件 @
e9e210c
...
...
@@ -79,4 +79,8 @@ public class OrderDto implements Serializable {
@ApiModelProperty
(
"创建时间"
)
private
Date
createDate
=
new
Date
();
@ApiModelProperty
(
"工单线别"
)
private
String
line
=
""
;
}
src/main/java/com/neotel/smfcore/core/order/service/manager/ILiteOrderManager.java
查看文件 @
e9e210c
...
...
@@ -5,7 +5,11 @@ import com.neotel.smfcore.common.exception.ValidateException;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
java.util.List
;
public
interface
ILiteOrderManager
extends
IBaseManager
<
LiteOrder
>
{
LiteOrder
findByOrderNo
(
String
orderNo
);
LiteOrder
createWithItems
(
LiteOrder
liteOrder
)
throws
ValidateException
;
List
<
LiteOrder
>
findUnEndOrdersList
();
}
src/main/java/com/neotel/smfcore/core/order/service/manager/impl/LiteOrderManagerImpl.java
查看文件 @
e9e210c
...
...
@@ -6,6 +6,7 @@ import com.neotel.smfcore.common.exception.ValidateException;
import
com.neotel.smfcore.core.barcode.service.dao.IBarcodeDao
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.order.enums.LITEORDER_STATUS
;
import
com.neotel.smfcore.core.order.service.dao.ILiteOrderDao
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderManager
;
...
...
@@ -15,6 +16,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
...
...
@@ -76,6 +78,22 @@ public class LiteOrderManagerImpl implements ILiteOrderManager {
}
@Override
public
List
<
LiteOrder
>
findUnEndOrdersList
()
{
Criteria
c
=
new
Criteria
();
c
.
and
(
"status"
).
nin
(
LITEORDER_STATUS
.
CLOSED
);
Query
query
=
new
Query
(
c
);
List
<
LiteOrder
>
orders
=
findByQuery
(
query
);
for
(
LiteOrder
order
:
orders
)
{
if
(
order
!=
null
&&
order
.
getOrderItems
()
==
null
)
{
List
<
LiteOrderItem
>
items
=
liteOrderItemManager
.
findOrderItems
(
order
.
getOrderNo
());
order
.
setOrderItems
(
items
);
}
}
return
orders
;
}
@Override
public
PageData
<
LiteOrder
>
findByPage
(
Query
query
,
Pageable
pageable
)
{
int
totalCount
=
liteOrderDao
.
countByQuery
(
query
);
List
<
LiteOrder
>
list
=
liteOrderDao
.
findByQuery
(
query
,
pageable
);
...
...
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
查看文件 @
e9e210c
...
...
@@ -112,11 +112,13 @@ public class LiteOrder extends BasePo implements Serializable {
*/
public
void
finishedTasks
(){
if
(
isOutOne
()){
setStatus
(
LITEORDER_STATUS
.
ONE_FINISHED
);
// setStatus(LITEORDER_STATUS.ONE_FINISHED);
setClosed
(
true
);
}
else
if
(
isOutBom
()){
setStatus
(
LITEORDER_STATUS
.
BOM_FINISHED
);
}
else
if
(
isOutTails
()){
setStatus
(
LITEORDER_STATUS
.
TAILS_FINISHED
);
// setStatus(LITEORDER_STATUS.TAILS_FINISHED);
setClosed
(
true
);
}
setTaskFinishedTime
(
System
.
currentTimeMillis
());
...
...
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
e9e210c
此文件的差异被折叠,
点击展开。
src/main/java/com/neotel/smfcore/hella/handler/HellaServiceHandler.java
查看文件 @
e9e210c
...
...
@@ -377,6 +377,7 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
liteOrder
.
setSource
(
groupName
);
log
.
info
(
"新增加订单:"
+
liteOrder
.
getOrderNo
());
liteOrder
=
liteOrderManager
.
createWithItems
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
//对工单进行锁定
List
<
String
>
storageIdList
=
new
ArrayList
<>();
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论