Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 898a760c
由
zshaohui
编写于
2024-01-22 09:41:53 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.io异常加在全部异常中
2.增加工单剩余数量缓存 3.虚拟回仓逻辑修改 4.迈征工单一盘料没有的时候 通知迈征 5.迈征服务器请求指定Reel的位置 修改 6.获取迈征请求数据 提供给客户端
1 个父辈
e2502472
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
117 行增加
和
20 行删除
src/main/java/com/neotel/smfcore/common/exception/handler/GlobalExceptionHandler.java
src/main/java/com/neotel/smfcore/common/utils/Constants.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
src/main/java/com/neotel/smfcore/core/system/rest/SettingsController.java
src/main/java/com/neotel/smfcore/core/system/rest/bean/dto/SysSettingsDto.java
src/main/java/com/neotel/smfcore/custom/lizhen/third/maicheng/controller/MaiZhengController.java
src/main/java/com/neotel/smfcore/custom/lizhen/third/maicheng/controller/MaiZhengDeviceController.java
src/main/java/com/neotel/smfcore/common/exception/handler/GlobalExceptionHandler.java
查看文件 @
898a760
...
...
@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
import
org.springframework.web.context.support.HttpRequestHandlerServlet
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.IOException
;
import
java.util.Locale
;
import
java.util.Objects
;
...
...
@@ -106,6 +107,11 @@ public class GlobalExceptionHandler {
return
buildResponseEntity
(
ApiError
.
error
(
message
));
}
@ExceptionHandler
(
value
=
IOException
.
class
)
public
void
ioException
(
IOException
e
)
{
log
.
error
(
"捕获到IOException"
);
}
/**
* 统一返回
*/
...
...
src/main/java/com/neotel/smfcore/common/utils/Constants.java
查看文件 @
898a760
...
...
@@ -190,4 +190,9 @@ public class Constants {
* 是否忽略流水线检查
*/
public
static
final
String
CACHE_ignoreLineCheck
=
"ignoreLineCheck"
;
/**
* 工单剩余数量
*/
public
static
final
String
CACHE_ordrRemainingQty
=
"ordrRemainingQty"
;
}
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
898a760
...
...
@@ -6,14 +6,11 @@ import com.google.common.collect.Lists;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.JsonUtil
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.api.SmfApi
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.device.enums.BOX_STATUS
;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.device.util.DataCache
;
...
...
@@ -27,26 +24,22 @@ import com.neotel.smfcore.core.order.service.po.LiteOrder;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.core.storage.bean.InventoryItem
;
import
com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
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.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.lizhen.LizhenApi
;
import
com.neotel.smfcore.custom.lizhen.innerBox.bean.StorageExport
;
import
com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType
;
import
com.neotel.smfcore.custom.lizhen.innerBox.util.StorageExportUtil
;
import
com.neotel.smfcore.custom.lizhen.report.bean.query.ReportQueryCondition
;
import
com.sun.org.apache.regexp.internal.RE
;
import
com.neotel.smfcore.custom.lizhen.third.maicheng.api.MaiZhengApi
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.data.mongodb.core.query.Update
;
import
org.springframework.stereotype.Service
;
import
springfox.documentation.spring.web.json.Json
;
import
java.util.*
;
import
java.util.concurrent.ConcurrentHashMap
;
...
...
@@ -83,6 +76,9 @@ public class LiteOrderCache {
@Autowired
private
LizhenApi
lizhenApi
;
@Autowired
private
MaiZhengApi
maiZhengApi
;
/**
* 正在执行的liteOrderMap, key 为orderNo,value 为order
*/
...
...
@@ -617,6 +613,10 @@ public class LiteOrderCache {
liteOrderMap
.
put
(
cacheOrder
.
getOrderNo
(),
cacheOrder
);
if
(
taskReelCount
<=
0
)
{
//如果是迈征工单,则通知迈征
if
(
cacheOrder
.
isMaiZheng
()){
maiZhengApi
.
transReelBox
(
cacheOrder
);
}
//return "工单无可执行的任务";
return
"smfcore.order.out.noTask"
;
}
...
...
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
查看文件 @
898a760
...
...
@@ -549,9 +549,9 @@ public class OrderController {
}
LiteOrderItem
findItem
=
findVirtualItem
(
liteOrder
,
barcode
,
true
);
if
(
findItem
==
null
)
{
/*
if (findItem == null) {
findItem=findVirtualItem(liteOrder,barcode,false);
}
}
*/
if
(
findItem
==
null
)
{
...
...
@@ -563,8 +563,10 @@ public class OrderController {
findItem
.
setTotalOutNum
(
findItem
.
getTotalOutNum
()
+
num
);
findItem
.
setOutReelCount
(
findItem
.
getOutReelCount
()
+
1
);
findItem
.
setTotalOutReelCount
(
findItem
.
getTotalOutReelCount
()
+
1
);
findItem
.
setNeedReelCount
(
findItem
.
getNeedReelCount
()
+
1
);
//
findItem.setNeedReelCount(findItem.getNeedReelCount() + 1);
liteOrderItemManager
.
save
(
findItem
);
liteOrder
.
setTotalFinishedReelCount
(
liteOrder
.
getTotalFinishedReelCount
()
+
1
);
liteOrder
.
updateOrderItems
(
findItem
);
//工单未关闭的话,检查状态,全部都出完进行关闭
...
...
@@ -700,7 +702,16 @@ public class OrderController {
LiteOrderItem
findItem
=
null
;
for
(
LiteOrderItem
item
:
liteOrder
.
getOrderItems
())
{
if
(
checkNum
&&
item
.
getTotalOutNum
()
>=
item
.
getNeedNum
())
{
if
(
item
.
getTotalOutReelCount
()
>=
item
.
getNeedReelCount
()){
continue
;
}
if
(
barcode
.
getPartNumber
().
equals
(
item
.
getPn
())){
findItem
=
item
;
break
;
}
/*if (checkNum && item.getTotalOutNum() >= item.getNeedNum()) {
continue;
}
//pn
...
...
@@ -712,7 +723,7 @@ public class OrderController {
} else if (item.getRi().equals(barcode.getBarcode())) {
findItem = item;
break;
}
}
*/
}
return
findItem
;
}
...
...
src/main/java/com/neotel/smfcore/core/system/rest/SettingsController.java
查看文件 @
898a760
...
...
@@ -85,6 +85,12 @@ public class SettingsController {
dataCache
.
updateCache
(
Constants
.
CACHE_ignoreLineCheck
,
ignoreLineCheck
);
}
Integer
ordrRemainingQty
=
dataCache
.
getCache
(
Constants
.
CACHE_ordrRemainingQty
);
if
(
ordrRemainingQty
==
null
){
ordrRemainingQty
=
-
1
;
dataCache
.
updateCache
(
Constants
.
CACHE_ordrRemainingQty
,
ordrRemainingQty
);
}
SysSettingsDto
dto
=
new
SysSettingsDto
();
dto
.
setStartJob
(
startJob
);
dto
.
setStopOut
(
stopOut
);
...
...
@@ -96,6 +102,7 @@ public class SettingsController {
dto
.
setLineConfigList
(
lineConfigList
);
dto
.
setMaiZhengMinute
(
maiZhengMinute
);
dto
.
setIgnoreLineCheck
(
ignoreLineCheck
);
dto
.
setOrdrRemainingQty
(
ordrRemainingQty
);
return
dto
;
}
...
...
@@ -123,6 +130,10 @@ public class SettingsController {
dataCache
.
updateCache
(
Constants
.
CACHE_ignoreLineCheck
,
sysSettingsDto
.
isIgnoreLineCheck
());
dataCache
.
updateCache
(
Constants
.
CACHE_ordrRemainingQty
,
sysSettingsDto
.
getOrdrRemainingQty
());
log
.
info
(
"更改系统设置:stopout="
+
sysSettingsDto
.
isStopOut
()
+
",stopjob="
+
sysSettingsDto
.
isStartJob
()
+
",backUpMonth="
+
sysSettingsDto
.
getBackUpMonth
()
+
",preGenerateTask="
+
sysSettingsDto
.
getPreGenerateTask
()
...
...
@@ -132,6 +143,7 @@ public class SettingsController {
+
",lineConfigList="
+
sysSettingsDto
.
getLineConfigList
()
+
",maiZhengMinute="
+
sysSettingsDto
.
getMaiZhengMinute
()
+
",ignoreLineCheck="
+
sysSettingsDto
.
isIgnoreLineCheck
()
+
",ordrRemainingQty="
+
sysSettingsDto
.
getOrdrRemainingQty
()
);
return
ResultBean
.
newOkResult
(
"保存成功"
);
}
...
...
src/main/java/com/neotel/smfcore/core/system/rest/bean/dto/SysSettingsDto.java
查看文件 @
898a760
...
...
@@ -43,6 +43,10 @@ public class SysSettingsDto implements Serializable {
@ApiModelProperty
(
"是否忽略流水线检查"
)
private
boolean
ignoreLineCheck
=
false
;
@ApiModelProperty
(
"工单剩余数量"
)
private
int
ordrRemainingQty
=
-
1
;
}
src/main/java/com/neotel/smfcore/custom/lizhen/third/maicheng/controller/MaiZhengController.java
查看文件 @
898a760
...
...
@@ -219,14 +219,13 @@ public class MaiZhengController {
reelIDResponse
.
setState
(
"1"
);
}
else
{
//判断是否绑定工单发出
DataLog
dataLog
=
dataLogManager
.
findOne
(
new
Query
(
Criteria
.
where
(
"barcode"
).
is
(
reelId
)
.
and
(
"sourceId"
).
exists
(
true
).
ne
(
null
)
.
and
(
"status"
).
is
(
OP_STATUS
.
FINISHED
.
name
())
.
and
(
"type"
).
is
(
OP
.
CHECKOUT
)).
with
(
Sort
.
by
(
Sort
.
Direction
.
DESC
,
"updateDate"
)));
DataLog
dataLog
=
dataLogManager
.
findOne
(
new
Query
(
Criteria
.
where
(
"barcode"
).
is
(
reelId
)).
with
(
Sort
.
by
(
Sort
.
Direction
.
DESC
,
"updateDate"
)));
if
(
dataLog
!=
null
)
{
log
.
info
(
reelId
+
":已经绑定工单发出,工单号为:"
+
dataLog
.
getSourceName
());
reelIDResponse
.
setState
(
"3"
);
reelIDResponse
.
setWorkID
(
dataLog
.
getSourceName
());
if
(!
dataLog
.
isCancel
()
&&
StringUtils
.
isNotBlank
(
dataLog
.
getSourceId
())
&&
dataLog
.
isCheckOutTask
())
{
log
.
info
(
reelId
+
":已经绑定工单发出,工单号为:"
+
dataLog
.
getSourceName
());
reelIDResponse
.
setState
(
"2"
);
reelIDResponse
.
setWorkID
(
dataLog
.
getSourceName
());
}
}
}
responseList
.
add
(
reelIDResponse
);
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/third/maicheng/controller/MaiZhengDeviceController.java
查看文件 @
898a760
...
...
@@ -5,6 +5,7 @@ import com.neotel.smfcore.common.bean.ResultBean;
import
com.neotel.smfcore.common.utils.StringUtils
;
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.LiteOrderItem
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.lizhen.innerBox.bean.StorageExport
;
import
com.neotel.smfcore.custom.lizhen.innerBox.util.StorageExportUtil
;
...
...
@@ -17,6 +18,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Slf4j
@RestController
@RequestMapping
(
"/maizhengDevice"
)
...
...
@@ -81,4 +87,58 @@ public class MaiZhengDeviceController {
}
}
@ApiOperation
(
"获取迈征请求数据"
)
@RequestMapping
(
"/getTransReelBoxData"
)
@AnonymousAccess
public
ResultBean
getTransReelBoxData
(
String
exportStr
)
{
StorageExport
export
=
StorageExportUtil
.
getExport
(
exportStr
+
StorageExportUtil
.
OUT_STATION
);
log
.
info
(
exportStr
+
"获取到出料口信息为:"
+
JSON
.
toJSONString
(
export
));
String
hSerial
=
export
.
getHSerial
();
if
(
StringUtils
.
isBlank
(
hSerial
))
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
exportStr
,
"hSerial"
});
}
LiteOrder
liteOrder
=
liteOrderManager
.
findByOrderNo
(
hSerial
);
if
(
liteOrder
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"orderNo"
,
hSerial
});
}
String
material
=
export
.
getMaterial
();
if
(
StringUtils
.
isNotBlank
(
material
))
{
liteOrder
.
setReelBoxId
(
material
);
}
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"GUID"
,
liteOrder
.
getGuid
());
paramMap
.
put
(
"CacheIndex"
,
liteOrder
.
getCacheIndex
());
paramMap
.
put
(
"CacheSlot"
,
liteOrder
.
getCacheSlot
());
paramMap
.
put
(
"RecvIndex"
,
liteOrder
.
getRecvIndex
());
paramMap
.
put
(
"Count"
,
liteOrder
.
getCount
());
paramMap
.
put
(
"ReelBoxID"
,
liteOrder
.
getReelBoxId
());
paramMap
.
put
(
"Dia"
,
liteOrder
.
getDia
());
paramMap
.
put
(
"StartTime"
,
liteOrder
.
getStartTime
());
List
<
Map
<
String
,
Object
>>
list
=
new
ArrayList
<>();
List
<
LiteOrderItem
>
orderItemList
=
liteOrder
.
getOrderItems
();
for
(
LiteOrderItem
orderItem
:
orderItemList
)
{
List
<
String
>
outReelList
=
orderItem
.
getOutReelList
();
if
(
outReelList
!=
null
&&
!
outReelList
.
isEmpty
())
{
for
(
int
i
=
0
;
i
<
outReelList
.
size
();
i
++)
{
Map
<
String
,
Object
>
itemMap
=
new
HashMap
<>();
itemMap
.
put
(
"Position"
,
orderItem
.
getPositionList
().
get
(
i
));
itemMap
.
put
(
"PARTNUMBER"
,
orderItem
.
getPn
());
itemMap
.
put
(
"REEL"
,
orderItem
.
getReel
());
itemMap
.
put
(
"REELNew"
,
outReelList
.
get
(
i
));
itemMap
.
put
(
"Width"
,
orderItem
.
getWidth
());
itemMap
.
put
(
"Dia"
,
orderItem
.
getDia
());
list
.
add
(
itemMap
);
}
}
}
paramMap
.
put
(
"List"
,
list
);
return
ResultBean
.
newOkResult
(
paramMap
);
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论