Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit cbfa410d
由
sunke
编写于
2022-08-19 10:36:22 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
线边仓间入库类型修正
出入库记录只记录补料单号
1 个父辈
7d58d994
显示空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
321 行增加
和
302 行删除
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLPShelfHandler.java
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
src/main/java/com/neotel/smfcore/core/hik/rest/SingleInController.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
src/main/java/com/neotel/smfcore/core/outList/rest/OutListController.java
src/main/java/com/neotel/smfcore/core/storage/rest/StorageController.java
src/main/java/com/neotel/smfcore/core/storage/service/po/StoragePos.java
src/main/java/com/neotel/smfcore/hikvision/bean/InOutApiInfo.java
src/main/java/com/neotel/smfcore/panacim/PanaApiController.java
src/main/java/com/neotel/smfcore/security/rest/bean/query/RoleQueryCriteria.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
查看文件 @
cbfa410
...
@@ -27,6 +27,8 @@ import com.neotel.smfcore.core.hik.enums.IN_OUT_TYPE;
...
@@ -27,6 +27,8 @@ import com.neotel.smfcore.core.hik.enums.IN_OUT_TYPE;
import
com.neotel.smfcore.core.message.util.DeviceMessageUtil
;
import
com.neotel.smfcore.core.message.util.DeviceMessageUtil
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.enums.ORDER_COLOR
;
import
com.neotel.smfcore.core.order.enums.ORDER_COLOR
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderManager
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
...
@@ -95,6 +97,12 @@ public class BaseDeviceHandler implements IDeviceHandler {
...
@@ -95,6 +97,12 @@ public class BaseDeviceHandler implements IDeviceHandler {
@Autowired
@Autowired
protected
LiteOrderCache
liteOrderCache
;
protected
LiteOrderCache
liteOrderCache
;
@Autowired
private
ILiteOrderManager
liteOrderManager
;
@Autowired
private
ILiteOrderItemManager
liteOrderItemManager
;
/**
/**
* CID的服务器消息(key 为 cid)
* CID的服务器消息(key 为 cid)
*/
*/
...
@@ -663,13 +671,15 @@ public class BaseDeviceHandler implements IDeviceHandler {
...
@@ -663,13 +671,15 @@ public class BaseDeviceHandler implements IDeviceHandler {
//判断是否是工单出库
//判断是否是工单出库
if
(
ObjectUtil
.
isNotEmpty
(
task
.
getSourceId
())&&
ObjectUtil
.
isNotEmpty
(
task
.
getSourceName
())&&
task
.
isOrderTask
()){
if
(
ObjectUtil
.
isNotEmpty
(
task
.
getSourceId
())&&
ObjectUtil
.
isNotEmpty
(
task
.
getSourceName
())&&
task
.
isOrderTask
()){
log
.
info
(
"工单["
+
task
.
getSourceId
()+
"]物料["
+
task
.
getBarcode
()+
"]ItemId="
+
task
.
getSubSourceId
()
+
"出库完成"
);
LiteOrder
liteOrder
=
liteOrderCache
.
findOrderByNo
(
task
.
getSourceName
());
LiteOrder
liteOrder
=
liteOrderManager
.
get
(
task
.
getSourceId
());
LiteOrderItem
item
=
liteOrder
.
getItemById
(
task
.
getSubSourceId
());
//LiteOrderItem item= liteOrderItemManager.get(task.getSubSourceId());
//liteOrder.getItemById(task.getSubSourceId());
String
station
=
task
.
getSubSourceInfo
();
int
interceptFlag
=
task
.
isNeedSplitting
()?
1
:
0
;
int
interceptFlag
=
task
.
isNeedSplitting
()?
1
:
0
;
int
interceptQty
=
task
.
getNeedQty
();
int
interceptQty
=
task
.
getNeedQty
();
//工单出库出库完成,7.3排程发料过账接口
//工单出库出库完成,7.3排程发料过账接口
ScheduleTaskInfo
taskInfo
=
new
ScheduleTaskInfo
(
liteOrder
.
getJobNo
(),
liteOrder
.
getReplenishmentNo
(),
item
.
getStation
()
,
liteOrder
.
getBaseCode
(),
liteOrder
.
getLgort
(),
task
.
getNum
(),
interceptFlag
,
interceptQty
,
task
.
getBarcode
());
ScheduleTaskInfo
taskInfo
=
new
ScheduleTaskInfo
(
liteOrder
.
getJobNo
(),
liteOrder
.
getReplenishmentNo
(),
station
,
liteOrder
.
getBaseCode
(),
liteOrder
.
getLgort
(),
task
.
getNum
(),
interceptFlag
,
interceptQty
,
task
.
getBarcode
());
boolean
result
=
HikApi
.
scheduleTaskApi
(
task
.
getOperator
(),
taskInfo
);
boolean
result
=
HikApi
.
scheduleTaskApi
(
task
.
getOperator
(),
taskInfo
);
}
else
{
}
else
{
//出库完成,调用 ,7.6出库下架过账接口
//出库完成,调用 ,7.6出库下架过账接口
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLPShelfHandler.java
查看文件 @
cbfa410
...
@@ -112,7 +112,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
...
@@ -112,7 +112,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
taskService
.
updateQueueTask
(
queueTask
);
taskService
.
updateQueueTask
(
queueTask
);
if
(
Strings
.
isNotBlank
(
queueTask
.
getPosName
())){
if
(
Strings
.
isNotBlank
(
queueTask
.
getPosName
())){
statusBean
.
addData
(
"open"
,
queueTask
.
getPosName
()
+
"="
+
color
.
name
());
statusBean
.
addData
(
"open"
,
queueTask
.
getPosName
()
+
"="
+
color
.
name
());
log
.
info
(
"库位["
+
queueTask
.
getPosName
()
+
"]["
+
queueTask
.
getBarcode
()+
"]+亮灯:"
+
color
.
name
());
log
.
info
(
"
发送到客户端
库位["
+
queueTask
.
getPosName
()
+
"]["
+
queueTask
.
getBarcode
()+
"]+亮灯:"
+
color
.
name
());
}
}
}
}
}
}
...
@@ -151,7 +151,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
...
@@ -151,7 +151,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
List
<
String
>
ngToOk
=
new
ArrayList
<>();
List
<
String
>
ngToOk
=
new
ArrayList
<>();
//数据库有信息,实际无料
//数据库有信息,实际无料
if
(
noReelPosErrorList
.
length
>
0
){
if
(
noReelPosErrorList
.
length
>
0
){
log
.
info
(
"开始检测noReelPosErrorList"
);
//
log.info("开始检测noReelPosErrorList");
Query
query
=
new
Query
(
Criteria
.
where
(
"posName"
).
in
(
noReelPosErrorList
));
Query
query
=
new
Query
(
Criteria
.
where
(
"posName"
).
in
(
noReelPosErrorList
));
List
<
StoragePos
>
posList
=
storagePosManager
.
findByQuery
(
query
);
List
<
StoragePos
>
posList
=
storagePosManager
.
findByQuery
(
query
);
for
(
StoragePos
pos:
posList
)
{
for
(
StoragePos
pos:
posList
)
{
...
...
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
查看文件 @
cbfa410
...
@@ -6,31 +6,28 @@ import com.google.common.collect.Lists;
...
@@ -6,31 +6,28 @@ import com.google.common.collect.Lists;
import
com.google.common.collect.Maps
;
import
com.google.common.collect.Maps
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.QueryHelp
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.common.utils.YmlUpdateUtil
;
import
com.neotel.smfcore.common.utils.YmlUpdateUtil
;
import
com.neotel.smfcore.core.barcode.bean.PlateSizeBean
;
import
com.neotel.smfcore.core.barcode.service.manager.IComponentManager
;
import
com.neotel.smfcore.core.barcode.service.manager.IComponentManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.service.po.Component
;
import
com.neotel.smfcore.core.barcode.service.po.Component
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.inList.util.InListCache
;
import
com.neotel.smfcore.core.inList.util.InListCache
;
import
com.neotel.smfcore.core.language.service.bean.LanguageInfo
;
import
com.neotel.smfcore.core.language.service.bean.LanguageInfo
;
import
com.neotel.smfcore.core.language.service.po.LanguageMsg
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.storage.bean.InventoryItem
;
import
com.neotel.smfcore.core.storage.bean.InventoryItem
;
import
com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE
;
import
com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE
;
import
com.neotel.smfcore.core.storage.enums.COMPATIBLE_TYPE
;
import
com.neotel.smfcore.core.storage.enums.COMPATIBLE_TYPE
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.service.manager.IStorageManager
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.bean.OrderSetting
;
import
com.neotel.smfcore.core.system.bean.OrderSetting
;
import
com.neotel.smfcore.core.system.service.dao.ICacheItemDao
;
import
com.neotel.smfcore.core.system.service.dao.ICacheItemDao
;
import
com.neotel.smfcore.core.system.service.dao.ISettingsDao
;
import
com.neotel.smfcore.core.system.service.dao.ISettingsDao
;
import
com.neotel.smfcore.core.barcode.bean.PlateSizeBean
;
import
com.neotel.smfcore.core.storage.service.manager.IStorageManager
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.system.service.po.CacheItem
;
import
com.neotel.smfcore.core.system.service.po.CacheItem
;
import
com.neotel.smfcore.core.system.service.po.Settings
;
import
com.neotel.smfcore.core.system.service.po.Settings
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
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
;
...
@@ -39,8 +36,6 @@ import org.springframework.stereotype.Repository;
...
@@ -39,8 +36,6 @@ import org.springframework.stereotype.Repository;
import
javax.annotation.PostConstruct
;
import
javax.annotation.PostConstruct
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
/**
/**
* 缓存
* 缓存
...
@@ -49,46 +44,46 @@ import java.util.regex.Pattern;
...
@@ -49,46 +44,46 @@ import java.util.regex.Pattern;
@Repository
@Repository
public
class
DataCache
{
public
class
DataCache
{
/**
* 是否需要推送温湿度报警值
*/
public
static
Map
<
String
,
Boolean
>
needUpdateHumidityMap
=
new
ConcurrentHashMap
<>();
/**
* 一些设置的缓存
*/
public
static
Map
<
String
,
Object
>
cacheMap
=
Maps
.
newConcurrentMap
();
/**
* 出库方式
*/
private
static
Settings
settings
;
/**
* 库存 map, key 为 cid,value 为料盘存量 map(key为 PartNumber,value 为 库存数量及盘数的Bean)
*/
private
static
Map
<
String
,
Map
<
String
,
InventoryItem
>>
inventoryMap
=
new
ConcurrentHashMap
<>();
/**
* 库位占用Map, key为cid,value为已使用的库位列表
*/
private
static
Map
<
String
,
List
<
String
>>
usedPosNameMap
=
new
ConcurrentHashMap
<>();
/**
* 所有的料仓 key 为 cid, value 为 Storage
*/
private
static
Map
<
String
,
Storage
>
allStorage
=
new
ConcurrentHashMap
<>();
protected
final
transient
Logger
log
=
LogManager
.
getLogger
(
getClass
());
protected
final
transient
Logger
log
=
LogManager
.
getLogger
(
getClass
());
@Autowired
@Autowired
private
IStoragePosManager
storagePosManager
;
private
IStoragePosManager
storagePosManager
;
@Autowired
@Autowired
private
IStorageManager
storageManager
;
private
IStorageManager
storageManager
;
@Autowired
@Autowired
private
ISettingsDao
settingsDao
;
private
ISettingsDao
settingsDao
;
@Autowired
@Autowired
private
CodeResolve
codeResolve
;
private
CodeResolve
codeResolve
;
@Autowired
@Autowired
private
ICacheItemDao
cacheItemDao
;
private
ICacheItemDao
cacheItemDao
;
@Autowired
@Autowired
private
InListCache
inListCache
;
private
InListCache
inListCache
;
@Autowired
@Autowired
private
IComponentManager
componentManager
;
private
IComponentManager
componentManager
;
/**
* 是否需要推送温湿度报警值
*/
public
static
Map
<
String
,
Boolean
>
needUpdateHumidityMap
=
new
ConcurrentHashMap
<>();
/**
* 一些设置的缓存
*/
public
static
Map
<
String
,
Object
>
cacheMap
=
Maps
.
newConcurrentMap
();
/**
* 出库方式
*/
private
static
Settings
settings
;
@PostConstruct
@PostConstruct
public
void
initialize
()
{
public
void
initialize
()
{
settings
=
getSettings
();
settings
=
getSettings
();
...
@@ -111,14 +106,15 @@ public class DataCache {
...
@@ -111,14 +106,15 @@ public class DataCache {
/**
/**
* 获取缓存信息
* 获取缓存信息
*
* @param cacheKey
* @param cacheKey
* @param <T>
* @param <T>
* @return
* @return
*/
*/
public
<
T
>
T
getCache
(
String
cacheKey
){
public
<
T
>
T
getCache
(
String
cacheKey
)
{
Object
value
=
cacheMap
.
get
(
cacheKey
);
Object
value
=
cacheMap
.
get
(
cacheKey
);
if
(
value
!=
null
)
{
if
(
value
!=
null
)
{
return
(
T
)
value
;
return
(
T
)
value
;
}
}
return
null
;
return
null
;
}
}
...
@@ -131,7 +127,7 @@ public class DataCache {
...
@@ -131,7 +127,7 @@ public class DataCache {
return
orderSetting
;
return
orderSetting
;
}
}
public
List
<
LanguageInfo
>
getLanguageList
(){
public
List
<
LanguageInfo
>
getLanguageList
()
{
List
<
LanguageInfo
>
lanList
=
getCache
(
Constants
.
CACHE_languageType
);
List
<
LanguageInfo
>
lanList
=
getCache
(
Constants
.
CACHE_languageType
);
if
(
lanList
==
null
||
lanList
.
size
()
<=
0
)
{
if
(
lanList
==
null
||
lanList
.
size
()
<=
0
)
{
lanList
=
MessageUtils
.
getDefaultLanList
();
lanList
=
MessageUtils
.
getDefaultLanList
();
...
@@ -143,18 +139,18 @@ public class DataCache {
...
@@ -143,18 +139,18 @@ public class DataCache {
/**
/**
* 更新缓存信息
* 更新缓存信息
*/
*/
public
void
updateCache
(
String
cacheKey
,
Object
value
){
public
void
updateCache
(
String
cacheKey
,
Object
value
)
{
cacheItemDao
.
updateCacheItem
(
cacheKey
,
value
);
cacheItemDao
.
updateCacheItem
(
cacheKey
,
value
);
cacheMap
.
put
(
cacheKey
,
value
);
cacheMap
.
put
(
cacheKey
,
value
);
if
(
cacheKey
.
equals
(
Constants
.
CACHE_CodeRule
))
{
if
(
cacheKey
.
equals
(
Constants
.
CACHE_CodeRule
))
{
List
<
String
>
ruleList
=(
List
<
String
>)
value
;
List
<
String
>
ruleList
=
(
List
<
String
>)
value
;
codeResolve
.
updateBarcodeRuleList
(
ruleList
);
codeResolve
.
updateBarcodeRuleList
(
ruleList
);
}
}
log
.
info
(
"updateCache ["
+
cacheKey
+
"]=["
+
value
+
"]"
);
log
.
info
(
"updateCache ["
+
cacheKey
+
"]=["
+
value
+
"]"
);
}
}
public
String
GetConfigCache
(
String
cacheKey
,
String
configKey
,
String
configValue
)
{
public
String
GetConfigCache
(
String
cacheKey
,
String
configKey
,
String
configValue
)
{
if
(
StringUtils
.
isEmpty
(
configKey
)
||
StringUtils
.
isEmpty
(
cacheKey
))
{
if
(
StringUtils
.
isEmpty
(
configKey
)
||
StringUtils
.
isEmpty
(
cacheKey
))
{
return
configValue
;
return
configValue
;
}
}
...
@@ -177,56 +173,15 @@ public class DataCache {
...
@@ -177,56 +173,15 @@ public class DataCache {
/**
/**
* 是否需要推送温湿度报警值
* 是否需要推送温湿度报警值
*/
*/
public
boolean
needUpdateHumidiy
(
String
cid
){
public
boolean
needUpdateHumidiy
(
String
cid
)
{
Boolean
needUpdateHumidiy
=
needUpdateHumidityMap
.
get
(
cid
);
Boolean
needUpdateHumidiy
=
needUpdateHumidityMap
.
get
(
cid
);
if
(
needUpdateHumidiy
==
null
||
needUpdateHumidiy
)
{
if
(
needUpdateHumidiy
==
null
||
needUpdateHumidiy
)
{
needUpdateHumidityMap
.
put
(
cid
,
false
);
needUpdateHumidityMap
.
put
(
cid
,
false
);
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
public
Settings
getSettings
(){
if
(
settings
==
null
){
List
<
Settings
>
allSettings
=
settingsDao
.
findAll
();
if
(
allSettings
==
null
||
allSettings
.
isEmpty
()){
settings
=
new
Settings
();
// settings.setOutType(CHECKOUT_TYPE.EFFICIENCY.name());
settings
=
settingsDao
.
save
(
settings
);
}
else
{
settings
=
allSettings
.
get
(
0
);
}
List
<
String
>
ruleList
=
settings
.
getCodeRuleList
();
codeResolve
.
updateBarcodeRuleList
(
ruleList
);
}
return
settings
;
}
/**
* 出库方式
*/
public
CHECKOUT_TYPE
getCheckOutType
(){
// String outType = getSettings().getOutType();
String
outType
=
getCache
(
Constants
.
CACHE_CheckOutType
);
if
(
ObjectUtil
.
isEmpty
(
outType
)){
outType
=
CHECKOUT_TYPE
.
EFFICIENCY
.
name
();
updateCache
(
Constants
.
CACHE_CheckOutType
,
outType
);
log
.
info
(
"未配置 出库策略配置类型,默认为"
+
outType
);
}
return
CHECKOUT_TYPE
.
valueOf
(
outType
);
}
public
Settings
updateSettings
(
Settings
newSetting
){
settings
=
settingsDao
.
save
(
newSetting
);
List
<
String
>
ruleItems
=
settings
.
getCodeRuleList
();
codeResolve
.
updateBarcodeRuleList
(
ruleItems
);
needUpdateHumidityMap
=
new
ConcurrentHashMap
<>();
return
settings
;
}
// public List<String> getCids(){
// public List<String> getCids(){
// List<String> cids = new ArrayList<>();
// List<String> cids = new ArrayList<>();
// for (Storage storage : getAllStorage().values()){
// for (Storage storage : getAllStorage().values()){
...
@@ -264,23 +219,46 @@ public class DataCache {
...
@@ -264,23 +219,46 @@ public class DataCache {
// return null;
// return null;
// }
// }
public
Settings
getSettings
()
{
if
(
settings
==
null
)
{
List
<
Settings
>
allSettings
=
settingsDao
.
findAll
();
if
(
allSettings
==
null
||
allSettings
.
isEmpty
())
{
settings
=
new
Settings
();
// settings.setOutType(CHECKOUT_TYPE.EFFICIENCY.name());
settings
=
settingsDao
.
save
(
settings
);
}
else
{
settings
=
allSettings
.
get
(
0
);
}
/**
List
<
String
>
ruleList
=
settings
.
getCodeRuleList
();
* 库存 map, key 为 cid,value 为料盘存量 map(key为 PartNumber,value 为 库存数量及盘数的Bean)
codeResolve
.
updateBarcodeRuleList
(
ruleList
);
*/
}
private
static
Map
<
String
,
Map
<
String
,
InventoryItem
>>
inventoryMap
=
new
ConcurrentHashMap
<>();
return
settings
;
}
/**
/**
*
库位占用Map, key为cid,value为已使用的库位列表
*
出库方式
*/
*/
private
static
Map
<
String
,
List
<
String
>>
usedPosNameMap
=
new
ConcurrentHashMap
<>();
public
CHECKOUT_TYPE
getCheckOutType
()
{
// String outType = getSettings().getOutType();
String
outType
=
getCache
(
Constants
.
CACHE_CheckOutType
);
if
(
ObjectUtil
.
isEmpty
(
outType
))
{
outType
=
CHECKOUT_TYPE
.
EFFICIENCY
.
name
();
updateCache
(
Constants
.
CACHE_CheckOutType
,
outType
);
log
.
info
(
"未配置 出库策略配置类型,默认为"
+
outType
);
}
return
CHECKOUT_TYPE
.
valueOf
(
outType
);
}
public
Settings
updateSettings
(
Settings
newSetting
)
{
settings
=
settingsDao
.
save
(
newSetting
);
List
<
String
>
ruleItems
=
settings
.
getCodeRuleList
();
codeResolve
.
updateBarcodeRuleList
(
ruleItems
);
needUpdateHumidityMap
=
new
ConcurrentHashMap
<>();
return
settings
;
}
/**
//
* 所有的料仓 key 为 cid, value 为 Storage
*/
private
static
Map
<
String
,
Storage
>
allStorage
=
new
ConcurrentHashMap
<>();
//
//
//
// /**
// /**
// * 某个区域需要进行清理呆滞物料的所有料仓(虚拟仓应该不需要清理的)
// * 某个区域需要进行清理呆滞物料的所有料仓(虚拟仓应该不需要清理的)
...
@@ -296,14 +274,14 @@ public class DataCache {
...
@@ -296,14 +274,14 @@ public class DataCache {
// return storageIds;
// return storageIds;
// }
// }
//
//
public
Map
<
String
,
Storage
>
getAllStorage
(){
public
Map
<
String
,
Storage
>
getAllStorage
()
{
if
(
allStorage
.
isEmpty
())
{
if
(
allStorage
.
isEmpty
())
{
synchronized
(
allStorage
){
synchronized
(
allStorage
)
{
if
(
allStorage
.
isEmpty
())
{
if
(
allStorage
.
isEmpty
())
{
List
<
Storage
>
all
=
storageManager
.
findAll
();
List
<
Storage
>
all
=
storageManager
.
findAll
();
if
(
all
!=
null
)
{
if
(
all
!=
null
)
{
Map
<
String
,
Storage
>
map
=
new
ConcurrentHashMap
<>();
Map
<
String
,
Storage
>
map
=
new
ConcurrentHashMap
<>();
for
(
Storage
storage
:
all
)
{
for
(
Storage
storage
:
all
)
{
List
<
PlateSizeBean
>
plateSizeBeanList
=
storagePosManager
.
getStoragePosUsage
(
storage
.
getId
());
List
<
PlateSizeBean
>
plateSizeBeanList
=
storagePosManager
.
getStoragePosUsage
(
storage
.
getId
());
storage
.
initUsage
(
plateSizeBeanList
);
storage
.
initUsage
(
plateSizeBeanList
);
...
@@ -313,7 +291,7 @@ public class DataCache {
...
@@ -313,7 +291,7 @@ public class DataCache {
}
}
allStorage
=
map
;
allStorage
=
map
;
log
.
info
(
"加载所有料仓["
+
all
.
size
()+
"]信息到缓存"
);
log
.
info
(
"加载所有料仓["
+
all
.
size
()
+
"]信息到缓存"
);
}
}
}
}
}
}
...
@@ -336,8 +314,8 @@ public class DataCache {
...
@@ -336,8 +314,8 @@ public class DataCache {
/**
/**
* 根据 cid 获取料仓信息
* 根据 cid 获取料仓信息
*/
*/
public
Storage
getStorage
(
String
cid
){
public
Storage
getStorage
(
String
cid
)
{
if
(
Strings
.
isNullOrEmpty
(
cid
))
{
if
(
Strings
.
isNullOrEmpty
(
cid
))
{
return
null
;
return
null
;
}
}
return
getAllStorage
().
get
(
cid
);
return
getAllStorage
().
get
(
cid
);
...
@@ -346,26 +324,28 @@ public class DataCache {
...
@@ -346,26 +324,28 @@ public class DataCache {
/**
/**
* 根据 Id 获取料仓信息
* 根据 Id 获取料仓信息
*/
*/
public
Storage
getStorageById
(
String
storageId
){
public
Storage
getStorageById
(
String
storageId
)
{
for
(
Storage
storage
:
getAllStorage
().
values
())
{
for
(
Storage
storage
:
getAllStorage
().
values
())
{
if
(
storage
.
getId
().
equals
(
storageId
))
{
if
(
storage
.
getId
().
equals
(
storageId
))
{
return
storage
;
return
storage
;
}
}
}
}
return
null
;
return
null
;
}
}
/**
/**
* 根据 料仓名称 Name 获取料仓信息
* 根据 料仓名称 Name 获取料仓信息
*/
*/
public
Storage
getStorageByName
(
String
storageName
){
public
Storage
getStorageByName
(
String
storageName
)
{
for
(
Storage
storage
:
getAllStorage
().
values
())
{
for
(
Storage
storage
:
getAllStorage
().
values
())
{
if
(
storage
.
getName
().
equals
(
storageName
))
{
if
(
storage
.
getName
().
equals
(
storageName
))
{
return
storage
;
return
storage
;
}
}
}
}
return
null
;
return
null
;
}
}
public
Storage
reloadStorage
(
Storage
storage
,
String
oldCid
)
throws
ValidateException
{
public
Storage
reloadStorage
(
Storage
storage
,
String
oldCid
)
throws
ValidateException
{
if
(!
oldCid
.
equals
(
""
)
&&
allStorage
.
containsKey
(
oldCid
))
{
if
(!
oldCid
.
equals
(
""
)
&&
allStorage
.
containsKey
(
oldCid
))
{
allStorage
.
remove
(
oldCid
);
allStorage
.
remove
(
oldCid
);
...
@@ -390,40 +370,42 @@ public class DataCache {
...
@@ -390,40 +370,42 @@ public class DataCache {
/**
/**
* 锁定库存
* 锁定库存
*
* @param cid
* @param cid
* @param partNumber 物料编号
* @param partNumber 物料编号
* @return 锁定结果,true 表示有足够的库存,锁定成功;false表示库存不足,锁定失败
* @return 锁定结果,
true 表示有足够的库存,锁定成功;false表示库存不足,锁定失败
*/
*/
public
boolean
lockOneReel
(
String
cid
,
String
partNumber
){
public
boolean
lockOneReel
(
String
cid
,
String
partNumber
)
{
boolean
result
=
false
;
boolean
result
=
false
;
InventoryItem
inventoryItem
=
getStorageInventoryByPartNumber
(
cid
,
partNumber
);
InventoryItem
inventoryItem
=
getStorageInventoryByPartNumber
(
cid
,
partNumber
);
if
(
inventoryItem
!=
null
)
{
if
(
inventoryItem
!=
null
)
{
int
lockReel
=
inventoryItem
.
getLockReel
();
int
lockReel
=
inventoryItem
.
getLockReel
();
//理论上这里是同一个对象,不需要再显式的放入map 中
//理论上这里是同一个对象,不需要再显式的放入map 中
result
=
inventoryItem
.
lockOne
();
result
=
inventoryItem
.
lockOne
();
log
.
info
(
"锁定料仓["
+
cid
+
"]物料["
+
partNumber
+
"],锁定数量["
+
lockReel
+
"]=>["
+
inventoryItem
.
getLockReel
()+
"],当前库存:"
+
inventoryItem
.
getStockReel
());
log
.
info
(
"锁定料仓["
+
cid
+
"]物料["
+
partNumber
+
"],锁定数量["
+
lockReel
+
"]=>["
+
inventoryItem
.
getLockReel
()
+
"],当前库存:"
+
inventoryItem
.
getStockReel
());
updateStorageInventory
(
cid
,
inventoryItem
);
updateStorageInventory
(
cid
,
inventoryItem
);
}
}
return
result
;
return
result
;
}
}
/**
/**
* 解除锁定库存(出库任务完成或取消时调用)
* 解除锁定库存(出库任务完成或取消时调用)
*/
*/
public
void
unLockOneReel
(
String
cid
,
String
partNumber
){
public
void
unLockOneReel
(
String
cid
,
String
partNumber
)
{
InventoryItem
partNumberInventory
=
getStorageInventoryByPartNumber
(
cid
,
partNumber
);
InventoryItem
partNumberInventory
=
getStorageInventoryByPartNumber
(
cid
,
partNumber
);
if
(
partNumberInventory
!=
null
)
{
if
(
partNumberInventory
!=
null
)
{
int
lockReel
=
partNumberInventory
.
getLockReel
();
int
lockReel
=
partNumberInventory
.
getLockReel
();
//理论上这里是同一个对象,不需要再显式的放入map 中
//理论上这里是同一个对象,不需要再显式的放入map 中
partNumberInventory
.
unLock
(
1
);
partNumberInventory
.
unLock
(
1
);
log
.
info
(
"解除锁定料仓["
+
cid
+
"]物料["
+
partNumber
+
"],锁定数量["
+
lockReel
+
"]=>["
+
partNumberInventory
.
getLockReel
()+
"],当前库存:"
+
partNumberInventory
.
getStockReel
());
log
.
info
(
"解除锁定料仓["
+
cid
+
"]物料["
+
partNumber
+
"],锁定数量["
+
lockReel
+
"]=>["
+
partNumberInventory
.
getLockReel
()
+
"],当前库存:"
+
partNumberInventory
.
getStockReel
());
updateStorageInventory
(
cid
,
partNumberInventory
);
updateStorageInventory
(
cid
,
partNumberInventory
);
}
}
}
}
/**
/**
* 获取库存信息,key 为 PN
* 获取库存信息,key 为 PN
*/
*/
public
Map
<
String
,
InventoryItem
>
getAllInventory
(
List
<
String
>
storageIds
,
String
blurry
)
{
public
Map
<
String
,
InventoryItem
>
getAllInventory
(
List
<
String
>
storageIds
,
String
blurry
)
{
Map
<
String
,
Storage
>
allStorages
=
getAllStorage
();
Map
<
String
,
Storage
>
allStorages
=
getAllStorage
();
List
<
Storage
>
storages
=
Lists
.
newArrayList
();
List
<
Storage
>
storages
=
Lists
.
newArrayList
();
for
(
Storage
storage
:
for
(
Storage
storage
:
...
@@ -436,7 +418,7 @@ public class DataCache {
...
@@ -436,7 +418,7 @@ public class DataCache {
Map
<
String
,
InventoryItem
>
resultMap
=
new
HashMap
<>();
Map
<
String
,
InventoryItem
>
resultMap
=
new
HashMap
<>();
for
(
InventoryItem
item
:
map
.
values
())
{
for
(
InventoryItem
item
:
map
.
values
())
{
if
(
ObjectUtil
.
isNotEmpty
(
blurry
))
{
if
(
ObjectUtil
.
isNotEmpty
(
blurry
))
{
if
(
item
.
getPartNumber
().
contains
(
blurry
))
{
if
(
item
.
getPartNumber
().
contains
(
blurry
))
{
resultMap
.
put
(
item
.
getPartNumber
(),
item
);
resultMap
.
put
(
item
.
getPartNumber
(),
item
);
}
}
}
else
{
}
else
{
...
@@ -449,19 +431,19 @@ public class DataCache {
...
@@ -449,19 +431,19 @@ public class DataCache {
/**
/**
* 获取某些料仓的库存信息
* 获取某些料仓的库存信息
*/
*/
public
Map
<
String
,
InventoryItem
>
getInventory
(
Collection
<
Storage
>
storageList
)
{
public
Map
<
String
,
InventoryItem
>
getInventory
(
Collection
<
Storage
>
storageList
)
{
Map
<
String
,
InventoryItem
>
resultMap
=
Maps
.
newHashMap
();
Map
<
String
,
InventoryItem
>
resultMap
=
Maps
.
newHashMap
();
for
(
Storage
storage
:
storageList
)
{
for
(
Storage
storage
:
storageList
)
{
Map
<
String
,
InventoryItem
>
storageInventory
=
getStorageInventory
(
storage
.
getCid
());
Map
<
String
,
InventoryItem
>
storageInventory
=
getStorageInventory
(
storage
.
getCid
());
for
(
InventoryItem
storageInventoryItem
:
storageInventory
.
values
())
{
for
(
InventoryItem
storageInventoryItem
:
storageInventory
.
values
())
{
storageInventoryItem
.
setStorageName
(
storage
.
getName
());
storageInventoryItem
.
setStorageName
(
storage
.
getName
());
String
partNumber
=
storageInventoryItem
.
getPartNumber
();
String
partNumber
=
storageInventoryItem
.
getPartNumber
();
InventoryItem
pnInventoryItem
=
resultMap
.
get
(
storageInventoryItem
.
getPartNumber
());
InventoryItem
pnInventoryItem
=
resultMap
.
get
(
storageInventoryItem
.
getPartNumber
());
if
(
pnInventoryItem
==
null
)
{
if
(
pnInventoryItem
==
null
)
{
pnInventoryItem
=
new
InventoryItem
();
pnInventoryItem
=
new
InventoryItem
();
pnInventoryItem
.
setStorageName
(
storageInventoryItem
.
getStorageName
());
pnInventoryItem
.
setStorageName
(
storageInventoryItem
.
getStorageName
());
pnInventoryItem
.
setStorageId
(
storage
.
getId
());
pnInventoryItem
.
setStorageId
(
storage
.
getId
());
}
else
{
}
else
{
pnInventoryItem
.
setStorageName
(
null
);
pnInventoryItem
.
setStorageName
(
null
);
pnInventoryItem
.
setStorageId
(
null
);
pnInventoryItem
.
setStorageId
(
null
);
}
}
...
@@ -471,7 +453,7 @@ public class DataCache {
...
@@ -471,7 +453,7 @@ public class DataCache {
pnInventoryItem
.
setStockReel
(
pnInventoryItem
.
getStockReel
()
+
storageInventoryItem
.
getStockReel
());
pnInventoryItem
.
setStockReel
(
pnInventoryItem
.
getStockReel
()
+
storageInventoryItem
.
getStockReel
());
pnInventoryItem
.
setLockReel
(
pnInventoryItem
.
getLockReel
()
+
storageInventoryItem
.
getLockReel
());
pnInventoryItem
.
setLockReel
(
pnInventoryItem
.
getLockReel
()
+
storageInventoryItem
.
getLockReel
());
resultMap
.
put
(
partNumber
,
pnInventoryItem
);
resultMap
.
put
(
partNumber
,
pnInventoryItem
);
}
}
}
}
return
resultMap
;
return
resultMap
;
...
@@ -480,9 +462,9 @@ public class DataCache {
...
@@ -480,9 +462,9 @@ public class DataCache {
/**
/**
* 获取料仓的库存信息
* 获取料仓的库存信息
*/
*/
public
Map
<
String
,
InventoryItem
>
getStorageInventory
(
String
cid
){
public
Map
<
String
,
InventoryItem
>
getStorageInventory
(
String
cid
)
{
Map
<
String
,
InventoryItem
>
storageInventory
=
inventoryMap
.
get
(
cid
);
Map
<
String
,
InventoryItem
>
storageInventory
=
inventoryMap
.
get
(
cid
);
if
(
storageInventory
==
null
)
{
if
(
storageInventory
==
null
)
{
storageInventory
=
initInventory
(
cid
);
storageInventory
=
initInventory
(
cid
);
}
}
return
storageInventory
;
return
storageInventory
;
...
@@ -492,7 +474,7 @@ public class DataCache {
...
@@ -492,7 +474,7 @@ public class DataCache {
/**
/**
* 出库时清除使用库位列表
* 出库时清除使用库位列表
*/
*/
private
void
removeUsedPosNameList
(
String
cid
,
String
posName
){
private
void
removeUsedPosNameList
(
String
cid
,
String
posName
)
{
List
<
String
>
usedPosNameList
=
getUsedPosNameList
(
cid
);
List
<
String
>
usedPosNameList
=
getUsedPosNameList
(
cid
);
usedPosNameList
.
remove
(
posName
);
usedPosNameList
.
remove
(
posName
);
usedPosNameMap
.
put
(
cid
,
usedPosNameList
);
usedPosNameMap
.
put
(
cid
,
usedPosNameList
);
...
@@ -501,43 +483,44 @@ public class DataCache {
...
@@ -501,43 +483,44 @@ public class DataCache {
/**
/**
* 入库时增加使用库位列表
* 入库时增加使用库位列表
*/
*/
private
void
addUsedPosNameList
(
String
cid
,
String
posName
){
private
void
addUsedPosNameList
(
String
cid
,
String
posName
)
{
List
<
String
>
usedPosNameList
=
getUsedPosNameList
(
cid
);
List
<
String
>
usedPosNameList
=
getUsedPosNameList
(
cid
);
usedPosNameList
.
add
(
posName
);
usedPosNameList
.
add
(
posName
);
usedPosNameMap
.
put
(
cid
,
usedPosNameList
);
usedPosNameMap
.
put
(
cid
,
usedPosNameList
);
}
}
/**
/**
* 获取设备所有占用的库位名称列表
* 获取设备所有占用的库位名称列表
*/
*/
public
List
<
String
>
getUsedPosNameList
(
String
cid
){
public
List
<
String
>
getUsedPosNameList
(
String
cid
)
{
List
<
String
>
posNameList
=
usedPosNameMap
.
get
(
cid
);
List
<
String
>
posNameList
=
usedPosNameMap
.
get
(
cid
);
if
(
posNameList
==
null
)
{
if
(
posNameList
==
null
)
{
Storage
storage
=
getStorage
(
cid
);
Storage
storage
=
getStorage
(
cid
);
posNameList
=
new
ArrayList
<>();
posNameList
=
new
ArrayList
<>();
if
(
storage
!=
null
)
{
if
(
storage
!=
null
)
{
log
.
info
(
"加载["
+
cid
+
"]所有已使用库位到缓存"
);
log
.
info
(
"加载["
+
cid
+
"]所有已使用库位到缓存"
);
List
<
StoragePos
>
allPos
=
storagePosManager
.
findNotEmptyByStorageId
(
storage
.
getId
());
List
<
StoragePos
>
allPos
=
storagePosManager
.
findNotEmptyByStorageId
(
storage
.
getId
());
for
(
StoragePos
pos
:
allPos
)
{
for
(
StoragePos
pos
:
allPos
)
{
posNameList
.
add
(
pos
.
getPosName
());
posNameList
.
add
(
pos
.
getPosName
());
}
}
usedPosNameMap
.
put
(
cid
,
posNameList
);
usedPosNameMap
.
put
(
cid
,
posNameList
);
}
}
}
}
return
posNameList
;
return
posNameList
;
}
}
public
InventoryItem
getStorageInventoryByPartNumber
(
String
cid
,
String
partNumber
){
public
InventoryItem
getStorageInventoryByPartNumber
(
String
cid
,
String
partNumber
)
{
Map
<
String
,
InventoryItem
>
storageInventory
=
getStorageInventory
(
cid
);
Map
<
String
,
InventoryItem
>
storageInventory
=
getStorageInventory
(
cid
);
InventoryItem
partNumberInventoryItem
=
storageInventory
.
get
(
partNumber
);
InventoryItem
partNumberInventoryItem
=
storageInventory
.
get
(
partNumber
);
if
(
partNumberInventoryItem
==
null
)
{
if
(
partNumberInventoryItem
==
null
)
{
partNumberInventoryItem
=
new
InventoryItem
();
partNumberInventoryItem
=
new
InventoryItem
();
partNumberInventoryItem
.
setPartNumber
(
partNumber
);
partNumberInventoryItem
.
setPartNumber
(
partNumber
);
}
}
return
partNumberInventoryItem
;
return
partNumberInventoryItem
;
}
}
private
synchronized
Map
<
String
,
InventoryItem
>
initInventory
(
String
cid
){
private
synchronized
Map
<
String
,
InventoryItem
>
initInventory
(
String
cid
)
{
Storage
storage
=
getStorage
(
cid
);
Storage
storage
=
getStorage
(
cid
);
Map
<
String
,
InventoryItem
>
storageInventoryMap
=
storagePosManager
.
getInventory
(
storage
.
getId
());
Map
<
String
,
InventoryItem
>
storageInventoryMap
=
storagePosManager
.
getInventory
(
storage
.
getId
());
//未完成的 Task 也需要锁定
//未完成的 Task 也需要锁定
...
@@ -555,22 +538,23 @@ public class DataCache {
...
@@ -555,22 +538,23 @@ public class DataCache {
// }
// }
// }
// }
log
.
info
(
"初始化料仓["
+
cid
+
"]的库存信息["
+
storageInventoryMap
.
size
()+
"]条"
);
log
.
info
(
"初始化料仓["
+
cid
+
"]的库存信息["
+
storageInventoryMap
.
size
()
+
"]条"
);
inventoryMap
.
put
(
cid
,
storageInventoryMap
);
inventoryMap
.
put
(
cid
,
storageInventoryMap
);
return
storageInventoryMap
;
return
storageInventoryMap
;
}
}
/**
/**
* 手动修改数量的时候更新库存
* 手动修改数量的时候更新库存
*
* @param cid
* @param cid
* @param partNumber
* @param partNumber
* @param amount
* @param amount
* @return
* @return
*/
*/
private
int
updateInventoryAmount
(
String
cid
,
String
partNumber
,
int
amount
)
{
private
int
updateInventoryAmount
(
String
cid
,
String
partNumber
,
int
amount
)
{
if
(
amount
!=
0
)
{
if
(
amount
!=
0
)
{
InventoryItem
inventoryItem
=
getStorageInventoryByPartNumber
(
cid
,
partNumber
);
InventoryItem
inventoryItem
=
getStorageInventoryByPartNumber
(
cid
,
partNumber
);
if
(
inventoryItem
==
null
)
{
if
(
inventoryItem
==
null
)
{
inventoryItem
=
new
InventoryItem
();
inventoryItem
=
new
InventoryItem
();
inventoryItem
.
setPartNumber
(
partNumber
);
inventoryItem
.
setPartNumber
(
partNumber
);
}
}
...
@@ -584,46 +568,47 @@ public class DataCache {
...
@@ -584,46 +568,47 @@ public class DataCache {
/**
/**
* 修改库存,出库为负,入库为正
* 修改库存,出库为负,入库为正
*/
*/
public
int
updateInventory
(
StoragePos
pos
,
Barcode
barcode
){
public
int
updateInventory
(
StoragePos
pos
,
Barcode
barcode
)
{
Storage
storage
=
getStorageById
(
pos
.
getStorageId
());
Storage
storage
=
getStorageById
(
pos
.
getStorageId
());
String
cid
=
storage
.
getCid
();
String
cid
=
storage
.
getCid
();
String
partNumber
=
barcode
.
getPartNumber
();
String
partNumber
=
barcode
.
getPartNumber
();
int
amount
=
0
;
int
amount
=
0
;
String
sizeStr
=
pos
.
getSizeStr
();
String
sizeStr
=
pos
.
getSizeStr
();
if
(
pos
.
getBarcode
()
==
null
)
{
if
(
pos
.
getBarcode
()
==
null
)
{
//出库
//出库
amount
=
-
barcode
.
getAmount
();
amount
=
-
barcode
.
getAmount
();
storage
.
emptyOnePos
(
pos
);
storage
.
emptyOnePos
(
pos
);
removeUsedPosNameList
(
cid
,
pos
.
getPosName
());
removeUsedPosNameList
(
cid
,
pos
.
getPosName
());
}
else
{
}
else
{
//入库
//入库
amount
=
barcode
.
getAmount
();
amount
=
barcode
.
getAmount
();
storage
.
useOnePos
(
pos
);
storage
.
useOnePos
(
pos
);
addUsedPosNameList
(
cid
,
pos
.
getPosName
());
addUsedPosNameList
(
cid
,
pos
.
getPosName
());
//入库单处理
//入库单处理
if
(
ObjectUtil
.
isNotEmpty
(
storage
.
getInListName
()))
{
if
(
ObjectUtil
.
isNotEmpty
(
storage
.
getInListName
()))
{
inListCache
.
UpdateInList
(
storage
.
getInListName
(),
pos
,
barcode
);
inListCache
.
UpdateInList
(
storage
.
getInListName
(),
pos
,
barcode
);
}
}
}
}
allStorage
.
put
(
cid
,
storage
);
allStorage
.
put
(
cid
,
storage
);
return
updateInventoryAmount
(
cid
,
partNumber
,
amount
);
return
updateInventoryAmount
(
cid
,
partNumber
,
amount
);
}
}
private
void
updateStorageInventory
(
String
cid
,
InventoryItem
inventoryItem
){
private
void
updateStorageInventory
(
String
cid
,
InventoryItem
inventoryItem
)
{
Map
<
String
,
InventoryItem
>
storageInventory
=
inventoryMap
.
get
(
cid
);
Map
<
String
,
InventoryItem
>
storageInventory
=
inventoryMap
.
get
(
cid
);
storageInventory
.
put
(
inventoryItem
.
getPartNumber
(),
inventoryItem
);
storageInventory
.
put
(
inventoryItem
.
getPartNumber
(),
inventoryItem
);
inventoryMap
.
put
(
cid
,
storageInventory
);
inventoryMap
.
put
(
cid
,
storageInventory
);
}
}
public
List
<
String
>
getCidsByGroupId
(
String
groupId
,
boolean
nullReturnAll
){
if
(
groupId
!=
null
&&
groupId
.
equals
(
"-1"
)){
public
List
<
String
>
getCidsByGroupId
(
String
groupId
,
boolean
nullReturnAll
)
{
groupId
=
""
;
if
(
groupId
!=
null
&&
groupId
.
equals
(
"-1"
))
{
groupId
=
""
;
}
}
List
<
String
>
cidList
=
Lists
.
newArrayList
();
List
<
String
>
cidList
=
Lists
.
newArrayList
();
for
(
Storage
storage
:
getAllStorage
().
values
())
{
for
(
Storage
storage
:
getAllStorage
().
values
())
{
if
(
groupId
!=
null
)
{
if
(
groupId
!=
null
)
{
// String storageGroupId = storage.getGroupId();
// String storageGroupId = storage.getGroupId();
// if(ObjectUtils.isEmpty(storageGroupId)){
// if(ObjectUtils.isEmpty(storageGroupId)){
// storageGroupId="";
// storageGroupId="";
...
@@ -631,48 +616,49 @@ public class DataCache {
...
@@ -631,48 +616,49 @@ public class DataCache {
// if ( storageGroupId.equals(groupId)) {
// if ( storageGroupId.equals(groupId)) {
// cidList.add(storage.getCid());
// cidList.add(storage.getCid());
// }
// }
if
(
storage
.
IsRightGroup
(
groupId
))
{
if
(
storage
.
IsRightGroup
(
groupId
))
{
cidList
.
add
(
storage
.
getCid
());
cidList
.
add
(
storage
.
getCid
());
}
}
}
else
if
(
nullReturnAll
)
{
}
else
if
(
nullReturnAll
)
{
cidList
.
add
(
storage
.
getCid
());
cidList
.
add
(
storage
.
getCid
());
}
}
}
}
return
cidList
;
return
cidList
;
}
}
public
List
<
String
>
getStorageIdsByGroupId
(
String
groupId
,
boolean
nullReturnAll
)
{
public
List
<
String
>
getStorageIdsByGroupId
(
String
groupId
,
boolean
nullReturnAll
)
{
if
(
groupId
!=
null
&&
groupId
.
equals
(
"-1"
))
{
if
(
groupId
!=
null
&&
groupId
.
equals
(
"-1"
))
{
groupId
=
""
;
groupId
=
""
;
}
}
List
<
String
>
storageIds
=
Lists
.
newArrayList
();
List
<
String
>
storageIds
=
Lists
.
newArrayList
();
for
(
Storage
storage
:
getAllStorage
().
values
())
{
for
(
Storage
storage
:
getAllStorage
().
values
())
{
if
(
groupId
!=
null
)
{
if
(
groupId
!=
null
)
{
if
(
storage
.
IsRightGroup
(
groupId
))
{
if
(
storage
.
IsRightGroup
(
groupId
))
{
storageIds
.
add
(
storage
.
getId
());
storageIds
.
add
(
storage
.
getId
());
}
}
}
else
if
(
nullReturnAll
)
{
}
else
if
(
nullReturnAll
)
{
storageIds
.
add
(
storage
.
getId
());
storageIds
.
add
(
storage
.
getId
());
}
}
}
}
return
storageIds
;
return
storageIds
;
}
}
public
List
<
String
>
getAvailableStorageIds
(){
public
List
<
String
>
getAvailableStorageIds
()
{
List
<
String
>
availableStorageIds
=
new
ArrayList
<>();
List
<
String
>
availableStorageIds
=
new
ArrayList
<>();
for
(
Storage
storage
:
getAllStorage
().
values
())
{
for
(
Storage
storage
:
getAllStorage
().
values
())
{
//默认所有料仓可用
if
(
storage
.
isAvailable
())
{
// StatusBean statusBean =dataCache. getStatus(storage.getCid());
//设置为不可用的料架,不再进行自动挑料
// if (statusBean.isAvailable())
{
availableStorageIds
.
add
(
storage
.
getId
());
availableStorageIds
.
add
(
storage
.
getId
());
}
else
{
log
.
info
(
"设备"
+
storage
.
getName
()
+
"不可用,挑料时忽略此设备"
);
}
}
}
}
return
availableStorageIds
;
return
availableStorageIds
;
}
}
public
Storage
AutoCreateStorage
(
String
cid
,
String
deviceType
)
{
public
Storage
AutoCreateStorage
(
String
cid
,
String
deviceType
)
{
//判断cid存在
//判断cid存在
Storage
storage
=
null
;
Storage
storage
=
null
;
storage
=
getStorage
(
cid
);
storage
=
getStorage
(
cid
);
...
@@ -695,12 +681,13 @@ public class DataCache {
...
@@ -695,12 +681,13 @@ public class DataCache {
storage
=
storageManager
.
save
(
storage
);
storage
=
storageManager
.
save
(
storage
);
reloadStorage
(
storage
,
""
);
reloadStorage
(
storage
,
""
);
log
.
info
(
"AutoCreateStorage :自动创建料仓完成:cid["
+
storage
.
getCid
()+
"]name["
+
storage
.
getName
()+
"]type["
+
storage
.
getType
()+
"]"
);
log
.
info
(
"AutoCreateStorage :自动创建料仓完成:cid["
+
storage
.
getCid
()
+
"]name["
+
storage
.
getName
()
+
"]type["
+
storage
.
getType
()
+
"]"
);
return
storage
;
return
storage
;
}
}
public
int
getPNsluggishDay
(
String
pn
){
public
int
getPNsluggishDay
(
String
pn
)
{
Component
component
=
componentManager
.
findOneByPN
(
pn
);
Component
component
=
componentManager
.
findOneByPN
(
pn
);
if
(
component
!=
null
)
{
if
(
component
!=
null
)
{
return
component
.
getSluggishDay
();
return
component
.
getSluggishDay
();
}
}
return
0
;
return
0
;
...
...
src/main/java/com/neotel/smfcore/core/hik/rest/SingleInController.java
查看文件 @
cbfa410
...
@@ -248,13 +248,14 @@ public class SingleInController {
...
@@ -248,13 +248,14 @@ public class SingleInController {
if
(
inList
!=
null
){
if
(
inList
!=
null
){
if
(
inList
.
getDocType
()
==
4
){
if
(
inList
.
getDocType
()
==
4
){
//线边仓间入库
//线边仓间入库
businessType
=
"0
1
"
;
businessType
=
"0
2
"
;
businessNo
=
docName
;
businessNo
=
docName
;
}
}
}
}
}
}
if
(
inType
.
equals
(
4
)){
if
(
inType
.
equals
(
4
)){
//退料入库
businessType
=
"01"
;
businessType
=
"01"
;
}
}
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
cbfa410
...
@@ -104,6 +104,20 @@ public class LiteOrderCache implements ITaskListener {
...
@@ -104,6 +104,20 @@ public class LiteOrderCache implements ITaskListener {
liteOrderMap
.
put
(
order
.
getOrderNo
(),
order
);
liteOrderMap
.
put
(
order
.
getOrderNo
(),
order
);
}
}
public
LiteOrder
findOrderById
(
String
orderId
){
for
(
LiteOrder
order
:
liteOrderMap
.
values
())
{
if
(
order
.
getId
().
equals
(
orderId
)){
return
order
;
}
}
LiteOrder
order
=
liteOrderManager
.
get
(
orderId
);
if
(
order
!=
null
){
addOrderToMap
(
order
);
return
order
;
}
return
null
;
}
public
LiteOrder
findOrderByNo
(
String
orderNo
){
public
LiteOrder
findOrderByNo
(
String
orderNo
){
if
(
liteOrderMap
.
containsKey
(
orderNo
)){
if
(
liteOrderMap
.
containsKey
(
orderNo
)){
...
@@ -184,18 +198,19 @@ public class LiteOrderCache implements ITaskListener {
...
@@ -184,18 +198,19 @@ public class LiteOrderCache implements ITaskListener {
private
synchronized
void
finishedOrderTask
(
DataLog
task
)
throws
ValidateException
{
private
synchronized
void
finishedOrderTask
(
DataLog
task
)
throws
ValidateException
{
//更新工单状态
//更新工单状态
String
orderNo
=
task
.
getSourceName
();
String
sourceName
=
task
.
getSourceName
();
if
(!
Strings
.
isNullOrEmpty
(
orderNo
))
{
if
(!
Strings
.
isNullOrEmpty
(
task
.
getSourceId
()
))
{
LiteOrder
order
=
liteOrderMap
.
get
(
orderNo
);
LiteOrder
order
=
findOrderById
(
task
.
getSourceId
()
);
if
(
order
==
null
)
{
if
(
order
==
null
)
{
log
.
info
(
"缓存中未找到
["
+
orderNo
+
"],从数据库中重新加载"
);
log
.
info
(
"缓存中未找到
"
+
sourceName
+
"["
+
task
.
getSourceId
()
+
"],从数据库中重新加载"
);
order
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
order
=
liteOrderManager
.
get
(
task
.
getSourceId
()
);
if
(
order
!=
null
)
{
if
(
order
!=
null
)
{
List
<
LiteOrderItem
>
items
=
liteOrderItemManager
.
findOrderItems
(
orderNo
);
List
<
LiteOrderItem
>
items
=
liteOrderItemManager
.
findOrderItems
(
sourceName
);
order
.
setOrderItems
(
items
);
order
.
setOrderItems
(
items
);
}
}
}
}
if
(
order
!=
null
)
{
if
(
order
!=
null
)
{
String
orderNo
=
order
.
getOrderNo
();
//任务是取消的,需要将总待出库数量-1
//任务是取消的,需要将总待出库数量-1
if
(
task
.
isCancel
())
{
if
(
task
.
isCancel
())
{
order
.
setTaskReelCount
(
order
.
getTaskReelCount
()
-
1
);
order
.
setTaskReelCount
(
order
.
getTaskReelCount
()
-
1
);
...
@@ -239,9 +254,9 @@ public class LiteOrderCache implements ITaskListener {
...
@@ -239,9 +254,9 @@ public class LiteOrderCache implements ITaskListener {
}
}
}
}
liteOrderManager
.
save
(
order
);
liteOrderManager
.
save
(
order
);
liteOrderMap
.
put
(
order
No
,
order
);
liteOrderMap
.
put
(
order
.
getOrderNo
()
,
order
);
}
else
{
}
else
{
log
.
error
(
"完成任务时,未找到工单
["
+
orderNo
+
"]信息"
);
log
.
error
(
"完成任务时,未找到工单
"
+
sourceName
+
"["
+
task
.
getSourceId
()
+
"]信息"
);
}
}
}
}
...
@@ -565,7 +580,6 @@ public class LiteOrderCache implements ITaskListener {
...
@@ -565,7 +580,6 @@ public class LiteOrderCache implements ITaskListener {
DataLog
task
=
taskService
.
newTask
(
pos
)
;
DataLog
task
=
taskService
.
newTask
(
pos
)
;
task
.
setSourceId
(
cacheOrder
.
getId
());
task
.
setSourceId
(
cacheOrder
.
getId
());
task
.
setSourceName
(
cacheOrder
.
getOrderNo
());
task
.
setSubSourceId
(
orderItem
.
getId
());
task
.
setSubSourceId
(
orderItem
.
getId
());
task
.
setSubSourceInfo
(
orderItem
.
getStation
());
task
.
setSubSourceInfo
(
orderItem
.
getStation
());
task
.
setType
(
OP
.
CHECKOUT
);
task
.
setType
(
OP
.
CHECKOUT
);
...
@@ -574,7 +588,9 @@ public class LiteOrderCache implements ITaskListener {
...
@@ -574,7 +588,9 @@ public class LiteOrderCache implements ITaskListener {
task
.
setOperator
(
userName
);
task
.
setOperator
(
userName
);
task
.
setOutType
(
IN_OUT_TYPE
.
OUT_ORDER
);
//工单出库类型为10
task
.
setOutType
(
IN_OUT_TYPE
.
OUT_ORDER
);
//工单出库类型为10
task
.
setSourceName
(
cacheOrder
.
getJobNo
());
if
(
cacheOrder
.
isRepleOrder
()){
if
(
cacheOrder
.
isRepleOrder
()){
//task.setSourceName(cacheOrder.getReplenishmentNo());
task
.
setOutType
(
IN_OUT_TYPE
.
OUT_REPLE
);
//补料出库类型为11
task
.
setOutType
(
IN_OUT_TYPE
.
OUT_REPLE
);
//补料出库类型为11
}
}
if
(
jieliaoPosMap
.
containsKey
(
pos
.
getPosName
())){
if
(
jieliaoPosMap
.
containsKey
(
pos
.
getPosName
())){
...
...
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
查看文件 @
cbfa410
...
@@ -243,6 +243,11 @@ public class LiteOrder extends BasePo implements Serializable {
...
@@ -243,6 +243,11 @@ public class LiteOrder extends BasePo implements Serializable {
setClosed
(
true
);
setClosed
(
true
);
}
}
}
}
if
(
isRepleOrder
()){
//产线补料,直接关闭
setClosed
(
true
);
}
setTaskFinishedTime
(
System
.
currentTimeMillis
());
setTaskFinishedTime
(
System
.
currentTimeMillis
());
}
}
...
...
src/main/java/com/neotel/smfcore/core/outList/rest/OutListController.java
查看文件 @
cbfa410
...
@@ -30,6 +30,7 @@ import io.swagger.annotations.Api;
...
@@ -30,6 +30,7 @@ import io.swagger.annotations.Api;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.logging.log4j.util.Strings
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Criteria
;
...
@@ -215,6 +216,10 @@ public class OutListController {
...
@@ -215,6 +216,10 @@ public class OutListController {
Integer
type
=
Convert
.
toInt
(
params
.
get
(
"docType"
));
Integer
type
=
Convert
.
toInt
(
params
.
get
(
"docType"
));
//先从已存在的出库单查询是否存在
//先从已存在的出库单查询是否存在
if
(
Strings
.
isBlank
(
name
)){
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.empty"
,
"出库单号不能为空"
);
}
OutList
outList
=
outListCache
.
getOutList
(
name
);
OutList
outList
=
outListCache
.
getOutList
(
name
);
if
(
outList
==
null
)
{
if
(
outList
==
null
)
{
//从接口获取出库单
//从接口获取出库单
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/StorageController.java
查看文件 @
cbfa410
...
@@ -7,7 +7,6 @@ import com.neotel.smfcore.common.bean.ResultBean;
...
@@ -7,7 +7,6 @@ import com.neotel.smfcore.common.bean.ResultBean;
import
com.neotel.smfcore.common.csv.CsvReader
;
import
com.neotel.smfcore.common.csv.CsvReader
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.FileUtil
;
import
com.neotel.smfcore.common.utils.FileUtil
;
import
com.neotel.smfcore.common.utils.PointUtil
;
import
com.neotel.smfcore.common.utils.QueryHelp
;
import
com.neotel.smfcore.common.utils.QueryHelp
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.core.device.bean.BoxStatusBean
;
import
com.neotel.smfcore.core.device.bean.BoxStatusBean
;
...
@@ -24,11 +23,8 @@ import com.neotel.smfcore.core.storage.service.manager.IStorageManager;
...
@@ -24,11 +23,8 @@ import com.neotel.smfcore.core.storage.service.manager.IStorageManager;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.bean.OrderSetting
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
com.neotel.smfcore.security.bean.FileProperties
;
import
com.neotel.smfcore.security.bean.FileProperties
;
import
com.neotel.smfcore.security.rest.bean.dto.RoleDto
;
import
com.neotel.smfcore.security.service.manager.IGroupManager
;
import
com.neotel.smfcore.security.service.manager.IGroupManager
;
import
com.neotel.smfcore.security.service.manager.IUserManager
;
import
com.neotel.smfcore.security.service.manager.IUserManager
;
import
com.neotel.smfcore.security.service.po.Group
;
import
com.neotel.smfcore.security.service.po.Group
;
...
@@ -39,7 +35,6 @@ import lombok.RequiredArgsConstructor;
...
@@ -39,7 +35,6 @@ import lombok.RequiredArgsConstructor;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.geo.Point
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.HttpStatus
;
...
@@ -86,12 +81,12 @@ public class StorageController {
...
@@ -86,12 +81,12 @@ public class StorageController {
@ApiOperation
(
"查询料仓"
)
@ApiOperation
(
"查询料仓"
)
@GetMapping
@GetMapping
@PreAuthorize
(
"@el.check('storage:list')"
)
@PreAuthorize
(
"@el.check('storage:list')"
)
public
PageData
<
StorageDto
>
query
(
StorageQueryCriteria
criteria
,
Pageable
pageable
){
public
PageData
<
StorageDto
>
query
(
StorageQueryCriteria
criteria
,
Pageable
pageable
)
{
Query
query
=
QueryHelp
.
getQuery
(
criteria
);
Query
query
=
QueryHelp
.
getQuery
(
criteria
);
PageData
<
Storage
>
pages
=
storageManager
.
findByPage
(
query
,
pageable
);
PageData
<
Storage
>
pages
=
storageManager
.
findByPage
(
query
,
pageable
);
List
<
StorageDto
>
StorageDtos
=
storageMapper
.
toDto
(
pages
.
getContent
());
List
<
StorageDto
>
StorageDtos
=
storageMapper
.
toDto
(
pages
.
getContent
());
StorageDtos
=
updateDtos
(
StorageDtos
);
StorageDtos
=
updateDtos
(
StorageDtos
);
for
(
int
i
=
0
;
i
<
StorageDtos
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
StorageDtos
.
size
();
i
++)
{
StorageDtos
.
get
(
i
).
setOnLine
(
false
);
StorageDtos
.
get
(
i
).
setOnLine
(
false
);
StorageDtos
.
get
(
i
).
setStatus
(
0
);
StorageDtos
.
get
(
i
).
setStatus
(
0
);
StatusBean
bean
=
DevicesStatusUtil
.
getStatusBean
(
StorageDtos
.
get
(
i
).
getCid
());
StatusBean
bean
=
DevicesStatusUtil
.
getStatusBean
(
StorageDtos
.
get
(
i
).
getCid
());
...
@@ -105,11 +100,11 @@ public class StorageController {
...
@@ -105,11 +100,11 @@ public class StorageController {
}
}
}
}
}
}
return
new
PageData
(
StorageDtos
,
pages
.
getTotalElements
());
return
new
PageData
(
StorageDtos
,
pages
.
getTotalElements
());
}
}
private
List
<
StorageDto
>
updateDtos
(
List
<
StorageDto
>
dtoList
){
private
List
<
StorageDto
>
updateDtos
(
List
<
StorageDto
>
dtoList
)
{
for
(
int
i
=
0
;
i
<
dtoList
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
dtoList
.
size
();
i
++)
{
String
groupId
=
""
;
String
groupId
=
""
;
if
(
dtoList
.
get
(
i
).
getGroupId
()
!=
null
&&
(!
dtoList
.
get
(
i
).
getGroupId
().
isEmpty
()))
{
if
(
dtoList
.
get
(
i
).
getGroupId
()
!=
null
&&
(!
dtoList
.
get
(
i
).
getGroupId
().
isEmpty
()))
{
groupId
=
dtoList
.
get
(
i
).
getGroupId
();
groupId
=
dtoList
.
get
(
i
).
getGroupId
();
...
@@ -134,6 +129,7 @@ public class StorageController {
...
@@ -134,6 +129,7 @@ public class StorageController {
}
}
return
dtoList
;
return
dtoList
;
}
}
@ApiOperation
(
"根据组权限返回所有料仓"
)
@ApiOperation
(
"根据组权限返回所有料仓"
)
@GetMapping
(
value
=
"/all"
)
@GetMapping
(
value
=
"/all"
)
// @PreAuthorize("@el.check('storage:list')")
// @PreAuthorize("@el.check('storage:list')")
...
@@ -166,20 +162,21 @@ public class StorageController {
...
@@ -166,20 +162,21 @@ public class StorageController {
@ApiOperation
(
"物料入库界面,返回所有料仓"
)
@ApiOperation
(
"物料入库界面,返回所有料仓"
)
@GetMapping
(
value
=
"/allList"
)
@GetMapping
(
value
=
"/allList"
)
public
List
<
StorageDto
>
all
()
{
public
List
<
StorageDto
>
all
()
{
List
<
Storage
>
storages
=
storageManager
.
findAll
();
List
<
Storage
>
storages
=
storageManager
.
findAll
();
List
<
StorageDto
>
storageDtos
=
storageMapper
.
toDto
(
storages
);
List
<
StorageDto
>
storageDtos
=
storageMapper
.
toDto
(
storages
);
storageDtos
=
updateDtos
(
storageDtos
);
storageDtos
=
updateDtos
(
storageDtos
);
return
storageDtos
;
return
storageDtos
;
}
}
@ApiOperation
(
"料架设置界面,返回所有的料架列表"
)
@ApiOperation
(
"料架设置界面,返回所有的料架列表"
)
@GetMapping
(
value
=
"/allShelf"
)
@GetMapping
(
value
=
"/allShelf"
)
public
List
<
StorageDto
>
allShelf
()
{
public
List
<
StorageDto
>
allShelf
()
{
Query
query
=
new
Query
(
Criteria
.
where
(
"type"
).
in
(
new
String
[]{
DeviceType
.
NLP
.
name
(),
DeviceType
.
NL
.
name
()
}));
Query
query
=
new
Query
(
Criteria
.
where
(
"type"
).
in
(
new
String
[]{
DeviceType
.
NLP
.
name
(),
DeviceType
.
NL
.
name
()
}));
List
<
Storage
>
storages
=
storageManager
.
findByQuery
(
query
);
List
<
Storage
>
storages
=
storageManager
.
findByQuery
(
query
);
List
<
StorageDto
>
storageDtos
=
new
ArrayList
<>();
List
<
StorageDto
>
storageDtos
=
new
ArrayList
<>();
for
(
Storage
storage
:
for
(
Storage
storage
:
storages
)
{
storages
)
{
StorageDto
dto
=
new
StorageDto
();
StorageDto
dto
=
new
StorageDto
();
dto
.
setName
(
storage
.
getName
());
dto
.
setName
(
storage
.
getName
());
dto
.
setId
(
storage
.
getId
());
dto
.
setId
(
storage
.
getId
());
dto
.
setCid
(
storage
.
getCid
());
dto
.
setCid
(
storage
.
getCid
());
...
@@ -187,20 +184,20 @@ public class StorageController {
...
@@ -187,20 +184,20 @@ public class StorageController {
StatusBean
bean
=
DevicesStatusUtil
.
getStatusBean
(
storage
.
getCid
());
StatusBean
bean
=
DevicesStatusUtil
.
getStatusBean
(
storage
.
getCid
());
if
(
bean
!=
null
&&
bean
.
getBoxStatus
()
!=
null
)
{
if
(
bean
!=
null
&&
bean
.
getBoxStatus
()
!=
null
)
{
dto
.
setClientIp
(
bean
.
getClientIp
());
dto
.
setClientIp
(
bean
.
getClientIp
());
String
url
=
"http://"
+
bean
.
getClientIp
()+
":5000/"
;
String
url
=
"http://"
+
bean
.
getClientIp
()
+
":5000/"
;
dto
.
setClientUrl
(
url
);
dto
.
setClientUrl
(
url
);
}
}
storageDtos
.
add
(
dto
);
storageDtos
.
add
(
dto
);
}
}
return
storageDtos
;
return
storageDtos
;
}
}
@ApiOperation
(
"返回所有料仓类型"
)
@ApiOperation
(
"返回所有料仓类型"
)
@GetMapping
(
value
=
"/typeList"
)
@GetMapping
(
value
=
"/typeList"
)
public
List
<
String
>
typeList
()
{
public
List
<
String
>
typeList
()
{
List
<
DeviceType
>
availableTypeList
=
DeviceType
.
availableTypeList
();
List
<
DeviceType
>
availableTypeList
=
DeviceType
.
availableTypeList
();
List
<
String
>
allList
=
new
ArrayList
<>();
List
<
String
>
allList
=
new
ArrayList
<>();
for
(
DeviceType
type
:
for
(
DeviceType
type
:
availableTypeList
)
{
availableTypeList
)
{
allList
.
add
(
type
.
getName
());
allList
.
add
(
type
.
getName
());
}
}
return
allList
;
return
allList
;
...
@@ -210,7 +207,7 @@ public class StorageController {
...
@@ -210,7 +207,7 @@ public class StorageController {
@PostMapping
@PostMapping
@PreAuthorize
(
"@el.check('storage:add')"
)
@PreAuthorize
(
"@el.check('storage:add')"
)
public
ResponseEntity
<
Object
>
create
(
@Validated
@RequestBody
StorageDto
resources
)
{
public
ResponseEntity
<
Object
>
create
(
@Validated
@RequestBody
StorageDto
resources
)
{
Storage
Storage
=
storageMapper
.
toEntity
(
resources
);
Storage
Storage
=
storageMapper
.
toEntity
(
resources
);
saveStorage
(
Storage
);
saveStorage
(
Storage
);
return
new
ResponseEntity
<>(
HttpStatus
.
CREATED
);
return
new
ResponseEntity
<>(
HttpStatus
.
CREATED
);
}
}
...
@@ -219,16 +216,15 @@ public class StorageController {
...
@@ -219,16 +216,15 @@ public class StorageController {
@PutMapping
@PutMapping
@PreAuthorize
(
"@el.check('storage:edit')"
)
@PreAuthorize
(
"@el.check('storage:edit')"
)
public
ResponseEntity
<
Object
>
update
(
@Validated
@RequestBody
StorageDto
resources
)
{
public
ResponseEntity
<
Object
>
update
(
@Validated
@RequestBody
StorageDto
resources
)
{
Storage
Storage
=
storageMapper
.
toEntity
(
resources
);
Storage
Storage
=
storageMapper
.
toEntity
(
resources
);
if
(
Storage
.
getId
()
==
null
)
{
if
(
Storage
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
}
saveStorage
(
Storage
);
saveStorage
(
Storage
);
return
new
ResponseEntity
<>(
HttpStatus
.
OK
);
return
new
ResponseEntity
<>(
HttpStatus
.
OK
);
}
}
@ApiOperation
(
"删除料仓"
)
@ApiOperation
(
"删除料仓"
)
@DeleteMapping
@DeleteMapping
@PreAuthorize
(
"@el.check('storage:del')"
)
@PreAuthorize
(
"@el.check('storage:del')"
)
...
@@ -236,12 +232,13 @@ public class StorageController {
...
@@ -236,12 +232,13 @@ public class StorageController {
for
(
String
id
:
ids
)
{
for
(
String
id
:
ids
)
{
if
(
id
==
null
)
{
if
(
id
==
null
)
{
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
}
}
}
deleteStorages
(
ids
);
deleteStorages
(
ids
);
return
new
ResponseEntity
<>(
HttpStatus
.
OK
);
return
new
ResponseEntity
<>(
HttpStatus
.
OK
);
}
}
public
void
deleteStorages
(
Set
<
String
>
ids
)
{
public
void
deleteStorages
(
Set
<
String
>
ids
)
{
Query
querySto
=
new
Query
(
Criteria
.
where
(
"id"
).
in
(
ids
));
Query
querySto
=
new
Query
(
Criteria
.
where
(
"id"
).
in
(
ids
));
...
@@ -252,16 +249,16 @@ public class StorageController {
...
@@ -252,16 +249,16 @@ public class StorageController {
//验证料仓是否有料
//验证料仓是否有料
Query
query
=
new
Query
(
Criteria
.
where
(
"storageId"
).
is
(
storage
.
getId
()));
Query
query
=
new
Query
(
Criteria
.
where
(
"storageId"
).
is
(
storage
.
getId
()));
List
<
StoragePos
>
posList
=
storagePosManager
.
findByQuery
(
query
);
List
<
StoragePos
>
posList
=
storagePosManager
.
findByQuery
(
query
);
if
(
posList
!=
null
)
{
if
(
posList
!=
null
)
{
if
(
posList
.
size
()>
0
)
{
if
(
posList
.
size
()
>
0
)
{
throw
new
ValidateException
(
"smfcore.posNotDel"
,
"删除失败,请先删除料仓[{0}]的所有库位"
,
new
String
[]{
storage
.
getName
()
});
throw
new
ValidateException
(
"smfcore.posNotDel"
,
"删除失败,请先删除料仓[{0}]的所有库位"
,
new
String
[]{
storage
.
getName
()
});
}
}
for
(
StoragePos
pos
:
posList
for
(
StoragePos
pos
:
posList
)
{
)
{
if
(
pos
.
getBarcode
()
==
null
||
pos
.
getBarcode
().
equals
(
""
))
{
if
(
pos
.
getBarcode
()
==
null
||
pos
.
getBarcode
().
equals
(
""
))
{
}
else
{
}
else
{
throw
new
ValidateException
(
"smfcore.posIsused"
,
"删除失败,料仓[{0}]的库位[{1}}]有料[{2}]"
,
new
String
[]{
storage
.
getName
()
,
pos
.
getPosName
(),
pos
.
getBarcode
().
getBarcode
()});
throw
new
ValidateException
(
"smfcore.posIsused"
,
"删除失败,料仓[{0}]的库位[{1}}]有料[{2}]"
,
new
String
[]{
storage
.
getName
(),
pos
.
getPosName
(),
pos
.
getBarcode
().
getBarcode
()});
// throw new BadRequestException("料仓[" + storage.getName() + "]的库位[" + pos.getPosName() + "]有料[" + pos.getBarcode() + "],删除失败");
// throw new BadRequestException("料仓[" + storage.getName() + "]的库位[" + pos.getPosName() + "]有料[" + pos.getBarcode() + "],删除失败");
}
}
}
}
...
@@ -274,51 +271,54 @@ public class StorageController {
...
@@ -274,51 +271,54 @@ public class StorageController {
}
}
log
.
info
(
"手动删除料仓"
+
delStoName
+
"完成"
);
log
.
info
(
"手动删除料仓"
+
delStoName
+
"完成"
);
}
}
private
Storage
saveStorage
(
Storage
storage
)
{
private
Storage
saveStorage
(
Storage
storage
)
{
if
(
storage
.
getName
()==
null
)
{
if
(
storage
.
getName
()
==
null
)
{
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"name"
}
);
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"name"
}
);
// throw new BadRequestException("料仓名称不能为空");
// throw new BadRequestException("料仓名称不能为空");
}
if
(
storage
.
getCid
()==
null
){
}
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"cid"
}
);
if
(
storage
.
getCid
()
==
null
)
{
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"cid"
});
// throw new BadRequestException("料仓编号不能为空");
// throw new BadRequestException("料仓编号不能为空");
}
if
(
storage
.
getType
()==
null
){
}
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"type"
}
);
if
(
storage
.
getType
()
==
null
)
{
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"type"
});
// throw new BadRequestException("料仓类型不能为空");
// throw new BadRequestException("料仓类型不能为空");
}
if
(
storage
.
getCompatibleType
()==
null
){
}
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"compatibleType"
}
);
if
(
storage
.
getCompatibleType
()
==
null
)
{
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"compatibleType"
});
// throw new BadRequestException("料仓兼容性不能为空");
// throw new BadRequestException("料仓兼容性不能为空");
}
}
String
oldCid
=
""
;
String
oldCid
=
""
;
boolean
isNew
=(
storage
.
getId
()==
null
);
boolean
isNew
=
(
storage
.
getId
()
==
null
);
//判断名称是否重复,cid是否重复
//判断名称是否重复,cid是否重复
Map
<
String
,
Storage
>
storageMap
=
dataCache
.
getAllStorage
();
Map
<
String
,
Storage
>
storageMap
=
dataCache
.
getAllStorage
();
for
(
Storage
s
:
storageMap
.
values
()
for
(
Storage
s
:
storageMap
.
values
()
)
{
)
{
if
(
isNew
||
(!
storage
.
getId
().
equals
(
s
.
getId
())))
{
if
(
isNew
||
(!
storage
.
getId
().
equals
(
s
.
getId
())))
{
if
(
s
.
getName
().
equals
(
storage
.
getName
()))
{
if
(
s
.
getName
().
equals
(
storage
.
getName
()))
{
throw
new
ValidateException
(
"smfcore.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"name"
,
storage
.
getName
()});
throw
new
ValidateException
(
"smfcore.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"name"
,
storage
.
getName
()});
// throw new BadRequestException("料仓名称["+storage.getCid()+"]已存在");
// throw new BadRequestException("料仓名称["+storage.getCid()+"]已存在");
}
}
if
(
s
.
getCid
().
equals
(
storage
.
getCid
()))
{
if
(
s
.
getCid
().
equals
(
storage
.
getCid
()))
{
throw
new
ValidateException
(
"smfcore.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"cid"
,
storage
.
getCid
()});
throw
new
ValidateException
(
"smfcore.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"cid"
,
storage
.
getCid
()});
// throw new BadRequestException("料仓cid["+storage.getCid()+"]已存在");
// throw new BadRequestException("料仓cid["+storage.getCid()+"]已存在");
}
}
}
}
else
if
((!
isNew
)
&&
storage
.
getId
().
equals
(
s
.
getId
()))
{
else
if
((!
isNew
)&&
storage
.
getId
().
equals
(
s
.
getId
())){
oldCid
=
s
.
getCid
();
oldCid
=
s
.
getCid
();
}
}
}
}
if
(
storage
.
getSourcePath
()==
null
)
{
if
(
storage
.
getSourcePath
()
==
null
)
{
storage
.
setSourcePath
(
""
);
storage
.
setSourcePath
(
""
);
}
}
if
(
storage
.
getGroupId
()==
null
||
storage
.
getGroupId
().
isEmpty
())
{
if
(
storage
.
getGroupId
()
==
null
||
storage
.
getGroupId
().
isEmpty
())
{
storage
.
setGroupId
(
""
);
storage
.
setGroupId
(
""
);
}
}
storage
=
storageDao
.
save
(
storage
);
storage
=
storageDao
.
save
(
storage
);
dataCache
.
reloadStorage
(
storage
,
oldCid
);
dataCache
.
reloadStorage
(
storage
,
oldCid
);
return
storage
;
return
storage
;
}
}
...
@@ -328,12 +328,12 @@ public class StorageController {
...
@@ -328,12 +328,12 @@ public class StorageController {
// 验证文件上传的格式
// 验证文件上传的格式
String
image
=
"csv"
;
String
image
=
"csv"
;
String
fileType
=
FileUtil
.
getExtensionName
(
uploadFile
.
getOriginalFilename
());
String
fileType
=
FileUtil
.
getExtensionName
(
uploadFile
.
getOriginalFilename
());
if
(
fileType
!=
null
&&
!
image
.
contains
(
fileType
))
{
if
(
fileType
!=
null
&&
!
image
.
contains
(
fileType
))
{
throw
new
ValidateException
(
"smfcore.feleFormatError"
,
"文件格式错误!, 仅支持{0}格式"
,
new
String
[]{
image
});
throw
new
ValidateException
(
"smfcore.feleFormatError"
,
"文件格式错误!, 仅支持{0}格式"
,
new
String
[]{
image
});
}
}
File
folder
=
new
File
(
properties
.
getPath
(),
"pos"
);
File
folder
=
new
File
(
properties
.
getPath
(),
"pos"
);
File
file
=
FileUtil
.
upload
(
uploadFile
,
folder
.
getAbsolutePath
());
File
file
=
FileUtil
.
upload
(
uploadFile
,
folder
.
getAbsolutePath
());
String
resultMsg
=
handleStoragePos
(
file
.
getAbsolutePath
(),
storageId
);
String
resultMsg
=
handleStoragePos
(
file
.
getAbsolutePath
(),
storageId
);
return
ResultBean
.
newOkResult
(
resultMsg
);
return
ResultBean
.
newOkResult
(
resultMsg
);
}
}
...
@@ -345,7 +345,7 @@ public class StorageController {
...
@@ -345,7 +345,7 @@ public class StorageController {
downloadPosModel
(
response
);
downloadPosModel
(
response
);
}
}
public
void
downloadPosModel
(
HttpServletResponse
response
)
throws
IOException
{
public
void
downloadPosModel
(
HttpServletResponse
response
)
throws
IOException
{
try
{
try
{
List
<
Map
<
String
,
Object
>>
maps
=
new
ArrayList
<>();
List
<
Map
<
String
,
Object
>>
maps
=
new
ArrayList
<>();
List
<
String
>
titles
=
new
ArrayList
<>();
List
<
String
>
titles
=
new
ArrayList
<>();
...
@@ -354,11 +354,11 @@ public class StorageController {
...
@@ -354,11 +354,11 @@ public class StorageController {
// int hIndex = csvRead.getCsvIndex("高度","h");
// int hIndex = csvRead.getCsvIndex("高度","h");
// int wIndex = csvRead.getCsvIndex("宽度","w");
// int wIndex = csvRead.getCsvIndex("宽度","w");
titles
.
add
(
"pos"
);
titles
.
add
(
"pos"
);
titles
.
add
(
"pri"
);
titles
.
add
(
"pri"
);
titles
.
add
((
"h"
));
titles
.
add
((
"h"
));
titles
.
add
(
"w"
);
titles
.
add
(
"w"
);
for
(
int
i
=
1
;
i
<=
10
;
i
++)
{
for
(
int
i
=
1
;
i
<=
10
;
i
++)
{
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
...
@@ -376,83 +376,81 @@ public class StorageController {
...
@@ -376,83 +376,81 @@ public class StorageController {
}
}
protected
String
handleStoragePos
(
String
fileURL
,
String
storageId
)
throws
Exception
{
protected
String
handleStoragePos
(
String
fileURL
,
String
storageId
)
throws
Exception
log
.
info
(
"开始更新料仓【"
+
storageId
+
"】的位置信息"
);
{
log
.
info
(
"开始更新料仓【"
+
storageId
+
"】的位置信息"
);
if
(
Strings
.
isNullOrEmpty
(
storageId
))
{
if
(
Strings
.
isNullOrEmpty
(
storageId
))
{
log
.
error
(
"Storage id is null"
);
log
.
error
(
"Storage id is null"
);
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"storageId"
}
);
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"storageId"
}
);
}
}
Storage
storage
=
storageManager
.
get
(
storageId
);
Storage
storage
=
storageManager
.
get
(
storageId
);
if
(
storage
==
null
)
{
if
(
storage
==
null
)
{
log
.
error
(
"Storage id is not exist"
);
log
.
error
(
"Storage id is not exist"
);
throw
new
ValidateException
(
"smfcore.storage.error.notExist"
,
"未找到料仓{0}"
,
new
String
[]{
storageId
});
throw
new
ValidateException
(
"smfcore.storage.error.notExist"
,
"未找到料仓{0}"
,
new
String
[]{
storageId
});
}
}
CsvReader
csvRead
=
CsvReader
.
newReader
(
fileURL
,
"位置"
,
"pos"
)
;
CsvReader
csvRead
=
CsvReader
.
newReader
(
fileURL
,
"位置"
,
"pos"
)
;
int
posIndex
=
csvRead
.
getCsvIndex
(
"位置"
,
"pos"
);
int
posIndex
=
csvRead
.
getCsvIndex
(
"位置"
,
"pos"
);
int
priIndex
=
csvRead
.
getCsvIndex
(
"优先级"
,
"pri"
);
int
priIndex
=
csvRead
.
getCsvIndex
(
"优先级"
,
"pri"
);
int
hIndex
=
csvRead
.
getCsvIndex
(
"高度"
,
"h"
);
int
hIndex
=
csvRead
.
getCsvIndex
(
"高度"
,
"h"
);
int
wIndex
=
csvRead
.
getCsvIndex
(
"宽度"
,
"w"
);
int
wIndex
=
csvRead
.
getCsvIndex
(
"宽度"
,
"w"
);
int
row
=
1
;
int
row
=
1
;
int
newRowCount
=
0
;
int
newRowCount
=
0
;
int
existRowCount
=
0
;
int
existRowCount
=
0
;
int
updateRowCount
=
0
;
int
updateRowCount
=
0
;
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByStorage
(
storage
.
getId
());
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByStorage
(
storage
.
getId
());
List
<
StoragePos
>
newList
=
new
ArrayList
<>();
List
<
StoragePos
>
newList
=
new
ArrayList
<>();
while
(
csvRead
.
readRecord
())
{
while
(
csvRead
.
readRecord
())
{
row
++;
row
++;
String
[]
lineValues
=
csvRead
.
getValues
();
String
[]
lineValues
=
csvRead
.
getValues
();
String
posName
=
lineValues
[
posIndex
];
String
posName
=
lineValues
[
posIndex
];
Integer
priority
=
0
;
Integer
priority
=
0
;
Integer
height
=
0
;
Integer
height
=
0
;
Integer
width
=
0
;
Integer
width
=
0
;
try
{
try
{
priority
=
Integer
.
parseInt
(
lineValues
[
priIndex
])
;
priority
=
Integer
.
parseInt
(
lineValues
[
priIndex
])
;
height
=
Integer
.
parseInt
(
lineValues
[
hIndex
]);
height
=
Integer
.
parseInt
(
lineValues
[
hIndex
]);
width
=
Integer
.
parseInt
(
lineValues
[
wIndex
]);
width
=
Integer
.
parseInt
(
lineValues
[
wIndex
]);
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
log
.
warn
(
"第"
+
row
+
"行中有空白内容,此行忽略"
);
log
.
warn
(
"第"
+
row
+
"行中有空白内容,此行忽略"
);
continue
;
continue
;
}
}
if
(
posName
.
isEmpty
()
)
{
if
(
posName
.
isEmpty
())
{
log
.
warn
(
"第"
+
row
+
"行中有空白内容,此行忽略"
);
log
.
warn
(
"第"
+
row
+
"行中有空白内容,此行忽略"
);
continue
;
continue
;
}
}
// StoragePos posInfo = storagePosManager.getByPosName(posName);
// StoragePos posInfo = storagePosManager.getByPosName(posName);
StoragePos
posInfo
=
findFormList
(
storagePosList
,
posName
);
StoragePos
posInfo
=
findFormList
(
storagePosList
,
posName
);
if
(
posInfo
==
null
)
{
if
(
posInfo
==
null
)
{
posInfo
=
new
StoragePos
(
storageId
,
posName
,
height
,
width
,
priority
);
posInfo
=
new
StoragePos
(
storageId
,
posName
,
height
,
width
,
priority
);
newRowCount
++;
newRowCount
++;
newList
.
add
(
posInfo
);
newList
.
add
(
posInfo
);
}
else
{
}
else
{
boolean
needUpdate
=
posInfo
.
updatePosInfo
(
storageId
,
posName
,
height
,
width
,
priority
);
boolean
needUpdate
=
posInfo
.
updatePosInfo
(
storageId
,
posName
,
height
,
width
,
priority
);
if
(
needUpdate
)
{
if
(
needUpdate
)
{
updateRowCount
++;
updateRowCount
++;
storagePosManager
.
save
(
posInfo
);
storagePosManager
.
save
(
posInfo
);
}
else
{
}
else
{
existRowCount
++;
existRowCount
++;
}
}
}
}
}
}
if
(
newList
.
size
()>
0
)
{
if
(
newList
.
size
()
>
0
)
{
storagePosManager
.
insertAll
(
newList
);
storagePosManager
.
insertAll
(
newList
);
}
}
dataCache
.
reloadStorage
(
storage
,
""
);
dataCache
.
reloadStorage
(
storage
,
""
);
String
msg
=
"读取到["
+
row
+
"]行数据:新增【"
+
newRowCount
+
"】,已存在【"
+
existRowCount
+
"】,更新【"
+
updateRowCount
+
"】"
;
String
msg
=
"读取到["
+
row
+
"]行数据:新增【"
+
newRowCount
+
"】,已存在【"
+
existRowCount
+
"】,更新【"
+
updateRowCount
+
"】"
;
log
.
info
(
msg
);
log
.
info
(
msg
);
return
msg
;
return
msg
;
}
}
private
StoragePos
findFormList
(
List
<
StoragePos
>
list
,
String
posName
)
{
private
StoragePos
findFormList
(
List
<
StoragePos
>
list
,
String
posName
)
{
for
(
StoragePos
pos
:
for
(
StoragePos
pos
:
list
)
{
list
)
{
if
(
pos
.
getPosName
().
equals
(
posName
))
{
if
(
pos
.
getPosName
().
equals
(
posName
))
{
return
pos
;
return
pos
;
}
}
}
}
...
...
src/main/java/com/neotel/smfcore/core/storage/service/po/StoragePos.java
查看文件 @
cbfa410
...
@@ -81,6 +81,7 @@ public class StoragePos extends BasePo implements Serializable {
...
@@ -81,6 +81,7 @@ public class StoragePos extends BasePo implements Serializable {
*/
*/
private
List
<
String
>
limitPnList
;
private
List
<
String
>
limitPnList
;
//海康项目小于0时用于锁定料架上的库位,不进行工单挑料
//进料优先级,数字越大优先级越高,例:1-1的优先级为100 仓1-2的优先级200,那么入仓时就会优先进入1-2仓
//进料优先级,数字越大优先级越高,例:1-1的优先级为100 仓1-2的优先级200,那么入仓时就会优先进入1-2仓
private
double
priority
=
0
f
;
private
double
priority
=
0
f
;
...
...
src/main/java/com/neotel/smfcore/hikvision/bean/InOutApiInfo.java
查看文件 @
cbfa410
package
com
.
neotel
.
smfcore
.
hikvision
.
bean
;
package
com
.
neotel
.
smfcore
.
hikvision
.
bean
;
import
com.sun.corba.se.impl.resolver.SplitLocalResolverImpl
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
...
...
src/main/java/com/neotel/smfcore/panacim/PanaApiController.java
查看文件 @
cbfa410
...
@@ -424,7 +424,7 @@ public class PanaApiController implements IOpAuthApi, ITaskListener{
...
@@ -424,7 +424,7 @@ public class PanaApiController implements IOpAuthApi, ITaskListener{
}
}
}
}
}
else
{
}
else
{
log
.
info
(
"没有配置PanaCIM条码检测接口,查找setConfiguration注册的IP 及端口"
);
//
log.info("没有配置PanaCIM条码检测接口,查找setConfiguration注册的IP 及端口");
return
null
;
return
null
;
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
@@ -477,7 +477,7 @@ public class PanaApiController implements IOpAuthApi, ITaskListener{
...
@@ -477,7 +477,7 @@ public class PanaApiController implements IOpAuthApi, ITaskListener{
String
result
=
HttpHelper
.
postJson
(
inNotifyApi
,
params
);
String
result
=
HttpHelper
.
postJson
(
inNotifyApi
,
params
);
log
.
info
(
"Response Of checkInNotification From PanaCIM:"
+
result
);
log
.
info
(
"Response Of checkInNotification From PanaCIM:"
+
result
);
}
else
{
}
else
{
log
.
info
(
"没有配置PanaCIM接口,无需通知"
);
//
log.info("没有配置PanaCIM接口,无需通知");
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
@@ -511,7 +511,7 @@ public class PanaApiController implements IOpAuthApi, ITaskListener{
...
@@ -511,7 +511,7 @@ public class PanaApiController implements IOpAuthApi, ITaskListener{
log
.
info
(
"Response Of deliverNotification From PanaCIM:"
+
result
);
log
.
info
(
"Response Of deliverNotification From PanaCIM:"
+
result
);
}
else
{
}
else
{
log
.
info
(
"没有配置PanaCIM接口,无需通知"
);
//
log.info("没有配置PanaCIM接口,无需通知");
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"出库通知PanaCIM["
+
outNotifyApi
+
"]料盘"
+
task
.
getBarcode
()+
" 出错"
,
e
);
log
.
error
(
"出库通知PanaCIM["
+
outNotifyApi
+
"]料盘"
+
task
.
getBarcode
()+
" 出错"
,
e
);
...
...
src/main/java/com/neotel/smfcore/security/rest/bean/query/RoleQueryCriteria.java
查看文件 @
cbfa410
...
@@ -4,12 +4,9 @@ import com.neotel.smfcore.common.annotation.QueryCondition;
...
@@ -4,12 +4,9 @@ import com.neotel.smfcore.common.annotation.QueryCondition;
import
com.neotel.smfcore.common.bean.BetweenData
;
import
com.neotel.smfcore.common.bean.BetweenData
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.sql.Timestamp
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
@ApiModel
@ApiModel
public
class
RoleQueryCriteria
implements
Serializable
{
public
class
RoleQueryCriteria
implements
Serializable
{
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论