Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit b6cfa5f8
由
zshaohui
编写于
2023-06-09 09:40:14 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.增加过期时间
2.看板和报表修改
1 个父辈
2d97e6be
隐藏空白字符变更
内嵌
并排
正在显示
28 个修改的文件
包含
343 行增加
和
49 行删除
src/main/java/com/neotel/smfcore/core/barcode/service/manager/IBarcodeManager.java
src/main/java/com/neotel/smfcore/core/barcode/service/manager/impl/BarcodeManagerImpl.java
src/main/java/com/neotel/smfcore/core/barcode/utils/CodeResolve.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLShelfHandler.java
src/main/java/com/neotel/smfcore/core/device/rest/DeviceController.java
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/rest/bean/dto/OrderDto.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
src/main/java/com/neotel/smfcore/core/storage/rest/dto/StoragePosDto.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/core/system/service/po/DataLog.java
src/main/java/com/neotel/smfcore/custom/lizhen/LizhenApi.java
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/AgvBoxDeviceClientController.java
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/InventoryController.java
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/OutLineController.java
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/TaskRestController.java
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/WarehouseController.java
src/main/java/com/neotel/smfcore/custom/lizhen/innerBox/rest/VirtualRestController.java
src/main/java/com/neotel/smfcore/custom/lizhen/kanban/inner/InnerKanbanController.java
src/main/java/com/neotel/smfcore/custom/lizhen/kanban/inner/bean/dto/LackPickingDto.java
src/main/java/com/neotel/smfcore/custom/lizhen/kanban/outer/OuterKanbanController.java
src/main/java/com/neotel/smfcore/custom/lizhen/kanban/utils/AgvStatusCache.java
src/main/java/com/neotel/smfcore/custom/lizhen/kanban/utils/enums/Location.java
src/main/java/com/neotel/smfcore/custom/lizhen/report/outer/OuterReportController.java
src/main/java/com/neotel/smfcore/custom/lizhen/util/ExpireDateUtil.java
src/main/java/com/neotel/smfcore/core/barcode/service/manager/IBarcodeManager.java
查看文件 @
b6cfa5f
...
@@ -28,4 +28,6 @@ public interface IBarcodeManager extends IBaseManager<Barcode> {
...
@@ -28,4 +28,6 @@ public interface IBarcodeManager extends IBaseManager<Barcode> {
List
<
Barcode
>
findByPosName
(
String
barcodeStr
);
List
<
Barcode
>
findByPosName
(
String
barcodeStr
);
List
<
Barcode
>
findByQuery
(
Query
query
,
Pageable
pageable
);
List
<
Barcode
>
findByQuery
(
Query
query
,
Pageable
pageable
);
int
countByQuery
(
Query
query
);
}
}
src/main/java/com/neotel/smfcore/core/barcode/service/manager/impl/BarcodeManagerImpl.java
查看文件 @
b6cfa5f
...
@@ -195,6 +195,11 @@ public class BarcodeManagerImpl implements IBarcodeManager {
...
@@ -195,6 +195,11 @@ public class BarcodeManagerImpl implements IBarcodeManager {
return
barcodeDao
.
findByQuery
(
query
,
pageable
);
return
barcodeDao
.
findByQuery
(
query
,
pageable
);
}
}
@Override
public
int
countByQuery
(
Query
query
)
{
return
barcodeDao
.
countByQuery
(
query
);
}
protected
boolean
validateComponent
(
Barcode
barcode
)
{
protected
boolean
validateComponent
(
Barcode
barcode
)
{
return
componentManager
.
findOneByPN
(
barcode
.
getPartNumber
())
!=
null
;
return
componentManager
.
findOneByPN
(
barcode
.
getPartNumber
())
!=
null
;
}
}
...
...
src/main/java/com/neotel/smfcore/core/barcode/utils/CodeResolve.java
查看文件 @
b6cfa5f
...
@@ -180,12 +180,13 @@ public class CodeResolve {
...
@@ -180,12 +180,13 @@ public class CodeResolve {
}
}
//判断是否为空
//判断是否为空
if
(
barcodeFromRule
.
getProduceDate
()
!=
null
)
{
if
(
barcodeFromRule
.
getProduceDate
()
!=
null
)
{
barcode
.
setProduceDate
(
barcodeFromRule
.
getProduceDate
());
/*
barcode.setProduceDate(barcodeFromRule.getProduceDate());
ExpiredSetting expiredSetting = expiredSettingManager.getExpiredSettingByProvider(barcodeFromRule.getProvider());
ExpiredSetting expiredSetting = expiredSettingManager.getExpiredSettingByProvider(barcodeFromRule.getProvider());
if (expiredSetting != null) {
if (expiredSetting != null) {
barcode.setExpireDate(cn.hutool.core.date.DateUtil.offsetMonth(barcodeFromRule.getProduceDate(),expiredSetting.getMonth()));
barcode.setExpireDate(cn.hutool.core.date.DateUtil.offsetMonth(barcodeFromRule.getProduceDate(),expiredSetting.getMonth()));
needUpdate = true;
needUpdate = true;
}
}*/
barcode
.
setExpireDate
(
cn
.
hutool
.
core
.
date
.
DateUtil
.
offsetMonth
(
barcodeFromRule
.
getProduceDate
(),
12
));
}
}
if
(
needUpdate
){
if
(
needUpdate
){
...
@@ -271,7 +272,7 @@ public class CodeResolve {
...
@@ -271,7 +272,7 @@ public class CodeResolve {
codeBeanFromRule
.
setShowImg
(
component
.
getShowImg
());
codeBeanFromRule
.
setShowImg
(
component
.
getShowImg
());
Date
produceDate
=
barcodeFromRule
.
getProduceDate
();
Date
produceDate
=
barcodeFromRule
.
getProduceDate
();
if
(
produceDate
!=
null
&&
barcodeFromRule
.
getExpireDate
()
==
null
){
if
(
produceDate
!=
null
/*&& barcodeFromRule.getExpireDate() == null*/
){
/*int validDay = component.getValidDay();
/*int validDay = component.getValidDay();
if( validDay > 0){
if( validDay > 0){
log.info("设置"+barcodeFromRule.getBarcode()+"的过期时间");
log.info("设置"+barcodeFromRule.getBarcode()+"的过期时间");
...
@@ -279,10 +280,11 @@ public class CodeResolve {
...
@@ -279,10 +280,11 @@ public class CodeResolve {
barcodeFromRule.setExpireDate(expireDate);
barcodeFromRule.setExpireDate(expireDate);
barcodeManager.save(barcodeFromRule);
barcodeManager.save(barcodeFromRule);
}*/
}*/
ExpiredSetting
expiredSetting
=
expiredSettingManager
.
getExpiredSettingByProvider
(
barcodeFromRule
.
getProvider
());
/*
ExpiredSetting expiredSetting = expiredSettingManager.getExpiredSettingByProvider(barcodeFromRule.getProvider());
if (expiredSetting != null){
if (expiredSetting != null){
barcodeFromRule.setExpireDate(cn.hutool.core.date.DateUtil.offsetMonth(barcodeFromRule.getProduceDate(),expiredSetting.getMonth()));
barcodeFromRule.setExpireDate(cn.hutool.core.date.DateUtil.offsetMonth(barcodeFromRule.getProduceDate(),expiredSetting.getMonth()));
}
}*/
barcodeFromRule
.
setExpireDate
(
cn
.
hutool
.
core
.
date
.
DateUtil
.
offsetMonth
(
barcodeFromRule
.
getProduceDate
(),
12
));
}
}
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLShelfHandler.java
查看文件 @
b6cfa5f
...
@@ -425,6 +425,12 @@ public class NLShelfHandler extends BaseDeviceHandler {
...
@@ -425,6 +425,12 @@ public class NLShelfHandler extends BaseDeviceHandler {
throw
new
ValidateException
(
"smfcore.error.barcode.invalid"
,
"{0}不是有效的条码"
,
new
String
[]{
code
});
throw
new
ValidateException
(
"smfcore.error.barcode.invalid"
,
"{0}不是有效的条码"
,
new
String
[]{
code
});
}
}
//校验是否可以入库
Map
<
String
,
Object
>
brandQty
=
lizhenApi
.
brandQty
(
barcode
.
getPartNumber
(),
barcode
.
getProvider
());
if
(
brandQty
==
null
||
brandQty
.
isEmpty
())
{
throw
new
ValidateException
(
"smfcore.error.barcode.partNumber.invalid"
,
"{0}不是有效的料号"
,
new
String
[]{
barcode
.
getPartNumber
()});
}
Barcode
barcodeApi
=
lizhenApi
.
barcodeInfo
(
barcode
);
Barcode
barcodeApi
=
lizhenApi
.
barcodeInfo
(
barcode
);
if
(
barcodeApi
!=
null
){
if
(
barcodeApi
!=
null
){
barcode
=
barcodeApi
;
barcode
=
barcodeApi
;
...
...
src/main/java/com/neotel/smfcore/core/device/rest/DeviceController.java
查看文件 @
b6cfa5f
...
@@ -203,7 +203,11 @@ public class DeviceController {
...
@@ -203,7 +203,11 @@ public class DeviceController {
dataCache
.
updateInventory
(
storagePos
,
barcode
);
dataCache
.
updateInventory
(
storagePos
,
barcode
);
}
}
}
}
//校验是否可以入库
Map
<
String
,
Object
>
brandQty
=
lizhenApi
.
brandQty
(
barcode
.
getPartNumber
(),
barcode
.
getProvider
());
if
(
brandQty
==
null
||
brandQty
.
isEmpty
())
{
throw
new
ValidateException
(
"smfcore.error.barcode.partNumber.invalid"
,
"{0}不是有效的料号"
,
new
String
[]{
barcode
.
getPartNumber
()});
}
Barcode
barcodeCanPutIn
=
smfApi
.
canPutInAfterResolve
(
barcode
);
Barcode
barcodeCanPutIn
=
smfApi
.
canPutInAfterResolve
(
barcode
);
if
(
barcodeCanPutIn
!=
null
){
if
(
barcodeCanPutIn
!=
null
){
barcode
=
barcodeCanPutIn
;
barcode
=
barcodeCanPutIn
;
...
...
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
查看文件 @
b6cfa5f
...
@@ -376,7 +376,7 @@ public class DataCache {
...
@@ -376,7 +376,7 @@ public class DataCache {
/**
/**
* 出库时清除使用库位列表
* 出库时清除使用库位列表
*/
*/
p
rivate
void
removeUsedPosNameList
(
String
cid
,
String
posName
){
p
ublic
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
);
...
@@ -385,7 +385,7 @@ public class DataCache {
...
@@ -385,7 +385,7 @@ public class DataCache {
/**
/**
* 入库时增加使用库位列表
* 入库时增加使用库位列表
*/
*/
p
rivate
void
addUsedPosNameList
(
String
cid
,
String
posName
){
p
ublic
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
);
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
b6cfa5f
...
@@ -33,6 +33,7 @@ import com.neotel.smfcore.core.storage.service.po.StoragePos;
...
@@ -33,6 +33,7 @@ import com.neotel.smfcore.core.storage.service.po.StoragePos;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.lizhen.LizhenApi
;
import
com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType
;
import
com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType
;
import
com.sun.org.apache.regexp.internal.RE
;
import
com.sun.org.apache.regexp.internal.RE
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -75,6 +76,9 @@ public class LiteOrderCache {
...
@@ -75,6 +76,9 @@ public class LiteOrderCache {
@Autowired
@Autowired
private
IBarcodeManager
barcodeManager
;
private
IBarcodeManager
barcodeManager
;
@Autowired
private
LizhenApi
lizhenApi
;
/**
/**
* 正在执行的liteOrderMap, key 为orderNo,value 为order
* 正在执行的liteOrderMap, key 为orderNo,value 为order
*/
*/
...
@@ -382,6 +386,7 @@ public class LiteOrderCache {
...
@@ -382,6 +386,7 @@ public class LiteOrderCache {
if
(
order
.
getFinishedReelCount
()
>=
order
.
getTaskReelCount
())
{
if
(
order
.
getFinishedReelCount
()
>=
order
.
getTaskReelCount
())
{
log
.
info
(
"工单["
+
orderNo
+
"]的出库任务已完成,共出库:"
+
order
.
getFinishedReelCount
()
+
" 盘"
);
log
.
info
(
"工单["
+
orderNo
+
"]的出库任务已完成,共出库:"
+
order
.
getFinishedReelCount
()
+
" 盘"
);
order
.
setFinishDate
(
new
Date
());
finishedOrderTasks
(
order
);
finishedOrderTasks
(
order
);
}
}
liteOrderManager
.
save
(
order
);
liteOrderManager
.
save
(
order
);
...
@@ -815,6 +820,11 @@ public class LiteOrderCache {
...
@@ -815,6 +820,11 @@ public class LiteOrderCache {
}
}
}
}
//设置工单点击时间
cacheOrder
.
setStartDate
(
new
Date
());
liteOrderManager
.
save
(
cacheOrder
);
liteOrderMap
.
put
(
cacheOrder
.
getOrderNo
(),
cacheOrder
);
//料仓信息
//料仓信息
List
<
String
>
availableStorageIds
=
new
ArrayList
<>();
List
<
String
>
availableStorageIds
=
new
ArrayList
<>();
//String virtualId = "";
//String virtualId = "";
...
@@ -836,6 +846,10 @@ public class LiteOrderCache {
...
@@ -836,6 +846,10 @@ public class LiteOrderCache {
cacheOrder
.
setFinishedReelCount
(
0
);
cacheOrder
.
setFinishedReelCount
(
0
);
cacheOrder
.
setStatus
(
LITEORDER_STATUS
.
TAILS
);
cacheOrder
.
setStatus
(
LITEORDER_STATUS
.
TAILS
);
//提取所有的partNumber,获取所有的库位
List
<
String
>
partNumberList
=
cacheOrder
.
getOrderItems
().
stream
().
map
(
item
->
item
.
getPn
()).
collect
(
Collectors
.
toList
());
List
<
StoragePos
>
allStoragePosList
=
storagePosManager
.
findStoragePosByPartNumber
(
partNumberList
);
List
<
StoragePos
>
needOutPoss
=
new
ArrayList
<>();
List
<
StoragePos
>
needOutPoss
=
new
ArrayList
<>();
int
orderTaskReelCount
=
0
;
int
orderTaskReelCount
=
0
;
//开始循环处理工单详情
//开始循环处理工单详情
...
@@ -884,10 +898,11 @@ public class LiteOrderCache {
...
@@ -884,10 +898,11 @@ public class LiteOrderCache {
if (pos == null){
if (pos == null){
pos = storagePosManager.findPartNumberInStorages(availableStorageIds, pn, excludeIds, checkoutType, warehouseCode, brand,true);
pos = storagePosManager.findPartNumberInStorages(availableStorageIds, pn, excludeIds, checkoutType, warehouseCode, brand,true);
}*/
}*/
StoragePos
pos
=
storagePosManager
.
findPartNumberInStorages
(
availableStorageIds
,
pn
,
excludeIds
,
checkoutType
,
warehouseCode
,
brand
,
true
);
/*
StoragePos pos = storagePosManager.findPartNumberInStorages(availableStorageIds, pn, excludeIds, checkoutType, warehouseCode, brand,true);
if (pos == null){
if (pos == null){
pos = storagePosManager.findPartNumberInStorages(availableStorageIds, pn, excludeIds, checkoutType, warehouseCode, brand,false);
pos = storagePosManager.findPartNumberInStorages(availableStorageIds, pn, excludeIds, checkoutType, warehouseCode, brand,false);
}
}*/
StoragePos
pos
=
getStoragePosByPartNumberAndBrand
(
allStoragePosList
,
pn
,
excludeIds
);
log
.
info
(
"查询库位时间结束"
);
log
.
info
(
"查询库位时间结束"
);
if
(
pos
==
null
)
{
if
(
pos
==
null
)
{
log
.
info
(
orderItem
.
getOrderId
()
+
"厂商:"
+
warehouseCode
+
",供应商:"
+
brand
+
",料号:"
+
pn
+
"未找到存在库位,跳过"
);
log
.
info
(
orderItem
.
getOrderId
()
+
"厂商:"
+
warehouseCode
+
",供应商:"
+
brand
+
",料号:"
+
pn
+
"未找到存在库位,跳过"
);
...
@@ -899,6 +914,15 @@ public class LiteOrderCache {
...
@@ -899,6 +914,15 @@ public class LiteOrderCache {
//进行排序
//进行排序
subCodeList
=
subCodeList
.
stream
().
sorted
(
Comparator
.
comparing
(
Barcode:
:
getCreateDate
)).
collect
(
Collectors
.
toList
());
subCodeList
=
subCodeList
.
stream
().
sorted
(
Comparator
.
comparing
(
Barcode:
:
getCreateDate
)).
collect
(
Collectors
.
toList
());
subCodeList
=
subCodeList
.
stream
().
sorted
(
Comparator
.
comparing
(
Barcode:
:
getAmount
)).
collect
(
Collectors
.
toList
());
subCodeList
=
subCodeList
.
stream
().
sorted
(
Comparator
.
comparing
(
Barcode:
:
getAmount
)).
collect
(
Collectors
.
toList
());
//调用批量禁用料接口
List
<
String
>
batchCheckList
=
new
ArrayList
<>();
try
{
batchCheckList
=
lizhenApi
.
batchCheck
(
subCodeList
);
}
catch
(
Exception
e
){
e
.
printStackTrace
();
}
List
<
String
>
subCodeIds
=
new
ArrayList
<>();
List
<
String
>
subCodeIds
=
new
ArrayList
<>();
for
(
Barcode
subCode
:
subCodeList
)
{
for
(
Barcode
subCode
:
subCodeList
)
{
if
(
outReelCount
>=
orderItem
.
getNeedReelCount
()
&&
outNumCount
>=
orderItem
.
getNeedNum
())
{
if
(
outReelCount
>=
orderItem
.
getNeedReelCount
()
&&
outNumCount
>=
orderItem
.
getNeedNum
())
{
...
@@ -907,6 +931,11 @@ public class LiteOrderCache {
...
@@ -907,6 +931,11 @@ public class LiteOrderCache {
if
(
subCode
.
isOut
())
{
if
(
subCode
.
isOut
())
{
continue
;
continue
;
}
}
if
(
batchCheckList
!=
null
&&
!
batchCheckList
.
isEmpty
())
{
if
(
batchCheckList
.
contains
(
subCode
.
getBarcode
()))
{
log
.
info
(
"禁用料:"
+
subCode
.
getBarcode
()
+
"跳过"
);
}
}
//判断厂别
//判断厂别
if
(
StringUtils
.
isNotBlank
(
warehouseCode
))
{
if
(
StringUtils
.
isNotBlank
(
warehouseCode
))
{
if
(!
warehouseCode
.
equals
(
subCode
.
getWarehouseCode
()))
{
if
(!
warehouseCode
.
equals
(
subCode
.
getWarehouseCode
()))
{
...
@@ -926,13 +955,13 @@ public class LiteOrderCache {
...
@@ -926,13 +955,13 @@ public class LiteOrderCache {
}
}
}
}
//校验是否为禁用料
//校验是否为禁用料
try
{
/*
try {
smfApi.canPutInAfterResolve(subCode);
smfApi.canPutInAfterResolve(subCode);
} catch (ValidateException e) {
} catch (ValidateException e) {
e.printStackTrace();
e.printStackTrace();
log.info(subCode.getBarcode() + "为禁用料,校验失败:" + e.getMessage());
log.info(subCode.getBarcode() + "为禁用料,校验失败:" + e.getMessage());
continue;
continue;
}
}
*/
subCode
.
setOut
(
true
);
subCode
.
setOut
(
true
);
subCode
.
setOrderItemId
(
orderItem
.
getId
());
subCode
.
setOrderItemId
(
orderItem
.
getId
());
barcode
.
UpdateSubCode
(
subCode
);
barcode
.
UpdateSubCode
(
subCode
);
...
@@ -1001,6 +1030,7 @@ public class LiteOrderCache {
...
@@ -1001,6 +1030,7 @@ public class LiteOrderCache {
//cacheOrder.setIsExcess(isExcess);
//cacheOrder.setIsExcess(isExcess);
cacheOrder
.
setTaskReelCount
(
orderTaskReelCount
);
cacheOrder
.
setTaskReelCount
(
orderTaskReelCount
);
cacheOrder
.
setTotalTaskReelCount
(
cacheOrder
.
getTotalTaskReelCount
()
+
orderTaskReelCount
);
cacheOrder
.
setTotalTaskReelCount
(
cacheOrder
.
getTotalTaskReelCount
()
+
orderTaskReelCount
);
cacheOrder
.
setEndDate
(
new
Date
());
log
.
info
(
"工单["
+
orderNo
+
"]任务分配结束,任务数["
+
orderTaskReelCount
+
"]"
);
log
.
info
(
"工单["
+
orderNo
+
"]任务分配结束,任务数["
+
orderTaskReelCount
+
"]"
);
smfApi
.
onOrderStatusChange
(
cacheOrder
);
smfApi
.
onOrderStatusChange
(
cacheOrder
);
//有需要出库的
//有需要出库的
...
@@ -1093,4 +1123,50 @@ public class LiteOrderCache {
...
@@ -1093,4 +1123,50 @@ public class LiteOrderCache {
public
synchronized
Collection
<
LiteOrder
>
getAllLiteOrder
()
{
public
synchronized
Collection
<
LiteOrder
>
getAllLiteOrder
()
{
return
liteOrderMap
.
values
();
return
liteOrderMap
.
values
();
}
}
public
StoragePos
getStoragePosByPartNumberAndBrand
(
List
<
StoragePos
>
allStoragePosList
,
String
partNumber
,
List
<
String
>
excludeIdList
)
{
StoragePos
storagePos
=
null
;
//先找到符合partNumber数据
List
<
StoragePos
>
storagePosList
=
allStoragePosList
.
stream
().
filter
(
item
->
{
if
(
excludeIdList
!=
null
&&
!
excludeIdList
.
isEmpty
())
{
if
(
excludeIdList
.
contains
(
item
.
getId
()))
{
return
false
;
}
}
List
<
Barcode
>
subCodeList
=
item
.
getBarcode
().
getSubCodeList
();
for
(
Barcode
barcode
:
subCodeList
)
{
if
(
barcode
.
getPartNumber
().
equals
(
partNumber
))
{
return
true
;
}
}
return
false
;
}).
collect
(
Collectors
.
toList
());
//找到符合条件的partNumber
List
<
Barcode
>
barcodeList
=
new
ArrayList
<>();
for
(
StoragePos
pos
:
storagePosList
)
{
for
(
Barcode
barcode
:
pos
.
getBarcode
().
getSubCodeList
())
{
if
(
barcode
.
getPartNumber
().
equals
(
partNumber
))
{
barcodeList
.
add
(
barcode
);
}
}
}
//按排序找到最早入库的partNumber
if
(
barcodeList
!=
null
&&
!
barcodeList
.
isEmpty
())
{
List
<
String
>
posNameList
=
barcodeList
.
stream
().
sorted
(
Comparator
.
comparing
(
Barcode:
:
getCreateDate
)).
map
(
item
->
item
.
getPosName
()).
distinct
().
collect
(
Collectors
.
toList
());
for
(
String
posName
:
posNameList
)
{
for
(
StoragePos
pos
:
storagePosList
)
{
if
(
StringUtils
.
isNotBlank
(
posName
))
{
if
(
posName
.
startsWith
(
pos
.
getBarcode
().
getBarcode
()))
{
return
pos
;
}
}
}
}
}
return
storagePos
;
}
}
}
src/main/java/com/neotel/smfcore/core/order/rest/bean/dto/OrderDto.java
查看文件 @
b6cfa5f
...
@@ -98,4 +98,16 @@ public class OrderDto implements Serializable {
...
@@ -98,4 +98,16 @@ public class OrderDto implements Serializable {
@ApiModelProperty
(
"是否超发"
)
@ApiModelProperty
(
"是否超发"
)
private
boolean
isExcess
=
false
;
private
boolean
isExcess
=
false
;
@ApiModelProperty
(
"工单开始时间"
)
private
Date
startDate
;
@ApiModelProperty
(
"工单结束时间"
)
private
Date
endDate
;
@ApiModelProperty
(
"工单完成时间"
)
private
Date
finishDate
;
}
}
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
查看文件 @
b6cfa5f
...
@@ -135,6 +135,23 @@ public class LiteOrder extends BasePo implements Serializable {
...
@@ -135,6 +135,23 @@ public class LiteOrder extends BasePo implements Serializable {
private
boolean
confirmExcess
=
false
;
private
boolean
confirmExcess
=
false
;
/**
* 工单开始时间
*/
private
Date
startDate
;
/**
* 工单结束时间
*/
private
Date
endDate
;
/**
* 工单完成时间
*/
private
Date
finishDate
;
public
void
setClosed
(
boolean
value
){
public
void
setClosed
(
boolean
value
){
this
.
closed
=
value
;
this
.
closed
=
value
;
if
(
value
){
if
(
value
){
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
查看文件 @
b6cfa5f
...
@@ -117,6 +117,9 @@ public class StoragePosController {
...
@@ -117,6 +117,9 @@ public class StoragePosController {
if
(!
storage
.
isVirtual
()){
if
(!
storage
.
isVirtual
()){
StoragePosDtos
.
get
(
i
).
setNeedPermissionPassword
(
true
);
StoragePosDtos
.
get
(
i
).
setNeedPermissionPassword
(
true
);
}
}
if
(
StoragePosDtos
.
get
(
i
).
isEnabled
()){
StoragePosDtos
.
get
(
i
).
setMsg
(
""
);
}
}
}
}
}
return
new
PageData
(
StoragePosDtos
,
pages
.
getTotalElements
());
return
new
PageData
(
StoragePosDtos
,
pages
.
getTotalElements
());
...
@@ -252,6 +255,7 @@ public class StoragePosController {
...
@@ -252,6 +255,7 @@ public class StoragePosController {
// throw new ValidateException("未找到库位 ");
// throw new ValidateException("未找到库位 ");
}
}
pos
.
setEnabled
(
enabledDto
.
isEnabled
());
pos
.
setEnabled
(
enabledDto
.
isEnabled
());
pos
.
setMsg
(
""
);
storagePosManager
.
save
(
pos
);
storagePosManager
.
save
(
pos
);
log
.
info
(
"启用禁用库位:库位号["
+
pos
.
getId
()
+
"]["
+
pos
.
getPosName
()
+
"]="
+
enabledDto
.
isEnabled
());
log
.
info
(
"启用禁用库位:库位号["
+
pos
.
getId
()
+
"]["
+
pos
.
getPosName
()
+
"]="
+
enabledDto
.
isEnabled
());
DeviceMessageUtil
.
addEnabledPosMessage
(
pos
,
SecurityUtils
.
getCurrentUsername
());
DeviceMessageUtil
.
addEnabledPosMessage
(
pos
,
SecurityUtils
.
getCurrentUsername
());
...
@@ -286,6 +290,8 @@ public class StoragePosController {
...
@@ -286,6 +290,8 @@ public class StoragePosController {
DeviceMessageUtil
.
addEnabledPosMessage
(
pos
,
SecurityUtils
.
getCurrentUsername
());
DeviceMessageUtil
.
addEnabledPosMessage
(
pos
,
SecurityUtils
.
getCurrentUsername
());
}
}
storagePosManager
.
save
(
pos
);
storagePosManager
.
save
(
pos
);
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
dataCache
.
reloadStorage
(
storage
,
storage
.
getCid
());
log
.
info
(
"修改库位:库位号["
+
pos
.
getId
()
+
"]=["
+
saveDto
.
toString
()
+
"]"
+
enabledStr
);
log
.
info
(
"修改库位:库位号["
+
pos
.
getId
()
+
"]=["
+
saveDto
.
toString
()
+
"]"
+
enabledStr
);
return
new
ResponseEntity
<>(
HttpStatus
.
OK
);
return
new
ResponseEntity
<>(
HttpStatus
.
OK
);
}
}
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/dto/StoragePosDto.java
查看文件 @
b6cfa5f
...
@@ -87,4 +87,7 @@ public class StoragePosDto implements Serializable {
...
@@ -87,4 +87,7 @@ public class StoragePosDto implements Serializable {
@ApiModelProperty
(
"来源"
)
@ApiModelProperty
(
"来源"
)
public
String
source
;
public
String
source
;
@ApiModelProperty
(
"禁用信息"
)
private
String
msg
;
}
}
src/main/java/com/neotel/smfcore/core/storage/service/manager/IStoragePosManager.java
查看文件 @
b6cfa5f
...
@@ -86,4 +86,6 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
...
@@ -86,4 +86,6 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
StoragePos
getPosNameByPnAndStrId
(
String
partNumber
,
String
storageId
);
StoragePos
getPosNameByPnAndStrId
(
String
partNumber
,
String
storageId
);
int
countByQuery
(
Query
query
);
int
countByQuery
(
Query
query
);
List
<
StoragePos
>
findStoragePosByPartNumber
(
List
<
String
>
partNumberList
);
}
}
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
查看文件 @
b6cfa5f
...
@@ -813,4 +813,11 @@ public class StoragePosManagerImpl implements IStoragePosManager {
...
@@ -813,4 +813,11 @@ public class StoragePosManagerImpl implements IStoragePosManager {
public
int
countByQuery
(
Query
query
)
{
public
int
countByQuery
(
Query
query
)
{
return
storagePosDao
.
countByQuery
(
query
);
return
storagePosDao
.
countByQuery
(
query
);
}
}
@Override
public
List
<
StoragePos
>
findStoragePosByPartNumber
(
List
<
String
>
partNumberList
)
{
Criteria
c
=
Criteria
.
where
(
"barcode"
).
exists
(
true
)
.
and
(
"enabled"
).
is
(
true
).
and
(
"barcode.subCodeList.partNumber"
).
in
(
partNumberList
);
//可用;
return
storagePosDao
.
findByQuery
(
new
Query
(
c
));
}
}
}
src/main/java/com/neotel/smfcore/core/system/service/po/DataLog.java
查看文件 @
b6cfa5f
...
@@ -338,6 +338,11 @@ public class DataLog extends BasePo implements Serializable {
...
@@ -338,6 +338,11 @@ public class DataLog extends BasePo implements Serializable {
*/
*/
private
String
box
=
""
;
private
String
box
=
""
;
/**
* 盘点批次
*/
private
String
inventoryBatch
;
public
String
getBarcode
()
{
public
String
getBarcode
()
{
if
(
barcode
==
null
){
if
(
barcode
==
null
){
return
""
;
return
""
;
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/LizhenApi.java
查看文件 @
b6cfa5f
package
com
.
neotel
.
smfcore
.
custom
.
lizhen
;
package
com
.
neotel
.
smfcore
.
custom
.
lizhen
;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.neotel.smfcore.common.exception.ApiException
;
import
com.neotel.smfcore.common.exception.ApiException
;
...
@@ -60,6 +61,9 @@ public class LizhenApi extends DefaultSmfApiListener {
...
@@ -60,6 +61,9 @@ public class LizhenApi extends DefaultSmfApiListener {
@Value
(
"${api.outNotifyUrlPK}"
)
@Value
(
"${api.outNotifyUrlPK}"
)
private
String
outNotifyUrlPK
=
""
;
private
String
outNotifyUrlPK
=
""
;
@Value
(
"${api.batchCheckUrl}"
)
private
String
batchCheckUrl
=
""
;
@PostConstruct
@PostConstruct
public
void
init
(){
public
void
init
(){
...
@@ -69,6 +73,7 @@ public class LizhenApi extends DefaultSmfApiListener {
...
@@ -69,6 +73,7 @@ public class LizhenApi extends DefaultSmfApiListener {
barcodeInfoUrl
=
dataCache
.
getConfigCache
(
"barcodeInfoUrl"
,
barcodeInfoUrl
);
barcodeInfoUrl
=
dataCache
.
getConfigCache
(
"barcodeInfoUrl"
,
barcodeInfoUrl
);
werks
=
dataCache
.
getConfigCache
(
"werks"
,
werks
);
werks
=
dataCache
.
getConfigCache
(
"werks"
,
werks
);
outNotifyUrlPK
=
dataCache
.
getConfigCache
(
"api.outNotifyUrlPK"
,
outNotifyUrlPK
);
outNotifyUrlPK
=
dataCache
.
getConfigCache
(
"api.outNotifyUrlPK"
,
outNotifyUrlPK
);
batchCheckUrl
=
dataCache
.
getConfigCache
(
"api.batchCheckUrl"
,
batchCheckUrl
);
}
}
/**
/**
...
@@ -500,6 +505,47 @@ public class LizhenApi extends DefaultSmfApiListener {
...
@@ -500,6 +505,47 @@ public class LizhenApi extends DefaultSmfApiListener {
return
null
;
return
null
;
}
}
/**
* 批量禁用
*
* @param barcodeList
* @return
*/
public
List
<
String
>
batchCheck
(
List
<
Barcode
>
barcodeList
)
{
List
<
String
>
resultList
=
new
ArrayList
<>();
List
<
Map
<
String
,
Object
>>
paramList
=
new
ArrayList
<>();
for
(
Barcode
barcode
:
barcodeList
)
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"ipn"
,
barcode
.
getPartNumber
());
paramMap
.
put
(
"reelId"
,
barcode
.
getBarcode
());
paramMap
.
put
(
"wo"
,
""
);
paramMap
.
put
(
"datecode"
,
barcode
.
getDateCode
());
paramMap
.
put
(
"lot"
,
barcode
.
getBatch
());
paramMap
.
put
(
"vendor"
,
barcode
.
getProvider
());
paramMap
.
put
(
"remark"
,
""
);
paramList
.
add
(
paramMap
);
}
String
paramStr
=
JSON
.
toJSONString
(
paramList
);
log
.
info
(
"批量禁用料,入参为:"
+
paramStr
);
try
{
String
result
=
HttpHelper
.
postJson
(
batchCheckUrl
,
paramStr
);
log
.
info
(
"批量禁用料,出参为:"
+
result
);
JSONObject
jsonObject
=
JSON
.
parseObject
(
result
);
if
(
jsonObject
.
getInteger
(
"status"
)
==
200
)
{
JSONArray
data
=
jsonObject
.
getJSONArray
(
"data"
);
if
(
data
!=
null
&&
!
data
.
isEmpty
())
{
for
(
int
i
=
0
;
i
<
data
.
size
();
i
++)
{
JSONObject
item
=
data
.
getJSONObject
(
i
);
resultList
.
add
(
item
.
getString
(
"reelNo"
));
}
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
resultList
;
}
@Override
@Override
public
boolean
isForThisApi
(
String
apiName
)
{
public
boolean
isForThisApi
(
String
apiName
)
{
return
apiName
!=
null
&&
apiName
.
equalsIgnoreCase
(
"Lizhen"
);
return
apiName
!=
null
&&
apiName
.
equalsIgnoreCase
(
"Lizhen"
);
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/AgvBoxDeviceClientController.java
查看文件 @
b6cfa5f
...
@@ -20,6 +20,7 @@ import com.neotel.smfcore.core.system.websocket.SocketMsg;
...
@@ -20,6 +20,7 @@ import com.neotel.smfcore.core.system.websocket.SocketMsg;
import
com.neotel.smfcore.core.system.websocket.WebSocketServer
;
import
com.neotel.smfcore.core.system.websocket.WebSocketServer
;
import
com.neotel.smfcore.custom.lizhen.agvBox.bean.Station
;
import
com.neotel.smfcore.custom.lizhen.agvBox.bean.Station
;
import
com.neotel.smfcore.custom.lizhen.agvBox.util.StationCacheUtil
;
import
com.neotel.smfcore.custom.lizhen.agvBox.util.StationCacheUtil
;
import
com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -426,8 +427,8 @@ public class AgvBoxDeviceClientController {
...
@@ -426,8 +427,8 @@ public class AgvBoxDeviceClientController {
Collection
<
DataLog
>
queueTasks
=
taskService
.
getAllTasks
();
Collection
<
DataLog
>
queueTasks
=
taskService
.
getAllTasks
();
if
(
queueTasks
!=
null
&&
!
queueTasks
.
isEmpty
())
{
if
(
queueTasks
!=
null
&&
!
queueTasks
.
isEmpty
())
{
for
(
DataLog
queueTask
:
queueTasks
)
{
for
(
DataLog
queueTask
:
queueTasks
)
{
if
(
results
!=
null
&&
!
results
.
isEmpty
()){
if
(
results
!=
null
&&
!
results
.
isEmpty
())
{
if
(
results
.
size
()
>=
8
){
if
(
results
.
size
()
>=
8
)
{
break
;
break
;
}
}
}
}
...
@@ -435,7 +436,11 @@ public class AgvBoxDeviceClientController {
...
@@ -435,7 +436,11 @@ public class AgvBoxDeviceClientController {
if
(
StringUtils
.
isNotBlank
(
queueTask
.
getLoc
()))
{
if
(
StringUtils
.
isNotBlank
(
queueTask
.
getLoc
()))
{
results
.
add
(
queueTask
.
getBarcode
()
+
"需要出库到工位:"
+
queueTask
.
getLoc
());
results
.
add
(
queueTask
.
getBarcode
()
+
"需要出库到工位:"
+
queueTask
.
getLoc
());
}
else
{
}
else
{
results
.
add
(
queueTask
.
getBarcode
()
+
"需要出库"
);
if
(
queueTask
.
getExtendType
()
==
ExtendType
.
INVENTORY_CHECKOUT
)
{
results
.
add
(
queueTask
.
getBarcode
()
+
"需要盘点"
);
}
else
{
results
.
add
(
queueTask
.
getBarcode
()
+
"需要出库"
);
}
}
}
}
}
}
}
...
@@ -457,6 +462,7 @@ public class AgvBoxDeviceClientController {
...
@@ -457,6 +462,7 @@ public class AgvBoxDeviceClientController {
barcode
.
setInOpor
(
""
);
barcode
.
setInOpor
(
""
);
barcode
.
setCheckOutDate
(
null
,
""
);
barcode
.
setCheckOutDate
(
null
,
""
);
barcode
.
setPosName
(
opTask
.
getPosName
());
barcode
.
setPosName
(
opTask
.
getPosName
());
storagePos
.
setBarcode
(
barcode
);
dataCache
.
updateInventory
(
storagePos
,
barcode
);
dataCache
.
updateInventory
(
storagePos
,
barcode
);
//需要更新料箱中物料的库存
//需要更新料箱中物料的库存
List
<
Barcode
>
subCodes
=
barcode
.
getSubCodeList
();
List
<
Barcode
>
subCodes
=
barcode
.
getSubCodeList
();
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/InventoryController.java
查看文件 @
b6cfa5f
...
@@ -309,6 +309,7 @@ public class InventoryController {
...
@@ -309,6 +309,7 @@ public class InventoryController {
dataLog
.
setType
(
OP
.
CHECKOUT
);
dataLog
.
setType
(
OP
.
CHECKOUT
);
dataLog
.
setCreator
(
SecurityUtils
.
getCurrentUsername
());
dataLog
.
setCreator
(
SecurityUtils
.
getCurrentUsername
());
dataLog
.
setExtendType
(
ExtendType
.
INVENTORY_CHECKOUT
);
//盘点出库
dataLog
.
setExtendType
(
ExtendType
.
INVENTORY_CHECKOUT
);
//盘点出库
dataLog
.
setInventoryBatch
(
dataCache
.
getCache
(
INVENTORY_DATA
));
try
{
try
{
taskService
.
addTaskToExecute
(
dataLog
);
taskService
.
addTaskToExecute
(
dataLog
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
@@ -590,6 +591,7 @@ public class InventoryController {
...
@@ -590,6 +591,7 @@ public class InventoryController {
task
.
setOperator
(
SecurityUtils
.
getCurrentUsername
());
task
.
setOperator
(
SecurityUtils
.
getCurrentUsername
());
task
.
setExtendType
(
extendType
);
task
.
setExtendType
(
extendType
);
task
.
setBoxPosName
(
pos
.
getPosName
());
task
.
setBoxPosName
(
pos
.
getPosName
());
task
.
setInventoryBatch
(
dataCache
.
getCache
(
INVENTORY_DATA
));
taskService
.
addTaskToExecute
(
task
);
taskService
.
addTaskToExecute
(
task
);
}
}
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/OutLineController.java
查看文件 @
b6cfa5f
...
@@ -226,6 +226,22 @@ public class OutLineController {
...
@@ -226,6 +226,22 @@ public class OutLineController {
return
ResultBean
.
newErrorResult
(-
2
,
""
,
e
.
getMessage
());
return
ResultBean
.
newErrorResult
(-
2
,
""
,
e
.
getMessage
());
}
}
}
}
//判断物料是否过期
Date
expireDate
=
barcode
.
getExpireDate
();
if
(
expireDate
!=
null
)
{
if
(
System
.
currentTimeMillis
()
>
expireDate
.
getTime
())
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.error.barcode.expired"
,
"物料已过期,无法入库."
);
}
}
//校验是否可以入库
Map
<
String
,
Object
>
brandQty
=
lizhenApi
.
brandQty
(
barcode
.
getPartNumber
(),
barcode
.
getProvider
());
if
(
brandQty
==
null
||
brandQty
.
isEmpty
())
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.error.barcode.partNumber.invalid"
,
"{0}不是有效的料号"
,
new
String
[]{
barcode
.
getPartNumber
()});
}
//获取mes数量
//获取mes数量
Barcode
barcodeInfo
=
lizhenApi
.
barcodeInfo
(
barcode
);
Barcode
barcodeInfo
=
lizhenApi
.
barcodeInfo
(
barcode
);
if
(
barcodeInfo
!=
null
){
if
(
barcodeInfo
!=
null
){
...
@@ -814,6 +830,9 @@ public class OutLineController {
...
@@ -814,6 +830,9 @@ public class OutLineController {
taskService
.
addBoxPosName
(
task
);
taskService
.
addBoxPosName
(
task
);
log
.
info
(
"虚拟仓出库,已有出库任务,直接完成:"
+
task
.
getBarcode
());
log
.
info
(
"虚拟仓出库,已有出库任务,直接完成:"
+
task
.
getBarcode
());
task
.
setStatus
(
OP_STATUS
.
FINISHED
.
name
());
task
.
setStatus
(
OP_STATUS
.
FINISHED
.
name
());
if
(
task
.
getExtendType
()
==
-
1
){
task
.
setExtendType
(
ExtendType
.
VIRTUAL_CHECKOUT
);
}
//task.setExtendType(ExtendType.VIRTUAL_CHECKOUT);
//task.setExtendType(ExtendType.VIRTUAL_CHECKOUT);
taskService
.
moveTaskToFinished
(
task
);
taskService
.
moveTaskToFinished
(
task
);
taskService
.
updateFinishedTask
(
task
);
taskService
.
updateFinishedTask
(
task
);
...
@@ -1153,6 +1172,7 @@ public class OutLineController {
...
@@ -1153,6 +1172,7 @@ public class OutLineController {
task
.
setKeeperCode
(
barcode
.
getKeeperCode
());
task
.
setKeeperCode
(
barcode
.
getKeeperCode
());
task
.
setReelPosName
(
barcode
.
getPosName
());
task
.
setReelPosName
(
barcode
.
getPosName
());
task
.
setExtendType
(
extendType
);
task
.
setExtendType
(
extendType
);
task
.
setWarehouseCode
(
barcode
.
getWarehouseCode
());
taskService
.
updateFinishedTask
(
task
);
taskService
.
updateFinishedTask
(
task
);
return
""
;
return
""
;
}
}
...
@@ -1166,6 +1186,7 @@ public class OutLineController {
...
@@ -1166,6 +1186,7 @@ public class OutLineController {
task
.
setOperator
(
SecurityUtils
.
getCurrentUsername
());
task
.
setOperator
(
SecurityUtils
.
getCurrentUsername
());
task
.
setBoxPosName
(
pos
.
getPosName
());
task
.
setBoxPosName
(
pos
.
getPosName
());
task
.
setExtendType
(
extendType
);
task
.
setExtendType
(
extendType
);
task
.
setWarehouseCode
(
barcode
.
getWarehouseCode
());
taskService
.
addTaskToExecute
(
task
);
taskService
.
addTaskToExecute
(
task
);
return
task
;
return
task
;
}
}
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/TaskRestController.java
查看文件 @
b6cfa5f
...
@@ -180,6 +180,16 @@ public class TaskRestController {
...
@@ -180,6 +180,16 @@ public class TaskRestController {
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
}
}
/**
* 初始化,刷新过期时间
*/
/* @PostConstruct
public void flushExpireData() {
List<StoragePos> storagePosList = storagePosManager.findNotEmpty();
if (storagePosList != null && !storagePosList.isEmpty()) {
}
}*/
}
}
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/WarehouseController.java
查看文件 @
b6cfa5f
...
@@ -397,6 +397,21 @@ public class WarehouseController {
...
@@ -397,6 +397,21 @@ public class WarehouseController {
label
.
setRemainingAmount
(
remainingAmount
-
barcode
.
getAmount
());
label
.
setRemainingAmount
(
remainingAmount
-
barcode
.
getAmount
());
grLabelManager
.
save
(
label
);
grLabelManager
.
save
(
label
);
}
}
//判断物料是否过期
Date
expireDate
=
barcode
.
getExpireDate
();
if
(
expireDate
!=
null
)
{
if
(
System
.
currentTimeMillis
()
>
expireDate
.
getTime
())
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.error.barcode.expired"
,
"物料已过期,无法入库."
);
}
}
//校验是否可以入库
Map
<
String
,
Object
>
brandQty
=
lizhenApi
.
brandQty
(
barcode
.
getPartNumber
(),
barcode
.
getProvider
());
if
(
brandQty
==
null
||
brandQty
.
isEmpty
())
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.error.barcode.partNumber.invalid"
,
"{0}不是有效的料号"
,
new
String
[]{
barcode
.
getPartNumber
()});
}
//获取mes数量
//获取mes数量
Barcode
barcodeInfo
=
lizhenApi
.
barcodeInfo
(
barcode
);
Barcode
barcodeInfo
=
lizhenApi
.
barcodeInfo
(
barcode
);
if
(
barcodeInfo
!=
null
){
if
(
barcodeInfo
!=
null
){
...
@@ -406,7 +421,7 @@ public class WarehouseController {
...
@@ -406,7 +421,7 @@ public class WarehouseController {
int
reelCurrentNum
=
station
.
getReelCurrentNum
();
int
reelCurrentNum
=
station
.
getReelCurrentNum
();
station
.
setReelCurrentNum
(
reelCurrentNum
+
1
);
station
.
setReelCurrentNum
(
reelCurrentNum
+
1
);
Date
date
=
new
Date
();
Date
date
=
new
Date
();
barcode
.
setPutInDate
(
new
Date
());
//
barcode.setPutInDate(new Date());
barcode
.
setPutInTime
(
date
.
getTime
());
barcode
.
setPutInTime
(
date
.
getTime
());
resultBean
=
finishTask
(
boxStr
,
OP
.
PUT_IN
,
barcode
,
OP_STATUS
.
FINISHED
.
name
(),
INOUT_TYPE
.
IN_ONE
.
name
(),
lastScanBoxCode
,
grLabelStr
,
name
);
resultBean
=
finishTask
(
boxStr
,
OP
.
PUT_IN
,
barcode
,
OP_STATUS
.
FINISHED
.
name
(),
INOUT_TYPE
.
IN_ONE
.
name
(),
lastScanBoxCode
,
grLabelStr
,
name
);
}
}
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/innerBox/rest/VirtualRestController.java
查看文件 @
b6cfa5f
...
@@ -122,6 +122,13 @@ public class VirtualRestController {
...
@@ -122,6 +122,13 @@ public class VirtualRestController {
if
(
StringUtils
.
isBlank
(
posName
))
{
if
(
StringUtils
.
isBlank
(
posName
))
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"库位"
});
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"库位"
});
}
}
//校验是否可以入库
Map
<
String
,
Object
>
brandQty
=
lizhenApi
.
brandQty
(
barcode
.
getPartNumber
(),
barcode
.
getProvider
());
if
(
brandQty
==
null
||
brandQty
.
isEmpty
())
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.error.barcode.partNumber.invalid"
,
"{0}不是有效的料号"
,
new
String
[]{
barcode
.
getPartNumber
()});
}
Barcode
barcodeInfo
=
lizhenApi
.
barcodeInfo
(
barcode
);
Barcode
barcodeInfo
=
lizhenApi
.
barcodeInfo
(
barcode
);
if
(
barcodeInfo
!=
null
){
if
(
barcodeInfo
!=
null
){
barcode
=
barcodeInfo
;
barcode
=
barcodeInfo
;
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/kanban/inner/InnerKanbanController.java
查看文件 @
b6cfa5f
...
@@ -13,7 +13,9 @@ import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
...
@@ -13,7 +13,9 @@ 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.service.manager.IDataLogManager
;
import
com.neotel.smfcore.core.system.service.manager.IDataLogManager
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.lizhen.kanban.common.KanbanUtils
;
import
com.neotel.smfcore.custom.lizhen.kanban.common.KanbanUtils
;
import
com.neotel.smfcore.custom.lizhen.kanban.common.bean.dto.InOutDataDto
;
import
com.neotel.smfcore.custom.lizhen.kanban.common.bean.dto.InOutDataDto
;
import
com.neotel.smfcore.custom.lizhen.kanban.inner.bean.dto.DevicesStatusDto
;
import
com.neotel.smfcore.custom.lizhen.kanban.inner.bean.dto.DevicesStatusDto
;
...
@@ -46,6 +48,9 @@ public class InnerKanbanController {
...
@@ -46,6 +48,9 @@ public class InnerKanbanController {
@Autowired
@Autowired
private
IStoragePosManager
storagePosManager
;
private
IStoragePosManager
storagePosManager
;
@Autowired
private
TaskService
taskService
;
public
static
final
Map
<
String
,
Long
>
expireMap
=
Maps
.
newConcurrentMap
();
public
static
final
Map
<
String
,
Long
>
expireMap
=
Maps
.
newConcurrentMap
();
/**
/**
...
@@ -89,6 +94,8 @@ public class InnerKanbanController {
...
@@ -89,6 +94,8 @@ public class InnerKanbanController {
dto
.
setTotalNeedCount
(
getLackPickingCount
(
0
,
line
));
dto
.
setTotalNeedCount
(
getLackPickingCount
(
0
,
line
));
//统计已发数量
//统计已发数量
dto
.
setTotalOutCount
(
getLackPickingCount
(-
1
,
line
));
dto
.
setTotalOutCount
(
getLackPickingCount
(-
1
,
line
));
//待出数量
dto
.
setReadyOutCount
(
dto
.
getTotalNeedCount
()
-
dto
.
getTotalOutCount
());
resultList
.
add
(
dto
);
resultList
.
add
(
dto
);
}
}
return
ResultBean
.
newOkResult
(
resultList
);
return
ResultBean
.
newOkResult
(
resultList
);
...
@@ -185,13 +192,17 @@ public class InnerKanbanController {
...
@@ -185,13 +192,17 @@ public class InnerKanbanController {
*/
*/
@RequestMapping
(
"/getExpireInfo"
)
@RequestMapping
(
"/getExpireInfo"
)
@AnonymousAccess
@AnonymousAccess
public
ResultBean
getExpireInfo
()
{
public
ResultBean
getExpireInfo
()
throws
ParseException
{
Long
lastSaveTime
=
expireMap
.
get
(
"lastSaveTime"
);
Long
lastSaveTime
=
expireMap
.
get
(
"lastSaveTime"
);
if
(
lastSaveTime
==
null
||
System
.
currentTimeMillis
()
-
lastSaveTime
>=
1000
*
60
*
60
)
{
if
(
lastSaveTime
==
null
||
System
.
currentTimeMillis
()
-
lastSaveTime
>=
1000
*
60
*
60
)
{
expireMap
.
put
(
"zeroToServen"
,
0
l
);
expireMap
.
put
(
"zeroToServen"
,
0
l
);
expireMap
.
put
(
"servenToThirty"
,
0
l
);
expireMap
.
put
(
"servenToThirty"
,
0
l
);
expireMap
.
put
(
"expire"
,
0
l
);
expireMap
.
put
(
"expire"
,
0
l
);
Query
query
=
new
Query
().
addCriteria
(
Criteria
.
where
(
"barcode"
).
exists
(
true
).
and
(
"barcode.expireDate"
).
lte
(
new
Date
()));
//当前时间减30天
Date
startDate
=
DateUtil
.
addDays
(
new
Date
(),
-
30
);
String
startDateStr
=
DateUtil
.
toDateString
(
startDate
,
"yyyy-MM-dd"
);
startDate
=
DateUtil
.
toDate
(
startDateStr
,
"yyyy-MM-dd"
);
Query
query
=
new
Query
().
addCriteria
(
Criteria
.
where
(
"barcode"
).
exists
(
true
).
and
(
"barcode.expireDate"
).
lte
(
startDate
));
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByQuery
(
query
);
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByQuery
(
query
);
long
zeroToServen
=
storagePosList
.
stream
().
filter
(
item
->
{
long
zeroToServen
=
storagePosList
.
stream
().
filter
(
item
->
{
Barcode
barcode
=
item
.
getBarcode
();
Barcode
barcode
=
item
.
getBarcode
();
...
@@ -211,9 +222,15 @@ public class InnerKanbanController {
...
@@ -211,9 +222,15 @@ public class InnerKanbanController {
}
}
return
false
;
return
false
;
}).
count
();
}).
count
();
List
<
Criteria
>
orCriList
=
new
ArrayList
<>();
orCriList
.
add
(
Criteria
.
where
(
"barcode"
).
exists
(
true
).
and
(
"barcode.expireDate"
).
gt
(
new
Date
()));
orCriList
.
add
(
Criteria
.
where
(
"barcode"
).
exists
(
true
).
and
(
"barcode.expireDate"
).
exists
(
false
));
int
noExpire
=
storagePosManager
.
countByQuery
(
new
Query
(
new
Criteria
().
orOperator
(
orCriList
)));
expireMap
.
put
(
"noExpire"
,
(
long
)
noExpire
);
expireMap
.
put
(
"zeroToServen"
,
zeroToServen
);
expireMap
.
put
(
"zeroToServen"
,
zeroToServen
);
expireMap
.
put
(
"servenToThirty"
,
servenToThirty
);
expireMap
.
put
(
"servenToThirty"
,
servenToThirty
);
expireMap
.
put
(
"expire"
,
storagePosList
==
null
?
0
l
:
(
long
)
storagePosList
.
size
()
);
expireMap
.
put
(
"expire"
,
storagePosList
==
null
?
0
l
:
storagePosList
.
size
()
);
expireMap
.
put
(
"lastSaveTime"
,
System
.
currentTimeMillis
());
expireMap
.
put
(
"lastSaveTime"
,
System
.
currentTimeMillis
());
}
}
return
ResultBean
.
newOkResult
(
expireMap
);
return
ResultBean
.
newOkResult
(
expireMap
);
...
@@ -239,5 +256,16 @@ public class InnerKanbanController {
...
@@ -239,5 +256,16 @@ public class InnerKanbanController {
c
.
andOperator
(
Criteria
.
where
(
"updateDate"
).
gte
(
currentDate
),
Criteria
.
where
(
"updateDate"
).
lt
(
DateUtil
.
addDays
(
currentDate
,
1
)));
c
.
andOperator
(
Criteria
.
where
(
"updateDate"
).
gte
(
currentDate
),
Criteria
.
where
(
"updateDate"
).
lt
(
DateUtil
.
addDays
(
currentDate
,
1
)));
return
liteOrderItemManager
.
countByQuery
(
q
.
addCriteria
(
c
));
return
liteOrderItemManager
.
countByQuery
(
q
.
addCriteria
(
c
));
}
}
private
int
getReadyOutCount
(
String
line
)
{
int
count
=
0
;
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
for
(
DataLog
task
:
allTasks
)
{
if
(
line
.
equals
(
task
.
getLine
())){
count
++;
}
}
return
count
;
}
}
}
src/main/java/com/neotel/smfcore/custom/lizhen/kanban/inner/bean/dto/LackPickingDto.java
查看文件 @
b6cfa5f
...
@@ -21,4 +21,9 @@ public class LackPickingDto {
...
@@ -21,4 +21,9 @@ public class LackPickingDto {
* 已经出库的数量
* 已经出库的数量
*/
*/
private
int
totalOutCount
;
private
int
totalOutCount
;
/**
* 待出数量
*/
private
int
readyOutCount
;
}
}
src/main/java/com/neotel/smfcore/custom/lizhen/kanban/outer/OuterKanbanController.java
查看文件 @
b6cfa5f
...
@@ -90,7 +90,7 @@ public class OuterKanbanController {
...
@@ -90,7 +90,7 @@ public class OuterKanbanController {
for
(
int
i
=
1
;
i
<
6
;
i
++)
{
for
(
int
i
=
1
;
i
<
6
;
i
++)
{
StationInOutDto
dto
=
new
StationInOutDto
();
StationInOutDto
dto
=
new
StationInOutDto
();
String
stationName
=
"s"
+
i
;
String
stationName
=
"s"
+
i
;
dto
.
setName
(
stationName
);
dto
.
setName
(
stationName
.
toUpperCase
(
Locale
.
ROOT
)
);
int
inCount
=
dataLogManager
.
getInOutData
(
currentDate
,
endDate
,
OP
.
PUT_IN
,
stationName
);
int
inCount
=
dataLogManager
.
getInOutData
(
currentDate
,
endDate
,
OP
.
PUT_IN
,
stationName
);
dto
.
setInCount
(
inCount
);
dto
.
setInCount
(
inCount
);
int
outCount
=
dataLogManager
.
getInOutData
(
currentDate
,
endDate
,
OP
.
CHECKOUT
,
stationName
);
int
outCount
=
dataLogManager
.
getInOutData
(
currentDate
,
endDate
,
OP
.
CHECKOUT
,
stationName
);
...
@@ -179,6 +179,7 @@ public class OuterKanbanController {
...
@@ -179,6 +179,7 @@ public class OuterKanbanController {
expireMap
.
put
(
"zeroToServen"
,
0
l
);
expireMap
.
put
(
"zeroToServen"
,
0
l
);
expireMap
.
put
(
"servenToThirty"
,
0
l
);
expireMap
.
put
(
"servenToThirty"
,
0
l
);
expireMap
.
put
(
"expire"
,
0
l
);
expireMap
.
put
(
"expire"
,
0
l
);
expireMap
.
put
(
"noExpire"
,
0
l
);
Query
query
=
new
Query
().
addCriteria
(
Criteria
.
where
(
"posName"
).
exists
(
true
).
ne
(
""
).
and
(
"expireDate"
).
lt
(
new
Date
()));
Query
query
=
new
Query
().
addCriteria
(
Criteria
.
where
(
"posName"
).
exists
(
true
).
ne
(
""
).
and
(
"expireDate"
).
lt
(
new
Date
()));
List
<
Barcode
>
barcodeList
=
barcodeManager
.
findByQuery
(
query
);
List
<
Barcode
>
barcodeList
=
barcodeManager
.
findByQuery
(
query
);
long
zeroToServen
=
barcodeList
.
stream
().
filter
(
item
->
{
long
zeroToServen
=
barcodeList
.
stream
().
filter
(
item
->
{
...
@@ -197,6 +198,11 @@ public class OuterKanbanController {
...
@@ -197,6 +198,11 @@ public class OuterKanbanController {
}
}
return
false
;
return
false
;
}).
count
();
}).
count
();
List
<
Criteria
>
orCriList
=
new
ArrayList
<>();
orCriList
.
add
(
Criteria
.
where
(
"expireDate"
).
gt
(
new
Date
()).
and
(
"posName"
).
exists
(
true
).
ne
(
""
).
and
(
"partNumber"
).
nin
(
Arrays
.
asList
(
"CS"
,
"CM"
,
"CB"
)));
orCriList
.
add
(
Criteria
.
where
(
"expireDate"
).
exists
(
false
).
and
(
"posName"
).
exists
(
true
).
ne
(
""
).
and
(
"partNumber"
).
nin
(
Arrays
.
asList
(
"CS"
,
"CM"
,
"CB"
)));
int
noExpire
=
barcodeManager
.
countByQuery
(
new
Query
(
new
Criteria
().
orOperator
(
orCriList
)));
expireMap
.
put
(
"noExpire"
,
(
long
)
noExpire
);
expireMap
.
put
(
"zeroToServen"
,
zeroToServen
);
expireMap
.
put
(
"zeroToServen"
,
zeroToServen
);
expireMap
.
put
(
"servenToThirty"
,
servenToThirty
);
expireMap
.
put
(
"servenToThirty"
,
servenToThirty
);
expireMap
.
put
(
"expire"
,
barcodeList
==
null
?
0
l
:
(
long
)
barcodeList
.
size
());
expireMap
.
put
(
"expire"
,
barcodeList
==
null
?
0
l
:
(
long
)
barcodeList
.
size
());
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/kanban/utils/AgvStatusCache.java
查看文件 @
b6cfa5f
...
@@ -82,7 +82,6 @@ public class AgvStatusCache {
...
@@ -82,7 +82,6 @@ public class AgvStatusCache {
locList
.
addAll
(
getLocByType
(
2
));
locList
.
addAll
(
getLocByType
(
2
));
locCnList
.
addAll
(
getLocCnByType
(
2
));
locCnList
.
addAll
(
getLocCnByType
(
2
));
}
}
int
type
=
1
;
for
(
AgvInfo
agvInfo
:
agvInfoCacheList
)
{
for
(
AgvInfo
agvInfo
:
agvInfoCacheList
)
{
String
loc
=
agvInfo
.
getLoc
();
String
loc
=
agvInfo
.
getLoc
();
if
(
StringUtils
.
isNotBlank
(
Location
.
getLoc
(
loc
)))
{
if
(
StringUtils
.
isNotBlank
(
Location
.
getLoc
(
loc
)))
{
...
@@ -92,8 +91,6 @@ public class AgvStatusCache {
...
@@ -92,8 +91,6 @@ public class AgvStatusCache {
}
}
agvInfo
.
setLocList
(
locList
);
agvInfo
.
setLocList
(
locList
);
agvInfo
.
setLocCnList
(
locCnList
);
agvInfo
.
setLocCnList
(
locCnList
);
agvInfo
.
setType
(
type
);
type
++;
}
}
return
ResultBean
.
newOkResult
(
agvInfoCacheList
);
return
ResultBean
.
newOkResult
(
agvInfoCacheList
);
}
}
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/kanban/utils/enums/Location.java
查看文件 @
b6cfa5f
...
@@ -7,12 +7,12 @@ public enum Location {
...
@@ -7,12 +7,12 @@ public enum Location {
//外仓点位
//外仓点位
WAREHOUSE
(
"仓库"
,
2
),
WAREHOUSE
(
"仓库"
,
2
),
TAKE
(
"取料点"
,
2
),
PUT
(
"放料点"
,
2
),
PUT
(
"放料点"
,
2
),
//内外仓,通用点位
//内外仓,通用点位
STANDBY
(
"待机点"
,
0
),
STANDBY
(
"待机点"
,
0
),
CHARGE
(
"充电点"
,
0
);
CHARGE
(
"充电点"
,
0
),
TAKE
(
"取料点"
,
0
);
private
String
loc
;
private
String
loc
;
private
int
type
;
private
int
type
;
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/report/outer/OuterReportController.java
查看文件 @
b6cfa5f
...
@@ -441,6 +441,8 @@ public class OuterReportController {
...
@@ -441,6 +441,8 @@ public class OuterReportController {
resultMap
.
put
(
"异动数量"
,
getData
(
dataLog
.
getNum
()));
resultMap
.
put
(
"异动数量"
,
getData
(
dataLog
.
getNum
()));
resultMap
.
put
(
"储位"
,
getData
(
dataLog
.
getStoragePosName
()));
resultMap
.
put
(
"储位"
,
getData
(
dataLog
.
getStoragePosName
()));
resultMap
.
put
(
"异动类型"
,
getData
(
dataLog
.
getChangeType
()));
resultMap
.
put
(
"异动类型"
,
getData
(
dataLog
.
getChangeType
()));
resultMap
.
put
(
"PK ID"
,
getData
(
dataLog
.
getOrderNo
()));
resultMap
.
put
(
"盘点批次"
,
getData
(
dataLog
.
getInventoryBatch
()));
resultMap
.
put
(
"箱号"
,
getData
(
dataLog
.
getBox
()));
resultMap
.
put
(
"箱号"
,
getData
(
dataLog
.
getBox
()));
resultMap
.
put
(
"ID NO"
,
getData
(
dataLog
.
getBarcode
()));
resultMap
.
put
(
"ID NO"
,
getData
(
dataLog
.
getBarcode
()));
resultMap
.
put
(
"LOT"
,
getData
(
dataLog
.
getBatchInfo
()));
resultMap
.
put
(
"LOT"
,
getData
(
dataLog
.
getBatchInfo
()));
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/util/ExpireDateUtil.java
查看文件 @
b6cfa5f
...
@@ -6,20 +6,22 @@ import cn.hutool.core.date.DateUtil;
...
@@ -6,20 +6,22 @@ import cn.hutool.core.date.DateUtil;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.Locale
;
@Slf4j
@Slf4j
public
class
ExpireDateUtil
{
public
class
ExpireDateUtil
{
public
static
Date
getExpireDate
(
String
dateStr
,
String
vendor
)
{
public
static
Date
getExpireDate
(
String
dateStr
,
String
vendor
)
{
try
{
try
{
vendor
=
vendor
.
toUpperCase
(
Locale
.
ROOT
);
switch
(
vendor
)
{
switch
(
vendor
)
{
case
"UMT"
:
case
"UMT"
:
return
getWWYYDate
(
dateStr
);
return
getWWYYDate
(
dateStr
);
case
"AT&S"
:
case
"AT&S"
:
return
getWWYYDate
(
dateStr
);
return
getWWYYDate
(
dateStr
);
case
"C
ompeq
"
:
case
"C
OMPEQ
"
:
return
getWWYYDate
(
dateStr
);
return
getWWYYDate
(
dateStr
);
case
"A
vary
"
:
case
"A
VARY
"
:
return
getWWYYDate
(
dateStr
);
return
getWWYYDate
(
dateStr
);
case
"AKMMV"
:
case
"AKMMV"
:
return
getWWYYDate
(
dateStr
);
return
getWWYYDate
(
dateStr
);
...
@@ -27,15 +29,15 @@ public class ExpireDateUtil {
...
@@ -27,15 +29,15 @@ public class ExpireDateUtil {
return
getYYYYMMDDDate
(
dateStr
);
return
getYYYYMMDDDate
(
dateStr
);
case
"SUNWAY"
:
case
"SUNWAY"
:
return
getYYMMDDDate
(
dateStr
);
return
getYYMMDDDate
(
dateStr
);
case
"F
ujikura
"
:
case
"F
UJIKURA
"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"CCTC"
:
case
"CCTC"
:
return
getWWYYDate
(
dateStr
);
return
getWWYYDate
(
dateStr
);
case
"J
ones
"
:
case
"J
ONES
"
:
return
getYYMMDDDate
(
dateStr
);
return
getYYMMDDDate
(
dateStr
);
case
"M
arian
"
:
case
"M
ARIAN
"
:
return
getYYMMDDDate
(
dateStr
);
return
getYYMMDDDate
(
dateStr
);
case
"M
urata
"
:
case
"M
URATA
"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"JAE"
:
case
"JAE"
:
return
getYYMMDate
(
dateStr
);
return
getYYMMDate
(
dateStr
);
...
@@ -47,7 +49,7 @@ public class ExpireDateUtil {
...
@@ -47,7 +49,7 @@ public class ExpireDateUtil {
return
getYYMMDDDate
(
dateStr
);
return
getYYMMDDDate
(
dateStr
);
case
"TRIUMPH/LY"
:
case
"TRIUMPH/LY"
:
return
getYYYYMMDDDate
(
dateStr
);
return
getYYYYMMDDDate
(
dateStr
);
case
"E
verwin
"
:
case
"E
VERWIN
"
:
return
getYYMMDDDate
(
dateStr
);
return
getYYMMDDDate
(
dateStr
);
case
"INTERPLEX"
:
case
"INTERPLEX"
:
return
getYYMMDDDate
(
dateStr
);
return
getYYMMDDDate
(
dateStr
);
...
@@ -55,21 +57,21 @@ public class ExpireDateUtil {
...
@@ -55,21 +57,21 @@ public class ExpireDateUtil {
return
getYYYYMMDDDate
(
dateStr
);
return
getYYYYMMDDDate
(
dateStr
);
case
"YAGEO"
:
case
"YAGEO"
:
return
getYYYYMMDDDate
(
dateStr
);
return
getYYYYMMDDDate
(
dateStr
);
case
"S
ony
"
:
case
"S
ONY
"
:
return
getYYYYMMDDDate
(
dateStr
);
return
getYYYYMMDDDate
(
dateStr
);
case
"K
ioxia
"
:
case
"K
IOXIA
"
:
return
getYYYYMMDDDate
(
dateStr
);
return
getYYYYMMDDDate
(
dateStr
);
case
"T
aiyo
"
:
case
"T
AIYO
"
:
return
getYYMMDate
(
dateStr
);
return
getYYMMDate
(
dateStr
);
case
"H
ynix
"
:
case
"H
YNIX
"
:
return
getYWWDate
(
dateStr
);
return
getYWWDate
(
dateStr
);
case
"A
mkor
"
:
case
"A
MKOR
"
:
return
getYWWDDate
(
dateStr
);
return
getYWWDDate
(
dateStr
);
case
"Q
ualcomm
"
:
case
"Q
UALCOMM
"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"S
kyworks
"
:
case
"S
KYWORKS
"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"Q
orvo
"
:
case
"Q
ORVO
"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"LG"
:
case
"LG"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
...
@@ -79,13 +81,13 @@ public class ExpireDateUtil {
...
@@ -79,13 +81,13 @@ public class ExpireDateUtil {
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"JSCK"
:
case
"JSCK"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"K
yocera
"
:
case
"K
YOCERA
"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"TDK"
:
case
"TDK"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"INFINEON"
:
case
"INFINEON"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"E
pson
"
:
case
"E
PSON
"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"TXC"
:
case
"TXC"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
...
@@ -99,29 +101,29 @@ public class ExpireDateUtil {
...
@@ -99,29 +101,29 @@ public class ExpireDateUtil {
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"NXP"
:
case
"NXP"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"C
irrus
"
:
case
"C
IRRUS
"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"ADI"
:
case
"ADI"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"B
roadcom
"
:
case
"B
ROADCOM
"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"ST"
:
case
"ST"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"B
osch
"
:
case
"B
OSCH
"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"SAMSUNG"
:
case
"SAMSUNG"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"WD"
:
case
"WD"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"R
ichtek
"
:
case
"R
ICHTEK
"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"N
experia
"
:
case
"N
EXPERIA
"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"GIGADEVICE"
:
case
"GIGADEVICE"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"W
inbond
"
:
case
"W
INBOND
"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"D
ialog/Renesas
"
:
case
"D
IALOG/RENESAS
"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
case
"SITIME"
:
case
"SITIME"
:
return
getYYWWDate
(
dateStr
);
return
getYYWWDate
(
dateStr
);
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论