Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 8aa2b2db
由
LN
编写于
2023-07-02 14:38:24 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
bug修改
1 个父辈
beeed935
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
179 行增加
和
28 行删除
src/main/java/com/neotel/smfcore/core/device/handler/impl/LineBoxHandler.java
src/main/java/com/neotel/smfcore/core/device/rest/DeviceController.java
src/main/java/com/neotel/smfcore/core/shelf/rest/TaskShelfController.java
src/main/java/com/neotel/smfcore/core/shelf/util/TaskShelfUtil.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/LineBoxHandler.java
查看文件 @
8aa2b2d
package
com
.
neotel
.
smfcore
.
core
.
device
.
handler
.
impl
;
package
com
.
neotel
.
smfcore
.
core
.
device
.
handler
.
impl
;
import
com.google.common.base.Strings
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.core.device.bean.BoxStatusBean
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
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
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
@Service
@Service
@Slf4j
@Slf4j
public
class
LineBoxHandler
extends
BaseDeviceHandler
{
public
class
LineBoxHandler
extends
BaseDeviceHandler
{
...
@@ -42,6 +50,117 @@ public class LineBoxHandler extends BaseDeviceHandler {
...
@@ -42,6 +50,117 @@ public class LineBoxHandler extends BaseDeviceHandler {
return
statusBean
;
return
statusBean
;
}
}
@Override
protected
StatusBean
handleInOutFinished
(
StatusBean
statusBean
)
{
Map
<
String
,
BoxStatusBean
>
statusOfBoxes
=
statusBean
.
getBoxStatus
();
if
(
statusOfBoxes
!=
null
)
{
for
(
BoxStatusBean
boxStatus
:
statusOfBoxes
.
values
())
{
try
{
//出库入库完成处理
int
status
=
boxStatus
.
getStatus
();
String
posName
=
boxStatus
.
getPosId
();
String
barcode
=
boxStatus
.
getBarcode
();
int
executeTime
=
boxStatus
.
getExecuteTime
();
if
((!
Strings
.
isNullOrEmpty
(
posName
))||(!
Strings
.
isNullOrEmpty
(
barcode
)))
{
//客户端发一次完成之后,会发空的 posName,不需要处理
if
(
BOX_STATUS
.
IN_FINISHED
==
status
)
{
//入仓完成
finishedPutIn
(
statusBean
.
getCid
(),
posName
,
barcode
,
executeTime
);
}
else
if
(
BOX_STATUS
.
IN_FAILED
==
status
)
{
//入库失败
//暂不处理
}
else
if
(
BOX_STATUS
.
OUT_FINISHED
==
status
)
{
//出仓完成
finishedOutPos
(
statusBean
.
getCid
(),
posName
,
barcode
,
executeTime
,
OP_STATUS
.
OUT_BOX
);
}
else
if
(
BOX_STATUS
.
OUT_END
==
status
)
{
//出库完成(放到仓门口
// endOutTask(statusBean.getCid(),posName,barcode);
//更改出库状态为OUT_DOOR
List
<
DataLog
>
finishedTasks
=
taskService
.
getFinishedTasks
();
for
(
DataLog
finishedTask
:
finishedTasks
)
{
if
(
finishedTask
.
getCid
().
equals
(
statusBean
.
getCid
())
&&
finishedTask
.
isCheckOutTask
()
&&
finishedTask
.
isOutBox
())
{
if
(
posName
.
equals
(
finishedTask
.
getPosName
()))
{
//已出仓但未放到门口,更改状态
finishedTask
.
setStatus
(
OP_STATUS
.
BOXDOOR
.
name
());
taskService
.
updateFinishedTask
(
finishedTask
);
log
.
info
(
"物料"
+
finishedTask
.
getBarcode
()
+
"已从库位"
+
finishedTask
.
getPosName
()
+
"取出放到门口,更改状态="
+
finishedTask
.
getStatus
());
return
statusBean
;
}
}
}
log
.
error
(
posName
+
"出库放到门口时,未找到对应的出库任务"
);
}
// else if (BOX_STATUS.REWARM_TAKING_END == status) {
// //回温取料完成, 将库位清空
// DataLog takingTask = taskService.findExecutingTask(statusBean.getCid(), boxStatus.getPosId());
// if (takingTask == null) {
// //从已完成列表中找,如果还找不到就忽略
// takingTask = taskService.findFinishedTask(statusBean.getCid(), boxStatus.getPosId());
// }
// if (takingTask != null) {
// if (takingTask.isCancel()) {//被取消的任务,客户端发完成信号过来,修改取消状态为已完成
// log.warn(statusBean.getCid() + "回温取料[" + boxStatus.getPosId() + "]完成时任务不存在");
// }
// DataLog puttingTask = null;
// for (DataLog dataLog : taskMap.values()) {
// if (dataLog.getCid().equals(statusBean.getCid())) {
// if (dataLog.getBarcode().equals(takingTask.getBarcode())) {
// if (dataLog.isRewarmPuttingTask()) {
// puttingTask = dataLog;
// }
// }
// }
// }
// rewarmTakingEnd(takingTask);
// if (puttingTask != null) {
// puttingTask.setStatus(OP_STATUS.EXECUTING.name());
// //dataLog.setSourceType();
//
// dataLogDao.save(puttingTask);
// taskMap.put(puttingTask.getId(), puttingTask);
// statusBean.addData("secondPosId", puttingTask.getPosName());
// }
// } else {
// log.warn(statusBean.getCid() + "出仓位[" + boxStatus.getPosId() + "]完成时任务不存在");
// }
// } else if (BOX_STATUS.REWARM_PUTTING_END == status) {
// //回温放料结束
// DataLog puttingTask = findExecutingTask(statusBean.getCid(), boxStatus.getPosId());
// if (puttingTask == null) {
// //从已完成列表中找,如果还找不到就忽略
// puttingTask = findFinishedTask(statusBean.getCid(), boxStatus.getPosId());
// }
// if (puttingTask != null) {
// if (puttingTask.isCancel()) {//被取消的任务,客户端发完成信号过来,修改取消状态为已完成
// log.warn(statusBean.getCid() + "回温取料[" + boxStatus.getPosId() + "]完成时任务不存在");
// }
// }
// rewarmPuttingEnd(puttingTask);
//
// } else if (BOX_STATUS.MIX_TAKING == status) {
// //搅拌取料
//
// } else if (BOX_STATUS.WAIT_MIX == status) {
// //搅拌取料结束,等待搅拌
//
// } else if (BOX_STATUS.MIXING == status) {
// //搅拌中
// changeSolderStatus(boxStatus.getPosId(), SOLDER_STATUS.MIXING);
// } else if (BOX_STATUS.MIX_PUTTING == status) {
// //搅拌完成
//
// } else if (BOX_STATUS.MIX_END == status) {
// //搅拌放回原位完成
// DataLog mixTask = findExecutingTask(statusBean.getCid(), boxStatus.getPosId());
// mixEnd(mixTask);
// }
}
}
catch
(
ValidateException
e
)
{
log
.
error
(
"更新状态时出错"
+
e
.
getMessage
());
}
}
}
return
statusBean
;
}
@Override
@Override
public
DeviceType
getDeviceType
()
{
public
DeviceType
getDeviceType
()
{
return
DeviceType
.
LINE
;
return
DeviceType
.
LINE
;
...
...
src/main/java/com/neotel/smfcore/core/device/rest/DeviceController.java
查看文件 @
8aa2b2d
...
@@ -529,34 +529,34 @@ public class DeviceController {
...
@@ -529,34 +529,34 @@ public class DeviceController {
@ResponseBody
@ResponseBody
@AnonymousAccess
@AnonymousAccess
public
ResultBean
updateLocInfo
(
HttpServletRequest
request
)
{
public
ResultBean
updateLocInfo
(
HttpServletRequest
request
)
{
//
String code = request.getParameter("barcode");
String
code
=
request
.
getParameter
(
"barcode"
);
//
String status = request.getParameter("status");
String
status
=
request
.
getParameter
(
"status"
);
//
String loc = request.getParameter("loc");
String
loc
=
request
.
getParameter
(
"loc"
);
//
String cid = request.getParameter("cid");
String
cid
=
request
.
getParameter
(
"cid"
);
//
//获取到当前执行的任务
//获取到当前执行的任务
//
DataLog opTask = null;
DataLog
opTask
=
null
;
//
Collection<DataLog> allTasks = taskService.getAllTasks();
Collection
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
//
for (DataLog task : allTasks) {
for
(
DataLog
task
:
allTasks
)
{
//
if (task.isCheckOutTask() && code.equals(task.getBarcode())) {
if
(
task
.
isCheckOutTask
()
&&
code
.
equals
(
task
.
getBarcode
()))
{
//
opTask = task;
opTask
=
task
;
//
break;
break
;
//
}
}
//
}
}
//
if (opTask == null) {
if
(
opTask
==
null
)
{
//
return ResultBean.newErrorResult(303, "smfcore.task.notExist", "任务不存在");
return
ResultBean
.
newErrorResult
(
303
,
"smfcore.task.notExist"
,
"任务不存在"
);
//
}
}
//
status = status.toUpperCase();
status
=
status
.
toUpperCase
();
//
log.info("更新任务["+code+"]状态:{}-->{}", opTask.getStatus(), status);
log
.
info
(
"更新任务["
+
code
+
"]状态:{}-->{}"
,
opTask
.
getStatus
(),
status
);
//
OP_STATUS updateStatus = OP_STATUS.valueOf(status);
OP_STATUS
updateStatus
=
OP_STATUS
.
valueOf
(
status
);
//
if (updateStatus != null) {
if
(
updateStatus
!=
null
)
{
//
DataLog task = taskService.findFinishedOutTask(cid, opTask.getPosName());
DataLog
task
=
taskService
.
findFinishedOutTask
(
cid
,
opTask
.
getPosName
());
//
if(task != null){
if
(
task
!=
null
){
//
task.setStatus(updateStatus.name());
task
.
setStatus
(
updateStatus
.
name
());
//
taskService.updateFinishedTask(task);
taskService
.
updateFinishedTask
(
task
);
//
}
}
//
} else {
}
else
{
//
log.info(code + "更新状态时未找到状态:" + status + "");
log
.
info
(
code
+
"更新状态时未找到状态:"
+
status
+
""
);
//
}
}
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
}
}
@ApiOperation
(
"全部出库"
)
@ApiOperation
(
"全部出库"
)
...
...
src/main/java/com/neotel/smfcore/core/shelf/rest/TaskShelfController.java
查看文件 @
8aa2b2d
...
@@ -322,4 +322,26 @@ public class TaskShelfController {
...
@@ -322,4 +322,26 @@ public class TaskShelfController {
return
ResultBean
.
newOkResult
(
TaskShelfUtil
.
taskShelfMap
);
return
ResultBean
.
newOkResult
(
TaskShelfUtil
.
taskShelfMap
);
}
}
@ApiOperation
(
"产线扫码亮灯"
)
@PostMapping
(
value
=
"/codeLed"
)
@ResponseBody
@AnonymousAccess
public
ResultBean
codeLed
(
HttpServletRequest
request
)
{
//扫码后,解析条码,从料架列表中查找对应位置
String
barcodeStr
=
request
.
getParameter
(
"code"
);
Barcode
barcode
=
codeResolve
.
resolveOneValideBarcode
(
barcodeStr
);
if
(
barcode
==
null
)
{
log
.
info
(
"codeLed 未找到有效条码["
+
barcodeStr
+
"]"
);
return
ResultBean
.
newErrorResult
(
99
,
"smfcore.error.barcode.invalid"
,
"未找到有效条码"
);
}
int
loc
=
TaskShelfUtil
.
getLastLoc
(
barcode
.
getBarcode
());
return
ResultBean
.
newOkResult
(
loc
);
}
}
}
src/main/java/com/neotel/smfcore/core/shelf/util/TaskShelfUtil.java
查看文件 @
8aa2b2d
...
@@ -452,4 +452,14 @@ public class TaskShelfUtil {
...
@@ -452,4 +452,14 @@ public class TaskShelfUtil {
saveShelfLocMap
(
shelfLocMap
);
saveShelfLocMap
(
shelfLocMap
);
}
}
public
static
int
getLastLoc
(
String
barcode
){
for
(
Map
<
String
,
ShelfInfo
>
shelfInfoMap
:
taskShelfMap
.
values
())
{
for
(
ShelfInfo
shelf
:
shelfInfoMap
.
values
())
{
int
loc
=
shelf
.
getBarcodeLoc
(
barcode
);
return
loc
;
}
}
return
-
1
;
}
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论