Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit f13d7263
由
sunke
编写于
2022-09-07 09:15:48 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1 数据库连接池配置
2 优化挑料速度
1 个父辈
211a0cdc
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
20 个修改的文件
包含
275 行增加
和
124 行删除
src/main/java/com/neotel/smfcore/common/base/AbstractBaseDao.java
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
src/main/java/com/neotel/smfcore/common/utils/DateUtil.java
src/main/java/com/neotel/smfcore/core/barcode/service/manager/IComponentManager.java
src/main/java/com/neotel/smfcore/core/barcode/service/manager/impl/ComponentManagerImpl.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLPShelfHandler.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/rest/OrderShortageController.java
src/main/java/com/neotel/smfcore/core/outList/util/OutListCache.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/IStoragePosManager.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
src/main/java/com/neotel/smfcore/hella/handler/HellaApiHandler.java
src/main/java/com/neotel/smfcore/hella/handler/HellaServiceHandler.java
src/main/java/com/neotel/smfcore/hella/tcp/HellaTcpClient.java
src/main/java/com/neotel/smfcore/hikvision/HikApi.java
src/main/java/com/neotel/smfcore/hikvision/HikvisionApiController.java
src/main/java/com/neotel/smfcore/security/config/CustomMongoProperties.java
src/main/java/com/neotel/smfcore/security/config/MongoDbConfig.java
src/main/resources/config/application.yml
src/main/resources/log4j2-spring.xml
src/main/java/com/neotel/smfcore/common/base/AbstractBaseDao.java
查看文件 @
f13d726
...
@@ -4,6 +4,7 @@ import com.mongodb.client.result.DeleteResult;
...
@@ -4,6 +4,7 @@ import com.mongodb.client.result.DeleteResult;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Pageable
;
...
@@ -23,6 +24,7 @@ import java.util.regex.Pattern;
...
@@ -23,6 +24,7 @@ import java.util.regex.Pattern;
*/
*/
public
abstract
class
AbstractBaseDao
implements
IBaseDao
{
public
abstract
class
AbstractBaseDao
implements
IBaseDao
{
@Autowired
@Autowired
@Qualifier
(
"mongoTemplate"
)
private
MongoTemplate
mongoTemplate
;
private
MongoTemplate
mongoTemplate
;
private
final
static
int
DEFAULT_PAGE_SIZE
=
10
;
private
final
static
int
DEFAULT_PAGE_SIZE
=
10
;
protected
final
transient
Logger
log
=
LogManager
.
getLogger
(
getClass
());
protected
final
transient
Logger
log
=
LogManager
.
getLogger
(
getClass
());
...
...
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
查看文件 @
f13d726
...
@@ -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
[]{
"mslOut"
};
private
String
[]
menuShowList
=
new
String
[]{
/*"commonIn","returnIn","cutIn"*/
};
//@Value("${menu.hide}")
//@Value("${menu.hide}")
private
String
[]
menuHideList
=
new
String
[]{};
private
String
[]
menuHideList
=
new
String
[]{};
...
@@ -125,8 +125,6 @@ public class DataInitManager {
...
@@ -125,8 +125,6 @@ public class DataInitManager {
private
Map
<
String
,
Menu
>
getAllMenuMap
()
{
private
Map
<
String
,
Menu
>
getAllMenuMap
()
{
List
<
Menu
>
menus
=
new
ArrayList
<
Menu
>();
Map
<
String
,
Menu
>
functionMenuMap
=
new
HashMap
<>();
Map
<
String
,
Menu
>
functionMenuMap
=
new
HashMap
<>();
//物料管理:工单出库,查找出库(UID出库,PN出库),物料标签,料盒操作,出库策略,工单设置
//物料管理:工单出库,查找出库(UID出库,PN出库),物料标签,料盒操作,出库策略,工单设置
...
@@ -135,22 +133,27 @@ public class DataInitManager {
...
@@ -135,22 +133,27 @@ public class DataInitManager {
Menu
out
=
Menu
.
CreatePMenu
(
"查找出库"
,
20
,
"searchOut"
,
2
,
"findOut"
,
poutOut
);
Menu
out
=
Menu
.
CreatePMenu
(
"查找出库"
,
20
,
"searchOut"
,
2
,
"findOut"
,
poutOut
);
addNewFunctionMenu
(
out
,
new
ArrayList
<
Menu
>(),
1
,
"checkOut"
,
"UID出库"
,
1
,
"singleOuput"
,
"neolight/singleOuput/index"
,
""
,
0
,
"export1"
,
functionMenuMap
);
addNewFunctionMenu
(
out
,
new
ArrayList
<
Menu
>(),
1
,
"checkOut"
,
"UID出库"
,
1
,
"singleOuput"
,
"neolight/singleOuput/index"
,
""
,
0
,
"export1"
,
functionMenuMap
);
addNewFunctionMenu
(
out
,
new
ArrayList
<
Menu
>(),
1
,
"tacticsOuput"
,
"PN出库"
,
1
,
"tacticsOuput"
,
"neolight/tacticsOuput/index"
,
""
,
0
,
"tacticsOuput"
,
functionMenuMap
);
addNewFunctionMenu
(
out
,
new
ArrayList
<
Menu
>(),
1
,
"tacticsOuput"
,
"PN出库"
,
1
,
"tacticsOuput"
,
"neolight/tacticsOuput/index"
,
""
,
0
,
"tacticsOuput"
,
functionMenuMap
);
addNewFunctionMenu
(
out
,
new
ArrayList
<
Menu
>(),
1
,
"mslOut"
,
"湿敏管理"
,
1
,
"mslOut"
,
"neolight/mslOut/index"
,
""
,
0
,
"tacticsOuput"
,
functionMenuMap
);
addNewFunctionMenu
(
poutOut
,
new
ArrayList
<
Menu
>(),
1
,
"mslOut"
,
"湿敏管理"
,
1
,
"mslOut"
,
"neolight/mslOut/index"
,
""
,
0
,
"tacticsOuput"
,
functionMenuMap
);
addNewFunctionMenu
(
poutOut
,
new
ArrayList
<
Menu
>(),
1
,
"posOutput"
,
"库位出库"
,
1
,
"posOutput"
,
"system/posOutput/index"
,
""
,
0
,
"swagger"
,
functionMenuMap
);
addNewFunctionMenu
(
out
,
new
ArrayList
<
Menu
>(),
1
,
"posOutput"
,
"库位出库"
,
1
,
"posOutput"
,
"system/posOutput/index"
,
""
,
0
,
"swagger"
,
functionMenuMap
);
addNewFunctionMenu
(
poutOut
,
new
ArrayList
<
Menu
>(),
1
,
"labelOuput"
,
"物料标签"
,
1
,
"labelOuput"
,
"neolight/labelOuput/index"
,
""
,
0
,
"mgroup"
,
functionMenuMap
);
addNewFunctionMenu
(
poutOut
,
new
ArrayList
<
Menu
>(),
1
,
"materialBox"
,
"料盒操作"
,
1
,
"materialBox"
,
"neolight/materialBox/index"
,
""
,
0
,
"mIbox"
,
functionMenuMap
);
addNewFunctionMenu
(
poutOut
,
new
ArrayList
<
Menu
>(),
1
,
"outSetting"
,
"出库策略"
,
1
,
"outSetting"
,
"system/outSetting/index"
,
""
,
0
,
"outSet"
,
functionMenuMap
);
addNewFunctionMenu
(
poutOut
,
new
ArrayList
<
Menu
>(),
1
,
"inList"
,
"入库单"
,
1
,
"inList"
,
"system/inList/index"
,
""
,
0
,
"headIcon"
,
functionMenuMap
);
addNewFunctionMenu
(
out
,
new
ArrayList
<
Menu
>(),
1
,
"labelOuput"
,
"物料标签"
,
1
,
"labelOuput"
,
"neolight/labelOuput/index"
,
""
,
0
,
"mgroup"
,
functionMenuMap
);
addNewFunctionMenu
(
poutOut
,
new
ArrayList
<
Menu
>(),
1
,
"dumpWarehousing"
,
"转储入库"
,
1
,
"dumpWarehousing"
,
"system/dumpWarehousing/index"
,
""
,
0
,
"dumpWarehousing"
,
functionMenuMap
);
addNewFunctionMenu
(
out
,
new
ArrayList
<
Menu
>(),
1
,
"materialBox"
,
"料盒操作"
,
1
,
"materialBox"
,
"neolight/materialBox/index"
,
""
,
0
,
"mIbox"
,
functionMenuMap
);
addNewFunctionMenu
(
poutOut
,
new
ArrayList
<
Menu
>(),
1
,
"singleDiskWarehousing"
,
"单盘入库"
,
1
,
"singleDiskWarehousing"
,
"system/singleDiskWarehousing/index"
,
""
,
0
,
"singleDiskWarehousing"
,
functionMenuMap
);
addNewFunctionMenu
(
out
,
new
ArrayList
<
Menu
>(),
1
,
"outSetting"
,
"出库策略"
,
1
,
"outSetting"
,
"system/outSetting/index"
,
""
,
0
,
"outSet"
,
functionMenuMap
);
addNewFunctionMenu
(
out
,
new
ArrayList
<
Menu
>(),
1
,
"inList"
,
"入库单"
,
1
,
"inList"
,
"system/inList/index"
,
""
,
0
,
"headIcon"
,
functionMenuMap
);
addNewFunctionMenu
(
out
,
new
ArrayList
<
Menu
>(),
1
,
"dumpWarehousing"
,
"转储入库"
,
1
,
"dumpWarehousing"
,
"system/dumpWarehousing/index"
,
""
,
0
,
"dumpWarehousing"
,
functionMenuMap
);
addNewFunctionMenu
(
poutOut
,
new
ArrayList
<
Menu
>(),
1
,
"commonIn"
,
"普通入库"
,
1
,
"commonIn"
,
"system/singleStockIn/index"
,
""
,
0
,
"singleDiskWarehousing"
,
functionMenuMap
);
addNewFunctionMenu
(
out
,
new
ArrayList
<
Menu
>(),
1
,
"singleDiskWarehousing"
,
"单盘入库"
,
1
,
"singleDiskWarehousing"
,
"system/singleDiskWarehousing/index"
,
""
,
0
,
"singleDiskWarehousing"
,
functionMenuMap
);
addNewFunctionMenu
(
poutOut
,
new
ArrayList
<
Menu
>(),
1
,
"returnIn"
,
"退料入库"
,
1
,
"returnIn"
,
"system/singleStockIn/index"
,
""
,
0
,
"singleDiskWarehousing"
,
functionMenuMap
);
addNewFunctionMenu
(
out
,
new
ArrayList
<
Menu
>(),
1
,
"sluggishMaterials"
,
"呆滞物料"
,
1
,
"sluggishMaterials"
,
"system/sluggishMaterials/index"
,
""
,
0
,
"sMaterial"
,
functionMenuMap
);
addNewFunctionMenu
(
poutOut
,
new
ArrayList
<
Menu
>(),
1
,
"cutIn"
,
"截料入库"
,
1
,
"cutIn"
,
"system/singleStockIn/index"
,
""
,
0
,
"singleDiskWarehousing"
,
functionMenuMap
);
addNewFunctionMenu
(
out
,
new
ArrayList
<
Menu
>(),
1
,
"safetyInventory"
,
"安全库存"
,
1
,
"safetyInventory"
,
"system/safetyInventory/index"
,
""
,
0
,
"safeInventory"
,
functionMenuMap
);
addNewFunctionMenu
(
out
,
new
ArrayList
<
Menu
>(),
1
,
"outList"
,
"转储出库"
,
1
,
"outList"
,
"system/outList/index"
,
""
,
0
,
"outList"
,
functionMenuMap
);
addNewFunctionMenu
(
poutOut
,
new
ArrayList
<
Menu
>(),
1
,
"sluggishMaterials"
,
"呆滞物料"
,
1
,
"sluggishMaterials"
,
"system/sluggishMaterials/index"
,
""
,
0
,
"sMaterial"
,
functionMenuMap
);
addNewFunctionMenu
(
out
,
new
ArrayList
<
Menu
>(),
1
,
"orderSet"
,
"齐套"
,
1
,
"orderSet"
,
"system/orderSet/index"
,
""
,
0
,
"outS"
,
functionMenuMap
);
addNewFunctionMenu
(
poutOut
,
new
ArrayList
<
Menu
>(),
1
,
"safetyInventory"
,
"安全库存"
,
1
,
"safetyInventory"
,
"system/safetyInventory/index"
,
""
,
0
,
"safeInventory"
,
functionMenuMap
);
addNewFunctionMenu
(
poutOut
,
new
ArrayList
<
Menu
>(),
1
,
"outList"
,
"转储出库"
,
1
,
"outList"
,
"system/outList/index"
,
""
,
0
,
"outList"
,
functionMenuMap
);
addNewFunctionMenu
(
poutOut
,
new
ArrayList
<
Menu
>(),
1
,
"orderSet"
,
"齐套"
,
1
,
"orderSet"
,
"system/orderSet/index"
,
""
,
0
,
"outS"
,
functionMenuMap
);
Menu
orderM
=
Menu
.
CreatePMenu
(
"工单管理"
,
20
,
"orderManager"
,
2
,
"orderManager"
,
null
);
Menu
orderM
=
Menu
.
CreatePMenu
(
"工单管理"
,
20
,
"orderManager"
,
2
,
"orderManager"
,
null
);
addNewFunctionMenu
(
orderM
,
new
ArrayList
<
Menu
>(),
1
,
"billworkOrder"
,
"工单"
,
1
,
"billworkOrder"
,
"neolight/billworkOrder/index"
,
""
,
0
,
"orderOut"
,
functionMenuMap
);
addNewFunctionMenu
(
orderM
,
new
ArrayList
<
Menu
>(),
1
,
"billworkOrder"
,
"工单"
,
1
,
"billworkOrder"
,
"neolight/billworkOrder/index"
,
""
,
0
,
"orderOut"
,
functionMenuMap
);
...
@@ -245,24 +248,12 @@ public class DataInitManager {
...
@@ -245,24 +248,12 @@ public class DataInitManager {
if
(
dbMenus
.
isEmpty
()){
if
(
dbMenus
.
isEmpty
()){
log
.
info
(
"创建默认菜单..."
);
log
.
info
(
"创建默认菜单..."
);
menuListToShow
=
new
String
[]{
menuListToShow
=
new
String
[]{
"lockMaterial"
,
//设备看板
"searchOut"
,
"singleOuput"
,
"tacticsOuput"
,
"mslOut"
,
"inList"
,
"dumpWarehousing"
,
"singleOuput"
,
"commonIn"
,
"returnIn"
,
"cutIn"
,
"sluggishMaterials"
,
"safetyInventory"
,
"outList"
,
"orderSet"
,
"billworkOrder"
,
"tacticsOuput"
,
"reelOut"
,
"orderSheet"
,
"orderShortageOut"
,
"orderShortageSheet"
,
"productionLineReple"
,
"productionLineOut"
,
"outSetting"
,
"componentParts"
,
"barcode"
,
"barcodeSetting"
,
"taskLog"
,
"message"
,
"interfaceException"
,
"componentParts"
,
"bunker"
,
"storagePos"
,
"barcode"
,
"peoples"
,
"role"
,
"about"
"barcodeSetting"
,
"taskLog"
,
//"orderSetting",//工单设置
"inOutData"
,
//报表->出入库
"inventory"
,
//报表->库存
"bunker"
,
//设备管理
"storagePos"
,
//库位管理
//"sysSetting", //系统设置
"peoples"
,
//用户管理
"role"
//角色管理
};
};
}
}
...
...
src/main/java/com/neotel/smfcore/common/utils/DateUtil.java
查看文件 @
f13d726
...
@@ -80,6 +80,9 @@ public class DateUtil {
...
@@ -80,6 +80,9 @@ public class DateUtil {
public
static
Date
toDate
(
String
strDate
,
String
aMask
)
public
static
Date
toDate
(
String
strDate
,
String
aMask
)
throws
ParseException
{
throws
ParseException
{
if
(
ObjectUtil
.
isEmpty
(
strDate
)){
return
null
;
}
if
(
ObjectUtil
.
isEmpty
(
aMask
)){
if
(
ObjectUtil
.
isEmpty
(
aMask
)){
aMask
=
"yyyy-MM-dd HH:mm:ss"
;
aMask
=
"yyyy-MM-dd HH:mm:ss"
;
}
}
...
...
src/main/java/com/neotel/smfcore/core/barcode/service/manager/IComponentManager.java
查看文件 @
f13d726
...
@@ -7,6 +7,7 @@ import org.springframework.data.mongodb.core.query.Query;
...
@@ -7,6 +7,7 @@ import org.springframework.data.mongodb.core.query.Query;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.Set
;
...
@@ -19,6 +20,8 @@ public interface IComponentManager extends IBaseManager<Component> {
...
@@ -19,6 +20,8 @@ public interface IComponentManager extends IBaseManager<Component> {
Component
saveComponent
(
Component
resources
);
Component
saveComponent
(
Component
resources
);
List
<
Component
>
findByPN
(
Collection
<
String
>
pnList
);
void
deleteComponents
(
Set
<
String
>
ids
);
void
deleteComponents
(
Set
<
String
>
ids
);
int
saveComponentList
(
List
<
Component
>
componentList
);
int
saveComponentList
(
List
<
Component
>
componentList
);
...
...
src/main/java/com/neotel/smfcore/core/barcode/service/manager/impl/ComponentManagerImpl.java
查看文件 @
f13d726
...
@@ -98,6 +98,13 @@ public class ComponentManagerImpl implements IComponentManager {
...
@@ -98,6 +98,13 @@ public class ComponentManagerImpl implements IComponentManager {
}
}
@Override
@Override
public
List
<
Component
>
findByPN
(
Collection
<
String
>
pnList
)
{
Query
query
=
new
Query
(
Criteria
.
where
(
"partNumber"
).
in
(
pnList
));
List
<
Component
>
components
=
componentDao
.
findByQuery
(
query
);
return
components
;
}
@Override
public
void
deleteComponents
(
Set
<
String
>
ids
)
{
public
void
deleteComponents
(
Set
<
String
>
ids
)
{
Query
query
=
new
Query
(
Criteria
.
where
(
"id"
).
in
(
ids
));
Query
query
=
new
Query
(
Criteria
.
where
(
"id"
).
in
(
ids
));
List
<
Component
>
components
=
componentDao
.
findByQuery
(
query
);
List
<
Component
>
components
=
componentDao
.
findByQuery
(
query
);
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLPShelfHandler.java
查看文件 @
f13d726
...
@@ -40,6 +40,8 @@ import org.springframework.web.bind.annotation.*;
...
@@ -40,6 +40,8 @@ import org.springframework.web.bind.annotation.*;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpSession
;
import
javax.servlet.http.HttpSession
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.locks.ReentrantLock
;
@Api
(
tags
=
"SHELF: NLP感应料架"
)
@Api
(
tags
=
"SHELF: NLP感应料架"
)
@RestController
@RestController
...
@@ -129,6 +131,8 @@ public class NLPShelfHandler extends BaseDeviceHandler{
...
@@ -129,6 +131,8 @@ public class NLPShelfHandler extends BaseDeviceHandler{
return
statusBean
;
return
statusBean
;
}
}
private
static
Map
<
String
,
Boolean
>
processMap
=
new
ConcurrentHashMap
<>();
/**
/**
* 客户端sensor变化
* 客户端sensor变化
*/
*/
...
@@ -141,7 +145,17 @@ public class NLPShelfHandler extends BaseDeviceHandler{
...
@@ -141,7 +145,17 @@ public class NLPShelfHandler extends BaseDeviceHandler{
if
(
storage
==
null
){
if
(
storage
==
null
){
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.shelfNotExist"
,
"{0}对应的料架不存在"
,
new
String
[]{
cid
}
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.shelfNotExist"
,
"{0}对应的料架不存在"
,
new
String
[]{
cid
}
);
}
}
synchronized
(
storage
){
synchronized
(
storage
){
Boolean
process
=
processMap
.
get
(
cid
);
if
(
process
==
null
){
processMap
.
put
(
cid
,
true
);
}
else
{
String
msg
=
"料架["
+
cid
+
"]的上一次请求还未完成,忽略本次请求"
;
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.shelfNotExist"
,
msg
);
}
}
try
{
//实际信号有料,数据库无信息
//实际信号有料,数据库无信息
String
[]
hasReelPosErrorList
=
request
.
getParameterValues
(
"hasReelPosErrorList"
);
String
[]
hasReelPosErrorList
=
request
.
getParameterValues
(
"hasReelPosErrorList"
);
//实际信号无料,数据库有信息
//实际信号无料,数据库有信息
...
@@ -159,9 +173,9 @@ public class NLPShelfHandler extends BaseDeviceHandler{
...
@@ -159,9 +173,9 @@ public class NLPShelfHandler extends BaseDeviceHandler{
if
(
noReelPosErrorList
.
length
>
0
){
if
(
noReelPosErrorList
.
length
>
0
){
//log.info("开始检测noReelPosErrorList");
//log.info("开始检测noReelPosErrorList");
for
(
String
noReelPosName
:
noReelPosErrorList
)
{
for
(
String
noReelPosName
:
noReelPosErrorList
)
{
if
(
usedPosNameList
.
contains
(
noReelPosName
)){
if
(
!
usedPosNameList
.
contains
(
noReelPosName
)){
ngToOk
.
add
(
noReelPosName
);
ngToOk
.
add
(
noReelPosName
);
log
.
info
(
"sensorChange 客户端上传 noReelPosErrorList 库位["
+
noReelPosName
+
"]数据库无物料,放入ngToOk"
);
log
.
info
(
cid
+
"sensorChange 客户端上传 noReelPosErrorList 库位["
+
noReelPosName
+
"]数据库无物料,放入ngToOk"
);
}
}
}
}
}
}
...
@@ -178,12 +192,12 @@ public class NLPShelfHandler extends BaseDeviceHandler{
...
@@ -178,12 +192,12 @@ public class NLPShelfHandler extends BaseDeviceHandler{
String
[]
hasReelPosList
=
request
.
getParameterValues
(
"hasReelPosList"
);
String
[]
hasReelPosList
=
request
.
getParameterValues
(
"hasReelPosList"
);
if
(
hasReelPosList
!=
null
){
if
(
hasReelPosList
!=
null
){
log
.
info
(
"开始检测hasReelPosList"
);
log
.
info
(
cid
+
"开始检测hasReelPosList"
);
Set
<
String
>
disabledPosNameSet
=
dataCache
.
getDisabledPosNameSet
();
Set
<
String
>
disabledPosNameSet
=
dataCache
.
getDisabledPosNameSet
();
List
<
String
>
newList
=
new
ArrayList
<>();
List
<
String
>
newList
=
new
ArrayList
<>();
for
(
String
posName
:
hasReelPosList
)
{
for
(
String
posName
:
hasReelPosList
)
{
if
(
disabledPosNameSet
.
contains
(
posName
)){
if
(
disabledPosNameSet
.
contains
(
posName
)){
log
.
info
(
"sensorChange hasReelPosList ["
+
posName
+
"]库位被禁用,忽略"
);
log
.
info
(
cid
+
"sensorChange hasReelPosList ["
+
posName
+
"]库位被禁用,忽略"
);
continue
;
continue
;
}
}
newList
.
add
(
posName
);
newList
.
add
(
posName
);
...
@@ -193,20 +207,20 @@ public class NLPShelfHandler extends BaseDeviceHandler{
...
@@ -193,20 +207,20 @@ public class NLPShelfHandler extends BaseDeviceHandler{
//入库的库位列表
//入库的库位列表
if
(
hasReelPosList
.
length
>
1
){
if
(
hasReelPosList
.
length
>
1
){
String
msg
=
"不可同时放入多盘物料:"
+
String
.
join
(
","
,
hasReelPosList
);
String
msg
=
cid
+
"不可同时放入多盘物料:"
+
String
.
join
(
","
,
hasReelPosList
);
log
.
error
(
msg
);
log
.
error
(
msg
);
for
(
String
posStr
:
hasReelPosList
)
{
for
(
String
posStr
:
hasReelPosList
)
{
inNgList
.
add
(
posStr
);
inNgList
.
add
(
posStr
);
}
}
}
else
if
(
hasReelPosList
.
length
==
1
){
}
else
if
(
hasReelPosList
.
length
==
1
){
log
.
info
(
"开始检测执行入库
"
);
log
.
info
(
cid
+
"开始检测执行入库到库位:["
+
hasReelPosList
[
0
]+
"]
"
);
StoragePos
pos
=
storagePosManager
.
getByPosName
(
hasReelPosList
[
0
]);
StoragePos
pos
=
storagePosManager
.
getByPosName
(
hasReelPosList
[
0
]);
if
(
pos
==
null
){
if
(
pos
==
null
){
String
msg
=
"未找到库位:"
+
String
.
join
(
","
,
hasReelPosList
)
;
String
msg
=
"未找到库位:"
+
String
.
join
(
","
,
hasReelPosList
)
;
log
.
error
(
msg
);
log
.
error
(
msg
);
}
}
else
if
(!
pos
.
getStorageId
().
equals
(
storage
.
getId
())){
else
if
(!
pos
.
getStorageId
().
equals
(
storage
.
getId
())){
String
msg
=
"["
+
storage
.
getName
()
+
"]未找到库位:"
+
String
.
join
(
","
,
hasReelPosList
)
;
String
msg
=
"["
+
cid
+
"]未找到库位:"
+
String
.
join
(
","
,
hasReelPosList
)
;
log
.
error
(
msg
);
log
.
error
(
msg
);
}
}
//如果库位有料,直接结束
//如果库位有料,直接结束
...
@@ -214,7 +228,9 @@ public class NLPShelfHandler extends BaseDeviceHandler{
...
@@ -214,7 +228,9 @@ public class NLPShelfHandler extends BaseDeviceHandler{
log
.
info
(
"料架["
+
cid
+
"]入库库位["
+
pos
.
getPosName
()
+
"]已有料: ["
+
pos
.
getBarcode
().
getBarcode
()
+
"]"
);
log
.
info
(
"料架["
+
cid
+
"]入库库位["
+
pos
.
getPosName
()
+
"]已有料: ["
+
pos
.
getBarcode
().
getBarcode
()
+
"]"
);
}
}
else
{
else
{
log
.
info
(
cid
+
"处理有料库位:["
+
pos
.
getPosName
()+
"]"
);
boolean
posInResult
=
handlePosIn
(
storage
,
pos
);
boolean
posInResult
=
handlePosIn
(
storage
,
pos
);
log
.
info
(
cid
+
"处理有料库位:["
+
pos
.
getPosName
()+
"]完成,结果:"
+
posInResult
);
if
(
posInResult
){
if
(
posInResult
){
inOkList
.
add
(
pos
.
getPosName
());
inOkList
.
add
(
pos
.
getPosName
());
}
else
{
}
else
{
...
@@ -227,9 +243,10 @@ public class NLPShelfHandler extends BaseDeviceHandler{
...
@@ -227,9 +243,10 @@ public class NLPShelfHandler extends BaseDeviceHandler{
String
[]
noReelPosList
=
request
.
getParameterValues
(
"noReelPosList"
);
String
[]
noReelPosList
=
request
.
getParameterValues
(
"noReelPosList"
);
if
(
noReelPosList
!=
null
){
if
(
noReelPosList
!=
null
){
//出库
//出库
log
.
info
(
"出库检测noReelPosList"
);
for
(
String
noReelPosName
:
noReelPosList
)
{
for
(
String
noReelPosName
:
noReelPosList
)
{
log
.
info
(
cid
+
"处理无料库位:["
+
noReelPosName
+
"]"
);
boolean
handleNoReelPosResult
=
handleNoReelPos
(
storage
,
usedPosNameList
,
noReelPosName
);
boolean
handleNoReelPosResult
=
handleNoReelPos
(
storage
,
usedPosNameList
,
noReelPosName
);
log
.
info
(
cid
+
"处理无料库位:["
+
noReelPosName
+
"]完成,结果:"
+
handleNoReelPosResult
);
if
(
handleNoReelPosResult
){
if
(
handleNoReelPosResult
){
outOkList
.
add
(
noReelPosName
);
outOkList
.
add
(
noReelPosName
);
}
else
{
}
else
{
...
@@ -245,9 +262,13 @@ public class NLPShelfHandler extends BaseDeviceHandler{
...
@@ -245,9 +262,13 @@ public class NLPShelfHandler extends BaseDeviceHandler{
dataMap
.
put
(
"outNgList"
,
outNgList
);
dataMap
.
put
(
"outNgList"
,
outNgList
);
dataMap
.
put
(
"ngToOk"
,
ngToOk
);
dataMap
.
put
(
"ngToOk"
,
ngToOk
);
return
ResultBean
.
newOkResult
(
dataMap
);
return
ResultBean
.
newOkResult
(
dataMap
);
}
catch
(
Exception
e
){
String
msg
=
"料架["
+
cid
+
"]处理sensorChange异常"
;
log
.
error
(
msg
,
e
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.sensorChangeError"
,
msg
);
}
finally
{
processMap
.
remove
(
cid
);
}
}
}
}
/**
/**
...
@@ -282,7 +303,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
...
@@ -282,7 +303,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
queueTask
.
setStorageName
(
storage
.
getName
());
queueTask
.
setStorageName
(
storage
.
getName
());
try
{
try
{
//入库完成,发送入库完成请求
//入库完成,发送入库完成请求
log
.
info
(
"入库完成,发送入库完成请求"
);
log
.
info
(
queueTask
.
getBarcode
()
+
"入库完成,发送入库完成请求"
);
super
.
finishedPutIn
(
storage
.
getCid
(),
pos
.
getPosName
());
super
.
finishedPutIn
(
storage
.
getCid
(),
pos
.
getPosName
());
String
msg
=
queueTask
.
getBarcode
()
+
"入库到"
+
pos
.
getPosName
()
+
"成功"
;
String
msg
=
queueTask
.
getBarcode
()
+
"入库到"
+
pos
.
getPosName
()
+
"成功"
;
log
.
info
(
msg
);
log
.
info
(
msg
);
...
@@ -315,7 +336,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
...
@@ -315,7 +336,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
return
inResult
;
return
inResult
;
}
}
}
}
log
.
error
(
"未找到["
+
pos
.
getPosName
()+
"]的入库任务"
);
log
.
warn
(
"未找到["
+
pos
.
getPosName
()+
"]的入库任务"
);
return
false
;
return
false
;
}
}
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
f13d726
...
@@ -448,7 +448,22 @@ public class LiteOrderCache implements ITaskListener {
...
@@ -448,7 +448,22 @@ public class LiteOrderCache implements ITaskListener {
List
<
String
>
excludePosIds
=
Lists
.
newArrayList
();
List
<
String
>
excludePosIds
=
Lists
.
newArrayList
();
excludePosIds
.
addAll
(
taskService
.
excludePosIds
());
excludePosIds
.
addAll
(
taskService
.
excludePosIds
());
List
<
String
>
outPosNameList
=
new
ArrayList
<>();
Set
<
String
>
pnList
=
new
HashSet
<>();
for
(
LiteOrderItem
orderItem
:
cacheOrder
.
getOrderItems
())
{
String
pn
=
orderItem
.
getMaterialNo
();
//需求数量
int
needNum
=
orderItem
.
getQty
()
+
orderItem
.
getIncrement
()
-
orderItem
.
getTotalOutNum
();
if
(
needNum
<=
0
)
{
continue
;
}
pnList
.
add
(
pn
);
}
List
<
StoragePos
>
allAvailblePosList
=
storagePosManager
.
findOrderItemInStorage
(
availableStorageIds
,
pnList
,
excludePosIds
);
Set
<
String
>
outPosNameList
=
new
HashSet
<>();
List
<
Component
>
componentList
=
componentManager
.
findByPN
(
pnList
);
//获取此工单出库的所有物料
//获取此工单出库的所有物料
for
(
LiteOrderItem
orderItem
:
cacheOrder
.
getOrderItems
())
{
for
(
LiteOrderItem
orderItem
:
cacheOrder
.
getOrderItems
())
{
...
@@ -460,7 +475,12 @@ public class LiteOrderCache implements ITaskListener {
...
@@ -460,7 +475,12 @@ public class LiteOrderCache implements ITaskListener {
}
}
//查找PN的所有库存,PN=pn,未锁定,qty 从大到小,批次正序, 入库时间正序
//查找PN的所有库存,PN=pn,未锁定,qty 从大到小,批次正序, 入库时间正序
List
<
StoragePos
>
posList
=
storagePosManager
.
findOrderItemInStorage
(
availableStorageIds
,
pn
,
excludePosIds
);
List
<
StoragePos
>
posList
=
new
ArrayList
<>();
for
(
StoragePos
storagePos
:
allAvailblePosList
)
{
if
(
storagePos
.
getBarcode
().
getPartNumber
().
equals
(
pn
)){
posList
.
add
(
storagePos
);
}
}
int
targetNum
=
needNum
;
int
targetNum
=
needNum
;
List
<
StoragePos
>
outPosList
=
new
ArrayList
<>();
List
<
StoragePos
>
outPosList
=
new
ArrayList
<>();
...
@@ -491,6 +511,7 @@ public class LiteOrderCache implements ITaskListener {
...
@@ -491,6 +511,7 @@ public class LiteOrderCache implements ITaskListener {
//排除掉这些库位,以免重复挑取同一盘料
//排除掉这些库位,以免重复挑取同一盘料
for
(
StoragePos
storagePos
:
outPosList
)
{
for
(
StoragePos
storagePos
:
outPosList
)
{
excludePosIds
.
add
(
storagePos
.
getId
());
excludePosIds
.
add
(
storagePos
.
getId
());
outPosNameList
.
add
(
storagePos
.
getPosName
());
int
reelAmount
=
storagePos
.
getBarcode
().
getAmount
();
int
reelAmount
=
storagePos
.
getBarcode
().
getAmount
();
outNum
=
outNum
+
reelAmount
;
outNum
=
outNum
+
reelAmount
;
}
}
...
@@ -507,7 +528,13 @@ public class LiteOrderCache implements ITaskListener {
...
@@ -507,7 +528,13 @@ public class LiteOrderCache implements ITaskListener {
//判断是否需要截料
//判断是否需要截料
boolean
needJieliao
=
false
;
boolean
needJieliao
=
false
;
//判断库存 使用最小库存盘数:当前盘数<=最小库存盘数时,需要截料
//判断库存 使用最小库存盘数:当前盘数<=最小库存盘数时,需要截料
Component
component
=
componentManager
.
findOneByPN
(
pn
);
Component
component
=
null
;
for
(
Component
c
:
componentList
)
{
if
(
c
.
getPartNumber
().
equals
(
pn
)){
component
=
c
;
break
;
}
}
if
(
component
!=
null
){
if
(
component
!=
null
){
if
(
component
.
getMinStoreNum
()>
0
&&
posList
.
size
()
<=
component
.
getMinStoreNum
()){
if
(
component
.
getMinStoreNum
()>
0
&&
posList
.
size
()
<=
component
.
getMinStoreNum
()){
needJieliao
=
true
;
needJieliao
=
true
;
...
@@ -735,7 +762,7 @@ public class LiteOrderCache implements ITaskListener {
...
@@ -735,7 +762,7 @@ public class LiteOrderCache implements ITaskListener {
* @param targetNum
* @param targetNum
* @return
* @return
*/
*/
private
List
<
StoragePos
>
pickBigOrderReels
(
String
pn
,
Lis
t
<
String
>
outPosNameList
,
List
<
StoragePos
>
posList
,
int
targetNum
){
private
List
<
StoragePos
>
pickBigOrderReels
(
String
pn
,
Se
t
<
String
>
outPosNameList
,
List
<
StoragePos
>
posList
,
int
targetNum
){
List
<
String
>
excludePosNameList
=
new
ArrayList
<>(
outPosNameList
);
List
<
String
>
excludePosNameList
=
new
ArrayList
<>(
outPosNameList
);
List
<
StoragePos
>
outPosList
=
new
ArrayList
<>();
List
<
StoragePos
>
outPosList
=
new
ArrayList
<>();
...
@@ -813,7 +840,7 @@ public class LiteOrderCache implements ITaskListener {
...
@@ -813,7 +840,7 @@ public class LiteOrderCache implements ITaskListener {
* @param targetNum
* @param targetNum
* @return
* @return
*/
*/
private
List
<
StoragePos
>
pickRepleReels
(
Lis
t
<
String
>
outPosNameList
,
List
<
StoragePos
>
posList
,
int
targetNum
){
private
List
<
StoragePos
>
pickRepleReels
(
Se
t
<
String
>
outPosNameList
,
List
<
StoragePos
>
posList
,
int
targetNum
){
List
<
String
>
excludePosNameList
=
new
ArrayList
<>(
outPosNameList
);
List
<
String
>
excludePosNameList
=
new
ArrayList
<>(
outPosNameList
);
List
<
StoragePos
>
itemPickPosList
=
new
ArrayList
<>();
List
<
StoragePos
>
itemPickPosList
=
new
ArrayList
<>();
boolean
pickMaxQtyReel
=
false
;
boolean
pickMaxQtyReel
=
false
;
...
...
src/main/java/com/neotel/smfcore/core/order/rest/OrderShortageController.java
查看文件 @
f13d726
...
@@ -155,12 +155,8 @@ public class OrderShortageController {
...
@@ -155,12 +155,8 @@ public class OrderShortageController {
List
<
DataLog
>
taskList
=
new
ArrayList
<>();
List
<
DataLog
>
taskList
=
new
ArrayList
<>();
if
(
liteOrders
.
size
()
>
0
)
{
if
(
liteOrders
.
size
()
>
0
)
{
LiteOrder
liteOrder
=
liteOrders
.
get
(
0
);
LiteOrder
liteOrder
=
liteOrders
.
get
(
0
);
if
(
liteOrder
.
isNew
()
||
liteOrder
.
isClosed
())
{
throw
new
ValidateException
(
"smfcore.order.notExecute"
,
"工单[{0}]不在出库中"
,
new
String
[]{
liteOrder
.
getOrderNo
()});
}
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
for
(
DataLog
datalog
:
for
(
DataLog
datalog
:
allTasks
)
{
allTasks
)
{
if
(
datalog
.
isOrderTask
()
&&
datalog
.
getSourceId
().
equals
(
liteOrder
.
getId
()))
{
if
(
datalog
.
isOrderTask
()
&&
datalog
.
getSourceId
().
equals
(
liteOrder
.
getId
()))
{
//判断是否是缺料出库
//判断是否是缺料出库
if
(
datalog
.
isAddOutbound
())
{
if
(
datalog
.
isAddOutbound
())
{
...
...
src/main/java/com/neotel/smfcore/core/outList/util/OutListCache.java
查看文件 @
f13d726
...
@@ -230,6 +230,21 @@ public class OutListCache implements ITaskListener {
...
@@ -230,6 +230,21 @@ public class OutListCache implements ITaskListener {
Map
<
String
,
List
<
StoragePos
>>
needOutPosMap
=
new
HashMap
<>();
//挑出的需要出库的料列表,key=itemId,value=库位
Map
<
String
,
List
<
StoragePos
>>
needOutPosMap
=
new
HashMap
<>();
//挑出的需要出库的料列表,key=itemId,value=库位
List
<
String
>
itemPosNameList
=
new
ArrayList
<>();
List
<
String
>
itemPosNameList
=
new
ArrayList
<>();
Set
<
String
>
pnList
=
new
HashSet
<>();
for
(
OutListItem
outListItem
:
outList
.
getOutListItems
())
{
String
pn
=
outListItem
.
getMaterialNo
();
//需求数量
int
needNum
=
outListItem
.
getDumpQty
();
if
(
needNum
<=
0
)
{
continue
;
}
pnList
.
add
(
pn
);
}
List
<
StoragePos
>
allAvailblePosList
=
storagePosManager
.
findOrderItemInStorage
(
availableStorageIds
,
pnList
,
taskService
.
excludePosIds
());
List
<
Component
>
componentList
=
componentManager
.
findByPN
(
pnList
);
//获取此转储出库单出库的所有物料
//获取此转储出库单出库的所有物料
for
(
OutListItem
outListItem
:
outList
.
getOutListItems
())
{
for
(
OutListItem
outListItem
:
outList
.
getOutListItems
())
{
String
pn
=
outListItem
.
getMaterialNo
();
String
pn
=
outListItem
.
getMaterialNo
();
...
@@ -239,7 +254,13 @@ public class OutListCache implements ITaskListener {
...
@@ -239,7 +254,13 @@ public class OutListCache implements ITaskListener {
continue
;
continue
;
}
}
Component
component
=
componentManager
.
findOneByPN
(
pn
);
Component
component
=
null
;
for
(
Component
c
:
componentList
)
{
if
(
c
.
getPartNumber
().
equals
(
pn
)){
component
=
c
;
break
;
}
}
if
(
component
==
null
)
{
if
(
component
==
null
)
{
if
(
isShortageOut
){
if
(
isShortageOut
){
shortage
=
true
;
shortage
=
true
;
...
@@ -251,7 +272,12 @@ public class OutListCache implements ITaskListener {
...
@@ -251,7 +272,12 @@ public class OutListCache implements ITaskListener {
}
}
//查找PN的所有库存,PN=pn,未锁定,qty 从大到小,入库时间正序
//查找PN的所有库存,PN=pn,未锁定,qty 从大到小,入库时间正序
List
<
StoragePos
>
posList
=
storagePosManager
.
findOrderItemInStorage
(
availableStorageIds
,
pn
,
taskService
.
excludePosIds
());
List
<
StoragePos
>
posList
=
new
ArrayList
<>();
for
(
StoragePos
storagePos
:
allAvailblePosList
)
{
if
(
storagePos
.
getBarcode
().
getPartNumber
().
equals
(
pn
)){
posList
.
add
(
storagePos
);
}
}
log
.
info
(
"共找到"
+
posList
.
size
()+
"盘"
+
pn
+
"的物料"
);
log
.
info
(
"共找到"
+
posList
.
size
()+
"盘"
+
pn
+
"的物料"
);
int
storageNum
=
0
;
int
storageNum
=
0
;
...
...
src/main/java/com/neotel/smfcore/core/storage/service/manager/IStoragePosManager.java
查看文件 @
f13d726
...
@@ -69,5 +69,5 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
...
@@ -69,5 +69,5 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
List
<
StoragePos
>
getSameSizeContinuityEmptyPosList
(
Storage
storage
,
Barcode
barcode
)
throws
ValidateException
;
List
<
StoragePos
>
getSameSizeContinuityEmptyPosList
(
Storage
storage
,
Barcode
barcode
)
throws
ValidateException
;
List
<
StoragePos
>
findOrderItemInStorage
(
List
<
String
>
storageIdList
,
S
tring
pn
,
Collection
<
String
>
excludePosIds
);
List
<
StoragePos
>
findOrderItemInStorage
(
List
<
String
>
storageIdList
,
S
et
<
String
>
pnList
,
Collection
<
String
>
excludePosIds
);
}
}
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
查看文件 @
f13d726
...
@@ -615,9 +615,11 @@ public class StoragePosManagerImpl implements IStoragePosManager {
...
@@ -615,9 +615,11 @@ public class StoragePosManagerImpl implements IStoragePosManager {
return
new
ArrayList
<>();
return
new
ArrayList
<>();
}
}
@Override
@Override
public
List
<
StoragePos
>
findOrderItemInStorage
(
List
<
String
>
storageIdList
,
S
tring
pn
,
Collection
<
String
>
excludePosIds
)
{
public
List
<
StoragePos
>
findOrderItemInStorage
(
List
<
String
>
storageIdList
,
S
et
<
String
>
pnList
,
Collection
<
String
>
excludePosIds
)
{
Criteria
c
=
Criteria
.
where
(
"barcode.partNumber"
).
i
s
(
pn
)
Criteria
c
=
Criteria
.
where
(
"barcode.partNumber"
).
i
n
(
pnList
)
.
and
(
"id"
).
nin
(
excludePosIds
)
.
and
(
"id"
).
nin
(
excludePosIds
)
.
and
(
"enabled"
).
is
(
true
)
//可用
.
and
(
"enabled"
).
is
(
true
)
//可用
.
and
(
"barcode.lockId"
).
is
(
null
)
//没有被锁定的仓位;
.
and
(
"barcode.lockId"
).
is
(
null
)
//没有被锁定的仓位;
...
@@ -632,9 +634,9 @@ public class StoragePosManagerImpl implements IStoragePosManager {
...
@@ -632,9 +634,9 @@ public class StoragePosManagerImpl implements IStoragePosManager {
//sort.and(Sort.by(Sort.Direction.ASC, "canCheckOutTime"));
//sort.and(Sort.by(Sort.Direction.ASC, "canCheckOutTime"));
q
.
with
(
amountSort
).
with
(
batchSort
);
q
.
with
(
amountSort
).
with
(
batchSort
);
List
<
StoragePos
>
posList
=
storagePosDao
.
findByQuery
(
q
);
List
<
StoragePos
>
posList
=
storagePosDao
.
findByQuery
(
q
);
if
(
posList
==
null
||
posList
.
size
()
<=
0
)
{
//
if (posList == null || posList.size() <= 0) {
log
.
info
(
"findOrderItemInStorage 挑料 partNumber="
+
pn
+
",
未找到可以出库的物料 "
);
// log.info("findOrderItemInStorage 挑料
未找到可以出库的物料 ");
}
//
}
return
posList
;
return
posList
;
}
}
...
...
src/main/java/com/neotel/smfcore/hella/handler/HellaApiHandler.java
查看文件 @
f13d726
package
com
.
neotel
.
smfcore
.
hella
.
handler
;
//
package com.neotel.smfcore.hella.handler;
//
import
cn.hutool.core.util.ObjectUtil
;
//
import cn.hutool.core.util.ObjectUtil;
import
com.neotel.smfcore.common.bean.ResultBean
;
//
import com.neotel.smfcore.common.bean.ResultBean;
import
com.neotel.smfcore.common.exception.ValidateException
;
//
import com.neotel.smfcore.common.exception.ValidateException;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
//
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import
com.neotel.smfcore.core.device.api.CodeValidateParam
;
//
import com.neotel.smfcore.core.device.api.CodeValidateParam;
import
com.neotel.smfcore.core.device.api.IOpAuthApi
;
//
import com.neotel.smfcore.core.device.api.IOpAuthApi;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
//
import com.neotel.smfcore.core.storage.service.po.Storage;
import
com.neotel.smfcore.hella.tcp.HellaTcpClient
;
//
import com.neotel.smfcore.hella.tcp.HellaTcpClient;
import
com.neotel.smfcore.hella.tcp.command.HellaReqCommand
;
//
import com.neotel.smfcore.hella.tcp.command.HellaReqCommand;
import
com.neotel.smfcore.hella.tcp.command.HellaRespCommand
;
//
import com.neotel.smfcore.hella.tcp.command.HellaRespCommand;
import
org.springframework.beans.factory.annotation.Autowired
;
//
import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
//
import org.springframework.stereotype.Service;
//
import
java.util.ArrayList
;
//
import java.util.ArrayList;
import
java.util.List
;
//
import java.util.List;
@Service
//
@Service
public
class
HellaApiHandler
implements
IOpAuthApi
{
//
public class HellaApiHandler implements IOpAuthApi {
//
@Autowired
//
@Autowired
private
HellaServiceHandler
hellaServiceHandler
;
//
private HellaServiceHandler hellaServiceHandler;
@Override
//
@Override
public
Barcode
resolveBarcode
(
CodeValidateParam
param
)
throws
ValidateException
{
//
public Barcode resolveBarcode(CodeValidateParam param) throws ValidateException {
//
if
(!
isEnable
())
{
//
if (!isEnable()) {
return
null
;
//
return null;
}
//
}
hellaServiceHandler
.
checkMaterial
(
param
);
//
hellaServiceHandler.checkMaterial(param);
Barcode
barcode
=
new
Barcode
();
//
Barcode barcode = new Barcode();
barcode
.
setFullCode
(
param
.
getCode
());
//
barcode.setFullCode(param.getCode());
return
barcode
;
//
return barcode;
}
//
}
//
@Override
//
@Override
public
Barcode
canPutIn
(
Barcode
barcode
)
throws
ValidateException
{
//
public Barcode canPutIn(Barcode barcode) throws ValidateException {
if
(!
isEnable
())
{
//
if (!isEnable()) {
return
null
;
//
return null;
}
//
}
return
barcode
;
//
return barcode;
}
//
}
//
@Override
//
@Override
public
boolean
canCheckout
(
Barcode
barcode
)
throws
ValidateException
{
//
public boolean canCheckout(Barcode barcode) throws ValidateException {
if
(!
isEnable
()){
//
if(!isEnable()){
return
false
;
//
return false;
}
//
}
return
false
;
//
return false;
}
//
}
//
@Override
//
@Override
public
boolean
isEnable
()
{
//
public boolean isEnable() {
return
HellaTcpClient
.
isEnable
();
//
return HellaTcpClient.isEnable();
}
//
}
}
//
}
src/main/java/com/neotel/smfcore/hella/handler/HellaServiceHandler.java
查看文件 @
f13d726
此文件的差异被折叠,
点击展开。
src/main/java/com/neotel/smfcore/hella/tcp/HellaTcpClient.java
查看文件 @
f13d726
此文件的差异被折叠,
点击展开。
src/main/java/com/neotel/smfcore/hikvision/HikApi.java
查看文件 @
f13d726
...
@@ -330,6 +330,7 @@ public class HikApi {
...
@@ -330,6 +330,7 @@ public class HikApi {
RequestParam
info
=
new
RequestParam
(
getReqCode
(),
userName
,
dataMap
);
RequestParam
info
=
new
RequestParam
(
getReqCode
(),
userName
,
dataMap
);
HikApiRequest
request
=
new
HikApiRequest
(
5
,
url
,
config
.
key_5_putInApi
,
config
.
secret_5_putInApi
,
info
);
HikApiRequest
request
=
new
HikApiRequest
(
5
,
url
,
config
.
key_5_putInApi
,
config
.
secret_5_putInApi
,
info
);
apiName
=
apiName
+
" ("
+
info
.
getReqCode
()+
") "
;
log
.
info
(
apiName
+
" 发送 "
+
info
.
getData
());
log
.
info
(
apiName
+
" 发送 "
+
info
.
getData
());
try
{
try
{
...
...
src/main/java/com/neotel/smfcore/hikvision/HikvisionApiController.java
查看文件 @
f13d726
...
@@ -74,8 +74,7 @@ public class HikvisionApiController {
...
@@ -74,8 +74,7 @@ public class HikvisionApiController {
// msg string 提示消息
// msg string 提示消息
// data 返回数据
// data 返回数据
if
(
outInfos
!=
null
&&
outInfos
.
size
()
>
0
)
{
if
(
outInfos
!=
null
&&
outInfos
.
size
()
>
0
)
{
for
(
HikOrderInfo
outInfo
:
for
(
HikOrderInfo
outInfo
:
outInfos
)
{
outInfos
)
{
//查找工单是否存在
//查找工单是否存在
String
orderNo
=
outInfo
.
getJobNo
();
String
orderNo
=
outInfo
.
getJobNo
();
...
...
src/main/java/com/neotel/smfcore/security/config/CustomMongoProperties.java
0 → 100644
查看文件 @
f13d726
package
com
.
neotel
.
smfcore
.
security
.
config
;
import
lombok.Data
;
@Data
public
class
CustomMongoProperties
{
private
String
host
;
private
Integer
port
;
private
String
database
;
private
Integer
maxConSize
=
200
;
private
Integer
minConSize
=
100
;
}
src/main/java/com/neotel/smfcore/security/config/MongoDbConfig.java
0 → 100644
查看文件 @
f13d726
package
com
.
neotel
.
smfcore
.
security
.
config
;
import
com.mongodb.MongoClientSettings
;
import
com.mongodb.ServerAddress
;
import
com.mongodb.client.MongoClient
;
import
com.mongodb.client.MongoClients
;
import
com.mongodb.connection.ClusterConnectionMode
;
import
com.mongodb.connection.ClusterType
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.data.mongodb.MongoDatabaseFactory
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory
;
import
java.util.ArrayList
;
import
java.util.List
;
@Configuration
public
class
MongoDbConfig
{
@Bean
(
name
=
"mongoProperties"
)
@ConfigurationProperties
(
prefix
=
"spring.data.mongodb"
)
protected
CustomMongoProperties
mongoProperties
()
{
return
new
CustomMongoProperties
();
}
@Primary
@Bean
(
name
=
"mongoTemplate"
)
public
MongoTemplate
mongoTemplate
(
@Qualifier
(
"mongoProperties"
)
CustomMongoProperties
mongoProperties
)
{
return
new
MongoTemplate
(
mongoDbFactory
(
mongoProperties
));
}
private
static
MongoDatabaseFactory
mongoDbFactory
(
CustomMongoProperties
mongoProperties
)
{
ClusterConnectionMode
clusterConnectionMode
;
ClusterType
clusterType
;
List
<
ServerAddress
>
serverAddressList
=
new
ArrayList
<>();
clusterConnectionMode
=
ClusterConnectionMode
.
SINGLE
;
clusterType
=
ClusterType
.
STANDALONE
;
ServerAddress
serverAddress
=
new
ServerAddress
(
mongoProperties
.
getHost
(),
mongoProperties
.
getPort
());
serverAddressList
.
add
(
serverAddress
);
MongoClientSettings
setting
=
MongoClientSettings
.
builder
()
.
applyToClusterSettings
(
builder
->
builder
.
hosts
(
serverAddressList
)
.
mode
(
clusterConnectionMode
)
.
requiredClusterType
(
clusterType
)
).
applyToConnectionPoolSettings
(
builder
->
builder
.
maxSize
(
mongoProperties
.
getMaxConSize
())
.
minSize
(
mongoProperties
.
getMinConSize
())
).
build
();
MongoClient
mongoClient
=
MongoClients
.
create
(
setting
);
return
new
SimpleMongoClientDatabaseFactory
(
mongoClient
,
mongoProperties
.
getDatabase
());
}
}
\ No newline at end of file
\ No newline at end of file
src/main/resources/config/application.yml
查看文件 @
f13d726
...
@@ -93,7 +93,8 @@ spring:
...
@@ -93,7 +93,8 @@ spring:
mongodb
:
mongodb
:
host
:
localhost
# 主机地址
host
:
localhost
# 主机地址
port
:
27017
# 端口
port
:
27017
# 端口
database
:
hikvision20220801
# 数据库
database
:
hikvision
# 数据库
messages
:
messages
:
encoding
:
utf-8
encoding
:
utf-8
main
:
main
:
...
...
src/main/resources/log4j2-spring.xml
查看文件 @
f13d726
...
@@ -6,10 +6,10 @@
...
@@ -6,10 +6,10 @@
</Properties>
</Properties>
<appenders>
<appenders>
<Console
name=
"Console"
target=
"SYSTEM_OUT"
>
<Console
name=
"Console"
target=
"SYSTEM_OUT"
>
<PatternLayout
pattern=
"%d{yyyy-MM-dd HH:mm:ss} %-5level [%file:%line] - %msg%n"
/>
<PatternLayout
pattern=
"%d{yyyy-MM-dd HH:mm:ss
.SSS
} %-5level [%file:%line] - %msg%n"
/>
</Console>
</Console>
<RollingFile
name=
"log"
fileName=
"${LOG_HOME}/${LOG_NAME}"
filePattern=
"${LOG_HOME}/%d{yyyy-MM-dd}.${LOG_NAME}"
append=
"true"
>
<RollingFile
name=
"log"
fileName=
"${LOG_HOME}/${LOG_NAME}"
filePattern=
"${LOG_HOME}/%d{yyyy-MM-dd}.${LOG_NAME}"
append=
"true"
>
<PatternLayout
charset=
"GB18030"
pattern=
"%d{yyyy-MM-dd HH:mm:ss} %-5level [%file:%line] - %msg%n"
/>
<PatternLayout
charset=
"GB18030"
pattern=
"%d{yyyy-MM-dd HH:mm:ss
.SSS
} %-5level [%file:%line] - %msg%n"
/>
<Policies>
<Policies>
<TimeBasedTriggeringPolicy
modulate=
"true"
interval=
"1"
/>
<TimeBasedTriggeringPolicy
modulate=
"true"
interval=
"1"
/>
</Policies>
</Policies>
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论