Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit a04c3173
由
zshaohui
编写于
2023-09-14 09:15:49 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
海康电子看板
1 个父辈
5dca14bb
隐藏空白字符变更
内嵌
并排
正在显示
19 个修改的文件
包含
646 行增加
和
11 行删除
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
src/main/java/com/neotel/smfcore/common/utils/Constants.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/bean/OrderProgress.java
src/main/java/com/neotel/smfcore/core/storage/rest/dto/StorageDto.java
src/main/java/com/neotel/smfcore/core/storage/service/po/Storage.java
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
src/main/java/com/neotel/smfcore/hikvision/HikvisionApiController.java
src/main/java/com/neotel/smfcore/hikvision/HikvisionKanBanController.java
src/main/java/com/neotel/smfcore/hikvision/InOutTrendInfo.java
src/main/java/com/neotel/smfcore/hikvision/bean/InOutDetailInfo.java
src/main/java/com/neotel/smfcore/hikvision/bean/StorageInventoryInfo.java
src/main/java/com/neotel/smfcore/hikvision/bean/eums/StorageSizeType.java
src/main/java/com/neotel/smfcore/hikvision/service/dao/IHikTaskCountDao.java
src/main/java/com/neotel/smfcore/hikvision/service/dao/impl/HikTaskCountDaoImpl.java
src/main/java/com/neotel/smfcore/hikvision/service/manager/IHikTaskCountManager.java
src/main/java/com/neotel/smfcore/hikvision/service/manager/impl/HikTaskCountManagerImpl.java
src/main/java/com/neotel/smfcore/hikvision/service/po/TaskCount.java
src/main/java/com/neotel/smfcore/hikvision/util/ShiftUtil.java
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
查看文件 @
a04c317
...
@@ -45,7 +45,7 @@ public class DataInitManager {
...
@@ -45,7 +45,7 @@ public class DataInitManager {
MainTimer
mainTimer
;
MainTimer
mainTimer
;
//@Value("${menu.show}")
//@Value("${menu.show}")
private
String
[]
menuShowList
=
new
String
[]{
"commonIn"
,
"returnIn"
,
"cutIn"
};
private
String
[]
menuShowList
=
new
String
[]{
"commonIn"
,
"returnIn"
,
"cutIn"
,
"elecKanban"
};
//@Value("${menu.hide}")
//@Value("${menu.hide}")
private
String
[]
menuHideList
=
new
String
[]{
"singleDiskWarehousing"
};
private
String
[]
menuHideList
=
new
String
[]{
"singleDiskWarehousing"
};
...
@@ -127,6 +127,8 @@ public class DataInitManager {
...
@@ -127,6 +127,8 @@ public class DataInitManager {
Map
<
String
,
Menu
>
functionMenuMap
=
new
HashMap
<>();
Map
<
String
,
Menu
>
functionMenuMap
=
new
HashMap
<>();
addNewFunctionMenu
(
null
,
new
ArrayList
<
Menu
>(),
1
,
"elecKanban"
,
"电子看板"
,
1
,
"elecKanban"
,
"elekanban/index"
,
""
,
0
,
"kanban"
,
functionMenuMap
);
//物料管理:工单出库,查找出库(UID出库,PN出库),物料标签,料盒操作,出库策略,工单设置
//物料管理:工单出库,查找出库(UID出库,PN出库),物料标签,料盒操作,出库策略,工单设置
Menu
poutOut
=
Menu
.
CreatePMenu
(
"物料管理"
,
20
,
"order"
,
2
,
"workOrder"
,
null
);
Menu
poutOut
=
Menu
.
CreatePMenu
(
"物料管理"
,
20
,
"order"
,
2
,
"workOrder"
,
null
);
...
...
src/main/java/com/neotel/smfcore/common/utils/Constants.java
查看文件 @
a04c317
...
@@ -148,4 +148,6 @@ public class Constants {
...
@@ -148,4 +148,6 @@ public class Constants {
*/
*/
public
static
final
String
CACHE_failedRequestMap
=
"CACHE_failedRequestMap"
;
public
static
final
String
CACHE_failedRequestMap
=
"CACHE_failedRequestMap"
;
public
static
final
String
CACHE_OrderProgress
=
"CACHE_OrderProgress"
;
}
}
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
a04c317
package
com
.
neotel
.
smfcore
.
core
.
order
;
package
com
.
neotel
.
smfcore
.
core
.
order
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.google.common.base.Strings
;
import
com.google.common.base.Strings
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.barcode.service.manager.IComponentManager
;
import
com.neotel.smfcore.core.barcode.service.manager.IComponentManager
;
import
com.neotel.smfcore.core.barcode.service.po.Component
;
import
com.neotel.smfcore.core.barcode.service.po.Component
;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.device.enums.OP
;
...
@@ -12,6 +14,7 @@ import com.neotel.smfcore.core.device.enums.OP_STATUS;
...
@@ -12,6 +14,7 @@ import com.neotel.smfcore.core.device.enums.OP_STATUS;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.hik.enums.IN_OUT_TYPE
;
import
com.neotel.smfcore.core.hik.enums.IN_OUT_TYPE
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.order.bean.OrderProgress
;
import
com.neotel.smfcore.core.order.enums.LITEORDER_STATUS
;
import
com.neotel.smfcore.core.order.enums.LITEORDER_STATUS
;
import
com.neotel.smfcore.core.order.enums.ORDER_COLOR
;
import
com.neotel.smfcore.core.order.enums.ORDER_COLOR
;
import
com.neotel.smfcore.core.order.rest.bean.mapstruct.OrderPnMapper
;
import
com.neotel.smfcore.core.order.rest.bean.mapstruct.OrderPnMapper
;
...
@@ -28,6 +31,7 @@ import com.neotel.smfcore.core.system.util.TaskService;
...
@@ -28,6 +31,7 @@ import com.neotel.smfcore.core.system.util.TaskService;
import
com.neotel.smfcore.hikvision.HikApi
;
import
com.neotel.smfcore.hikvision.HikApi
;
import
com.neotel.smfcore.hikvision.bean.HikOrderInfo
;
import
com.neotel.smfcore.hikvision.bean.HikOrderInfo
;
import
com.neotel.smfcore.hikvision.bean.result.ApiResult
;
import
com.neotel.smfcore.hikvision.bean.result.ApiResult
;
import
com.neotel.smfcore.hikvision.util.ShiftUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.domain.Sort
;
...
@@ -105,6 +109,7 @@ public class LiteOrderCache implements ITaskListener {
...
@@ -105,6 +109,7 @@ public class LiteOrderCache implements ITaskListener {
liteOrderMap
.
remove
(
order
.
getOrderNo
());
liteOrderMap
.
remove
(
order
.
getOrderNo
());
}
}
liteOrderMap
.
put
(
order
.
getOrderNo
(),
order
);
liteOrderMap
.
put
(
order
.
getOrderNo
(),
order
);
updateOrderProgress
(
order
,
false
);
}
}
public
void
removeOrder
(
LiteOrder
order
){
public
void
removeOrder
(
LiteOrder
order
){
...
@@ -115,6 +120,7 @@ public class LiteOrderCache implements ITaskListener {
...
@@ -115,6 +120,7 @@ public class LiteOrderCache implements ITaskListener {
public
synchronized
void
updateOrder
(
LiteOrder
order
){
public
synchronized
void
updateOrder
(
LiteOrder
order
){
order
=
liteOrderManager
.
save
(
order
);
order
=
liteOrderManager
.
save
(
order
);
liteOrderMap
.
put
(
order
.
getOrderNo
(),
order
);
liteOrderMap
.
put
(
order
.
getOrderNo
(),
order
);
updateOrderProgress
(
order
,
false
);
}
}
public
LiteOrder
findOrderById
(
String
orderId
){
public
LiteOrder
findOrderById
(
String
orderId
){
...
@@ -962,4 +968,63 @@ public class LiteOrderCache implements ITaskListener {
...
@@ -962,4 +968,63 @@ public class LiteOrderCache implements ITaskListener {
}
}
return
outPos
;
return
outPos
;
}
}
public
void
updateOrderProgress
(
LiteOrder
order
,
boolean
flag
)
{
try
{
if
(!
flag
)
{
if
(!
order
.
isClosed
())
{
return
;
}
}
else
{
if
(!
order
.
isNew
())
{
return
;
}
}
if
(
StringUtils
.
isNotBlank
(
order
.
getReplenishmentNo
()))
{
return
;
}
OrderProgress
progress
=
dataCache
.
getCache
(
Constants
.
CACHE_OrderProgress
);
if
(
progress
==
null
)
{
progress
=
new
OrderProgress
();
}
Date
orderCreateDate
=
order
.
getCreateDate
();
String
orderCreateDateStr
=
DateUtil
.
format
(
orderCreateDate
,
"yyyy-MM-dd"
);
Date
createDate
=
progress
.
getCreateDate
();
String
createDateStr
=
DateUtil
.
format
(
createDate
,
"yyyy-MM-dd"
);
//判断工单创建时间是否小于当前时间
if
(
DateUtil
.
parse
(
orderCreateDateStr
,
"yyyy-MM-dd"
).
getTime
()
<
DateUtil
.
parse
(
createDateStr
,
"yyyy-MM-dd"
).
getTime
())
{
return
;
}
if
(
ShiftUtil
.
isA
(
orderCreateDate
))
{
if
(!
orderCreateDateStr
.
equals
(
createDateStr
))
{
progress
=
new
OrderProgress
();
}
if
(
order
.
isNew
())
{
progress
.
setShiftAOrderCount
(
progress
.
getShiftAOrderCount
()
+
1
);
}
else
if
(
order
.
isClosed
())
{
progress
.
setShiftAOrderFinishedCount
(
progress
.
getShiftAOrderFinishedCount
()
+
1
);
}
}
else
{
Date
startDate
=
ShiftUtil
.
getShiftBSelectDate
(
orderCreateDate
);
String
startDateStr
=
DateUtil
.
format
(
startDate
,
"yyyy-MM-dd"
);
if
(!
startDateStr
.
equals
(
createDateStr
))
{
progress
=
new
OrderProgress
();
}
if
(
order
.
isNew
())
{
progress
.
setShiftBOrderCount
(
progress
.
getShiftBOrderCount
()
+
1
);
}
else
if
(
order
.
isClosed
())
{
progress
.
setShiftBOrderFinishedCount
(
progress
.
getShiftBOrderFinishedCount
()
+
1
);
}
}
dataCache
.
updateCache
(
Constants
.
CACHE_OrderProgress
,
progress
);
}
catch
(
Exception
e
)
{
log
.
error
(
"更新工单信息报错"
,
e
);
e
.
printStackTrace
();
}
}
}
}
src/main/java/com/neotel/smfcore/core/order/bean/OrderProgress.java
0 → 100644
查看文件 @
a04c317
package
com
.
neotel
.
smfcore
.
core
.
order
.
bean
;
import
com.neotel.smfcore.common.base.BasePo
;
import
lombok.Data
;
@Data
public
class
OrderProgress
extends
BasePo
{
/**
* A班工单数量
*/
private
int
shiftAOrderCount
=
0
;
/**
* A班工单已完成数量
*/
private
int
shiftAOrderFinishedCount
=
0
;
/**
* B班工单数量
*/
private
int
shiftBOrderCount
=
0
;
/**
* B班工单已完成数量
*/
private
int
shiftBOrderFinishedCount
=
0
;
}
src/main/java/com/neotel/smfcore/core/storage/rest/dto/StorageDto.java
查看文件 @
a04c317
...
@@ -74,4 +74,7 @@ public class StorageDto implements Serializable {
...
@@ -74,4 +74,7 @@ public class StorageDto implements Serializable {
@ApiModelProperty
(
"是否在线"
)
@ApiModelProperty
(
"是否在线"
)
private
boolean
onLine
=
false
;
private
boolean
onLine
=
false
;
@ApiModelProperty
(
"分类:大盘料架,小盘料架"
)
private
String
sizeType
;
}
}
src/main/java/com/neotel/smfcore/core/storage/service/po/Storage.java
查看文件 @
a04c317
...
@@ -71,6 +71,10 @@ public class Storage extends BasePo implements Serializable {
...
@@ -71,6 +71,10 @@ public class Storage extends BasePo implements Serializable {
*/
*/
private
boolean
mergePos
=
false
;
private
boolean
mergePos
=
false
;
/**
* 分裂,大盘料架,小盘料架
*/
private
String
sizeType
;
// /**
// /**
// * 是否是上下层的在线料仓
// * 是否是上下层的在线料仓
...
...
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
a04c317
...
@@ -8,7 +8,6 @@ import com.neotel.smfcore.common.exception.ValidateException;
...
@@ -8,7 +8,6 @@ import com.neotel.smfcore.common.exception.ValidateException;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.ReelLockPosUtil
;
import
com.neotel.smfcore.common.utils.ReelLockPosUtil
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.common.utils.StorageConstants
;
import
com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE
;
import
com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
...
@@ -17,22 +16,15 @@ import com.neotel.smfcore.core.device.enums.OP;
...
@@ -17,22 +16,15 @@ import com.neotel.smfcore.core.device.enums.OP;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.hik.enums.IN_OUT_TYPE
;
import
com.neotel.smfcore.core.hik.enums.IN_OUT_TYPE
;
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.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE
;
import
com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.rest.dto.TacticsOutDto
;
import
com.neotel.smfcore.core.storage.rest.dto.TacticsOutDto
;
import
com.neotel.smfcore.core.storage.service.manager.IStorageManager
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.manager.impl.StorageManagerImpl
;
import
com.neotel.smfcore.core.storage.service.manager.impl.StoragePosManagerImpl
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.listener.ITaskListener
;
import
com.neotel.smfcore.core.system.listener.ITaskListener
;
import
com.neotel.smfcore.core.system.service.dao.IDataLogDao
;
import
com.neotel.smfcore.core.system.service.dao.IDataLogDao
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.hikvision.service.manager.IHikTaskCountManager
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -56,6 +48,9 @@ public class TaskService {
...
@@ -56,6 +48,9 @@ public class TaskService {
@Autowired
@Autowired
protected
IStoragePosManager
storagePosManager
;
protected
IStoragePosManager
storagePosManager
;
@Autowired
protected
IHikTaskCountManager
hikTaskCountManager
;
@Autowired
@Autowired
private
List
<
ITaskListener
>
taskListenerList
=
new
ArrayList
<>();
private
List
<
ITaskListener
>
taskListenerList
=
new
ArrayList
<>();
...
@@ -169,6 +164,11 @@ public class TaskService {
...
@@ -169,6 +164,11 @@ public class TaskService {
for
(
ITaskListener
taskListener
:
taskListenerList
)
{
for
(
ITaskListener
taskListener
:
taskListenerList
)
{
taskListener
.
onTaskStatusChange
(
task
);
taskListener
.
onTaskStatusChange
(
task
);
}
}
try
{
hikTaskCountManager
.
updateInOutCount
(
task
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
/**
/**
...
...
src/main/java/com/neotel/smfcore/hikvision/HikvisionApiController.java
查看文件 @
a04c317
...
@@ -93,7 +93,7 @@ public class HikvisionApiController {
...
@@ -93,7 +93,7 @@ public class HikvisionApiController {
liteOrderManager
.
createWithItems
(
order
);
liteOrderManager
.
createWithItems
(
order
);
liteOrderCache
.
addOrderToMap
(
order
);
liteOrderCache
.
addOrderToMap
(
order
);
log
.
info
(
"新建工单["
+
order
.
getOrderNo
()
+
"]工单详情"
+
order
.
getOrderItems
().
size
()+
"条"
);
log
.
info
(
"新建工单["
+
order
.
getOrderNo
()
+
"]工单详情"
+
order
.
getOrderItems
().
size
()+
"条"
);
liteOrderCache
.
updateOrderProgress
(
order
,
true
);
}
else
{
}
else
{
if
(
order
.
getStatus
()
>
LITEORDER_STATUS
.
NEW
)
{
if
(
order
.
getStatus
()
>
LITEORDER_STATUS
.
NEW
)
{
log
.
info
(
"工单["
+
orderNo
+
"]已存在,且状态为["
+
order
.
getStatus
()
+
"],不能修改工单信息:"
+
outInfo
.
toString
());
log
.
info
(
"工单["
+
orderNo
+
"]已存在,且状态为["
+
order
.
getStatus
()
+
"],不能修改工单信息:"
+
outInfo
.
toString
());
...
...
src/main/java/com/neotel/smfcore/hikvision/HikvisionKanBanController.java
0 → 100644
查看文件 @
a04c317
package
com
.
neotel
.
smfcore
.
hikvision
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateUtil
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.order.bean.OrderProgress
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.hikvision.bean.InOutDetailInfo
;
import
com.neotel.smfcore.hikvision.bean.StorageInventoryInfo
;
import
com.neotel.smfcore.hikvision.bean.eums.StorageSizeType
;
import
com.neotel.smfcore.hikvision.service.manager.IHikTaskCountManager
;
import
com.neotel.smfcore.hikvision.service.po.TaskCount
;
import
com.neotel.smfcore.hikvision.util.ShiftUtil
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
io.swagger.annotations.*
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
@Api
(
tags
=
"海康看板"
)
@Slf4j
@RestController
@RequestMapping
(
"/kanBan"
)
public
class
HikvisionKanBanController
{
@Autowired
private
DataCache
dataCache
;
@Autowired
private
IHikTaskCountManager
hikTaskCountManager
;
@ApiOperation
(
"获取库容信息"
)
@GetMapping
(
"/getStorageInventoryInfo"
)
@AnonymousAccess
public
ResultBean
<
StorageInventoryInfo
>
getStorageInventoryInfo
()
{
StorageInventoryInfo
info
=
new
StorageInventoryInfo
();
for
(
Storage
storage
:
dataCache
.
getAllStorage
().
values
())
{
int
totalSlots
=
storage
.
getTotalSlots
();
int
emptySlots
=
storage
.
getEmptySlots
();
int
noEmptySlots
=
totalSlots
-
emptySlots
;
if
(
StorageSizeType
.
BIG_REEL
.
equals
(
storage
.
getSizeType
()))
{
info
.
setBigReelTotalCount
(
info
.
getBigReelTotalCount
()
+
totalSlots
);
info
.
setBigReelUsedCount
(
info
.
getBigReelUsedCount
()
+
noEmptySlots
);
info
.
setBigReelNoUsedCount
(
info
.
getBigReelNoUsedCount
()
+
emptySlots
);
}
else
if
(
StorageSizeType
.
SMALL_REEL
.
equals
(
storage
.
getSizeType
()))
{
info
.
setSmallReelTotalCount
(
info
.
getSmallReelTotalCount
()
+
totalSlots
);
info
.
setSmallReelUsedCount
(
info
.
getSmallReelUsedCount
()
+
noEmptySlots
);
info
.
setSmallReelNoUsedCount
(
info
.
getSmallReelNoUsedCount
()
+
emptySlots
);
}
info
.
setTotalCount
(
info
.
getTotalCount
()
+
totalSlots
);
info
.
setTotalUsedCount
(
info
.
getTotalUsedCount
()
+
noEmptySlots
);
info
.
setTotalNoUsedCount
(
info
.
getTotalNoUsedCount
()
+
emptySlots
);
}
return
ResultBean
.
newOkResult
(
info
);
}
@ApiOperation
(
"入库或者备料"
)
@GetMapping
(
"inOutDetail"
)
@ApiImplicitParams
(
value
=
{
@ApiImplicitParam
(
name
=
"date"
,
value
=
"日期,格式为yyyy-MM-dd"
,
dataType
=
"String"
,
required
=
true
)
})
@AnonymousAccess
public
ResultBean
<
InOutDetailInfo
>
inOutDetail
(
@RequestParam
(
value
=
"date"
)
String
date
)
{
InOutDetailInfo
info
=
new
InOutDetailInfo
();
List
<
TaskCount
>
taskCountList
=
hikTaskCountManager
.
findTaskCountByDate
(
DateUtil
.
parse
(
date
,
"yyyy-MM-dd"
));
if
(
taskCountList
!=
null
&&
!
taskCountList
.
isEmpty
())
{
for
(
TaskCount
taskCount
:
taskCountList
)
{
if
(
ShiftUtil
.
SHIFT_A
.
equals
(
taskCount
.
getShift
()))
{
info
.
setShiftAList
(
taskCount
);
}
else
if
(
ShiftUtil
.
SHIFT_B
.
equals
(
taskCount
.
getShift
()))
{
info
.
setShiftBList
(
taskCount
);
}
}
}
return
ResultBean
.
newOkResult
(
info
);
}
@ApiOperation
(
"入库或备料趋势图"
)
@GetMapping
(
"inOutTrend"
)
@ApiImplicitParam
(
name
=
"type"
,
value
=
"1:是按日分布 2:是按年分布"
,
dataType
=
"String"
,
required
=
true
)
@AnonymousAccess
public
ResultBean
inOutTrend
(
@RequestParam
(
"type"
)
String
type
)
{
InOutTrendInfo
info
=
new
InOutTrendInfo
();
Date
startDate
=
null
;
//日期列表
List
<
Date
>
timeList
=
new
ArrayList
<>();
//格式化类型
String
formatStr
=
""
;
if
(
"1"
.
equals
(
type
))
{
startDate
=
getFirSevenDaysDate
();
timeList
=
getDayTimeFrame
(
startDate
,
7
);
formatStr
=
"MM月dd日"
;
}
else
{
startDate
=
getFirTwelveMonthsDate
();
timeList
=
getMouthTimeFrame
(
startDate
,
12
);
formatStr
=
"yy年MM月"
;
}
//获取具体详情
List
<
TaskCount
>
taskCountList
=
hikTaskCountManager
.
findTaskCountByDate
(
startDate
);
//开始处理信息
for
(
int
i
=
0
;
i
<
timeList
.
size
();
i
++)
{
Date
date
=
timeList
.
get
(
i
);
InOutTrendDetail
detail
=
new
InOutTrendDetail
();
detail
.
setDateStr
(
DateUtil
.
format
(
date
,
formatStr
));
int
putInCount
=
0
;
int
checkOutCount
=
0
;
for
(
TaskCount
taskCount
:
taskCountList
)
{
if
(
i
==
timeList
.
size
()
-
1
)
{
if
(
taskCount
.
getCreateDate
().
getTime
()
>
timeList
.
get
(
i
).
getTime
())
{
putInCount
=
putInCount
+
taskCount
.
getPutInCount
();
checkOutCount
=
checkOutCount
+
taskCount
.
getCheckOutCount
();
}
}
else
{
if
(
taskCount
.
getCreateDate
().
getTime
()
>=
timeList
.
get
(
i
).
getTime
()
&&
taskCount
.
getCreateDate
().
getTime
()
<
timeList
.
get
(
i
+
1
).
getTime
())
{
putInCount
=
putInCount
+
taskCount
.
getPutInCount
();
checkOutCount
=
checkOutCount
+
taskCount
.
getCheckOutCount
();
}
}
}
detail
.
setPutInCount
(
putInCount
);
detail
.
setCheckOutCount
(
checkOutCount
);
info
.
setTrendList
(
detail
);
}
return
ResultBean
.
newOkResult
(
info
);
}
@ApiOperation
(
"获取工单的进度"
)
@GetMapping
(
"/getOrderProgress"
)
@AnonymousAccess
public
ResultBean
getOrderProgress
()
{
OrderProgress
progress
=
dataCache
.
getCache
(
Constants
.
CACHE_OrderProgress
);
if
(
progress
==
null
)
{
progress
=
new
OrderProgress
();
}
return
ResultBean
.
newOkResult
(
progress
);
}
private
static
Date
getFirTwelveMonthsDate
()
{
Date
currentDate
=
new
Date
();
String
currentMonth
=
DateUtil
.
format
(
currentDate
,
"yyyyMM"
);
Date
currentMouthDate
=
DateUtil
.
parse
(
currentMonth
,
"yyyyMM"
);
return
DateUtil
.
offsetMonth
(
currentMouthDate
,
-
11
);
}
private
static
Date
getFirSevenDaysDate
()
{
Date
currentDate
=
new
Date
();
String
currentDay
=
DateUtil
.
format
(
currentDate
,
"yyyy-MM-dd"
);
Date
currentDayDate
=
DateUtil
.
parse
(
currentDay
,
"yyyy-MM-dd"
);
return
DateUtil
.
offsetDay
(
currentDayDate
,
-
6
);
}
private
static
List
<
Date
>
getDayTimeFrame
(
Date
startDate
,
int
days
)
{
List
<
Date
>
dateList
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
days
;
i
++)
{
dateList
.
add
(
DateUtil
.
offsetDay
(
startDate
,
i
));
}
return
dateList
;
}
private
static
List
<
Date
>
getMouthTimeFrame
(
Date
startDate
,
int
mouths
)
{
List
<
Date
>
dateList
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
mouths
;
i
++)
{
dateList
.
add
(
DateUtil
.
offsetMonth
(
startDate
,
i
));
}
return
dateList
;
}
}
src/main/java/com/neotel/smfcore/hikvision/InOutTrendInfo.java
0 → 100644
查看文件 @
a04c317
package
com
.
neotel
.
smfcore
.
hikvision
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.ArrayList
;
import
java.util.List
;
@ApiModel
(
value
=
"入库/备料趋势图"
)
@Data
public
class
InOutTrendInfo
{
@ApiModelProperty
(
value
=
"趋势详情集合"
)
private
List
<
InOutTrendDetail
>
trendList
;
public
void
setTrendList
(
InOutTrendDetail
detail
){
if
(
trendList
==
null
){
trendList
=
new
ArrayList
<>();
}
trendList
.
add
(
detail
);
}
}
@Data
class
InOutTrendDetail
{
private
String
dateStr
=
""
;
private
int
putInCount
;
private
int
checkOutCount
;
}
src/main/java/com/neotel/smfcore/hikvision/bean/InOutDetailInfo.java
0 → 100644
查看文件 @
a04c317
package
com
.
neotel
.
smfcore
.
hikvision
.
bean
;
import
com.neotel.smfcore.hikvision.service.po.TaskCount
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
javafx.concurrent.Task
;
import
lombok.Data
;
import
java.util.ArrayList
;
import
java.util.List
;
@Data
@ApiModel
(
value
=
"inOutDetail--入库或者备料统计"
)
public
class
InOutDetailInfo
{
@ApiModelProperty
(
"A班详情"
)
private
List
<
TaskCount
>
shiftAList
;
@ApiModelProperty
(
"B班详情"
)
private
List
<
TaskCount
>
shiftBList
;
public
void
setShiftAList
(
TaskCount
taskCount
)
{
if
(
shiftAList
==
null
)
{
shiftAList
=
new
ArrayList
<>();
}
shiftAList
.
add
(
taskCount
);
}
public
void
setShiftBList
(
TaskCount
taskCount
)
{
if
(
shiftBList
==
null
)
{
shiftBList
=
new
ArrayList
<>();
}
shiftBList
.
add
(
taskCount
);
}
}
src/main/java/com/neotel/smfcore/hikvision/bean/StorageInventoryInfo.java
0 → 100644
查看文件 @
a04c317
package
com
.
neotel
.
smfcore
.
hikvision
.
bean
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
@ApiModel
(
value
=
"getStorageInventoryInfo-库容信息"
,
description
=
"库容信息"
)
public
class
StorageInventoryInfo
{
@ApiModelProperty
(
value
=
"总量"
)
private
int
totalCount
=
11
;
@ApiModelProperty
(
value
=
"总的使用量"
)
private
int
totalUsedCount
=
11
;
@ApiModelProperty
(
value
=
"总的未使用量"
)
private
int
totalNoUsedCount
=
11
;
@ApiModelProperty
(
value
=
"大盘总量"
)
private
int
bigReelTotalCount
=
11
;
@ApiModelProperty
(
value
=
"大盘使用量"
)
private
int
bigReelUsedCount
=
11
;
@ApiModelProperty
(
value
=
"大盘未使用未使用量"
)
private
int
bigReelNoUsedCount
=
11
;
@ApiModelProperty
(
value
=
"小盘总量"
)
private
int
smallReelTotalCount
=
11
;
@ApiModelProperty
(
value
=
"小盘使用量"
)
private
int
smallReelUsedCount
=
11
;
@ApiModelProperty
(
value
=
"小盘未使用量"
)
private
int
smallReelNoUsedCount
=
11
;
}
src/main/java/com/neotel/smfcore/hikvision/bean/eums/StorageSizeType.java
0 → 100644
查看文件 @
a04c317
package
com
.
neotel
.
smfcore
.
hikvision
.
bean
.
eums
;
/**
* 大小盘分类
*/
public
class
StorageSizeType
{
public
static
final
String
BIG_REEL
=
"1"
;
public
static
final
String
SMALL_REEL
=
"2"
;
}
src/main/java/com/neotel/smfcore/hikvision/service/dao/IHikTaskCountDao.java
0 → 100644
查看文件 @
a04c317
package
com
.
neotel
.
smfcore
.
hikvision
.
service
.
dao
;
import
com.neotel.smfcore.common.base.IBaseDao
;
import
com.neotel.smfcore.hikvision.service.po.TaskCount
;
import
java.util.Date
;
import
java.util.List
;
public
interface
IHikTaskCountDao
extends
IBaseDao
{
TaskCount
getByOperatorAndShift
(
String
operator
,
String
shift
,
Date
createDate
);
List
<
TaskCount
>
findTaskCountByDate
(
Date
date
);
}
src/main/java/com/neotel/smfcore/hikvision/service/dao/impl/HikTaskCountDaoImpl.java
0 → 100644
查看文件 @
a04c317
package
com
.
neotel
.
smfcore
.
hikvision
.
service
.
dao
.
impl
;
import
com.neotel.smfcore.common.base.AbstractBaseDao
;
import
com.neotel.smfcore.hikvision.service.po.TaskCount
;
import
com.neotel.smfcore.hikvision.service.dao.IHikTaskCountDao
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.List
;
@Service
public
class
HikTaskCountDaoImpl
extends
AbstractBaseDao
implements
IHikTaskCountDao
{
@Override
public
Class
getEntityClass
()
{
return
TaskCount
.
class
;
}
@Override
public
TaskCount
getByOperatorAndShift
(
String
operator
,
String
shift
,
Date
createDate
)
{
return
findOne
(
new
Query
(
Criteria
.
where
(
"name"
).
is
(
operator
).
and
(
"shift"
).
is
(
shift
).
and
(
"createDate"
).
gte
(
createDate
)));
}
@Override
public
List
<
TaskCount
>
findTaskCountByDate
(
Date
date
)
{
return
findByQuery
(
new
Query
(
Criteria
.
where
(
"createDate"
).
gte
(
date
)));
}
}
src/main/java/com/neotel/smfcore/hikvision/service/manager/IHikTaskCountManager.java
0 → 100644
查看文件 @
a04c317
package
com
.
neotel
.
smfcore
.
hikvision
.
service
.
manager
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.hikvision.service.po.TaskCount
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.List
;
public
interface
IHikTaskCountManager
{
void
updateInOutCount
(
DataLog
task
);
List
<
TaskCount
>
findTaskCountByDate
(
Date
date
);
}
src/main/java/com/neotel/smfcore/hikvision/service/manager/impl/HikTaskCountManagerImpl.java
0 → 100644
查看文件 @
a04c317
package
com
.
neotel
.
smfcore
.
hikvision
.
service
.
manager
.
impl
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.hikvision.service.po.TaskCount
;
import
com.neotel.smfcore.hikvision.service.dao.IHikTaskCountDao
;
import
com.neotel.smfcore.hikvision.service.manager.IHikTaskCountManager
;
import
com.neotel.smfcore.hikvision.util.ShiftUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.List
;
@Slf4j
@Service
public
class
HikTaskCountManagerImpl
implements
IHikTaskCountManager
{
@Autowired
private
IHikTaskCountDao
hikTaskCountDao
;
@Override
public
void
updateInOutCount
(
DataLog
task
)
{
if
(
task
.
isFinished
())
{
//获取到操作人,班次,和查询时间
String
operator
=
task
.
getOperator
();
if
(
StringUtils
.
isBlank
(
operator
))
{
operator
=
"other"
;
}
String
shift
=
""
;
Date
createDate
=
null
;
if
(
ShiftUtil
.
isA
(
task
.
getCreateDate
()))
{
shift
=
ShiftUtil
.
SHIFT_A
;
createDate
=
ShiftUtil
.
getShiftASelectDate
();
}
else
{
shift
=
ShiftUtil
.
SHIFT_B
;
createDate
=
ShiftUtil
.
getShiftBSelectDate
(
task
.
getCreateDate
());
}
//保存数据
TaskCount
taskCount
=
hikTaskCountDao
.
getByOperatorAndShift
(
operator
,
shift
,
createDate
);
if
(
taskCount
==
null
)
{
taskCount
=
new
TaskCount
();
taskCount
.
setName
(
operator
);
taskCount
.
setShift
(
shift
);
}
if
(
task
.
isPutInTask
())
{
taskCount
.
setPutInCount
(
taskCount
.
getPutInCount
()
+
1
);
}
else
{
taskCount
.
setCheckOutCount
(
taskCount
.
getCheckOutCount
()
+
1
);
}
hikTaskCountDao
.
save
(
taskCount
);
}
}
@Override
public
List
<
TaskCount
>
findTaskCountByDate
(
Date
date
)
{
return
hikTaskCountDao
.
findTaskCountByDate
(
date
);
}
}
src/main/java/com/neotel/smfcore/hikvision/service/po/TaskCount.java
0 → 100644
查看文件 @
a04c317
package
com
.
neotel
.
smfcore
.
hikvision
.
service
.
po
;
import
com.neotel.smfcore.common.base.BasePo
;
import
lombok.Data
;
@Data
public
class
TaskCount
extends
BasePo
{
/**
* 班次
*/
private
String
shift
;
/**
* 姓名
*/
private
String
name
;
/**
* 入库数量
*/
private
int
putInCount
=
0
;
/**
* 出库数量
*/
private
int
checkOutCount
=
0
;
}
src/main/java/com/neotel/smfcore/hikvision/util/ShiftUtil.java
0 → 100644
查看文件 @
a04c317
package
com
.
neotel
.
smfcore
.
hikvision
.
util
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateUtil
;
import
java.util.Date
;
public
class
ShiftUtil
{
// A班
public
static
final
String
SHIFT_A
=
"A"
;
// B班
public
static
final
String
SHIFT_B
=
"B"
;
public
static
final
String
START
=
"00:00:00"
;
public
static
final
String
SHIFT_A_START
=
"08:30:00"
;
public
static
final
String
SHIFT_A_END
=
"20:30:00"
;
/**
* 获取A班开始时间
*
* @return
*/
public
static
Date
getShiftAStartDate
()
{
String
currentDateStr
=
DateUtil
.
format
(
new
Date
(),
"yyyy-MM-dd"
);
return
DateUtil
.
parse
(
currentDateStr
+
" "
+
SHIFT_A_START
,
"yyyy-MM-dd HH:mm:ss"
);
}
/**
* 获取A班结束时间
*
* @return
*/
public
static
Date
getShiftAEndDate
()
{
String
currentDateStr
=
DateUtil
.
format
(
new
Date
(),
"yyyy-MM-dd"
);
return
DateUtil
.
parse
(
currentDateStr
+
" "
+
SHIFT_A_END
,
"yyyy-MM-dd HH:mm:ss"
);
}
/**
* 判断是否属于A班
*
* @param date
* @return
*/
public
static
boolean
isA
(
Date
date
)
{
return
date
.
getTime
()
>=
getShiftAStartDate
().
getTime
()
&&
date
.
getTime
()
<
getShiftAEndDate
().
getTime
();
}
public
static
Date
getShiftASelectDate
()
{
String
currentDateStr
=
DateUtil
.
format
(
new
Date
(),
"yyyy-MM-dd"
);
return
DateUtil
.
parse
(
currentDateStr
+
" "
+
START
,
"yyyy-MM-dd 00:00:00"
);
}
public
static
Date
getShiftBSelectDate
(
Date
paramDate
)
{
String
currentDateStr
=
DateUtil
.
format
(
new
Date
(),
"yyyy-MM-dd"
);
Date
currentDate
=
DateUtil
.
parse
(
currentDateStr
+
" "
+
START
,
"yyyy-MM-dd 00:00:00"
);
Date
shiftAStartDate
=
getShiftAStartDate
();
String
paramDateStr
=
DateUtil
.
format
(
paramDate
,
"yyyy-MM-dd"
);
DateTime
resultDate
=
DateUtil
.
parse
(
paramDateStr
,
"yyyy-MM-dd"
);
if
(
paramDate
.
getTime
()
>=
currentDate
.
getTime
()
&&
paramDate
.
getTime
()
<
shiftAStartDate
.
getTime
())
{
return
DateUtil
.
offsetDay
(
resultDate
,
-
1
);
}
return
resultDate
;
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论