Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 3d545633
由
sunke
编写于
2021-07-13 16:38:50 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
架构调整
1 个父辈
ae9d97f3
显示空白字符变更
内嵌
并排
正在显示
75 个修改的文件
包含
1734 行增加
和
361 行删除
src/main/java/com/neotel/smfcore/SmfCoreApplication.java
src/main/java/com/neotel/smfcore/common/utils/StorageConstants.java
src/main/java/com/neotel/smfcore/security/service/dao/IBarcodeDao.java → src/main/java/com/neotel/smfcore/core/barcode/service/dao/IBarcodeDao.java
src/main/java/com/neotel/smfcore/security/service/dao/IComponentDao.java → src/main/java/com/neotel/smfcore/core/barcode/service/dao/IComponentDao.java
src/main/java/com/neotel/smfcore/security/service/dao/impl/BarcodeDaoImpl.java → src/main/java/com/neotel/smfcore/core/barcode/service/dao/impl/BarcodeDaoImpl.java
src/main/java/com/neotel/smfcore/security/service/dao/impl/ComponentDaoImpl.java → src/main/java/com/neotel/smfcore/core/barcode/service/dao/impl/ComponentDaoImpl.java
src/main/java/com/neotel/smfcore/security/service/manager/IBarcodeManager.java → src/main/java/com/neotel/smfcore/core/barcode/service/manager/IBarcodeManager.java
src/main/java/com/neotel/smfcore/security/service/manager/IComponentManager.java → src/main/java/com/neotel/smfcore/core/barcode/service/manager/IComponentManager.java
src/main/java/com/neotel/smfcore/security/service/manager/impl/BarcodeManagerImpl.java → src/main/java/com/neotel/smfcore/core/barcode/service/manager/impl/BarcodeManagerImpl.java
src/main/java/com/neotel/smfcore/security/service/manager/impl/ComponentManagerImpl.java → src/main/java/com/neotel/smfcore/core/barcode/service/manager/impl/ComponentManagerImpl.java
src/main/java/com/neotel/smfcore/security/service/po/Barcode.java → src/main/java/com/neotel/smfcore/core/barcode/service/po/Barcode.java
src/main/java/com/neotel/smfcore/security/service/po/Component.java → src/main/java/com/neotel/smfcore/core/barcode/service/po/Component.java
src/main/java/com/neotel/smfcore/core/device/SmdXlBoxHandler.java
src/main/java/com/neotel/smfcore/core/device/bean/BoxStatusBean.java
src/main/java/com/neotel/smfcore/core/device/bean/StatusBean.java
src/main/java/com/neotel/smfcore/core/device/enums/BOX_STATUS.java
src/main/java/com/neotel/smfcore/core/device/handler/BaseDeviceHandler.java
src/main/java/com/neotel/smfcore/core/device/IDeviceHandler.java → src/main/java/com/neotel/smfcore/core/device/handler/IDeviceHandler.java
src/main/java/com/neotel/smfcore/core/device/BaseDeviceHandler.java → src/main/java/com/neotel/smfcore/core/device/handler/SmdXlBoxHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/VerticalBoxHandler.java
src/main/java/com/neotel/smfcore/core/device/rest/DeviceController.java
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
src/main/java/com/neotel/smfcore/core/listener/ApiListener.java
src/main/java/com/neotel/smfcore/core/listener/IDeviceListener.java → src/main/java/com/neotel/smfcore/core/listener/ITaskListener.java
src/main/java/com/neotel/smfcore/core/listener/LiteOrderListener.java
src/main/java/com/neotel/smfcore/core/rest/TaskService.java
src/main/java/com/neotel/smfcore/security/service/dao/IAlarmInfoDao.java → src/main/java/com/neotel/smfcore/core/service/dao/IAlarmInfoDao.java
src/main/java/com/neotel/smfcore/security/service/dao/IDataLogDao.java → src/main/java/com/neotel/smfcore/core/service/dao/IDataLogDao.java
src/main/java/com/neotel/smfcore/security/service/dao/IHumitureDao.java → src/main/java/com/neotel/smfcore/core/service/dao/IHumitureDao.java
src/main/java/com/neotel/smfcore/security/service/dao/ILiteOrderDao.java → src/main/java/com/neotel/smfcore/core/service/dao/ILiteOrderDao.java
src/main/java/com/neotel/smfcore/security/service/dao/ILiteOrderItemDao.java → src/main/java/com/neotel/smfcore/core/service/dao/ILiteOrderItemDao.java
src/main/java/com/neotel/smfcore/security/service/dao/IMaintenanceDao.java → src/main/java/com/neotel/smfcore/core/service/dao/IMaintenanceDao.java
src/main/java/com/neotel/smfcore/security/service/dao/ISettingsDao.java → src/main/java/com/neotel/smfcore/core/service/dao/ISettingsDao.java
src/main/java/com/neotel/smfcore/security/service/dao/IStorageDao.java → src/main/java/com/neotel/smfcore/core/service/dao/IStorageDao.java
src/main/java/com/neotel/smfcore/security/service/dao/IStoragePosDao.java → src/main/java/com/neotel/smfcore/core/service/dao/IStoragePosDao.java
src/main/java/com/neotel/smfcore/security/service/dao/impl/AlarmInfoDaoImpl.java → src/main/java/com/neotel/smfcore/core/service/dao/impl/AlarmInfoDaoImpl.java
src/main/java/com/neotel/smfcore/security/service/dao/impl/DataLogDaoImpl.java → src/main/java/com/neotel/smfcore/core/service/dao/impl/DataLogDaoImpl.java
src/main/java/com/neotel/smfcore/security/service/dao/impl/HumitureDaoImpl.java → src/main/java/com/neotel/smfcore/core/service/dao/impl/HumitureDaoImpl.java
src/main/java/com/neotel/smfcore/security/service/dao/impl/LiteOrderDaoImpl.java → src/main/java/com/neotel/smfcore/core/service/dao/impl/LiteOrderDaoImpl.java
src/main/java/com/neotel/smfcore/security/service/dao/impl/LiteOrderItemDaoImpl.java → src/main/java/com/neotel/smfcore/core/service/dao/impl/LiteOrderItemDaoImpl.java
src/main/java/com/neotel/smfcore/security/service/dao/impl/MaintenanceDaoImpl.java → src/main/java/com/neotel/smfcore/core/service/dao/impl/MaintenanceDaoImpl.java
src/main/java/com/neotel/smfcore/security/service/dao/impl/SettingsDaoImpl.java → src/main/java/com/neotel/smfcore/core/service/dao/impl/SettingsDaoImpl.java
src/main/java/com/neotel/smfcore/security/service/dao/impl/StorageDaoImpl.java → src/main/java/com/neotel/smfcore/core/service/dao/impl/StorageDaoImpl.java
src/main/java/com/neotel/smfcore/security/service/po/data/DeviceStatusBean.java → src/main/java/com/neotel/smfcore/core/service/data/DeviceStatusBean.java
src/main/java/com/neotel/smfcore/security/service/po/data/InactionTaskSet.java → src/main/java/com/neotel/smfcore/core/service/data/InactionTaskSet.java
src/main/java/com/neotel/smfcore/security/service/po/data/PlateSizeBean.java → src/main/java/com/neotel/smfcore/core/service/data/PlateSizeBean.java
src/main/java/com/neotel/smfcore/security/service/po/data/PreWareHousing.java → src/main/java/com/neotel/smfcore/core/service/data/PreWareHousing.java
src/main/java/com/neotel/smfcore/security/service/po/data/ProviderPattern.java → src/main/java/com/neotel/smfcore/core/service/data/ProviderPattern.java
src/main/java/com/neotel/smfcore/security/service/po/data/TaskSet.java → src/main/java/com/neotel/smfcore/core/service/data/TaskSet.java
src/main/java/com/neotel/smfcore/security/service/po/data/UsageItem.java → src/main/java/com/neotel/smfcore/core/service/data/UsageItem.java
src/main/java/com/neotel/smfcore/core/service/manager/IDataLogManager.java
src/main/java/com/neotel/smfcore/security/service/manager/IHumitureManager.java → src/main/java/com/neotel/smfcore/core/service/manager/IHumitureManager.java
src/main/java/com/neotel/smfcore/security/service/manager/IStorageManager.java → src/main/java/com/neotel/smfcore/core/service/manager/IStorageManager.java
src/main/java/com/neotel/smfcore/security/service/manager/IStoragePosManager.java → src/main/java/com/neotel/smfcore/core/service/manager/IStoragePosManager.java
src/main/java/com/neotel/smfcore/security/service/manager/impl/StorageManagerImpl.java → src/main/java/com/neotel/smfcore/core/service/manager/impl/DataLogManagerImpl.java
src/main/java/com/neotel/smfcore/security/service/manager/impl/HumitureManagerImpl.java → src/main/java/com/neotel/smfcore/core/service/manager/impl/HumitureManagerImpl.java
src/main/java/com/neotel/smfcore/core/service/manager/impl/StorageManagerImpl.java
src/main/java/com/neotel/smfcore/security/service/manager/impl/StoragePosManagerImpl.java → src/main/java/com/neotel/smfcore/core/service/manager/impl/StoragePosManagerImpl.java
src/main/java/com/neotel/smfcore/security/service/po/AlarmInfo.java → src/main/java/com/neotel/smfcore/core/service/po/AlarmInfo.java
src/main/java/com/neotel/smfcore/security/service/po/DataLog.java → src/main/java/com/neotel/smfcore/core/service/po/DataLog.java
src/main/java/com/neotel/smfcore/security/service/po/Humiture.java → src/main/java/com/neotel/smfcore/core/service/po/Humiture.java
src/main/java/com/neotel/smfcore/security/service/po/LiteOrder.java → src/main/java/com/neotel/smfcore/core/service/po/LiteOrder.java
src/main/java/com/neotel/smfcore/security/service/po/LiteOrderItem.java → src/main/java/com/neotel/smfcore/core/service/po/LiteOrderItem.java
src/main/java/com/neotel/smfcore/security/service/po/Maintenance.java → src/main/java/com/neotel/smfcore/core/service/po/Maintenance.java
src/main/java/com/neotel/smfcore/security/service/po/Settings.java → src/main/java/com/neotel/smfcore/core/service/po/Settings.java
src/main/java/com/neotel/smfcore/security/service/po/Storage.java → src/main/java/com/neotel/smfcore/core/service/po/Storage.java
src/main/java/com/neotel/smfcore/security/service/po/StoragePos.java → src/main/java/com/neotel/smfcore/core/service/po/StoragePos.java
src/main/java/com/neotel/smfcore/common/annotation/security/AnonymousAccess.java → src/main/java/com/neotel/smfcore/security/annotation/AnonymousAccess.java
src/main/java/com/neotel/smfcore/common/annotation/security/AnonymousDeleteMapping.java → src/main/java/com/neotel/smfcore/security/annotation/AnonymousDeleteMapping.java
src/main/java/com/neotel/smfcore/common/annotation/security/AnonymousGetMapping.java → src/main/java/com/neotel/smfcore/security/annotation/AnonymousGetMapping.java
src/main/java/com/neotel/smfcore/common/annotation/security/AnonymousPatchMapping.java → src/main/java/com/neotel/smfcore/security/annotation/AnonymousPatchMapping.java
src/main/java/com/neotel/smfcore/common/annotation/security/AnonymousPostMapping.java → src/main/java/com/neotel/smfcore/security/annotation/AnonymousPostMapping.java
src/main/java/com/neotel/smfcore/common/annotation/security/AnonymousPutMapping.java → src/main/java/com/neotel/smfcore/security/annotation/AnonymousPutMapping.java
src/main/java/com/neotel/smfcore/security/config/SpringSecurityConfig.java
src/main/java/com/neotel/smfcore/security/rest/AuthorizationController.java
src/main/java/com/neotel/smfcore/SmfCoreApplication.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
;
import
com.neotel.smfcore.
common.annotation.security
.AnonymousGetMapping
;
import
com.neotel.smfcore.
security.annotation
.AnonymousGetMapping
;
import
com.neotel.smfcore.common.utils.SpringContextHolder
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
...
...
src/main/java/com/neotel/smfcore/common/utils/StorageConstants.java
查看文件 @
3d54563
...
...
@@ -111,222 +111,6 @@ public class StorageConstants {
public
final
static
int
OFFLINE
=
999
;
}
/// <summary>
/// 单台BOX状态
/// 1=正常运行中
/// 2=急停,3=故障,4=警告,5=调试中
/// 6入库执行中,7入仓位完成,8入库失败
/// 9出库执行中,10出仓位完成,11出库失败
/// </summary>
public
static
class
BOX_STATUS
{
/**
* 1=准备就绪
*/
public
final
static
int
READY
=
1
;
/**
* 2=急停
*/
public
final
static
int
EMERGENCY
=
2
;
/**
* 3=故障
*/
public
final
static
int
PROBLEM
=
3
;
/**
* 4=警告(用msg发送提醒,如出库到达工位但是没有工人操作)
*/
public
final
static
int
WARNING
=
4
;
/**
* 5=调试中
*/
public
final
static
int
DEBUG
=
5
;
/**
* 6入库执行中
*/
public
final
static
int
PUTIN
=
6
;
/**
* 7入仓位完成,
*/
public
final
static
int
IN_FINISHED
=
7
;
/**
* 8入库失败
*/
public
final
static
int
IN_FAILED
=
8
;
/**
*9出库执行中,
*/
public
final
static
int
CHECKOUT
=
9
;
/**
* 10出仓位完成
*/
public
final
static
int
OUT_FINISHED
=
10
;
/**
* 11出库完成
*/
public
final
static
int
OUT_END
=
11
;
/**
* 12出库移栽中
*/
public
final
static
int
OUT_MOVING
=
12
;
/**
* 13原点返回中
*/
public
final
static
int
RESET
=
13
;
/**
* 14 回温取料中
*/
public
final
static
int
REWARM_TAKING
=
14
;
/**
* 15 回温取料完成
*/
public
final
static
int
REWARM_TAKING_END
=
15
;
/**
* 16 回温放料中
*/
public
final
static
int
REWARM_PUTTING
=
16
;
/**
* 17 回温放料完成
*/
public
final
static
int
REWARM_PUTTING_END
=
17
;
/**
* 18 搅拌取料中
*/
public
final
static
int
MIX_TAKING
=
18
;
/**
* 19 等待搅拌
*/
public
final
static
int
WAIT_MIX
=
19
;
/**
* 20 搅拌执行中
*/
public
final
static
int
MIXING
=
20
;
/**
* 21 搅拌完成回仓
*/
public
final
static
int
MIX_PUTTING
=
21
;
/**
* 22 搅拌完成放回原来的仓中
*/
public
final
static
int
MIX_END
=
22
;
}
/**
* 料仓类型:0单台自动料仓,1手动料仓2流水线料仓
*/
public
static
enum
TYPE
{
/**
*0单台自动料仓
*/
AUTO
(
"storage.type.auto"
),
/**
* 1手动料仓
*/
MANUAL
(
"storage.type.manual"
),
/**
* 2流水线料仓
*/
LINE
(
"storage.type.line"
),
/**
* 3 虚拟料仓
*/
VIRTUAL
(
"storage.type.virtual"
),
/**
* 4 在线料仓(上下层两个 BOX)
*/
ONLINE
(
"storage.type.online"
),
/**
* 5批量上下料料仓
*/
BATCH
(
"storage.type.batch"
),
/**
* 6智能料架
*/
SHELF
(
"storage.type.shelf"
),
/**
* 7 料柜
*/
CABINET
(
"storage.type.cabinet"
),
/**
* 8 料架
*/
ACCSHELF
(
"storage.type.accShelf"
),
/**
* 9 新料架,支持合并库位确认
*/
NEWSHELF
(
"storage.type.newShelf"
),
/**
* 9 扫码料架
*/
CODESHELF
(
"storage.type.codeShelf"
),
/**
* 10 锡膏料仓
*/
SOLDERPASTE
(
"storage.type.solderPaste"
),
/**
* 11 垂直货柜
*/
VERTICALBOX
(
"storage.type.smdVl"
),
/**
* 12 SMD-XL(方仓)
*/
SMD_XL
(
"storage.type.smdXl"
),
/**
* 13 SMD-DUO(DUO料仓)
*/
SMD_DUO
(
"storage.type.smdDuo"
)
;
private
String
key
;
TYPE
(
String
key
)
{
this
.
key
=
key
;
}
public
String
getKey
()
{
return
key
;
}
public
void
setKey
(
String
key
)
{
this
.
key
=
key
;
}
public
String
getName
(){
return
name
();
}
public
static
List
<
TYPE
>
availableTypeList
(){
return
Lists
.
newArrayList
(
AUTO
,
LINE
,
BATCH
,
ACCSHELF
,
CODESHELF
,
SOLDERPASTE
,
VERTICALBOX
,
SMD_XL
,
SMD_DUO
);
}
}
/**
* 操作状态
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/IBarcodeDao.java
→
src/main/java/com/neotel/smfcore/
core/barcode
/service/dao/IBarcodeDao.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
;
package
com
.
neotel
.
smfcore
.
core
.
barcode
.
service
.
dao
;
import
com.neotel.smfcore.common.base.IBaseDao
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/IComponentDao.java
→
src/main/java/com/neotel/smfcore/
core/barcode
/service/dao/IComponentDao.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
;
package
com
.
neotel
.
smfcore
.
core
.
barcode
.
service
.
dao
;
import
com.neotel.smfcore.common.base.IBaseDao
;
import
com.neotel.smfcore.
security
.service.po.Component
;
import
com.neotel.smfcore.
core.barcode
.service.po.Component
;
import
java.util.List
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/impl/BarcodeDaoImpl.java
→
src/main/java/com/neotel/smfcore/
core/barcode
/service/dao/impl/BarcodeDaoImpl.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
.
impl
;
package
com
.
neotel
.
smfcore
.
core
.
barcode
.
service
.
dao
.
impl
;
import
com.neotel.smfcore.common.base.AbstractBaseDao
;
import
com.neotel.smfcore.
security
.service.dao.IBarcodeDao
;
import
com.neotel.smfcore.
security
.service.po.Barcode
;
import
com.neotel.smfcore.
core.barcode
.service.dao.IBarcodeDao
;
import
com.neotel.smfcore.
core.barcode
.service.po.Barcode
;
public
class
BarcodeDaoImpl
extends
AbstractBaseDao
implements
IBarcodeDao
{
@Override
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/impl/ComponentDaoImpl.java
→
src/main/java/com/neotel/smfcore/
core/barcode
/service/dao/impl/ComponentDaoImpl.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
.
impl
;
package
com
.
neotel
.
smfcore
.
core
.
barcode
.
service
.
dao
.
impl
;
import
com.neotel.smfcore.common.base.AbstractBaseDao
;
import
com.neotel.smfcore.
security
.service.dao.IComponentDao
;
import
com.neotel.smfcore.
security
.service.po.Component
;
import
com.neotel.smfcore.
core.barcode
.service.dao.IComponentDao
;
import
com.neotel.smfcore.
core.barcode
.service.po.Component
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/manager/IBarcodeManager.java
→
src/main/java/com/neotel/smfcore/
core/barcode
/service/manager/IBarcodeManager.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
manager
;
package
com
.
neotel
.
smfcore
.
core
.
barcode
.
service
.
manager
;
import
com.neotel.smfcore.common.base.IBaseManager
;
import
com.neotel.smfcore.
security
.service.po.Barcode
;
import
com.neotel.smfcore.
core.barcode
.service.po.Barcode
;
public
interface
IBarcodeManager
extends
IBaseManager
<
Barcode
>
{
}
src/main/java/com/neotel/smfcore/
security
/service/manager/IComponentManager.java
→
src/main/java/com/neotel/smfcore/
core/barcode
/service/manager/IComponentManager.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
manager
;
package
com
.
neotel
.
smfcore
.
core
.
barcode
.
service
.
manager
;
import
com.neotel.smfcore.common.base.IBaseManager
;
import
com.neotel.smfcore.
security
.service.po.Component
;
import
com.neotel.smfcore.
core.barcode
.service.po.Component
;
public
interface
IComponentManager
extends
IBaseManager
<
Component
>
{
}
src/main/java/com/neotel/smfcore/
security
/service/manager/impl/BarcodeManagerImpl.java
→
src/main/java/com/neotel/smfcore/
core/barcode
/service/manager/impl/BarcodeManagerImpl.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
manager
.
impl
;
package
com
.
neotel
.
smfcore
.
core
.
barcode
.
service
.
manager
.
impl
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.
security
.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.
security
.service.po.Barcode
;
import
com.neotel.smfcore.
core.barcode
.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.
core.barcode
.service.po.Barcode
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Query
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/manager/impl/ComponentManagerImpl.java
→
src/main/java/com/neotel/smfcore/
core/barcode
/service/manager/impl/ComponentManagerImpl.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
manager
.
impl
;
package
com
.
neotel
.
smfcore
.
core
.
barcode
.
service
.
manager
.
impl
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.
security
.service.manager.IComponentManager
;
import
com.neotel.smfcore.
security
.service.po.Component
;
import
com.neotel.smfcore.
core.barcode
.service.manager.IComponentManager
;
import
com.neotel.smfcore.
core.barcode
.service.po.Component
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Query
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/po/Barcode.java
→
src/main/java/com/neotel/smfcore/
core/barcode
/service/po/Barcode.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
;
package
com
.
neotel
.
smfcore
.
core
.
barcode
.
service
.
po
;
import
com.google.common.collect.Lists
;
import
com.neotel.smfcore.common.base.BasePo
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/po/Component.java
→
src/main/java/com/neotel/smfcore/
core/barcode
/service/po/Component.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
;
package
com
.
neotel
.
smfcore
.
core
.
barcode
.
service
.
po
;
import
com.neotel.smfcore.common.base.BasePo
;
import
com.neotel.smfcore.common.utils.StorageConstants
;
...
...
src/main/java/com/neotel/smfcore/core/device/SmdXlBoxHandler.java
deleted
100644 → 0
查看文件 @
ae9d97f
package
com
.
neotel
.
smfcore
.
core
.
device
;
/**
* Created by sunke on 2021/7/12.
*/
public
class
SmdXlBoxHandler
implements
IDeviceHandler
{
@Override
public
String
getDeviceType
()
{
return
null
;
}
}
src/main/java/com/neotel/smfcore/core/device/bean/BoxStatusBean.java
0 → 100644
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
core
.
device
.
bean
;
import
com.neotel.smfcore.core.device.enums.BOX_STATUS
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* Created by sunke on 17/2/13.
*/
public
class
BoxStatusBean
{
/// <summary>
/// Box编号,从1开始
/// </summary>
private
int
boxId
;
/// <summary>
/// 单台BOX状态
///1=正常运行中
/// 2=急停,3=故障,4=警告,5=调试中
/// 6入库执行中,7入仓位完成,8入库失败
/// 9出库执行中,10出仓位完成,11出库失败
/// </summary>
private
int
status
;
/// <summary>
/// 操作相关数据,出仓完成或入仓完成时,需要有 posId 信息
/// </summary>
private
Map
<
String
,
String
>
data
=
new
HashMap
<>();
/// <summary>
/// 单台BOX的消息
/// 正在调试中,不能出入库
/// 入库失败原因:
/// 出库失败原因:
/// </summary>
public
String
msg
;
/// <summary>
/// 温度
/// </summary>
public
String
temperature
;
/// <summary>
/// 湿度
/// </summary>
public
String
humidity
;
public
int
getBoxId
()
{
return
boxId
;
}
public
void
setBoxId
(
int
boxId
)
{
this
.
boxId
=
boxId
;
}
public
int
getStatus
()
{
return
status
;
}
public
void
setStatus
(
int
status
)
{
this
.
status
=
status
;
}
public
String
getMsg
()
{
return
msg
;
}
public
void
setMsg
(
String
msg
)
{
this
.
msg
=
msg
;
}
public
String
getTemperature
()
{
return
temperature
;
}
public
void
setTemperature
(
String
temperature
)
{
this
.
temperature
=
temperature
;
}
public
String
getHumidity
()
{
return
humidity
;
}
public
void
setHumidity
(
String
humidity
)
{
this
.
humidity
=
humidity
;
}
/**
* 当前的 BOX 是否空闲,即状态为就绪状态
*/
public
boolean
boxIsIdle
(){
return
status
==
BOX_STATUS
.
READY
;
}
/**
* 当前的 BOX 是否正在出库执行(未出仓位或出仓完成但还没完成出库)
*/
public
boolean
boxIsCheckingOut
(){
return
status
==
BOX_STATUS
.
CHECKOUT
||
status
==
BOX_STATUS
.
OUT_FINISHED
||
status
==
BOX_STATUS
.
OUT_MOVING
;
}
/**
* 当前 box 是否可以接受出库任务(空闲或出仓完成或正在移栽的都可以再分配出库任务)
*/
public
boolean
boxCanCheckout
(){
return
boxIsIdle
()
||
status
==
BOX_STATUS
.
OUT_MOVING
;
}
/**
* BOX 是否可以正常使用,没有急停,故障,调试等
*/
public
boolean
boxIsAvailable
(){
return
status
!=
BOX_STATUS
.
EMERGENCY
&&
status
!=
BOX_STATUS
.
PROBLEM
&&
status
!=
BOX_STATUS
.
DEBUG
;
}
public
Map
<
String
,
String
>
getData
()
{
return
data
;
}
public
void
setData
(
Map
<
String
,
String
>
data
)
{
this
.
data
=
data
;
}
/**
* 获取客户端发送上来的出入库完成的库位信息
*/
public
String
getPosId
(){
return
data
.
get
(
"posId"
);
}
}
src/main/java/com/neotel/smfcore/core/device/bean/StatusBean.java
0 → 100644
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
core
.
device
.
bean
;
import
com.google.common.base.Strings
;
import
com.neotel.smfcore.common.utils.StorageConstants
;
import
com.neotel.smfcore.core.device.enums.BOX_STATUS
;
import
com.neotel.smfcore.core.service.po.AlarmInfo
;
import
java.util.*
;
/**
* 类型,内容,详情,Msg
0,消息,"1=原点返回 2=复位",
1,总体错误,"1=急停 2=没有气压信号 3=盘错乱",
2,运动轴错误,"1=第一轴(旋转)2=第二轴(上下轴)3=第三轴(前进轴)4=第四轴(压紧轴)",
3,IO报警,信号超时,io电器定义(电器定义),
4,电钢报警,1=上下电钢,
*/
public
class
StatusBean
{
/// <summary>
/// 料仓唯一标识
/// </summary>;
private
String
cid
;
/// <summary>
/// 请求序列号
/// </summary>
private
int
seq
;
/// <summary>
/// 操作码(0无操作(发送料仓状态给服务器),1扫码入库(扫码成功后发送给服务器),2 出库(服务器发送) )
/// </summary>
private
int
op
;
/// <summary>
/// 操作相关数据,
/// op=1时,客户端发送 code 二维码给服务器,服务器返回时有:posId库位编号,plateW:料盘宽度,plateH:料盘高度
/// 如果需要更新温湿度的报警值,服务器会发送alarmTemperature,alarmHumidity给客户端,客户端缓存,如果没有发送,不处理
/// </summary>
//数据还放入data那个map里面,客户端收到服务器openLock为doit时,执行打开门锁动作;startBatchIn为doit时,执行开始批量入库动作;closeLock为doit时,执行关闭门锁;takeOutReel为doit时,执行取出出库料盘动作;confirmReelOut为doit时,执行门口料盘已取出;
//当服务器收到客户端:doorStatus为门锁状态(如开门中,或关闭中);openLock为enable时,此按钮状态为可用;startBatchIn为enable时此按钮状态为可用;closeLock为enable时此按钮状态为可用;takeOutReel为enable时此按钮状态为可用;confirmReelOut为enable时此按钮状态为可用;
//服务器默认这些按钮都为不可用状态,只有收到对应的enable时,按钮才可以进行点击
private
Map
<
String
,
String
>
data
=
new
HashMap
<>();
/**
* 提示消息,key为en, zh_CN, jp等,消息为对应语言的消息
*/
private
Map
<
String
,
String
>
msgData
=
new
HashMap
<>();
/// <summary>
/// 整体料仓状态
/// 1=正常运行中
/// 2=急停中
/// 3=故障(气压检测不到等,用msg发送详细故障说明)
/// 4=警告(用msg发送提醒,如出库到达工位但是没有工人操作)
/// </summary>
private
int
status
;
/// <summary>
/// 提示消息
/// 出入库错误: BOX正在调试中,不能出入库
/// 出入库错误: 急停了不能出入库
/// 入库错误:料盘过大,放不到指定的位置中去
/// 故障:气压信号检测不到
/// 警告:出库盘到达工位但是没有工人操作
/// </summary>
public
String
msg
=
""
;
/**
* 英文提示消息
*/
public
String
msgEn
=
""
;
/// <summary>
/// 包含的多个 BOX 的状态信息
/// </summary>
private
Map
<
Integer
,
BoxStatusBean
>
boxStatus
=
new
HashMap
<>();
/**
* 报警集合
*/
private
List
<
AlarmInfo
>
alarmList
=
new
ArrayList
<>();
private
long
time
=
System
.
currentTimeMillis
();
/**
* 上次保存时间
*/
private
long
lastSaveTime
=
System
.
currentTimeMillis
();
/**
* 获取已经结束(缓存中存在,但新的报警列表不存在)的报警列表,同时将新的报警加入到缓存中
*/
public
List
<
AlarmInfo
>
getEndAlarmList
(
String
storageName
,
List
<
AlarmInfo
>
newAlarmList
){
List
<
AlarmInfo
>
endAlarmList
=
new
ArrayList
<>();
Map
<
String
,
AlarmInfo
>
map
=
new
HashMap
<>();
if
(
newAlarmList
!=
null
){
for
(
AlarmInfo
newAlarm
:
newAlarmList
){
map
.
put
(
newAlarm
.
getKey
(),
newAlarm
);
}
}
if
(
alarmList
==
null
){
alarmList
=
new
ArrayList
<>();
}
for
(
AlarmInfo
cacheAlarm
:
alarmList
){
AlarmInfo
existAlarm
=
map
.
get
(
cacheAlarm
.
getKey
());
if
(
existAlarm
==
null
){
//客户端新上传的报警列表中不存在,说明该报警已经结束
//如果结束时间超过20秒就存到数据库中
Date
endDate
=
cacheAlarm
.
getEndTime
();
if
(
endDate
!=
null
){
if
(
System
.
currentTimeMillis
()
-
endDate
.
getTime
()
>=
20
*
1000
){
cacheAlarm
.
setStorageName
(
storageName
);
endAlarmList
.
add
(
cacheAlarm
);
}
}
else
{
//设置结束时间
cacheAlarm
.
setEndTime
(
new
Date
());
}
}
else
{
//报警还在继续维持
cacheAlarm
.
setEndTime
(
null
);
//从map 中移除,剩余的就是本次新增的报警信息
map
.
remove
(
cacheAlarm
.
getKey
());
}
}
//将已经结束的报警信息从缓存列表中移除
for
(
AlarmInfo
endAlarm
:
endAlarmList
){
alarmList
.
remove
(
endAlarm
);
}
//新增加的报警信息添加到缓存列表中
for
(
AlarmInfo
newAlarm
:
map
.
values
()){
newAlarm
.
setStartTime
(
new
Date
());
alarmList
.
add
(
newAlarm
);
}
return
endAlarmList
;
}
/**
* 是否超时(3秒)
*/
public
boolean
timeOut
(){
return
System
.
currentTimeMillis
()
-
time
>
10
*
1000
;
}
/**
* 获取客户端发送上来的二维码
*/
public
String
getCode
(){
return
data
.
get
(
"code"
);
}
public
int
getWeight
(){
String
weightStr
=
data
.
get
(
"weight"
);
try
{
return
Integer
.
valueOf
(
weightStr
);
}
catch
(
Exception
e
){
}
return
0
;
}
/**
* 获取库位信息
*/
public
String
getPosId
(){
return
data
.
get
(
"posId"
);
}
/**
* 门口是否有料盘,如果
* @return
*/
public
String
hasTrayAtDoor
(){
return
getFromData
(
"TrayCheck_Door"
);
}
/**
* 从Data中获取数据
*/
public
String
getFromData
(
String
key
){
return
data
.
get
(
key
);
}
/**
* 获取客户端发送上来的二维码对应的 boxId
*/
// public String getCodeBoxId(){
// return data.get("boxId");
// }
public
void
setCode
(
String
barcode
){
data
.
put
(
"code"
,
barcode
);
}
public
void
setTemperature
(
float
temperature
)
{
data
.
put
(
"temp"
,
String
.
valueOf
(
temperature
));
}
public
void
setHumidity
(
float
humidity
)
{
data
.
put
(
"humi"
,
String
.
valueOf
(
humidity
));
}
public
List
<
AlarmInfo
>
getAlarmList
()
{
return
alarmList
;
}
public
void
setAlarmList
(
List
<
AlarmInfo
>
alarmList
)
{
this
.
alarmList
=
alarmList
;
}
/**
* 添加一些服务器的操作发送到客户端(批量入库)
* @param opMap
*/
public
void
addOp
(
Map
<
String
,
String
>
opMap
){
if
(
opMap
!=
null
&&
!
opMap
.
isEmpty
()){
for
(
Map
.
Entry
<
String
,
String
>
op
:
opMap
.
entrySet
())
{
data
.
put
(
op
.
getKey
(),
op
.
getValue
());
}
}
}
public
void
addData
(
String
key
,
String
value
){
String
oldValue
=
data
.
get
(
key
);
String
valueStr
=
value
;
if
(!
Strings
.
isNullOrEmpty
(
oldValue
)){
valueStr
=
valueStr
+
"|"
+
oldValue
;
}
data
.
put
(
key
,
valueStr
);
}
/**
* 入库时添加仓位及料盘大小信息(posId库位编号,plateW:料盘宽度,plateH:料盘高度,singleOut:是否出库到料仓门口)
*/
public
void
addPosInfo
(
String
barcode
,
String
posId
,
int
plateW
,
int
plateH
,
boolean
isSingleOut
){
String
originalPosId
=
data
.
get
(
"posId"
);
String
originalPlateW
=
data
.
get
(
"plateW"
);
String
originalPlateH
=
data
.
get
(
"plateH"
);
String
originalBarcode
=
data
.
get
(
"barcode"
);
String
posIdStr
=
posId
;
String
plateWStr
=
plateW
+
""
;
String
plateHStr
=
plateH
+
""
;
String
barcodeStr
=
barcode
+
""
;
if
(!
Strings
.
isNullOrEmpty
(
originalPosId
)){
posIdStr
=
originalPosId
+
"|"
+
posId
;
}
if
(!
Strings
.
isNullOrEmpty
(
originalPlateW
)){
plateWStr
=
originalPlateW
+
"|"
+
plateW
;
}
if
(!
Strings
.
isNullOrEmpty
(
originalPlateH
)){
plateHStr
=
originalPlateH
+
"|"
+
plateH
;
}
if
(!
Strings
.
isNullOrEmpty
(
originalBarcode
)){
barcodeStr
=
originalBarcode
+
"|"
+
barcodeStr
;
}
data
.
put
(
"posId"
,
posIdStr
);
data
.
put
(
"plateW"
,
plateWStr
);
data
.
put
(
"plateH"
,
plateHStr
);
data
.
put
(
"barcode"
,
barcodeStr
);
data
.
put
(
"singleOut"
,
isSingleOut
+
""
);
}
/**
* 是否需要往数据库保存(5分钟保存一次)
*/
public
boolean
needSaveToMongo
(){
return
System
.
currentTimeMillis
()
-
lastSaveTime
>=
5
*
60
*
1000
;
}
public
long
getLastSaveTime
()
{
return
lastSaveTime
;
}
public
void
setLastSaveTime
(
long
lastSaveTime
)
{
this
.
lastSaveTime
=
lastSaveTime
;
}
public
long
getTime
()
{
return
time
;
}
public
void
setTime
(
long
time
)
{
this
.
time
=
time
;
}
public
String
getCid
()
{
return
cid
;
}
public
void
setCid
(
String
cid
)
{
this
.
cid
=
cid
;
}
public
int
getSeq
()
{
return
seq
;
}
public
void
setSeq
(
int
seq
)
{
this
.
seq
=
seq
;
}
public
int
getOp
()
{
return
op
;
}
public
void
setOp
(
int
op
)
{
this
.
op
=
op
;
}
public
Map
<
String
,
String
>
getData
()
{
return
data
;
}
public
void
setData
(
Map
<
String
,
String
>
data
)
{
this
.
data
=
data
;
}
public
int
getStatus
()
{
return
status
;
}
public
void
setStatus
(
int
status
)
{
this
.
status
=
status
;
}
public
String
getMsg
()
{
return
msg
;
}
public
void
setMsg
(
String
msg
)
{
this
.
msg
=
msg
;
}
public
void
setShowMsg
(
Locale
local
){
String
lang
=
local
.
getLanguage
();
String
showMsg
=
msgData
.
get
(
lang
);
// if(showMsg == null){
// if(Language.ENGLISH.getLabel().contains(lang)){
// showMsg = msgEn;
// }else{
// showMsg = msg;
// }
// }
this
.
msg
=
showMsg
;
}
public
Map
<
Integer
,
BoxStatusBean
>
getBoxStatus
()
{
return
boxStatus
;
}
public
void
setBoxStatus
(
Map
<
Integer
,
BoxStatusBean
>
boxStatus
)
{
this
.
boxStatus
=
boxStatus
;
}
public
boolean
isAvailable
(){
if
(!
timeOut
()){
return
status
!=
BOX_STATUS
.
EMERGENCY
&&
status
!=
BOX_STATUS
.
PROBLEM
&&
status
!=
BOX_STATUS
.
DEBUG
;
}
return
false
;
}
// public List<Integer> allIdleBoxIds(){
// List<Integer> idleBoxIds = new ArrayList<>();
// if(!timeOut()){//在线
// if(StorageConstants.STATUS.OFFLINE != status){//在线
// for (BoxStatusBean boxStatusBean : boxStatus.values()) {
// if(boxStatusBean.boxIsIdle()){
// idleBoxIds.add(boxStatusBean.getBoxId());
// }
// }
// }
// }
// return idleBoxIds;
// }
/**
* 所有可以出库的 box
*/
// public List<Integer> allCanCheckoutBoxIds(){
// List<Integer> canCheckoutBoxIds = new ArrayList<>();
// if(StorageConstants.STATUS.OFFLINE != status){//在线
// for (BoxStatusBean boxStatusBean : boxStatus.values()) {
// if(boxStatusBean.boxCanCheckout()){
// canCheckoutBoxIds.add(boxStatusBean.getBoxId());
// }
// }
// }
// return canCheckoutBoxIds;
// }
/**
* 获取所有可以入库的 BOXID(用正则的|线隔开),即 BOX 可以正常使用(没有急停,故障,调试等)并且不是出库状态(正在出库时如果再分配入库有可能会出现卡死的情况,即出库要等空托盘,但入库的托盘卡在移载处)
*/
// public List<Integer> allCanPutInBoxIds(){
// List<Integer> canPutInBoxIds = new ArrayList<>();
// String idleBoxIds = "";
// for (BoxStatusBean boxStatusBean : boxStatus.values()) {
// //可正常使用,且未在出库执行中
// if(boxStatusBean.boxIsAvailable() && !boxStatusBean.boxIsCheckingOut()){
// canPutInBoxIds.add(boxStatusBean.getBoxId());
// }
// }
// return canPutInBoxIds;
// }
/**
* 判断某个 box 是否可以执行入库操作
*/
// public boolean isBoxCanPutIn(int boxId){
// if(timeOut()){
// return false;
// }
// for (BoxStatusBean boxStatusBean : boxStatus.values()) {
// //可正常使用,且未在出库执行中
// int bid = boxStatusBean.getBoxId();
// if(bid == boxId){
// if(boxStatusBean.boxIsAvailable() && !boxStatusBean.boxIsCheckingOut()){
// return true;
// }
// return false;
// }
// }
// return false;
// }
// public void updateBoxStatus(String posName, int boxStatusToChange){
// int index = posName.indexOf("#");
// if(index > 0){
// int boxId = Integer.valueOf(posName.substring(0,index));
// for (BoxStatusBean boxStatusBean : boxStatus.values()) {
// if(boxStatusBean.getBoxId() == boxId){
// boxStatusBean.setStatus(boxStatusToChange);
// break;
// }
// }
// }
// }
public
String
getMsgEn
()
{
return
msgEn
;
}
public
void
setMsgEn
(
String
msgEn
)
{
this
.
msgEn
=
msgEn
;
}
public
Map
<
String
,
String
>
getMsgData
()
{
return
msgData
;
}
public
void
setMsgData
(
Map
<
String
,
String
>
msgData
)
{
this
.
msgData
=
msgData
;
}
public
String
getDoorReelSingnal
()
{
String
doorReelSignal
=
getFromData
(
"doorReelSignal"
);
if
(
Strings
.
isNullOrEmpty
(
doorReelSignal
)){
doorReelSignal
=
"-1"
;
}
return
doorReelSignal
;
}
}
src/main/java/com/neotel/smfcore/core/device/enums/BOX_STATUS.java
0 → 100644
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
core
.
device
.
enums
;
/**
* Created by sunke on 2021/7/13.
*/
public
class
BOX_STATUS
{
/**
* 1=准备就绪
*/
public
final
static
int
READY
=
1
;
/**
* 2=急停
*/
public
final
static
int
EMERGENCY
=
2
;
/**
* 3=故障
*/
public
final
static
int
PROBLEM
=
3
;
/**
* 4=警告(用msg发送提醒,如出库到达工位但是没有工人操作)
*/
public
final
static
int
WARNING
=
4
;
/**
* 5=调试中
*/
public
final
static
int
DEBUG
=
5
;
/**
* 6入库执行中
*/
public
final
static
int
PUTIN
=
6
;
/**
* 7入仓位完成,
*/
public
final
static
int
IN_FINISHED
=
7
;
/**
* 8入库失败
*/
public
final
static
int
IN_FAILED
=
8
;
/**
*9出库执行中,
*/
public
final
static
int
CHECKOUT
=
9
;
/**
* 10出仓位完成
*/
public
final
static
int
OUT_FINISHED
=
10
;
/**
* 11出库完成
*/
public
final
static
int
OUT_END
=
11
;
/**
* 12出库移栽中
*/
public
final
static
int
OUT_MOVING
=
12
;
/**
* 13原点返回中
*/
public
final
static
int
RESET
=
13
;
/**
* 14 回温取料中
*/
public
final
static
int
REWARM_TAKING
=
14
;
/**
* 15 回温取料完成
*/
public
final
static
int
REWARM_TAKING_END
=
15
;
/**
* 16 回温放料中
*/
public
final
static
int
REWARM_PUTTING
=
16
;
/**
* 17 回温放料完成
*/
public
final
static
int
REWARM_PUTTING_END
=
17
;
/**
* 18 搅拌取料中
*/
public
final
static
int
MIX_TAKING
=
18
;
/**
* 19 等待搅拌
*/
public
final
static
int
WAIT_MIX
=
19
;
/**
* 20 搅拌执行中
*/
public
final
static
int
MIXING
=
20
;
/**
* 21 搅拌完成回仓
*/
public
final
static
int
MIX_PUTTING
=
21
;
/**
* 22 搅拌完成放回原来的仓中
*/
public
final
static
int
MIX_END
=
22
;
}
src/main/java/com/neotel/smfcore/core/device/handler/BaseDeviceHandler.java
0 → 100644
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
core
.
device
.
handler
;
import
com.neotel.smfcore.common.enums.DeviceType
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
org.springframework.stereotype.Service
;
import
javax.servlet.http.HttpServletRequest
;
/**
* Created by sunke on 2021/7/12.
*/
@Service
public
class
BaseDeviceHandler
implements
IDeviceHandler
{
@Override
public
StatusBean
handleClientRequest
(
StatusBean
statusBean
,
HttpServletRequest
request
)
{
return
null
;
}
@Override
public
DeviceType
getDeviceType
()
{
return
DeviceType
.
AUTO
;
}
}
src/main/java/com/neotel/smfcore/core/device/IDeviceHandler.java
→
src/main/java/com/neotel/smfcore/core/device/
handler/
IDeviceHandler.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
core
.
device
;
package
com
.
neotel
.
smfcore
.
core
.
device
.
handler
;
import
com.neotel.smfcore.common.enums.DeviceType
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
javax.servlet.http.HttpServletRequest
;
/**
* Created by sunke on 2021/7/13.
*/
public
interface
IDeviceHandler
{
String
getDeviceType
();
StatusBean
handleClientRequest
(
StatusBean
statusBean
,
HttpServletRequest
request
);
DeviceType
getDeviceType
();
}
src/main/java/com/neotel/smfcore/core/device/
BaseDevice
Handler.java
→
src/main/java/com/neotel/smfcore/core/device/
handler/SmdXlBox
Handler.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
core
.
device
;
package
com
.
neotel
.
smfcore
.
core
.
device
.
handler
;
import
com.neotel.smfcore.co
re.listener.IDeviceListener
;
import
com.neotel.smfcore.co
mmon.enums.DeviceType
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* Created by sunke on 2021/7/12.
*/
@Service
public
class
BaseDeviceHandler
implements
IDeviceHandler
{
public
class
SmdXlBoxHandler
extends
BaseDeviceHandler
{
@Override
public
String
getDeviceType
()
{
return
""
;
public
DeviceType
getDeviceType
()
{
return
DeviceType
.
SMD_XL
;
}
}
src/main/java/com/neotel/smfcore/core/device/handler/VerticalBoxHandler.java
0 → 100644
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
core
.
device
.
handler
;
import
com.neotel.smfcore.common.enums.DeviceType
;
import
org.springframework.stereotype.Service
;
/**
* Created by sunke on 2021/7/13.
*/
@Service
public
class
VerticalBoxHandler
extends
BaseDeviceHandler
{
@Override
public
DeviceType
getDeviceType
()
{
return
DeviceType
.
VERTICALBOX
;
}
}
src/main/java/com/neotel/smfcore/core/device/rest/DeviceController.java
0 → 100644
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
core
.
device
.
rest
;
import
com.neotel.smfcore.security.annotation.AnonymousPostMapping
;
import
com.neotel.smfcore.common.enums.DeviceType
;
import
com.neotel.smfcore.core.device.handler.IDeviceHandler
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.service.po.Storage
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Slf4j
@RestController
@RequestMapping
(
"/service/store"
)
@RequiredArgsConstructor
@Api
(
tags
=
"设备通信"
)
public
class
DeviceController
{
@Autowired
private
DataCache
dataCahche
;
private
Map
<
String
,
IDeviceHandler
>
handlerMap
=
new
HashMap
<>();
public
DeviceController
(
List
<
IDeviceHandler
>
deviceHandlerList
){
for
(
IDeviceHandler
deviceHandler
:
deviceHandlerList
)
{
System
.
out
.
println
(
deviceHandler
.
getDeviceType
()
+
"处理类 :"
+
deviceHandler
.
getClass
());
handlerMap
.
put
(
deviceHandler
.
getDeviceType
().
name
(),
deviceHandler
);
}
}
@ApiOperation
(
"客户端定时通信接口"
)
@AnonymousPostMapping
(
value
=
"/communication"
)
@ResponseBody
public
StatusBean
communication
(
@RequestBody
final
StatusBean
statusBean
,
HttpServletRequest
request
)
{
try
{
String
cid
=
statusBean
.
getCid
();
Storage
storage
=
dataCahche
.
getStorage
(
cid
);
if
(
storage
==
null
)
{
log
.
error
(
"料仓cid: ["
+
cid
+
"]不存在"
);
return
null
;
}
synchronized
(
storage
)
{
String
deviceType
=
storage
.
getType
();
IDeviceHandler
deviceHandler
=
handlerMap
.
get
(
deviceType
);
if
(
deviceHandler
==
null
){
//未找到处理类,使用默认处理类
deviceHandler
=
handlerMap
.
get
(
DeviceType
.
AUTO
.
name
());
}
StatusBean
resultBean
=
deviceHandler
.
handleClientRequest
(
statusBean
,
request
);
return
resultBean
;
}
}
catch
(
Exception
e
)
{
log
.
error
(
""
,
e
);
}
return
statusBean
;
}
}
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
0 → 100644
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
core
.
device
.
util
;
import
com.google.common.base.Strings
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.neotel.smfcore.common.utils.StorageConstants
;
import
com.neotel.smfcore.core.barcode.service.manager.IComponentManager
;
import
com.neotel.smfcore.core.service.manager.IDataLogManager
;
import
com.neotel.smfcore.core.service.manager.IStorageManager
;
import
com.neotel.smfcore.core.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.service.po.Settings
;
import
com.neotel.smfcore.core.service.po.Storage
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
import
java.util.*
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
* 缓存
* Created by sunke on 17/3/17.
*/
@Repository
public
class
DataCache
{
protected
final
transient
Logger
log
=
LogManager
.
getLogger
(
getClass
());
@Autowired
private
IStoragePosManager
storagePosManager
;
@Autowired
private
IStorageManager
storageManager
;
@Autowired
private
IDataLogManager
dataLogManager
;
// @Autowired
// private ISettingsDao settingsDao;
//
// @Autowired
// private IBarcodeManager barcodeManager;
//
// @Autowired
// private IComponentManager componentManager;
//
// /**
// * 是否需要推送温湿度报警值
// */
// public static Map<String, Boolean> needUpdateHumidityMap = new ConcurrentHashMap<>();
//
// /**
// * 出库方式
// */
// private static Settings settings;
//
// private static List<BarcodeRule> barcodeRuleList;
//
// /**
// * 是否需要推送温湿度报警值
// */
// public boolean needUpdateHumidiy(String cid){
// Boolean needUpdateHumidiy = needUpdateHumidityMap.get(cid);
// if(needUpdateHumidiy == null || needUpdateHumidiy){
// needUpdateHumidityMap.put(cid, false);
// return true;
// }
// return false;
// }
//
//
// public Settings getSettings(){
// if(settings == null){
// List<Settings> allSettings = settingsDao.findAll();
// if(allSettings == null || allSettings.isEmpty()){
// settings = new Settings();
// settings.setOutType(StorageConstants.CHECKOUT_TYPE.EFFICIENCY.name());
// settings = settingsDao.save(settings);
// }else{
// settings = allSettings.get(0);
// }
//
// barcodeRuleList = Lists.newArrayList();
// List<String> ruleList = settings.getCodeRuleList();
// String oldCodeRule = settings.getCodeRule();
// if(!Strings.isNullOrEmpty(oldCodeRule)){
// ruleList.add(oldCodeRule);
// settings.setCodeRule("");
// settings.setCodeRuleList(ruleList);
// updateSettings(settings);
// }
//
// for(String codeRule : ruleList){
// if(!Strings.isNullOrEmpty(codeRule)){
// barcodeRuleList.add(BarcodeRule.newRule(codeRule));
// }
// }
// }
// return settings;
// }
//
// /**
// * 解析条码为单个 Barcode
// */
// public CodeBean resolveSingleCode(String barcodeItemStr){
// //防止规则未初始化
// if(barcodeRuleList == null){
// getSettings();
// }
//
// CodeBean codeBeanFromRule = null;
// Barcode barcode = null;
// if(barcodeRuleList.isEmpty()){
// //没有配置规则的话,直接从数据库中查询
// barcode = barcodeManager.findByBarcode(barcodeItemStr);
// if(barcode != null) {
// codeBeanFromRule = new CodeBean();
// codeBeanFromRule.setError(null,null);
// codeBeanFromRule.setCodeStr(barcode.getBarcode());
// codeBeanFromRule.setBarcode(barcode);
//// Component component = componentManager.findByPartNumber(barcode.getPartNumber());
//// codeBeanFromRule.setShowImg(component.getShowImg());
//
// return codeBeanFromRule;
// }
// }
//
// //每个规则尝试解析一次
// for (BarcodeRule codeRule : barcodeRuleList){
// codeBeanFromRule = codeRule.toCodeBean(barcodeItemStr);
// //查看数据库中是否已存在
// String codeStr = codeBeanFromRule.getCodeStr();
// barcode = barcodeManager.findByBarcode(codeStr);
// if(barcode != null) {//数据库中已存在
// if(codeBeanFromRule.hasReelSizeInfo()){
// //如果客户端传入的有尺寸,但尺寸不一致,使用上传上来的尺寸
// if(barcode.getHeight() != codeBeanFromRule.getReelHeight() || barcode.getPlateSize() != codeBeanFromRule.getReelWidth()){
// try{
// log.warn("重新设置尺寸["+barcode.getPlateSize()+"x"+barcode.getHeight()+"]为["+codeBeanFromRule.getReelWidth()+"x"+codeBeanFromRule.getReelHeight()+"]");
//
// barcode.setPlateSize(codeBeanFromRule.getReelWidth());
// barcode.setHeight(codeBeanFromRule.getReelHeight());
// barcode = barcodeManager.save(barcode);
// }catch (Exception ve){
// log.error("重设尺寸出错",ve);
// }
// }
// }
// Component component = componentManager.findByPartNumberAndProvider(barcode.getPartNumber(),barcode.getProvider());
// int validDay = 0;
// if(component != null){
// validDay = component.getValidDay();
// codeBeanFromRule.setShowImg(component.getShowImg());
// }
//
// Barcode barcodeFromRule = codeBeanFromRule.getBarcode();
// if(barcodeFromRule != null){
// boolean needUpdate = false;
// int lastLabelAmount = barcode.getLabelAmount();
// int currentLabelAmount = barcodeFromRule.getAmount();
// if(currentLabelAmount != lastLabelAmount){
// //本次解析出来的数量与上次条码解析出来的数量不一样,重新设置数量
// log.info("重新设置"+codeBeanFromRule.getCodeStr()+"数量为:"+currentLabelAmount);
// barcode.setAmount(currentLabelAmount);
// barcode.setLabelAmount(currentLabelAmount);
// needUpdate = true;
// }
//// Date produceDate = barcodeFromRule.getProduceDate();
//// if(produceDate != null){
//// //抓取到了生产日期,未抓取到过期日期,重新设置过期日期
//// if(barcode.getExpireDate() == null){
//// if(validDay > 0){
//// log.info("重新设置"+codeBeanFromRule.getCodeStr()+"生产日期和过期日期");
//// Date expireDate = DateUtil.addDays(produceDate, validDay);
//// barcode.setExpireDate(expireDate);
//// barcode.setProduceDate(produceDate);
//// needUpdate = true;
//// }
//// }
//// }
//
// if(needUpdate){
// try {
// barcodeManager.save(barcode);
// }catch (Exception e){
// log.error(e);
// }
// }
// }
//
// codeBeanFromRule.setError(null,null);
// codeBeanFromRule.setCodeStr(barcode.getBarcode());
// codeBeanFromRule.setBarcode(barcode);
// return codeBeanFromRule;
// }else if(codeBeanFromRule.isValid()){//数据库中不存在,但解析成功
// Barcode barcodeFromRule = codeBeanFromRule.getBarcode();
// try{
// //如果有料盘尺寸,重新设置料盘尺寸信息,没有档案时自动添加档案
// if(codeBeanFromRule.hasReelSizeInfo()){
// //log.info("料盘["+barcode.getBarcode()+"]的尺寸信息从["+barcode.getPlateSize()+"x"+barcode.getHeight()+"]设置为["+codeBeanFromRule.getReelWidth()+"x"+codeBeanFromRule.getReelHeight()+"]");
// Component component = componentManager.findByPartNumberAndProvider(barcodeFromRule.getPartNumber(),barcodeFromRule.getProvider());
//
// if(component == null){
// log.info("自动添加["+barcodeFromRule.getPartNumber()+"]["+barcodeFromRule.getProvider()+"]的档案信息["+codeBeanFromRule.getReelWidth()+"x"+codeBeanFromRule.getReelHeight()+"]");
// component = new Component();
// component.setPartNumber(barcodeFromRule.getPartNumber());
// component.setAmount(barcodeFromRule.getAmount());
// component.setPlateSize(barcodeFromRule.getPlateSize());
// component.setHeight(barcodeFromRule.getHeight());
// component.setName(barcodeFromRule.getPartNumber());
// component.setProvider(barcodeFromRule.getProvider());
// componentManager.save(component);
// }else{
// //如果 barcode 里的料盘信息比 Component 中的大,使用比较大的,防止放不进去撞击
// if(codeBeanFromRule.getReelHeight() > component.getHeight() || codeBeanFromRule.getReelWidth() > component.getPlateSize()){
// log.info("更新物料["+component.getPartNumber()+"]档案尺寸["+component.getPlateSize()+"x"+component.getHeight()+"]为["+codeBeanFromRule.getReelWidth()+"x"+codeBeanFromRule.getReelHeight()+"]");
// component.setPlateSize(barcodeFromRule.getPlateSize());
// component.setHeight(barcodeFromRule.getHeight());
// componentManager.save(component);
// }
// codeBeanFromRule.setShowImg(component.getShowImg());
// }
//
// }
//
// boolean needAddNew = true;
// if(isProductionFor(CUSTOMER.LIAN_DIAN)){
// //联电的唯一码中必须带有-,否则无效
// if(!barcodeFromRule.getBarcode().contains("-")){
// needAddNew = false;
// log.info("唯一码["+barcodeFromRule.getBarcode()+"]中不带符号-,忽略");
// return null;
// }
// }
// if(needAddNew){
// log.info("自动添加条码"+barcodeItemStr+"到数据库中");
// Component component = componentManager.findByPartNumberAndProvider(barcodeFromRule.getPartNumber(),barcodeFromRule.getProvider());
// if(component == null){
// log.info("档案["+barcodeFromRule.getPartNumber()+"]不存在");
// throw new ValidateException("component.error.notExist",new String[]{barcodeFromRule.getPartNumber()});
// }
//
// codeBeanFromRule.setShowImg(component.getShowImg());
// Date produceDate = barcodeFromRule.getProduceDate();
// if(produceDate != null && barcodeFromRule.getExpireDate() == null){
// int validDay = component.getValidDay();
// if( validDay > 0){
// log.info("设置"+barcodeFromRule.getBarcode()+"的过期时间");
// Date expireDate = DateUtil.addDays(produceDate, validDay);
// barcodeFromRule.setExpireDate(expireDate);
// barcodeManager.save(barcodeFromRule);
// }
// }
//
// barcode = barcodeManager.save(barcodeFromRule);
// codeBeanFromRule.setCodeStr(barcode.getBarcode());
// codeBeanFromRule.setBarcode(barcode);
// codeBeanFromRule.setError(null,null);
// }
// }catch (ValidateException ve){
// //档案不存在
// codeBeanFromRule.setError("error.barcode.pnNotExist",new String[]{barcodeFromRule.getPartNumber()},"x档案 "+barcodeFromRule.getPartNumber()+" 不存在");
// log.warn("x档案"+barcodeFromRule.getPartNumber()+"不存在");
// }
// //解析成功了,直接返回
// return codeBeanFromRule;
// }else{
// //在数据库中不存在,且未解析成功,用其他规则再解析
// codeBeanFromRule.setError("error.barcode.invalid",new String[]{barcodeItemStr}, barcodeItemStr + "不是有效的条码");
// }
// }
//
// if(codeBeanFromRule == null){
// codeBeanFromRule = new CodeBean();
// codeBeanFromRule.setBarcode(null);
// codeBeanFromRule.setError("error.barcode.invalid",new String[]{barcodeItemStr}, barcodeItemStr + "不是有效的条码");
// codeBeanFromRule.setCodeStr(barcodeItemStr);
// return codeBeanFromRule;
// }
// return codeBeanFromRule;
// }
//
// public Collection<CodeBean> resolveCodeStr(String codeStr){
// List<CodeBean> codeBeans = Lists.newArrayList();
// //Map<String, CodeBean> codeBeanMap = Maps.newHashMap();
// if(!Strings.isNullOrEmpty(codeStr)){
// //双##号分割多个二维码
// String[] barcodeItemStrs = codeStr.split("##");
//
// //需要检查partNumber 是否一致
// //Multiset<String> partNumberMultiset = HashMultiset.create();
// //含有最多的 partNumber
// //String mostPartNumber = "";
//
//
// for (String barcodeItemStr : barcodeItemStrs){
// CodeBean codeBean = resolveSingleCode(barcodeItemStr);
// if(codeBean == null){
// continue;
// }
// boolean hasSameCode = false;
// if(codeBean.isValid()){
// //过滤唯一码重复的,防止即扫到二维码也扫到一维码会有多个条码的问题
// for (CodeBean bean : codeBeans) {
// if(bean.isValid()){
// String reelId = codeBean.getBarcode().getBarcode();
// if(reelId.equals(bean.getBarcode().getBarcode())){
// hasSameCode = true;
// log.info(reelId + "与已有效条码一样,忽略");
// break;
// }
// }
// }
// }
//
// if(!hasSameCode){
// codeBeans.add(codeBean);
// }
//
// //统计非夹具的 partNubmer
//// if(codeBean.isValid() && !codeBean.isFixtureCode()){
//// String partNumber = codeBean.getBarcode().getPartNumber();
//// partNumberMultiset.add(partNumber);
//// if(partNumberMultiset.count(partNumber) > partNumberMultiset.count(mostPartNumber) ){
//// mostPartNumber = partNumber;
//// }
//// }
// }
//
//
//// for (CodeBean codeBean : codeBeans) {
//// if(codeBean.isValid() && !codeBean.isFixtureCode()){
//// //非夹具的 partNumber 不一致
//// if(!mostPartNumber.equals(codeBean.getBarcode().getPartNumber())){
//// codeBean.setError("error.barcode.wrongPn", "PartNumber不一致");
//// }
//// }
//// codeBeanMap.put(codeBean.getCodeStr(), codeBean);
//// }
// }
// //return codeBeanMap.values();
// return codeBeans;
// }
//
// /**
// * 从条码信息中解析出一个有效条码
// * @param codeStr
// * @return
// */
// public Barcode resolveOneValideBarcode(String codeStr) throws ValidateException{
// if(org.apache.logging.log4j.util.Strings.isBlank(codeStr)){
// throw new ValidateException("error.barcode.empty","未扫到条码");
// }
// Collection<CodeBean> codeBeans = resolveCodeStr(codeStr);
// Barcode barcode = null;
// String errorMsg = "";
// for (CodeBean codeBean : codeBeans) {
// if(codeBean.isValid()){
// Barcode barcodeFromRule = codeBean.getBarcode();
// if(barcode == null){
// barcode = barcodeFromRule;
// }else{
// throw new ValidateException("error.barcode.many",new String[]{codeStr},"找到多个有效的条码");
// }
// }else{
// errorMsg = codeBean.getError();
// }
// }
//
// if(barcode == null){
// throw new ValidateException("error.barcode.noValidCode",new String[]{codeBeans.size()+"",codeStr}, "无效的条码");
// }
// return barcode;
// }
//
// /**
// * 出库方式
// */
// public StorageConstants.CHECKOUT_TYPE getCheckOutType(){
// String outType = getSettings().getOutType();
// return StorageConstants.CHECKOUT_TYPE.valueOf(outType);
// }
//
// public Settings updateSettings(Settings newSetting){
// settings = settingsDao.save(newSetting);
// List<String> ruleItems = settings.getCodeRuleList();
// barcodeRuleList = Lists.newArrayList();
// for(String codeRule : ruleItems){
// if(!Strings.isNullOrEmpty(codeRule)){
// barcodeRuleList.add(BarcodeRule.newRule(codeRule));
// }
// }
// needUpdateHumidityMap = new ConcurrentHashMap<>();
// return settings;
// }
// public List<String> getCids(){
// List<String> cids = new ArrayList<>();
// for (Storage storage : getAllStorage().values()){
// cids.add(storage.getCid());
// }
// return cids;
// }
//
// public Storage defaultStorage(){
// Map<String, Storage> storages = getAllStorage();
// for (Storage storage : storages.values()){
// if(!storage.isVirtual()){
// return storage;
// }
// }
// return null;
// }
//
// public String defaultStorageCid(){
// Storage storage = defaultStorage();
// if(storage != null){
// return storage.getCid();
// }
// return "";
// }
//
// /**
// * 获取某个区域默认的虚拟仓
// */
// public Storage defaultVirtualStorage(String areaId){
// Map<String, Storage> storages = getAllStorage();
// for (Storage storage : storages.values()){
// return storage;
// }
// return null;
// }
// /**
// * 库存 map, key 为 cid,value 为料盘存量 map(key为 PartNumber,value 为 库存数量及盘数的Bean)
// */
// private static Map<String,Map<String,InventoryItem>> inventoryMap = new ConcurrentHashMap<>();
//
//
//
// /**
// * 所有的料仓 key 为 cid, value 为 Storage
// */
// private static Map<String, Storage> allStorage = new ConcurrentHashMap<>();
//
//
// /**
// * 某个区域需要进行清理呆滞物料的所有料仓(虚拟仓应该不需要清理的)
// */
// public List<String> needClearInactionStorageIds(){
// Collection<Storage> allStorage = getAllStorage().values();
// List<String> storageIds = Lists.newArrayList();
// for (Storage storage : allStorage){
// //if(storage.isLine() && storage.getAreaId().equals(areaId)){
// storageIds.add(storage.getId());
// //}
// }
// return storageIds;
// }
//
// public Map<String, Storage> getAllStorage(){
// if(allStorage.isEmpty()){
// synchronized (allStorage){
// if(allStorage.isEmpty()){
// List<Storage> all = storageManager.findAll();
// if(all != null){
// Map<String, Storage> map = new ConcurrentHashMap<>();
// for(Storage storage : all){
//
// List<PlateSizeBean> plateSizeBeanList = storagePosManager.getStoragePosUsage(storage.getId());
// storage.initUsage(plateSizeBeanList);
//
// map.put(storage.getCid(), storage);
//
//
// }
// allStorage = map;
// log.info("加载所有料仓["+all.size()+"]信息到缓存");
// }
// }
// }
// }
// return allStorage;
// }
//
//
// /**
// * 获取某区域可以放入该尺寸料盘的所有料仓名称
// */
// public List<String> getCanPutInStorages(String areaId, int w, int h){
// List<String> storageList = Lists.newArrayList();
// for(Storage storage : getAllStorage().values()){
// storageList.add(storage.getName());
// }
// return storageList;
// }
//
// /**
// * 根据 cid 获取料仓信息
// */
// public Storage getStorage(String cid){
// if(Strings.isNullOrEmpty(cid)){
// return null;
// }
// return getAllStorage().get(cid);
// }
//
// /**
// * 根据 Id 获取料仓信息
// */
// public Storage getStorageById(String storageId){
// for(Storage storage : getAllStorage().values()){
// if(storage.getId().equals(storageId)){
// return storage;
// }
// }
// return null;
// }
//
// public Storage reloadStorage(Storage storage) throws ValidateException {
// List<PlateSizeBean> plateSizeBeanList = storagePosManager.getStoragePosUsage(storage.getId());
// storage.initUsage(plateSizeBeanList);
// storage = storageManager.save(storage);
// allStorage.put(storage.getCid(), storage);
// return storage;
// }
//
//
// /**
// * 锁定库存
// * @param cid
// * @param partNumber 物料编号
// * @return 锁定结果,true 表示有足够的库存,锁定成功;false表示库存不足,锁定失败
// */
// public boolean lockOneReel(String cid, String partNumber){
// boolean result = false;
// InventoryItem inventoryItem = getStorageInventoryByPartNumber(cid, partNumber);
// if(inventoryItem != null) {
// int lockReel = inventoryItem.getLockReel();
// //理论上这里是同一个对象,不需要再显式的放入map 中
// result = inventoryItem.lockOne();
// log.info("锁定料仓["+cid+"]物料["+partNumber+"],锁定数量["+lockReel+"]=>["+inventoryItem.getLockReel()+"],当前库存:"+inventoryItem.getStockReel());
// updateStorageInventory(cid,inventoryItem);
// }
// return result;
// }
// /**
// * 解除锁定库存(出库任务完成或取消时调用)
// */
// public void unLockOneReel(String cid, String partNumber){
// InventoryItem partNumberInventory = getStorageInventoryByPartNumber(cid, partNumber);
// if(partNumberInventory != null) {
// int lockReel = partNumberInventory.getLockReel();
// //理论上这里是同一个对象,不需要再显式的放入map 中
// partNumberInventory.unLock(1);
// log.info("解除锁定料仓["+cid+"]物料["+partNumber+"],锁定数量["+lockReel+"]=>["+partNumberInventory.getLockReel()+"],当前库存:"+partNumberInventory.getStockReel());
// updateStorageInventory(cid,partNumberInventory);
// }
// }
//
// /**
// * 获取库存信息,key 为 PN
// */
// public Map<String,InventoryItem> getAllInventory(){
// Map<String, Storage> allStorages = getAllStorage();
// return getInventory(allStorages.values());
// }
//
// /**
// * 获取某些料仓的库存信息
// */
// public Map<String,InventoryItem> getInventory(Collection<Storage> storageList){
// Map<String,InventoryItem> resultMap = Maps.newHashMap();
// for (Storage storage : storageList) {
// Map<String, InventoryItem> storageInventory = getStorageInventory(storage.getCid());
// for(InventoryItem storageInventoryItem : storageInventory.values()){
// String partNumber = storageInventoryItem.getPartNumber();
// InventoryItem pnInventoryItem = resultMap.get(storageInventoryItem.getPartNumber());
// if(pnInventoryItem == null){
// pnInventoryItem = new InventoryItem();
// }
// pnInventoryItem.setPartNumber(partNumber);
// pnInventoryItem.setStockCount(pnInventoryItem.getStockCount() + storageInventoryItem.getStockCount());
// pnInventoryItem.setLockCount(pnInventoryItem.getLockCount() + storageInventoryItem.getLockCount());
// pnInventoryItem.setStockReel(pnInventoryItem.getStockReel() + storageInventoryItem.getStockReel());
// pnInventoryItem.setLockReel(pnInventoryItem.getLockReel() + storageInventoryItem.getLockReel());
// resultMap.put(partNumber,pnInventoryItem);
// }
// }
// return resultMap;
// }
//
// /**
// * 获取料仓的库存信息
// */
// public Map<String, InventoryItem> getStorageInventory(String cid){
// Map<String, InventoryItem> storageInventory = inventoryMap.get(cid);
// if(storageInventory == null){
// storageInventory = initInventory(cid);
// }
// return storageInventory;
// }
//
//
// public InventoryItem getStorageInventoryByPartNumber(String cid, String partNumber){
// Map<String, InventoryItem> storageInventory = getStorageInventory(cid);
// InventoryItem partNumberInventoryItem = storageInventory.get(partNumber);
// if(partNumberInventoryItem == null){
// partNumberInventoryItem = new InventoryItem();
// partNumberInventoryItem.setPartNumber(partNumber);
// }
// return partNumberInventoryItem;
// }
//
// private synchronized Map<String, InventoryItem> initInventory(String cid){
// Storage storage = getStorage(cid);
// Map<String, InventoryItem> storageInventoryMap = storagePosManager.getInventory(storage.getId());
// //未完成的 Task 也需要锁定
// List<InventoryItem> feederLockInventories = dataLogDao.getStorageLockCount(storage.getId());
//
// for (InventoryItem feederInventoryItem : feederLockInventories){
// String partNumber = feederInventoryItem.getPartNumber();
// if(!Strings.isNullOrEmpty(partNumber)){
// InventoryItem inventoryItem = storageInventoryMap.get(partNumber);
// if(inventoryItem != null){
// int lockReel = inventoryItem.getLockReel() + feederInventoryItem.getLockReel();
// inventoryItem.setLockReel(lockReel);
// storageInventoryMap.put(partNumber, inventoryItem);
// }
// }
// }
//
// log.info("初始化料仓["+cid+"]的库存信息["+storageInventoryMap.size()+"]条");
// inventoryMap.put(cid, storageInventoryMap);
// return storageInventoryMap;
// }
//
// /**
// * 手动修改数量的时候更新库存
// * @param cid
// * @param partNumber
// * @param amount
// * @return
// */
// public int updateInventoryAmount(String cid,String partNumber,int amount){
// if(amount != 0){
// InventoryItem inventoryItem = getStorageInventoryByPartNumber(cid,partNumber);
// if(inventoryItem == null){
// inventoryItem = new InventoryItem();
// inventoryItem.setPartNumber(partNumber);
// }
// inventoryItem.updateInventory(amount);
// updateStorageInventory(cid, inventoryItem);
// return inventoryItem.getStockReel();
// }
// return -1;
// }
//
// /**
// * 修改库存,出库为负,入库为正
// */
// public int updateInventory(StoragePos pos, Barcode barcode){
// Storage storage = getStorageById(pos.getStorageId());
//
// String cid = storage.getCid();
// String partNumber = barcode.getPartNumber();
// int amount = 0;
// String sizeStr = pos.getSizeStr();
// if(pos.getBarcode() == null){
// //出库
// amount = - barcode.getAmount();
// storage.emptyOnePos(pos);
// }else{
// //入库
// amount = barcode.getAmount();
// storage.useOnePos(pos);
// }
// allStorage.put(cid, storage);
// return updateInventoryAmount(cid,partNumber,amount);
// }
//
// private void updateStorageInventory(String cid, InventoryItem inventoryItem){
// Map<String, InventoryItem> storageInventory = inventoryMap.get(cid);
// storageInventory.put(inventoryItem.getPartNumber(), inventoryItem);
// inventoryMap.put(cid, storageInventory);
// }
//
// public Map<String,String> allBoxNameMap(){
// Map<String, String> allBoxMap = Maps.newHashMap();
// for (Storage storage : getAllStorage().values()){
// if(storage.getBoxCount() > 1){
// for (int i=1;i<=storage.getBoxCount();i++){
// allBoxMap.put(storage.getCid()+"-"+i, storage.getName() + " BOX-" + i);
// }
// }else{
// allBoxMap.put(storage.getCid()+"-i", storage.getName());
// }
// }
// return allBoxMap;
// }
}
src/main/java/com/neotel/smfcore/core/listener/ApiListener.java
查看文件 @
3d54563
...
...
@@ -6,7 +6,7 @@ import org.springframework.stereotype.Service;
* Created by sunke on 2021/7/12.
*/
@Service
public
class
ApiListener
implements
I
Device
Listener
{
public
class
ApiListener
implements
I
Task
Listener
{
@Override
public
String
onScanCode
(
String
codeStr
)
{
...
...
src/main/java/com/neotel/smfcore/core/listener/I
Device
Listener.java
→
src/main/java/com/neotel/smfcore/core/listener/I
Task
Listener.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
core
.
listener
;
import
com.neotel.smfcore.core.service.po.DataLog
;
/**
* Created by sunke on 2021/7/12.
*/
public
interface
I
Device
Listener
{
public
interface
I
Task
Listener
{
String
on
ScanCode
(
String
codeStr
);
String
on
TaskStatusChange
(
DataLog
task
);
}
src/main/java/com/neotel/smfcore/core/listener/LiteOrderListener.java
查看文件 @
3d54563
...
...
@@ -6,7 +6,7 @@ import org.springframework.stereotype.Service;
* Created by sunke on 2021/7/12.
*/
@Service
public
class
LiteOrderListener
implements
I
Device
Listener
{
public
class
LiteOrderListener
implements
I
Task
Listener
{
@Override
public
String
onScanCode
(
String
codeStr
)
{
...
...
src/main/java/com/neotel/smfcore/core/rest/TaskService.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
core
.
rest
;
import
com.neotel.smfcore.core.device.IDeviceHandler
;
import
com.neotel.smfcore.core.listener.IDeviceListener
;
import
com.google.common.collect.Maps
;
import
com.neotel.smfcore.core.listener.ITaskListener
;
import
com.neotel.smfcore.core.service.po.DataLog
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* Created by sunke on 2021/7/13.
*/
@Service
public
class
TaskService
{
private
List
<
I
DeviceListener
>
l
istenerList
=
new
ArrayList
<>();
private
List
<
I
TaskListener
>
taskL
istenerList
=
new
ArrayList
<>();
private
Map
<
String
,
IDeviceHandler
>
handlerMap
=
new
HashMap
<>();
public
TaskService
(
List
<
IDeviceHandler
>
deviceHandlerList
,
List
<
IDeviceListener
>
deviceListenerList
){
/**
* 任务队列,Key 为dataLog的ID,value 为本区域待执行的任务
*/
private
static
Map
<
String
,
DataLog
>
taskMap
=
Maps
.
newConcurrentMap
();
for
(
IDeviceHandler
deviceHandler
:
deviceHandlerList
)
{
/**
* 完成的任务列表Key 为dataLog的ID, Value 为 Datalog
*/
private
static
Map
<
String
,
DataLog
>
theFinishedTaskMap
=
Maps
.
newConcurrentMap
();
}
for
(
I
Device
Listener
deviceListener:
deviceListenerList
)
{
l
istenerList
.
add
(
deviceListener
);
public
TaskService
(
List
<
ITaskListener
>
deviceListenerList
){
for
(
I
Task
Listener
deviceListener:
deviceListenerList
)
{
taskL
istenerList
.
add
(
deviceListener
);
}
}
}
src/main/java/com/neotel/smfcore/
security
/service/dao/IAlarmInfoDao.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/IAlarmInfoDao.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
;
import
com.neotel.smfcore.common.base.IBaseDao
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/IDataLogDao.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/IDataLogDao.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
;
import
com.neotel.smfcore.common.base.IBaseDao
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/IHumitureDao.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/IHumitureDao.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
;
import
com.neotel.smfcore.common.base.IBaseDao
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/ILiteOrderDao.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/ILiteOrderDao.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
;
import
com.neotel.smfcore.common.base.IBaseDao
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/ILiteOrderItemDao.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/ILiteOrderItemDao.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
;
import
com.neotel.smfcore.common.base.IBaseDao
;
import
com.neotel.smfcore.
security
.service.po.LiteOrderItem
;
import
com.neotel.smfcore.
core
.service.po.LiteOrderItem
;
import
java.util.List
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/IMaintenanceDao.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/IMaintenanceDao.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
;
import
com.neotel.smfcore.common.base.IBaseDao
;
import
com.neotel.smfcore.
security
.service.po.Maintenance
;
import
com.neotel.smfcore.
core
.service.po.Maintenance
;
public
interface
IMaintenanceDao
extends
IBaseDao
{
Maintenance
findByCid
(
String
cid
);
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/ISettingsDao.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/ISettingsDao.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
;
import
com.neotel.smfcore.common.base.IBaseDao
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/IStorageDao.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/IStorageDao.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
;
import
com.neotel.smfcore.common.base.IBaseDao
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/IStoragePosDao.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/IStoragePosDao.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
;
import
com.neotel.smfcore.common.base.IBaseDao
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/impl/AlarmInfoDaoImpl.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/impl/AlarmInfoDaoImpl.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
.
impl
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
.
impl
;
import
com.neotel.smfcore.common.base.AbstractBaseDao
;
import
com.neotel.smfcore.
security
.service.dao.IAlarmInfoDao
;
import
com.neotel.smfcore.
security
.service.po.AlarmInfo
;
import
com.neotel.smfcore.
core
.service.dao.IAlarmInfoDao
;
import
com.neotel.smfcore.
core
.service.po.AlarmInfo
;
public
class
AlarmInfoDaoImpl
extends
AbstractBaseDao
implements
IAlarmInfoDao
{
@Override
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/impl/DataLogDaoImpl.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/impl/DataLogDaoImpl.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
.
impl
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
.
impl
;
import
com.neotel.smfcore.common.base.AbstractBaseDao
;
import
com.neotel.smfcore.security.service.dao.IDataLogDao
;
import
com.neotel.smfcore.security.service.po.DataLog
;
import
com.neotel.smfcore.core.service.dao.IDataLogDao
;
import
com.neotel.smfcore.core.service.po.DataLog
;
import
org.springframework.stereotype.Service
;
@Service
public
class
DataLogDaoImpl
extends
AbstractBaseDao
implements
IDataLogDao
{
@Override
public
Class
getEntityClass
()
{
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/impl/HumitureDaoImpl.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/impl/HumitureDaoImpl.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
.
impl
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
.
impl
;
import
com.neotel.smfcore.common.base.AbstractBaseDao
;
import
com.neotel.smfcore.
security
.service.dao.IHumitureDao
;
import
com.neotel.smfcore.
security
.service.po.Humiture
;
import
com.neotel.smfcore.
core
.service.dao.IHumitureDao
;
import
com.neotel.smfcore.
core
.service.po.Humiture
;
public
class
HumitureDaoImpl
extends
AbstractBaseDao
implements
IHumitureDao
{
@Override
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/impl/LiteOrderDaoImpl.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/impl/LiteOrderDaoImpl.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
.
impl
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
.
impl
;
import
com.neotel.smfcore.common.base.AbstractBaseDao
;
import
com.neotel.smfcore.
security
.service.dao.ILiteOrderDao
;
import
com.neotel.smfcore.
security
.service.po.LiteOrder
;
import
com.neotel.smfcore.
core
.service.dao.ILiteOrderDao
;
import
com.neotel.smfcore.
core
.service.po.LiteOrder
;
public
class
LiteOrderDaoImpl
extends
AbstractBaseDao
implements
ILiteOrderDao
{
@Override
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/impl/LiteOrderItemDaoImpl.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/impl/LiteOrderItemDaoImpl.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
.
impl
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
.
impl
;
import
com.neotel.smfcore.common.base.AbstractBaseDao
;
import
com.neotel.smfcore.
security
.service.dao.ILiteOrderItemDao
;
import
com.neotel.smfcore.
security
.service.po.LiteOrderItem
;
import
com.neotel.smfcore.
core
.service.dao.ILiteOrderItemDao
;
import
com.neotel.smfcore.
core
.service.po.LiteOrderItem
;
import
java.util.List
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/impl/MaintenanceDaoImpl.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/impl/MaintenanceDaoImpl.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
.
impl
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
.
impl
;
import
com.neotel.smfcore.common.base.AbstractBaseDao
;
import
com.neotel.smfcore.
security
.service.dao.IMaintenanceDao
;
import
com.neotel.smfcore.
security
.service.po.Maintenance
;
import
com.neotel.smfcore.
core
.service.dao.IMaintenanceDao
;
import
com.neotel.smfcore.
core
.service.po.Maintenance
;
import
org.springframework.stereotype.Service
;
@Service
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/impl/SettingsDaoImpl.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/impl/SettingsDaoImpl.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
.
impl
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
.
impl
;
import
com.neotel.smfcore.common.base.AbstractBaseDao
;
import
com.neotel.smfcore.
security
.service.dao.ISettingsDao
;
import
com.neotel.smfcore.
security
.service.po.Settings
;
import
com.neotel.smfcore.
core
.service.dao.ISettingsDao
;
import
com.neotel.smfcore.
core
.service.po.Settings
;
import
org.springframework.stereotype.Service
;
@Service
...
...
src/main/java/com/neotel/smfcore/
security
/service/dao/impl/StorageDaoImpl.java
→
src/main/java/com/neotel/smfcore/
core
/service/dao/impl/StorageDaoImpl.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
dao
.
impl
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
dao
.
impl
;
import
com.neotel.smfcore.common.base.AbstractBaseDao
;
import
com.neotel.smfcore.security.service.dao.IStorageDao
;
import
com.neotel.smfcore.security.service.po.Storage
;
import
com.neotel.smfcore.core.service.dao.IStorageDao
;
import
com.neotel.smfcore.core.service.po.Storage
;
import
org.springframework.stereotype.Service
;
@Service
public
class
StorageDaoImpl
extends
AbstractBaseDao
implements
IStorageDao
{
@Override
public
Class
getEntityClass
()
{
...
...
src/main/java/com/neotel/smfcore/
security/service/po
/data/DeviceStatusBean.java
→
src/main/java/com/neotel/smfcore/
core/service
/data/DeviceStatusBean.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
.
data
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
data
;
import
lombok.Data
;
...
...
src/main/java/com/neotel/smfcore/
security/service/po
/data/InactionTaskSet.java
→
src/main/java/com/neotel/smfcore/
core/service
/data/InactionTaskSet.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
.
data
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
data
;
import
com.neotel.smfcore.common.utils.StorageConstants
;
import
lombok.Data
;
...
...
src/main/java/com/neotel/smfcore/
security/service/po
/data/PlateSizeBean.java
→
src/main/java/com/neotel/smfcore/
core/service
/data/PlateSizeBean.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
.
data
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
data
;
import
com.neotel.smfcore.common.utils.PLATE_SIZE
;
import
lombok.Getter
;
...
...
src/main/java/com/neotel/smfcore/
security/service/po
/data/PreWareHousing.java
→
src/main/java/com/neotel/smfcore/
core/service
/data/PreWareHousing.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
.
data
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
data
;
import
com.neotel.smfcore.common.base.BasePo
;
import
lombok.Data
;
...
...
src/main/java/com/neotel/smfcore/
security/service/po
/data/ProviderPattern.java
→
src/main/java/com/neotel/smfcore/
core/service
/data/ProviderPattern.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
.
data
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
data
;
import
com.neotel.smfcore.common.base.BasePo
;
import
lombok.Data
;
...
...
src/main/java/com/neotel/smfcore/
security/service/po
/data/TaskSet.java
→
src/main/java/com/neotel/smfcore/
core/service
/data/TaskSet.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
.
data
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
data
;
import
com.neotel.smfcore.common.base.BasePo
;
import
com.neotel.smfcore.common.utils.StorageConstants
;
...
...
src/main/java/com/neotel/smfcore/
security/service/po
/data/UsageItem.java
→
src/main/java/com/neotel/smfcore/
core/service
/data/UsageItem.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
.
data
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
data
;
import
lombok.Data
;
...
...
src/main/java/com/neotel/smfcore/core/service/manager/IDataLogManager.java
0 → 100644
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
core
.
service
.
manager
;
import
com.neotel.smfcore.common.base.IBaseManager
;
import
com.neotel.smfcore.core.service.po.DataLog
;
public
interface
IDataLogManager
extends
IBaseManager
<
DataLog
>
{
}
src/main/java/com/neotel/smfcore/
security
/service/manager/IHumitureManager.java
→
src/main/java/com/neotel/smfcore/
core
/service/manager/IHumitureManager.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
manager
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
manager
;
import
com.neotel.smfcore.common.base.IBaseManager
;
import
com.neotel.smfcore.
security
.service.po.Humiture
;
import
com.neotel.smfcore.
core
.service.po.Humiture
;
public
interface
IHumitureManager
extends
IBaseManager
<
Humiture
>
{
}
src/main/java/com/neotel/smfcore/
security
/service/manager/IStorageManager.java
→
src/main/java/com/neotel/smfcore/
core
/service/manager/IStorageManager.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
manager
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
manager
;
import
com.neotel.smfcore.common.base.IBaseManager
;
import
com.neotel.smfcore.security.service.po.Storage
;
import
com.neotel.smfcore.core.service.po.Storage
;
import
java.util.List
;
public
interface
IStorageManager
extends
IBaseManager
<
Storage
>
{
List
<
Storage
>
findAll
();
}
src/main/java/com/neotel/smfcore/
security
/service/manager/IStoragePosManager.java
→
src/main/java/com/neotel/smfcore/
core
/service/manager/IStoragePosManager.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
manager
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
manager
;
import
com.neotel.smfcore.common.base.IBaseManager
;
import
com.neotel.smfcore.
security
.service.po.StoragePos
;
import
com.neotel.smfcore.
core
.service.po.StoragePos
;
public
interface
IStoragePosManager
extends
IBaseManager
<
StoragePos
>
{
}
src/main/java/com/neotel/smfcore/
security/service/manager/impl/Storage
ManagerImpl.java
→
src/main/java/com/neotel/smfcore/
core/service/manager/impl/DataLog
ManagerImpl.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
manager
.
impl
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
manager
.
impl
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.
security.service.manager.IStorage
Manager
;
import
com.neotel.smfcore.
security.service.po.Storage
;
import
com.neotel.smfcore.
core.service.manager.IDataLog
Manager
;
import
com.neotel.smfcore.
core.service.po.DataLog
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
public
class
StorageManagerImpl
implements
IStorageManager
{
@Service
public
class
DataLogManagerImpl
implements
IDataLogManager
{
@Override
public
Storage
get
(
String
id
)
{
public
DataLog
get
(
String
id
)
{
return
null
;
}
@Override
public
Storage
save
(
Storage
object
)
throws
ValidateException
{
public
DataLog
save
(
DataLog
object
)
throws
ValidateException
{
return
null
;
}
@Override
public
void
delete
(
Storage
object
)
throws
ValidateException
{
public
void
delete
(
DataLog
object
)
throws
ValidateException
{
}
@Override
public
List
<
Storage
>
findByPage
(
Query
query
,
Pageable
pageable
)
{
public
List
<
DataLog
>
findByPage
(
Query
query
,
Pageable
pageable
)
{
return
null
;
}
@Override
public
List
<
Storage
>
findByQuery
(
Query
query
)
{
public
List
<
DataLog
>
findByQuery
(
Query
query
)
{
return
null
;
}
}
src/main/java/com/neotel/smfcore/
security
/service/manager/impl/HumitureManagerImpl.java
→
src/main/java/com/neotel/smfcore/
core
/service/manager/impl/HumitureManagerImpl.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
manager
.
impl
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
manager
.
impl
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.
security
.service.manager.IHumitureManager
;
import
com.neotel.smfcore.
security
.service.po.Humiture
;
import
com.neotel.smfcore.
core
.service.manager.IHumitureManager
;
import
com.neotel.smfcore.
core
.service.po.Humiture
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Query
;
...
...
src/main/java/com/neotel/smfcore/core/service/manager/impl/StorageManagerImpl.java
0 → 100644
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
core
.
service
.
manager
.
impl
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.core.service.dao.IStorageDao
;
import
com.neotel.smfcore.core.service.manager.IStorageManager
;
import
com.neotel.smfcore.core.service.po.Storage
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
@Service
public
class
StorageManagerImpl
implements
IStorageManager
{
@Autowired
private
IStorageDao
storageDao
;
@Override
public
Storage
get
(
String
id
)
{
return
storageDao
.
findOneById
(
id
);
}
@Override
public
Storage
save
(
Storage
object
)
throws
ValidateException
{
return
storageDao
.
save
(
object
);
}
@Override
public
void
delete
(
Storage
object
)
throws
ValidateException
{
}
@Override
public
List
<
Storage
>
findByPage
(
Query
query
,
Pageable
pageable
)
{
return
storageDao
.
findByQuery
(
query
,
pageable
);
}
@Override
public
List
<
Storage
>
findByQuery
(
Query
query
)
{
return
storageDao
.
findByQuery
(
query
);
}
@Override
public
List
<
Storage
>
findAll
(){
return
storageDao
.
findAll
();
}
}
src/main/java/com/neotel/smfcore/
security
/service/manager/impl/StoragePosManagerImpl.java
→
src/main/java/com/neotel/smfcore/
core
/service/manager/impl/StoragePosManagerImpl.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
manager
.
impl
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
manager
.
impl
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.
security
.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.
security
.service.po.StoragePos
;
import
com.neotel.smfcore.
core
.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.
core
.service.po.StoragePos
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Query
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/po/AlarmInfo.java
→
src/main/java/com/neotel/smfcore/
core
/service/po/AlarmInfo.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
po
;
import
com.neotel.smfcore.common.base.BasePo
;
import
com.neotel.smfcore.common.utils.StorageConstants
;
import
lombok.Data
;
import
org.springframework.data.mongodb.core.mapping.Document
;
...
...
@@ -46,4 +47,12 @@ public class AlarmInfo extends BasePo implements Serializable {
* 结束时间
*/
private
Date
endTime
;
public
String
getAlarmTypeMsg
(){
return
StorageConstants
.
ALARM_TYPE_MSG
.
getMsg
(
alarmType
,
alarmDetail
);
}
public
String
getKey
(){
return
storageName
+
"-"
+
boxId
+
"-"
+
alarmType
+
"-"
+
alarmDetail
;
}
}
src/main/java/com/neotel/smfcore/
security
/service/po/DataLog.java
→
src/main/java/com/neotel/smfcore/
core
/service/po/DataLog.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
po
;
import
com.google.common.base.Strings
;
import
com.google.common.collect.Lists
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/po/Humiture.java
→
src/main/java/com/neotel/smfcore/
core
/service/po/Humiture.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
po
;
import
com.neotel.smfcore.common.base.BasePo
;
import
lombok.Data
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/po/LiteOrder.java
→
src/main/java/com/neotel/smfcore/
core
/service/po/LiteOrder.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
po
;
import
com.neotel.smfcore.common.base.BasePo
;
import
com.neotel.smfcore.common.utils.StorageConstants
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/po/LiteOrderItem.java
→
src/main/java/com/neotel/smfcore/
core
/service/po/LiteOrderItem.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
po
;
import
com.neotel.smfcore.common.base.BasePo
;
import
lombok.Data
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/po/Maintenance.java
→
src/main/java/com/neotel/smfcore/
core
/service/po/Maintenance.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
po
;
import
com.google.common.collect.Maps
;
import
com.neotel.smfcore.common.base.BasePo
;
import
com.neotel.smfcore.common.utils.DateUtil
;
import
com.neotel.smfcore.
security.service.po
.data.DeviceStatusBean
;
import
com.neotel.smfcore.
core.service
.data.DeviceStatusBean
;
import
lombok.Data
;
import
org.springframework.data.mongodb.core.mapping.Document
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/po/Settings.java
→
src/main/java/com/neotel/smfcore/
core
/service/po/Settings.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
po
;
import
com.google.common.collect.Lists
;
import
com.neotel.smfcore.common.base.BasePo
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/po/Storage.java
→
src/main/java/com/neotel/smfcore/
core
/service/po/Storage.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
po
;
import
com.neotel.smfcore.common.base.BasePo
;
import
com.neotel.smfcore.common.utils.StorageConstants
;
import
com.neotel.smfcore.
security.service.po
.data.PlateSizeBean
;
import
com.neotel.smfcore.
security.service.po
.data.UsageItem
;
import
com.neotel.smfcore.
core.service
.data.PlateSizeBean
;
import
com.neotel.smfcore.
core.service
.data.UsageItem
;
import
com.sun.istack.internal.NotNull
;
import
lombok.Data
;
import
org.springframework.data.mongodb.core.mapping.Document
;
...
...
src/main/java/com/neotel/smfcore/
security
/service/po/StoragePos.java
→
src/main/java/com/neotel/smfcore/
core
/service/po/StoragePos.java
查看文件 @
3d54563
package
com
.
neotel
.
smfcore
.
security
.
service
.
po
;
package
com
.
neotel
.
smfcore
.
core
.
service
.
po
;
import
com.google.common.base.Strings
;
import
com.neotel.smfcore.common.base.BasePo
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.List
;
...
...
src/main/java/com/neotel/smfcore/
common/annotation/security
/AnonymousAccess.java
→
src/main/java/com/neotel/smfcore/
security/annotation
/AnonymousAccess.java
查看文件 @
3d54563
...
...
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
neotel
.
smfcore
.
common
.
annotation
.
security
;
package
com
.
neotel
.
smfcore
.
security
.
annotation
;
import
java.lang.annotation.*
;
...
...
src/main/java/com/neotel/smfcore/
common/annotation/security
/AnonymousDeleteMapping.java
→
src/main/java/com/neotel/smfcore/
security/annotation
/AnonymousDeleteMapping.java
查看文件 @
3d54563
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package
com
.
neotel
.
smfcore
.
common
.
annotation
.
security
;
package
com
.
neotel
.
smfcore
.
security
.
annotation
;
import
org.springframework.core.annotation.AliasFor
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
src/main/java/com/neotel/smfcore/
common/annotation/security
/AnonymousGetMapping.java
→
src/main/java/com/neotel/smfcore/
security/annotation
/AnonymousGetMapping.java
查看文件 @
3d54563
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package
com
.
neotel
.
smfcore
.
common
.
annotation
.
security
;
package
com
.
neotel
.
smfcore
.
security
.
annotation
;
import
org.springframework.core.annotation.AliasFor
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
src/main/java/com/neotel/smfcore/
common/annotation/security
/AnonymousPatchMapping.java
→
src/main/java/com/neotel/smfcore/
security/annotation
/AnonymousPatchMapping.java
查看文件 @
3d54563
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package
com
.
neotel
.
smfcore
.
common
.
annotation
.
security
;
package
com
.
neotel
.
smfcore
.
security
.
annotation
;
import
org.springframework.core.annotation.AliasFor
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
src/main/java/com/neotel/smfcore/
common/annotation/security
/AnonymousPostMapping.java
→
src/main/java/com/neotel/smfcore/
security/annotation
/AnonymousPostMapping.java
查看文件 @
3d54563
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package
com
.
neotel
.
smfcore
.
common
.
annotation
.
security
;
package
com
.
neotel
.
smfcore
.
security
.
annotation
;
import
org.springframework.core.annotation.AliasFor
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
src/main/java/com/neotel/smfcore/
common/annotation/security
/AnonymousPutMapping.java
→
src/main/java/com/neotel/smfcore/
security/annotation
/AnonymousPutMapping.java
查看文件 @
3d54563
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package
com
.
neotel
.
smfcore
.
common
.
annotation
.
security
;
package
com
.
neotel
.
smfcore
.
security
.
annotation
;
import
org.springframework.core.annotation.AliasFor
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
src/main/java/com/neotel/smfcore/security/config/SpringSecurityConfig.java
查看文件 @
3d54563
...
...
@@ -15,7 +15,7 @@
*/
package
com
.
neotel
.
smfcore
.
security
.
config
;
import
com.neotel.smfcore.
common.annotation.security
.AnonymousAccess
;
import
com.neotel.smfcore.
security.annotation
.AnonymousAccess
;
import
com.neotel.smfcore.common.enums.RequestMethodEnum
;
import
com.neotel.smfcore.security.JwtAccessDeniedHandler
;
import
com.neotel.smfcore.security.JwtAuthenticationEntryPoint
;
...
...
src/main/java/com/neotel/smfcore/security/rest/AuthorizationController.java
查看文件 @
3d54563
...
...
@@ -15,9 +15,9 @@
*/
package
com
.
neotel
.
smfcore
.
security
.
rest
;
import
com.neotel.smfcore.
common.annotation.security
.AnonymousDeleteMapping
;
import
com.neotel.smfcore.
common.annotation.security
.AnonymousGetMapping
;
import
com.neotel.smfcore.
common.annotation.security
.AnonymousPostMapping
;
import
com.neotel.smfcore.
security.annotation
.AnonymousDeleteMapping
;
import
com.neotel.smfcore.
security.annotation
.AnonymousGetMapping
;
import
com.neotel.smfcore.
security.annotation
.AnonymousPostMapping
;
import
com.neotel.smfcore.common.utils.EncryptUtils
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.security.bean.RsaProperties
;
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论