Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
SmdBox
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 2ae4346d
由
孙克
编写于
2024-07-18 09:43:25 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
803改造
1 个父辈
8cbe2b2c
显示空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
1155 行增加
和
193 行删除
myproject/src/main/java/com/myproject/bean/update/Barcode.java
myproject/src/main/java/com/myproject/manager/IStoragePosManager.java
myproject/src/main/java/com/myproject/manager/impl/StoragePosManagerImpl.java
myproject/src/main/java/com/myproject/webapp/controller/custom803/XLController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/TaskService.java
myproject/src/main/java/com/myproject/webapp/controller/webService/boxHandler/SmdXlBoxHandler.java
myproject/storageManager.iml
改造接口信息.md
myproject/src/main/java/com/myproject/bean/update/Barcode.java
查看文件 @
2ae4346
...
@@ -6,6 +6,7 @@ import com.myproject.util.DateUtil;
...
@@ -6,6 +6,7 @@ import com.myproject.util.DateUtil;
import
com.myproject.util.StorageConstants
;
import
com.myproject.util.StorageConstants
;
import
org.springframework.data.annotation.Transient
;
import
org.springframework.data.annotation.Transient
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
...
@@ -137,6 +138,19 @@ public class Barcode extends BaseMongoBean {
...
@@ -137,6 +138,19 @@ public class Barcode extends BaseMongoBean {
@Transient
@Transient
private
List
<
String
>
relationCodes
;
private
List
<
String
>
relationCodes
;
/**
* 料箱中存放的条码
*/
private
List
<
Barcode
>
subCodes
=
new
ArrayList
<>();
public
List
<
Barcode
>
getSubCodes
()
{
return
subCodes
;
}
public
void
setSubCodes
(
List
<
Barcode
>
subCodes
)
{
this
.
subCodes
=
subCodes
;
}
public
int
getInitialAmount
()
{
public
int
getInitialAmount
()
{
if
(
initialAmount
==
0
)
{
if
(
initialAmount
==
0
)
{
setInitialAmount
(
amount
);
setInitialAmount
(
amount
);
...
...
myproject/src/main/java/com/myproject/manager/IStoragePosManager.java
查看文件 @
2ae4346
...
@@ -88,6 +88,8 @@ public interface IStoragePosManager extends IManager<StoragePos> {
...
@@ -88,6 +88,8 @@ public interface IStoragePosManager extends IManager<StoragePos> {
StoragePos
getByBarcode
(
String
barcode
);
StoragePos
getByBarcode
(
String
barcode
);
StoragePos
getBySubCode
(
String
barcode
);
StoragePos
getByPosName
(
String
posName
);
StoragePos
getByPosName
(
String
posName
);
StoragePos
getByHostPosId
(
String
hostPosId
,
String
pn
);
StoragePos
getByHostPosId
(
String
hostPosId
,
String
pn
);
...
@@ -100,6 +102,8 @@ public interface IStoragePosManager extends IManager<StoragePos> {
...
@@ -100,6 +102,8 @@ public interface IStoragePosManager extends IManager<StoragePos> {
List
<
StoragePos
>
findLockPos
(
String
lockId
);
List
<
StoragePos
>
findLockPos
(
String
lockId
);
List
findByQuery
(
Query
query
);
int
countByQuery
(
Query
query
);
int
countByQuery
(
Query
query
);
/**
/**
...
...
myproject/src/main/java/com/myproject/manager/impl/StoragePosManagerImpl.java
查看文件 @
2ae4346
...
@@ -17,8 +17,6 @@ import com.myproject.manager.IStoragePosManager;
...
@@ -17,8 +17,6 @@ import com.myproject.manager.IStoragePosManager;
import
com.myproject.util.DateUtil
;
import
com.myproject.util.DateUtil
;
import
com.myproject.util.PLATE_SIZE
;
import
com.myproject.util.PLATE_SIZE
;
import
com.myproject.util.StorageConstants
;
import
com.myproject.util.StorageConstants
;
import
com.myproject.webapp.controller.webService.DataCache
;
import
org.apache.commons.lang.StringUtils
;
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
;
...
@@ -471,6 +469,11 @@ public class StoragePosManagerImpl implements IStoragePosManager {
...
@@ -471,6 +469,11 @@ public class StoragePosManagerImpl implements IStoragePosManager {
}
}
@Override
@Override
public
StoragePos
getBySubCode
(
String
barcode
){
return
storagePosDao
.
findOneByCondition
(
new
String
[]{
"barcode.subCodes.barcode"
},
new
String
[]{
barcode
});
}
@Override
public
StoragePos
getByPosName
(
String
posName
){
public
StoragePos
getByPosName
(
String
posName
){
return
storagePosDao
.
findOneByCondition
(
new
String
[]{
"posName"
},
new
String
[]{
posName
});
return
storagePosDao
.
findOneByCondition
(
new
String
[]{
"posName"
},
new
String
[]{
posName
});
}
}
...
@@ -565,6 +568,11 @@ public class StoragePosManagerImpl implements IStoragePosManager {
...
@@ -565,6 +568,11 @@ public class StoragePosManagerImpl implements IStoragePosManager {
}
}
@Override
@Override
public
List
findByQuery
(
Query
query
)
{
return
storagePosDao
.
findByQuery
(
query
);
}
@Override
public
int
countByQuery
(
Query
query
)
{
public
int
countByQuery
(
Query
query
)
{
return
storagePosDao
.
countByQuery
(
query
);
return
storagePosDao
.
countByQuery
(
query
);
}
}
...
...
myproject/src/main/java/com/myproject/webapp/controller/custom803/XLController.java
0 → 100644
查看文件 @
2ae4346
package
com
.
myproject
.
webapp
.
controller
.
custom803
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.google.common.collect.Lists
;
import
com.myproject.bean.CodeBean
;
import
com.myproject.bean.json.ResultBean
;
import
com.myproject.bean.json.VerticalBoxOperateBean
;
import
com.myproject.bean.update.*
;
import
com.myproject.bean.utils.StatusBean
;
import
com.myproject.dao.mongo.IDataLogDao
;
import
com.myproject.exception.ApiException
;
import
com.myproject.exception.ValidateException
;
import
com.myproject.manager.IBarcodeManager
;
import
com.myproject.manager.IComponentManager
;
import
com.myproject.manager.IStoragePosManager
;
import
com.myproject.util.DateUtil
;
import
com.myproject.util.HttpHelper
;
import
com.myproject.util.StorageConstants
;
import
com.myproject.webapp.controller.storage.BaseController
;
import
com.myproject.webapp.controller.webService.DataCache
;
import
com.myproject.webapp.controller.webService.ITaskService
;
import
com.myproject.webapp.controller.webService.boxHandler.SmdXlBoxHandler
;
import
org.apache.logging.log4j.util.Strings
;
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.stereotype.Controller
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.*
;
/**
* SMD-XL
*/
@RequestMapping
(
"/rest/api/v2/803"
)
@RestController
public
class
XLController
extends
BaseController
{
@Autowired
private
DataCache
dataCache
;
@Autowired
private
ITaskService
taskService
;
@Autowired
private
IStoragePosManager
storagePosManager
;
@Autowired
private
IBarcodeManager
barcodeManager
;
@Autowired
private
IComponentManager
componentManager
;
@Autowired
private
IDataLogDao
dataLogDao
;
@Autowired
private
SmdXlBoxHandler
smdXlBoxHandler
;
/**
* 极创调用此接口判断料箱是否可以放上入料线体
* {
* "boxCode":"料箱号",
* "deviceNo":"料仓标识"
* }
* @param bodyParamMap
* @param request
* @return
*/
@RequestMapping
(
"/boxCanPutIn"
)
public
ResultBean
boxCanPutIn
(
@RequestBody
Map
<
String
,
String
>
bodyParamMap
,
HttpServletRequest
request
){
log
.
info
(
"收到判断料箱是否可以放上入料线体请求:"
+
bodyParamMap
.
toString
());
ResultBean
resultBean
=
ResultBean
.
newErrorResult
(-
1
,
"箱子不可放入"
);
String
cid
=
bodyParamMap
.
get
(
"deviceNo"
);
String
boxCode
=
bodyParamMap
.
get
(
"boxCode"
);
String
door
=
bodyParamMap
.
get
(
"door"
);
log
.
info
(
"料箱"
+
boxCode
+
"请求放入["
+
cid
+
"]线体"
);
if
(
Strings
.
isNotBlank
(
cid
)){
StatusBean
statusBean
=
taskService
.
getStatus
(
cid
);
String
boxCanPutIn1
=
statusBean
.
getFromData
(
"boxCanPutIn1"
);
boolean
canPutInDoor1
=
false
;
if
(
boxCanPutIn1
.
equalsIgnoreCase
(
"TRUE"
)){
canPutInDoor1
=
true
;
}
String
boxCanPutIn2
=
statusBean
.
getFromData
(
"boxCanPutIn2"
);
boolean
canPutInDoor2
=
false
;
if
(
boxCanPutIn2
.
equalsIgnoreCase
(
"TRUE"
)){
canPutInDoor2
=
true
;
}
boolean
canPutIn
=
false
;
if
(
door
==
null
){
if
(
canPutInDoor1
&&
canPutInDoor2
){
canPutIn
=
true
;
}
}
else
if
(
door
.
equalsIgnoreCase
(
"1"
)){
canPutIn
=
canPutInDoor1
;
}
else
if
(
door
.
equalsIgnoreCase
(
"2"
)){
canPutIn
=
canPutInDoor2
;
}
if
(
canPutIn
){
resultBean
=
ResultBean
.
newOkResult
(
""
);
}
}
return
resultBean
;
}
/**
* 料箱到位顶起到位调用入库通知单接口,将料箱编号和料箱中的物料信息给挚锦
* {
* "djh": "单据号唯一编码",
* "boxCode": "料箱编号",
* "materialList": [{
* "serialNo": "唯一码",
* "partNum": "存货编码",
* "quantity": "数量"
* }]
* }
* @param bodyParamMap
* @param request
* @return
*/
@RequestMapping
(
"/boxPutIn"
)
public
ResultBean
boxPutIn
(
@RequestBody
Map
<
String
,
Object
>
bodyParamMap
,
HttpServletRequest
request
){
log
.
info
(
"收到料箱到位顶起到位入库请求:"
+
bodyParamMap
.
toString
());
ResultBean
resultBean
=
ResultBean
.
newErrorResult
(-
1
,
"箱子放入失败"
);
Object
djhObj
=
bodyParamMap
.
get
(
"djh"
);
if
(
djhObj
==
null
){
return
ResultBean
.
newErrorResult
(-
1
,
"参数djh不能为空"
);
}
String
boxCodeStr
=
bodyParamMap
.
get
(
"boxCode"
).
toString
();
Object
cidObj
=
bodyParamMap
.
get
(
"deviceNo"
);
Object
doorObj
=
bodyParamMap
.
get
(
"door"
);
if
(
doorObj
==
null
){
return
ResultBean
.
newErrorResult
(-
1
,
"参数入料口door不能为空"
);
}
log
.
info
(
"料箱"
+
boxCodeStr
+
"准备放入["
+
cidObj
+
"]线体,生成入库任务"
);
if
(
cidObj
!=
null
){
String
cid
=
cidObj
.
toString
();
Storage
storage
=
dataCache
.
getStorage
(
cid
);
if
(
storage
==
null
){
return
ResultBean
.
newErrorResult
(
104
,
"未找到deviceNo为["
+
cid
+
"]的料仓"
);
}
try
{
Barcode
boxBarcode
=
barcodeManager
.
findByBarcode
(
boxCodeStr
);
if
(
boxBarcode
==
null
){
boxBarcode
=
new
Barcode
();
boxBarcode
.
setBarcode
(
boxCodeStr
);
boxBarcode
.
setPlateSize
(
2
);
boxBarcode
.
setHeight
(
2
);
boxBarcode
.
setAmount
(
1
);
String
boxPn
=
"BOX"
;
boxBarcode
.
setPartNumber
(
"BOX"
);
Component
boxComponent
=
componentManager
.
findOneByPN
(
"BOX"
);
if
(
boxComponent
==
null
){
boxComponent
=
new
Component
();
boxComponent
.
setPartNumber
(
boxPn
);
boxComponent
.
setAmount
(
1
);
boxComponent
.
setHeight
(
2
);
boxComponent
.
setPlateSize
(
2
);
componentManager
.
save
(
boxComponent
);
}
}
List
<
Barcode
>
subCodeList
=
new
ArrayList
<>();
Object
materialList
=
bodyParamMap
.
get
(
"materialList"
);
if
(
materialList
!=
null
){
List
<
Map
<
String
,
String
>>
materials
=
(
List
<
Map
<
String
,
String
>>)
materialList
;
for
(
Map
<
String
,
String
>
material
:
materials
)
{
Barcode
barcode
=
new
Barcode
();
barcode
.
setBarcode
(
material
.
get
(
"serialNo"
));
barcode
.
setPartNumber
(
material
.
get
(
"partNum"
));
Integer
qty
=
Integer
.
valueOf
(
material
.
get
(
"quantity"
));
barcode
.
setAmount
(
qty
);
subCodeList
.
add
(
barcode
);
}
}
boxBarcode
.
setSubCodes
(
subCodeList
);
barcodeManager
.
save
(
boxBarcode
);
StoragePos
pos
=
taskService
.
findEmptyPosForPutIn
(
Lists
.
newArrayList
(
storage
),
boxBarcode
);
if
(
pos
==
null
){
return
ResultBean
.
newErrorResult
(
105
,
"未找到可用库位"
);
}
DataLog
putInTask
=
new
DataLog
();
putInTask
.
setStatus
(
StorageConstants
.
OP_STATUS
.
WAIT
.
name
());
putInTask
.
setType
(
StorageConstants
.
OP
.
PUT_IN
);
putInTask
.
setCid
(
storage
.
getCid
());
putInTask
.
setStorageId
(
storage
.
getId
());
putInTask
.
setStorageName
(
storage
.
getName
());
putInTask
.
setBarcode
(
boxBarcode
.
getBarcode
());
putInTask
.
setNum
(
boxBarcode
.
getAmount
());
putInTask
.
setPartNumber
(
boxBarcode
.
getPartNumber
());
String
doorInfo
=
request
.
getParameter
(
"door"
);
putInTask
.
setSubSourceId
(
doorInfo
);
putInTask
.
setPosId
(
pos
.
getId
());
putInTask
.
setPosName
(
pos
.
getPosName
());
putInTask
.
setSingleOut
(
true
);
putInTask
.
setSourceName
(
djhObj
.
toString
());
putInTask
.
setSubSourceId
(
doorObj
.
toString
());
putInTask
=
dataLogDao
.
save
(
putInTask
);
taskService
.
addTaskToExecute
(
putInTask
);
return
ResultBean
.
newOkResult
(
"为料箱["
+
boxCodeStr
+
"]分配库位["
+
pos
.
getPosName
()+
"]"
,
""
);
}
catch
(
Exception
e
){
return
ResultBean
.
newErrorResult
(
500
,
"内部错误:"
+
e
.
getMessage
());
}
}
else
{
resultBean
=
ResultBean
.
newErrorResult
(-
1
,
"箱子放入失败, 料仓标识[deviceNo]参数不能为空"
);
}
return
resultBean
;
}
/**
*堆垛机取货完成挚锦调用极创接口,通知极创取货完成
*
* 描述:料仓系统传递参数,仓储系统接收并反馈
* 请求方式:GET请求
* 请求地址:http://{IP}:{PORT}/wms/api/znlc/in/ddjPickUpGoodsNotice
* 请求参数:
* {
* "djh": "唯一单据号",
* "boxCode":"料箱号",
* "deviceNo":"料仓标识"
* }
* 返回结果:
* {
* "code": 200(200表示成功,500表示出错),
* "message": "提示信息",
* "result": {
*
* },
* "success": true,
* "timestamp": 1718621855967
* }
*/
@RequestMapping
(
"/service/store/xl/ddjPickUpGoodsNotice"
)
public
ResultBean
ddjPickUpGoodsNotice
(
@RequestBody
Map
<
String
,
String
>
bodyParamMap
,
HttpServletRequest
request
){
log
.
info
(
"堆垛机取货完成, 准备通知极创:"
+
bodyParamMap
.
toString
());
String
ddjPickUpGoodsNoticeUrl
=
dataCache
.
getSettings
().
getInNotifyApi
()+
"/wms/api/znlc/in/ddjPickUpGoodsNotice"
;
try
{
String
posName
=
bodyParamMap
.
get
(
"posName"
);
String
door
=
bodyParamMap
.
get
(
"door"
);
for
(
DataLog
queueTask
:
taskService
.
getQueueTasks
())
{
if
(
queueTask
.
isPutInTask
()
&&
queueTask
.
getPosName
().
equals
(
posName
)){
Map
<
String
,
Object
>
paramData
=
new
HashMap
<>();
paramData
.
put
(
"djh"
,
queueTask
.
getSourceName
());
paramData
.
put
(
"boxCode"
,
queueTask
.
getBarcode
());
paramData
.
put
(
"deviceNo"
,
queueTask
.
getCid
());
paramData
.
put
(
"door"
,
door
);
log
.
info
(
"堆垛机取货完成, 通知极创:"
+
paramData
.
toString
());
String
result
=
HttpHelper
.
postJson
(
ddjPickUpGoodsNoticeUrl
,
paramData
);
log
.
info
(
"堆垛机取货完成, 通知极创返回:"
+
result
);
if
(!
com
.
google
.
common
.
base
.
Strings
.
isNullOrEmpty
(
result
)){
ObjectMapper
mapper
=
new
ObjectMapper
();
HashMap
<
String
,
String
>
jsonMap
=
mapper
.
readValue
(
result
,
HashMap
.
class
);
String
ErrorCode
=
jsonMap
.
get
(
"code"
);
if
(
"200"
.
equals
(
ErrorCode
)){
//成功
return
ResultBean
.
newOkResult
(
""
);
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
jsonMap
.
get
(
"message"
));
}
}
}
}
return
ResultBean
.
newErrorResult
(-
100
,
"未找到入库任务"
);
}
catch
(
Exception
e
)
{
log
.
info
(
"堆垛机取货完成, 通知极创出错:"
+
e
.
getMessage
());
return
ResultBean
.
newErrorResult
(-
1
,
e
.
getMessage
());
}
}
/**
* 料箱放入库位后,调用极创接口,通知极创料箱已放入
*
* 描述:料仓传递参数,仓储系统接收数据,并返回结果
* 请求方式:POST请求
* 请求地址:http://{IP}:{PORT}/wms/api/znlc/in/inStorageFeedback
* 请求参数:
* {
* "djh": "单据号",
* "time": "入库完成时间(yyyy-MM-dd HH:mm:ss)",
* "deviceNo": "料仓编号",
* "boxCode": "料箱号",
* "locationCode": "料仓库位编号(仓储系统库位编号)"
* }
* 返回结果:
* {
* "code": 200(200表示成功,500表示出错),
* "message": "提示信息",
* "result": {
*
* },
* "success": true,
* "timestamp": 1718621855967
* }
* @param bodyParamMap
* @param request
* @return
*/
@RequestMapping
(
"/service/store/xl/inStorageFeedback"
)
public
ResultBean
inStorageFeedback
(
@RequestBody
Map
<
String
,
String
>
bodyParamMap
,
HttpServletRequest
request
){
log
.
info
(
"料箱放入库位, 准备通知极创:"
+
bodyParamMap
.
toString
());
String
inStorageFeedbackUrl
=
dataCache
.
getSettings
().
getInNotifyApi
()+
"/wms/api/znlc/in/inStorageFeedback"
;
try
{
String
posName
=
bodyParamMap
.
get
(
"posName"
);
List
<
DataLog
>
allTasks
=
taskService
.
getFinishedTasks
();
allTasks
.
addAll
(
taskService
.
getQueueTasks
());
for
(
DataLog
queueTask
:
allTasks
)
{
if
(
queueTask
.
isPutInTask
()
&&
queueTask
.
getPosName
().
equals
(
posName
)){
queueTask
.
setStatus
(
StorageConstants
.
OP_STATUS
.
FINISHED
.
name
());
StoragePos
storagePos
=
storagePosManager
.
get
(
queueTask
.
getPosId
());
Barcode
box
=
barcodeManager
.
findByBarcode
(
queueTask
.
getBarcode
());
box
.
setPutInTime
(
System
.
currentTimeMillis
());
box
.
setPutInDate
(
new
Date
());
storagePos
.
setBarcode
(
box
);
storagePosManager
.
save
(
storagePos
);
queueTask
=
dataLogDao
.
save
(
queueTask
);
taskService
.
moveTaskToFinished
(
queueTask
);
Map
<
String
,
Object
>
paramData
=
new
HashMap
<>();
paramData
.
put
(
"djh"
,
queueTask
.
getSourceName
());
String
inTime
=
DateUtil
.
toDateString
(
queueTask
.
getCreateDate
(),
"yyyy-MM-dd HH:mm:ss"
);
paramData
.
put
(
"time"
,
inTime
);
paramData
.
put
(
"boxCode"
,
queueTask
.
getBarcode
());
paramData
.
put
(
"deviceNo"
,
queueTask
.
getCid
());
paramData
.
put
(
"locationCode"
,
queueTask
.
getPosName
());
log
.
info
(
"料箱放入库位, 通知极创:"
+
bodyParamMap
.
toString
());
String
result
=
HttpHelper
.
postJson
(
inStorageFeedbackUrl
,
paramData
);
log
.
info
(
"料箱放入库位, 通知极创返回:"
+
result
);
return
ResultBean
.
newOkResult
(
""
);
}
}
return
ResultBean
.
newErrorResult
(
404
,
"料箱放入库位, 通知极创,未找到入库任务"
);
}
catch
(
Exception
e
)
{
log
.
info
(
"料箱放入库位, 通知极创出错:"
+
e
.
getMessage
());
return
ResultBean
.
newErrorResult
(
500
,
"料箱放入库位, 通知极创出错:"
+
e
.
getMessage
());
}
}
/**
* 2.1. 出库通知单接口
* 极创仓储系统需要出库时, 调用挚锦接口发送要出库的物料信息, 挚锦根据收到的信息, 将包含单据中唯一码的料箱从架位取出
*
* 描述:仓储系统发起传递参数,料仓系统返回结果
* 请求方式:POST请求
* 请求地址:
* 请求参数:
* {
* "djh": "单据号",
* "data": [{
* "serialNo": "唯一码",
* "partNum": "存货编码",
* "quantity": "数量"
* }]
* }
* 返回结果:
* {
* "code": 0,
* "msg": "ok",
* "data": {}
* }
* @param bodyParamMap
* @param request
* @return
*/
@RequestMapping
(
"/outMaterials"
)
public
ResultBean
outMaterials
(
@RequestBody
Map
<
String
,
Object
>
bodyParamMap
,
HttpServletRequest
request
){
log
.
info
(
"收到极创出库物料信息:"
+
bodyParamMap
.
toString
());
Object
materialList
=
bodyParamMap
.
get
(
"data"
);
Object
djhObj
=
bodyParamMap
.
get
(
"djh"
);
if
(
djhObj
==
null
){
return
ResultBean
.
newErrorResult
(-
1
,
"参数djh不能为空"
);
}
if
(
materialList
!=
null
){
List
<
Map
<
String
,
String
>>
materials
=
(
List
<
Map
<
String
,
String
>>)
materialList
;
for
(
Map
<
String
,
String
>
material
:
materials
)
{
Collection
<
String
>
excludePosIds
=
taskService
.
excludePosIds
();
String
serialNo
=
material
.
get
(
"serialNo"
);
StoragePos
pos
=
storagePosManager
.
getBySubCode
(
serialNo
);
if
(
pos
!=
null
){
Barcode
boxBarcode
=
pos
.
getBarcode
();
for
(
Barcode
subCode
:
boxBarcode
.
getSubCodes
())
{
if
(
subCode
.
getBarcode
().
equals
(
serialNo
)){
String
outQuantity
=
material
.
get
(
"quantity"
);
//使用此字段作为要出库的数量outQuantity, 不再另加字段了
subCode
.
setLabelAmount
(
Integer
.
valueOf
(
outQuantity
));
}
}
try
{
barcodeManager
.
save
(
boxBarcode
);
pos
.
setBarcode
(
boxBarcode
);
storagePosManager
.
save
(
pos
);
}
catch
(
ValidateException
e
)
{
log
.
error
(
"保存库位出错"
,
e
);
}
if
(!
excludePosIds
.
contains
(
pos
.
getId
())){
DataLog
hostOutTask
=
new
DataLog
();
hostOutTask
.
setType
(
StorageConstants
.
OP
.
CHECKOUT
);
hostOutTask
.
setStatus
(
StorageConstants
.
OP_STATUS
.
WAIT
.
name
());
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
hostOutTask
.
setCid
(
storage
.
getCid
());
hostOutTask
.
setStorageId
(
storage
.
getId
());
hostOutTask
.
setStorageName
(
storage
.
getName
());
hostOutTask
.
setPosId
(
pos
.
getId
());
hostOutTask
.
setBarcode
(
boxBarcode
.
getBarcode
());
hostOutTask
.
setNum
(
boxBarcode
.
getAmount
());
hostOutTask
.
setPartNumber
(
boxBarcode
.
getPartNumber
());
hostOutTask
.
setPosName
(
pos
.
getPosName
());
hostOutTask
.
setSourceName
(
djhObj
.
toString
());
hostOutTask
=
dataLogDao
.
save
(
hostOutTask
);
taskService
.
addTaskToExecute
(
hostOutTask
);
log
.
info
(
"出库"
+
serialNo
+
"时, 在库位["
+
pos
.
getPosName
()+
"]中找到物料所在箱子["
+
pos
.
getBarcode
().
getBarcode
()+
"],执行出库"
);
}
else
{
log
.
info
(
"出库"
+
serialNo
+
"时, 物料所在箱子["
+
pos
.
getBarcode
().
getBarcode
()+
"]已在出库列表中, 不再出库"
);
}
}
else
{
log
.
info
(
"出库"
+
serialNo
+
"时, 未找到库存"
);
}
}
}
else
{
return
ResultBean
.
newErrorResult
(
104
,
"出库物料信息不能为空"
);
}
return
ResultBean
.
newOkResult
(
""
);
}
/**
* 2.2. 出库接驳线体状态查询
* 挚锦调用极创接口申请出库放料箱,极创返回放料𡯂许信号
* 描述:料仓系统发起传递参数,仓储系统返回结果
* 请求方式:GET请求
* 请求地址:http://{IP}:{PORT}/wms/api/znlc/out/outIsReady
* 请求参数:
* {
* "boxCode":"料箱号",
* "deviceNo":"料仓标识"
* }
* 返回结果:
* {
* "code": 200(200表示成功,500表示出错),
* "message": "提示信息",
* "result": {
* "isReady": "Y;Y-表示已就绪允许放箱 N-表示不允许放箱"
* },
* "success": true,
* "timestamp": 1718621855967
* }
* @param bodyParamMap
* @param request
* @return
*/
@RequestMapping
(
"/service/store/xl/outIsReady"
)
public
ResultBean
outIsReady
(
@RequestBody
Map
<
String
,
String
>
bodyParamMap
,
HttpServletRequest
request
){
log
.
info
(
"出库接驳线体状态准备查询极创接口:"
+
bodyParamMap
.
toString
());
String
ddjPickUpGoodsNoticeUrl
=
dataCache
.
getSettings
().
getInNotifyApi
()+
"/wms/api/znlc/out/outIsReady"
;
try
{
String
cid
=
bodyParamMap
.
get
(
"cid"
);
String
posName
=
bodyParamMap
.
get
(
"posName"
);
String
door
=
bodyParamMap
.
get
(
"door"
);
List
<
DataLog
>
allTasks
=
taskService
.
getFinishedTasks
();
allTasks
.
addAll
(
taskService
.
getQueueTasks
());
for
(
DataLog
task
:
allTasks
)
{
if
(
task
.
isCheckOutTask
()
&&
task
.
getPosName
().
equals
(
posName
)){
Map
<
String
,
Object
>
paramData
=
new
HashMap
<>();
paramData
.
put
(
"boxCode"
,
task
.
getBarcode
());
paramData
.
put
(
"deviceNo"
,
cid
);
paramData
.
put
(
"door"
,
door
);
log
.
info
(
"出库接驳线体状态查询极创接口:"
+
paramData
.
toString
());
String
result
=
HttpHelper
.
postJson
(
ddjPickUpGoodsNoticeUrl
,
paramData
);
log
.
info
(
"出库接驳线体状态查询极创接口返回:"
+
result
);
if
(!
com
.
google
.
common
.
base
.
Strings
.
isNullOrEmpty
(
result
)){
ObjectMapper
mapper
=
new
ObjectMapper
();
HashMap
<
String
,
Object
>
jsonMap
=
mapper
.
readValue
(
result
,
HashMap
.
class
);
Map
<
String
,
String
>
isReadyMap
=
(
Map
<
String
,
String
>)
jsonMap
.
get
(
"result"
);
if
(
isReadyMap
!=
null
){
String
isReady
=
isReadyMap
.
get
(
"isReady"
);
if
(
isReady
!=
null
&&
isReady
.
equalsIgnoreCase
(
"Y"
)){
return
ResultBean
.
newOkResult
(
""
);
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
"出库接驳线体状态查询极创接口不允许放料"
);
}
}
}
}
}
return
ResultBean
.
newErrorResult
(-
1
,
"出库接驳线体状态查询时未找到出库任务"
);
}
catch
(
Exception
e
)
{
log
.
info
(
"出库接驳线体状态查询极创接口出错:"
+
e
.
getMessage
());
return
ResultBean
.
newErrorResult
(-
1
,
"出库接驳线体状态查询极创接口出错:"
+
e
.
getMessage
());
}
}
/**
* 2.3. 堆垛机放货完成反馈
* 堆垛机放货完成(货叉缩回)调用极创接口,通知给极创
*
* 描述:料仓系统发起传递参数,仓储系统返回结果
* 请求方式:POST请求
* 请求地址:http://{IP}:{PORT}/wms/api/znlc/out/ddjReleaseTheGoodsNotice
* 请求参数:
* {
* "boxCode":"料箱号",
* "deviceNo":"料仓标识"
* }
* 返回结果:
* {
* "code": 200(200表示成功,500表示出错),
* "message": "提示信息",
* "result": {
*
* },
* "success": true,
* "timestamp": 1718621855967
* }
* @param bodyParamMap
* @param request
* @return
*/
@RequestMapping
(
"/service/store/xl/ddjReleaseTheGoodsNotice"
)
public
ResultBean
ddjReleaseTheGoodsNotice
(
@RequestBody
Map
<
String
,
String
>
bodyParamMap
,
HttpServletRequest
request
){
log
.
info
(
"堆垛机放货完成, 准备通知极创:"
+
bodyParamMap
.
toString
());
String
ddjPickUpGoodsNoticeUrl
=
dataCache
.
getSettings
().
getInNotifyApi
()+
"/wms/api/znlc/out/ddjReleaseTheGoodsNotice"
;
try
{
String
posName
=
bodyParamMap
.
get
(
"posName"
);
String
door
=
bodyParamMap
.
get
(
"door"
);
List
<
DataLog
>
allTasks
=
taskService
.
getFinishedTasks
();
allTasks
.
addAll
(
taskService
.
getQueueTasks
());
for
(
DataLog
task
:
allTasks
)
{
if
(
task
.
isCheckOutTask
()
&&
task
.
getPosName
().
equals
(
posName
)){
task
.
setStatus
(
StorageConstants
.
OP_STATUS
.
FINISHED
.
name
());
task
=
dataLogDao
.
save
(
task
);
taskService
.
moveTaskToFinished
(
task
);
Map
<
String
,
Object
>
paramData
=
new
HashMap
<>();
paramData
.
put
(
"boxCode"
,
task
.
getBarcode
());
paramData
.
put
(
"deviceNo"
,
task
.
getCid
());
paramData
.
put
(
"door"
,
door
);
log
.
info
(
"堆垛机放货完成, 通知极创:"
+
paramData
.
toString
());
String
result
=
HttpHelper
.
postJson
(
ddjPickUpGoodsNoticeUrl
,
paramData
);
log
.
info
(
"堆垛机放货完成, 通知极创返回:"
+
result
);
if
(!
com
.
google
.
common
.
base
.
Strings
.
isNullOrEmpty
(
result
)){
ObjectMapper
mapper
=
new
ObjectMapper
();
HashMap
<
String
,
String
>
jsonMap
=
mapper
.
readValue
(
result
,
HashMap
.
class
);
String
ErrorCode
=
jsonMap
.
get
(
"code"
);
if
(
"200"
.
equals
(
ErrorCode
)){
//成功
return
ResultBean
.
newOkResult
(
""
);
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
jsonMap
.
get
(
"message"
));
}
}
}
}
return
ResultBean
.
newErrorResult
(-
100
,
"未找到出库任务"
);
}
catch
(
Exception
e
)
{
log
.
info
(
"堆垛机放货完成, 通知极创出错:"
+
e
.
getMessage
());
return
ResultBean
.
newErrorResult
(-
1
,
e
.
getMessage
());
}
}
/**
* 料仓系统将料箱从料仓中取出时,调用此接口, 将信息反馈到极创.
* 描述:料仓系统发起传递参数,仓储系统返回结果
* 请求方式:POST请求
* 请求地址:http://{IP}:{PORT}/wms/api/znlc/out/outStorageFeedback
* 请求参数:
* {
* "djh": "单据号",
* "time": "出库完成时间",
* "deviceNo": "料仓编号",
* "data": {
* "boxCode": "料箱号",
* "locationCode": "料仓库位编号",
* "materialList": [{
* "serialNo": "唯一码",
* "partNum": "存货编码",
* "outQuantity": "本次出库数量"
* "quantity": "出库前库存总数量"
* }]
* }
* }
* 返回结果:
* {
* "code": 200(200表示成功,500表示出错),
* "message": "提示信息",
* "result": {
*
* },
* "success": true,
* "timestamp": 1718621855967
* }
* @param bodyParamMap
* @param request
* @return
*/
@RequestMapping
(
"/service/store/xl/outStorageFeedback"
)
public
ResultBean
outStorageFeedback
(
@RequestBody
Map
<
String
,
String
>
bodyParamMap
,
HttpServletRequest
request
){
log
.
info
(
"料箱从库位取出, 准备通知极创:"
+
bodyParamMap
.
toString
());
String
inStorageFeedbackUrl
=
dataCache
.
getSettings
().
getInNotifyApi
()+
"/wms/api/znlc/out/outStorageFeedback"
;
try
{
String
posName
=
bodyParamMap
.
get
(
"posName"
);
List
<
DataLog
>
allTasks
=
taskService
.
getFinishedTasks
();
allTasks
.
addAll
(
taskService
.
getQueueTasks
());
for
(
DataLog
queueTask
:
allTasks
)
{
if
(
queueTask
.
isCheckOutTask
()
&&
queueTask
.
getPosName
().
equals
(
posName
)){
Map
<
String
,
Object
>
paramData
=
new
HashMap
<>();
paramData
.
put
(
"djh"
,
queueTask
.
getSourceName
());
String
inTime
=
DateUtil
.
toDateString
(
queueTask
.
getCreateDate
(),
"yyyy-MM-dd HH:mm:ss"
);
paramData
.
put
(
"time"
,
inTime
);
paramData
.
put
(
"deviceNo"
,
queueTask
.
getCid
());
Map
<
String
,
Object
>
dataMap
=
new
HashMap
<>();
dataMap
.
put
(
"boxCode"
,
queueTask
.
getBarcode
());
dataMap
.
put
(
"locationCode"
,
queueTask
.
getPosName
());
List
<
Map
<
String
,
Object
>>
materialList
=
new
ArrayList
<>();
StoragePos
storagePos
=
storagePosManager
.
get
(
queueTask
.
getPosId
());
storagePos
.
setBarcode
(
null
);
storagePosManager
.
save
(
storagePos
);
queueTask
.
setStatus
(
"OUT_BOX"
);
queueTask
=
dataLogDao
.
save
(
queueTask
);
taskService
.
moveTaskToFinished
(
queueTask
);
Barcode
box
=
barcodeManager
.
findByBarcode
(
queueTask
.
getBarcode
());
if
(
box
!=
null
){
List
<
Barcode
>
subCodes
=
box
.
getSubCodes
();
for
(
Barcode
subCode
:
subCodes
)
{
Map
<
String
,
Object
>
materialMap
=
new
HashMap
<>();
materialMap
.
put
(
"serialNo"
,
subCode
.
getBarcode
());
materialMap
.
put
(
"partNum"
,
subCode
.
getPartNumber
());
materialMap
.
put
(
"outQuantity"
,
subCode
.
getLabelAmount
());
materialMap
.
put
(
"quantity"
,
subCode
.
getAmount
());
materialList
.
add
(
materialMap
);
}
}
dataMap
.
put
(
"materialList"
,
materialList
);
paramData
.
put
(
"data"
,
dataMap
);
log
.
info
(
"料箱从库位取出, 通知极创:"
+
bodyParamMap
.
toString
());
String
result
=
HttpHelper
.
postJson
(
inStorageFeedbackUrl
,
paramData
);
log
.
info
(
"料箱从库位取出, 通知极创返回:"
+
result
);
return
ResultBean
.
newOkResult
(
""
);
}
}
return
ResultBean
.
newErrorResult
(
404
,
"料箱从库位取出, 通知极创,未找到出库任务"
);
}
catch
(
Exception
e
)
{
log
.
info
(
"料箱从库位取出, 通知极创出错:"
+
e
.
getMessage
());
return
ResultBean
.
newErrorResult
(
500
,
"料箱从库位取出, 通知极创出错:"
+
e
.
getMessage
());
}
}
/**
* 3.1. 库存信息接口
* 描述:仓储系统发起传递参数,料仓系统返回结果
* 请求方式:GET
* 请求地址:http://{IP}:{PORT}/wms/api/znlc/search/storage
* 请求参数:
* // 根据不为空的参数进行查询,多个查询参数之间为and关系,全部为空时则查询全部
* {
* "partNum": "存货编码",
* "serialNo": "唯一码",
* "inTimeStart": "入库开始时间",
* "inTimeEnd": "入库结束时间",
* "deviceNo": "料仓编号,为空时查询三个料仓库存信息"
* }
* 返回结果:
* {
* "code": 0,
* "msg": "ok",
* "data": [{
* "deviceNo": "料仓编号",
* "boxCode": "料箱号",
* "locationCode": "料仓库位编号",
* "materialList": [{
* "partNum": "存货编码",
* "serialNo": "唯一码",
* "quantity": "数量"
* }]
* }]
* }
* @param bodyParamMap
* @param request
* @return
*/
@RequestMapping
(
"/storage"
)
public
ResultBean
storage
(
@RequestBody
Map
<
String
,
String
>
bodyParamMap
,
HttpServletRequest
request
){
log
.
info
(
"极创获取库存:"
+
bodyParamMap
.
toString
());
try
{
String
partNum
=
bodyParamMap
.
get
(
"partNum"
);
String
serialNo
=
bodyParamMap
.
get
(
"serialNo"
);
String
inTimeStart
=
bodyParamMap
.
get
(
"inTimeStart"
);
String
inTimeEnd
=
bodyParamMap
.
get
(
"inTimeEnd"
);
String
deviceNo
=
bodyParamMap
.
get
(
"deviceNo"
);
List
<
Criteria
>
allCriteria
=
Lists
.
newArrayList
();
allCriteria
.
add
(
Criteria
.
where
(
"barcode.amount"
).
gt
(
0
));
if
(
Strings
.
isNotBlank
(
partNum
)){
allCriteria
.
add
(
Criteria
.
where
(
"barcode.subCodes.partNumber"
).
is
(
partNum
));
}
if
(
Strings
.
isNotBlank
(
serialNo
)){
allCriteria
.
add
(
Criteria
.
where
(
"barcode.subCodes.barcode"
).
is
(
serialNo
));
}
if
(
Strings
.
isNotBlank
(
inTimeStart
)){
Date
startTime
=
DateUtil
.
toDate
(
inTimeStart
,
"yyyy-MM-dd HH:mm:ss"
);
allCriteria
.
add
(
Criteria
.
where
(
"barcode.putInDate"
).
gte
(
startTime
));
}
if
(
Strings
.
isNotBlank
(
inTimeEnd
)){
Date
endTime
=
DateUtil
.
toDate
(
inTimeEnd
,
"yyyy-MM-dd HH:mm:ss"
);
allCriteria
.
add
(
Criteria
.
where
(
"barcode.putInDate"
).
lte
(
endTime
));
}
if
(
Strings
.
isNotBlank
(
deviceNo
)){
Storage
storage
=
dataCache
.
getStorage
(
deviceNo
);
if
(
storage
!=
null
){
allCriteria
.
add
(
Criteria
.
where
(
"storageId"
).
is
(
storage
.
getId
()));
}
}
Query
query
=
new
Query
(
new
Criteria
().
andOperator
(
allCriteria
.
toArray
(
new
Criteria
[]{})));
List
<
StoragePos
>
posList
=
storagePosManager
.
findByQuery
(
query
);
List
<
Map
<
String
,
Object
>>
dataList
=
new
ArrayList
<>();
for
(
StoragePos
pos
:
posList
)
{
Map
<
String
,
Object
>
boxData
=
new
HashMap
<>();
String
cid
=
""
;
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
if
(
storage
!=
null
){
cid
=
storage
.
getCid
();
}
boxData
.
put
(
"deviceNo"
,
cid
);
Barcode
box
=
pos
.
getBarcode
();
List
<
Map
<
String
,
Object
>>
materialList
=
new
ArrayList
<>();
String
boxCode
=
""
;
if
(
box
!=
null
)
{
boxCode
=
box
.
getBarcode
();
List
<
Barcode
>
subCodes
=
box
.
getSubCodes
();
if
(
subCodes
!=
null
){
for
(
Barcode
subCode
:
subCodes
)
{
Map
<
String
,
Object
>
materialMap
=
new
HashMap
<>();
materialMap
.
put
(
"partNum"
,
subCode
.
getPartNumber
());
materialMap
.
put
(
"serialNo"
,
subCode
.
getBarcode
());
materialMap
.
put
(
"quantity"
,
subCode
.
getAmount
());
materialList
.
add
(
materialMap
);
}
}
}
boxData
.
put
(
"boxCode"
,
boxCode
);
boxData
.
put
(
"locationCode"
,
pos
.
getPosName
());
boxData
.
put
(
"materialList"
,
materialList
);
dataList
.
add
(
boxData
);
}
return
ResultBean
.
newOkResult
(
dataList
);
}
catch
(
Exception
e
)
{
log
.
info
(
"极创获取库存出错:"
+
e
.
getMessage
());
return
ResultBean
.
newErrorResult
(
500
,
"获取库存出错:"
+
e
.
getMessage
());
}
}
/**
* 3.2. 库位信息接口
* 描述:仓储系统发起传递参数,料仓系统返回结果
* 请求方式:GET
* 请求地址:http://{IP}:{PORT}/wms/api/znlc/search/warehouseLocatoinMsg
* 请求参数:
* {
* "locationCode": "库位编号",
* "deviceNo": "料仓编号"
* }
* 返回结果:
* {
* "code": 0,
* "msg": "ok",
* "data": [{
* "locationCode": "库位编号",
* "boxCode": "料箱编号",
* "state": "状态 (禁用、锁定等状态)",
* "materialList": [{
* "partNum": "存货编码",
* "serialNo": "唯一码",
* "quantity": "数量"
* }]
* }]
* }
* @param bodyParamMap
* @param request
* @return
*/
@RequestMapping
(
"/warehouseLocatoinMsg"
)
public
ResultBean
warehouseLocatoinMsg
(
@RequestBody
Map
<
String
,
String
>
bodyParamMap
,
HttpServletRequest
request
){
log
.
info
(
"极创获取库位信息:"
+
bodyParamMap
.
toString
());
try
{
String
locationCode
=
bodyParamMap
.
get
(
"locationCode"
);
String
deviceNo
=
bodyParamMap
.
get
(
"deviceNo"
);
List
<
Criteria
>
allCriteria
=
Lists
.
newArrayList
();
if
(
Strings
.
isNotBlank
(
locationCode
)){
allCriteria
.
add
(
Criteria
.
where
(
"posName"
).
is
(
locationCode
));
}
if
(
Strings
.
isNotBlank
(
deviceNo
)){
Storage
storage
=
dataCache
.
getStorage
(
deviceNo
);
if
(
storage
!=
null
){
allCriteria
.
add
(
Criteria
.
where
(
"storageId"
).
is
(
storage
.
getId
()));
}
}
Query
query
=
new
Query
(
new
Criteria
().
andOperator
(
allCriteria
.
toArray
(
new
Criteria
[]{})));
if
(
allCriteria
.
isEmpty
()){
query
=
new
Query
();
}
List
<
StoragePos
>
posList
=
storagePosManager
.
findByQuery
(
query
);
List
<
Map
<
String
,
Object
>>
dataList
=
new
ArrayList
<>();
for
(
StoragePos
pos
:
posList
)
{
Map
<
String
,
Object
>
boxData
=
new
HashMap
<>();
// String cid = "";
// Storage storage = dataCache.getStorageById(pos.getStorageId());
// if(storage != null){
// cid = storage.getCid();
// }
//boxData.put("deviceNo",cid);
Barcode
box
=
pos
.
getBarcode
();
List
<
Map
<
String
,
Object
>>
materialList
=
new
ArrayList
<>();
String
boxCode
=
""
;
if
(
box
!=
null
)
{
boxCode
=
box
.
getBarcode
();
List
<
Barcode
>
subCodes
=
box
.
getSubCodes
();
if
(
subCodes
!=
null
){
for
(
Barcode
subCode
:
subCodes
)
{
Map
<
String
,
Object
>
materialMap
=
new
HashMap
<>();
materialMap
.
put
(
"partNum"
,
subCode
.
getPartNumber
());
materialMap
.
put
(
"serialNo"
,
subCode
.
getBarcode
());
materialMap
.
put
(
"quantity"
,
subCode
.
getAmount
());
materialList
.
add
(
materialMap
);
}
}
}
boxData
.
put
(
"boxCode"
,
boxCode
);
boxData
.
put
(
"locationCode"
,
pos
.
getPosName
());
String
state
=
"enabled"
;
if
(!
pos
.
isEnabled
()){
state
=
"disabled"
;
}
boxData
.
put
(
"state"
,
state
);
boxData
.
put
(
"materialList"
,
materialList
);
dataList
.
add
(
boxData
);
}
return
ResultBean
.
newOkResult
(
dataList
);
}
catch
(
Exception
e
)
{
log
.
info
(
"极创获取库位出错:"
+
e
.
getMessage
());
return
ResultBean
.
newErrorResult
(
500
,
"获取库位信息出错:"
+
e
.
getMessage
());
}
}
/**
* 3.3. 料箱信息对应物料接口
* 描述:仓储系统发起传递参数,料仓系统返回结果
* 请求方式:GET
* 请求地址:http://{IP}:{PORT}/wms/api/znlc/search/boxDetailMsg
* 请求参数:
* {
* "boxCode": "料箱编号"
* }
* 返回结果:
* {
* "code": 0,
* "msg": "ok",
* "data": {
* "boxCode":"料箱编号",
* "locationCode": "库位编号",
* "deviceNo":"料仓编号;当料仓内不存在此料箱时,此值为空",
* "materialList": [{
* "partNum": "存货编码",
* "serialNo": "唯一码",
* "quantity": "数量"
* }]
* }
* }
* @param bodyParamMap
* @param request
* @return
*/
@RequestMapping
(
"/boxDetailMsg"
)
public
ResultBean
boxDetailMsg
(
@RequestBody
Map
<
String
,
String
>
bodyParamMap
,
HttpServletRequest
request
){
log
.
info
(
"极创获取料箱信息:"
+
bodyParamMap
.
toString
());
try
{
String
boxCode
=
bodyParamMap
.
get
(
"boxCode"
);
if
(
Strings
.
isBlank
(
boxCode
)){
return
ResultBean
.
newErrorResult
(-
1
,
"参数boxCode不能为空"
);
}
Query
query
=
new
Query
(
Criteria
.
where
(
"barcode.barcode"
).
is
(
boxCode
));
List
<
StoragePos
>
posList
=
storagePosManager
.
findByQuery
(
query
);
List
<
Map
<
String
,
Object
>>
dataList
=
new
ArrayList
<>();
for
(
StoragePos
pos
:
posList
)
{
Map
<
String
,
Object
>
boxData
=
new
HashMap
<>();
String
cid
=
""
;
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
if
(
storage
!=
null
){
cid
=
storage
.
getCid
();
}
boxData
.
put
(
"deviceNo"
,
cid
);
Barcode
box
=
pos
.
getBarcode
();
List
<
Map
<
String
,
Object
>>
materialList
=
new
ArrayList
<>();
if
(
box
!=
null
)
{
boxCode
=
box
.
getBarcode
();
List
<
Barcode
>
subCodes
=
box
.
getSubCodes
();
if
(
subCodes
!=
null
){
for
(
Barcode
subCode
:
subCodes
)
{
Map
<
String
,
Object
>
materialMap
=
new
HashMap
<>();
materialMap
.
put
(
"partNum"
,
subCode
.
getPartNumber
());
materialMap
.
put
(
"serialNo"
,
subCode
.
getBarcode
());
materialMap
.
put
(
"quantity"
,
subCode
.
getAmount
());
materialList
.
add
(
materialMap
);
}
}
}
boxData
.
put
(
"boxCode"
,
boxCode
);
boxData
.
put
(
"locationCode"
,
pos
.
getPosName
());
String
state
=
"enabled"
;
if
(!
pos
.
isEnabled
()){
state
=
"disabled"
;
}
boxData
.
put
(
"state"
,
state
);
boxData
.
put
(
"materialList"
,
materialList
);
dataList
.
add
(
boxData
);
}
return
ResultBean
.
newOkResult
(
dataList
);
}
catch
(
Exception
e
)
{
log
.
info
(
"极创获取料箱信息出错:"
+
e
.
getMessage
());
return
ResultBean
.
newErrorResult
(
500
,
"获取料箱信息出错:"
+
e
.
getMessage
());
}
}
}
myproject/src/main/java/com/myproject/webapp/controller/webService/TaskService.java
查看文件 @
2ae4346
...
@@ -483,9 +483,9 @@ public class TaskService implements ITaskService {
...
@@ -483,9 +483,9 @@ public class TaskService implements ITaskService {
String
storageCid
=
storage
.
getCid
();
String
storageCid
=
storage
.
getCid
();
//先查找空闲 BOX同尺寸的,如果找不到,再查找可入库 BOX 同尺寸或比盘尺寸大的仓位
//先查找空闲 BOX同尺寸的,如果找不到,再查找可入库 BOX 同尺寸或比盘尺寸大的仓位
StatusBean
statusBean
=
statusMap
.
get
(
storageCid
);
StatusBean
statusBean
=
statusMap
.
get
(
storageCid
);
if
(
statusBean
==
null
)
{
//当前料仓不可用
//
if (statusBean == null) {//当前料仓不可用
throw
new
ValidateException
(
"error.storage.offline"
,
new
String
[]{
storageCid
},
"料仓[ "
+
storageCid
+
"]离线"
);
//
throw new ValidateException("error.storage.offline", new String[]{storageCid}, "料仓[ " + storageCid + "]离线");
}
//
}
//还需要排除掉正在队列里的仓位
//还需要排除掉正在队列里的仓位
StoragePos
storagePos
=
null
;
StoragePos
storagePos
=
null
;
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/boxHandler/SmdXlBoxHandler.java
查看文件 @
2ae4346
...
@@ -116,10 +116,11 @@ public class SmdXlBoxHandler {
...
@@ -116,10 +116,11 @@ public class SmdXlBoxHandler {
if
(
task
.
isPutInTask
()){
if
(
task
.
isPutInTask
()){
statusBean
.
setOp
(
StorageConstants
.
OP
.
PUT_IN
);
statusBean
.
setOp
(
StorageConstants
.
OP
.
PUT_IN
);
statusBean
.
addData
(
"door"
,
task
.
getSubSourceId
());
statusBean
.
addData
(
"door"
,
task
.
getSubSourceId
());
statusBean
.
addData
(
"boxCode"
,
task
.
getBarcode
());
}
else
if
(
task
.
isCheckOutTask
()){
}
else
if
(
task
.
isCheckOutTask
()){
statusBean
.
setOp
(
StorageConstants
.
OP
.
CHECKOUT
);
statusBean
.
setOp
(
StorageConstants
.
OP
.
CHECKOUT
);
}
}
statusBean
.
addPosInfo
(
""
,
pos
.
getPosName
(),
pos
.
getW
(),
pos
.
getH
(),
false
);
statusBean
.
addPosInfo
(
task
.
getBarcode
()
,
pos
.
getPosName
(),
pos
.
getW
(),
pos
.
getH
(),
false
);
log
.
info
(
"发送["
+
task
.
getType
()+
"]任务["
+
pos
.
getPosName
()+
"]到客户端door="
+
task
.
getSubSourceId
());
log
.
info
(
"发送["
+
task
.
getType
()+
"]任务["
+
pos
.
getPosName
()+
"]到客户端door="
+
task
.
getSubSourceId
());
task
.
setStatus
(
StorageConstants
.
OP_STATUS
.
EXECUTING
.
name
());
task
.
setStatus
(
StorageConstants
.
OP_STATUS
.
EXECUTING
.
name
());
...
...
myproject/storageManager.iml
deleted
100644 → 0
查看文件 @
8cbe2b2
<?xml version="1.0" encoding="UTF-8"?>
<module
org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=
"true"
type=
"JAVA_MODULE"
version=
"4"
>
<component
name=
"FacetManager"
>
<facet
type=
"web"
name=
"Web"
>
<configuration>
<descriptors>
<deploymentDescriptor
name=
"web.xml"
url=
"file://$MODULE_DIR$/src/main/webapp/WEB-INF/web.xml"
/>
</descriptors>
<webroots>
<root
url=
"file://$MODULE_DIR$/src/main/resources/packaged"
relative=
"WEB-INF/classes"
/>
<root
url=
"file://$MODULE_DIR$/src/main/webapp"
relative=
"/"
/>
<root
url=
"file://$MODULE_DIR$/target/classes"
relative=
"WEB-INF/classes"
/>
</webroots>
<sourceRoots>
<root
url=
"file://$MODULE_DIR$/src/main/java"
/>
<root
url=
"file://$MODULE_DIR$/src/main/resources"
/>
</sourceRoots>
</configuration>
</facet>
</component>
<component
name=
"NewModuleRootManager"
LANGUAGE_LEVEL=
"JDK_1_7"
inherit-compiler-output=
"false"
>
<output
url=
"file://$MODULE_DIR$/target/classes"
/>
<output-test
url=
"file://$MODULE_DIR$/target/test-classes"
/>
<content
url=
"file://$MODULE_DIR$"
>
<sourceFolder
url=
"file://$MODULE_DIR$/src/main/java"
isTestSource=
"false"
/>
<sourceFolder
url=
"file://$MODULE_DIR$/src/main/resources"
type=
"java-resource"
/>
<sourceFolder
url=
"file://$MODULE_DIR$/src/main/webapp"
type=
"java-test-resource"
/>
<excludeFolder
url=
"file://$MODULE_DIR$/target"
/>
</content>
<orderEntry
type=
"inheritedJdk"
/>
<orderEntry
type=
"sourceFolder"
forTests=
"false"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-lang:commons-lang:2.6"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-orm:4.1.6.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-beans:4.1.6.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-core:4.1.6.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-jdbc:4.1.6.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-tx:4.1.6.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.security:spring-security-core:3.2.7.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: aopalliance:aopalliance:1.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-aop:4.1.6.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-context:4.1.6.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-expression:4.1.6.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.security:spring-security-config:3.2.7.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.security:spring-security-ldap:3.2.7.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.ldap:spring-ldap-core:2.0.2.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-test:4.1.6.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.aspectj:aspectjweaver:1.8.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.aspectj:aspectjrt:1.8.5"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.hamcrest:hamcrest-all:1.3"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: junit:junit:4.12"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.slf4j:slf4j-api:1.7.11"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.logging.log4j:log4j-jcl:2.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-logging:commons-logging:1.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.logging.log4j:log4j-api:2.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.logging.log4j:log4j-slf4j-impl:2.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.logging.log4j:log4j-core:2.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.jboss.logging:jboss-logging:3.2.0.Beta1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: mysql:mysql-connector-java:5.1.27"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-fileupload:commons-fileupload:1.3.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-io:commons-io:2.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: displaytag:displaytag:1.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.lowagie:itext:2.1.7"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: bouncycastle:bcmail-jdk14:138"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: bouncycastle:bcprov-jdk14:138"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.bouncycastle:bctsp-jdk14:1.38"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.bouncycastle:bcprov-jdk14:1.38"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.bouncycastle:bcmail-jdk14:1.38"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-beanutils:commons-beanutils:1.9.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springmodules:spring-modules-validation:0.8"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-validator:commons-validator:1.3.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-digester:commons-digester:2.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: antlr:antlr:2.7.7"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: rhino:js:1.6R2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-dbcp:commons-dbcp:1.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-pool:commons-pool:1.6"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.subethamail:subethasmtp-wiser:1.2"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"TEST"
name=
"Maven: org.subethamail:subethasmtp-smtp:1.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.directwebremoting:dwr:2.0.10"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: net.sf.ehcache:ehcache-web:2.0.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: net.sf.ehcache:ehcache-core:2.6.10"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"PROVIDED"
name=
"Maven: javax.servlet.jsp:jsp-api:2.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.servlet:javax.servlet-api:3.1.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.servlet:jstl:1.2"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"RUNTIME"
name=
"Maven: struts-menu:struts-menu:2.4.3"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.velocity:velocity-tools:2.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-chain:commons-chain:1.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: dom4j:dom4j:1.6.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: xml-apis:xml-apis:1.4.01"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: oro:oro:2.0.8"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: sslext:sslext:1.2-0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.struts:struts-core:1.3.8"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.struts:struts-taglib:1.3.8"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.struts:struts-tiles:1.3.8"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"RUNTIME"
name=
"Maven: opensymphony:sitemesh:2.4.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.security:spring-security-taglibs:3.2.7.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.security:spring-security-acl:3.2.7.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.security:spring-security-web:3.2.7.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-web:4.1.6.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-webmvc:4.1.6.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.tuckey:urlrewritefilter:4.0.3"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: ro.isdc.wro4j:wro4j-core:1.7.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.commons:commons-lang3:3.3.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.webjars:jquery-cookie:1.3.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.webjars:bootstrap:3.3.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.webjars:jquery:1.11.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.webjars:bootstrap-datepicker:1.3.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.webjars:bootswatch-spacelab:3.3.1+2"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"RUNTIME"
name=
"Maven: org.apache.logging.log4j:log4j-1.2-api:2.1"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"RUNTIME"
name=
"Maven: org.apache.logging.log4j:log4j-web:2.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-collections:commons-collections:3.2.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.mail:mail:1.4.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.activation:activation:1.1.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.mockito:mockito-core:1.10.8"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"RUNTIME"
name=
"Maven: org.hamcrest:hamcrest-core:1.3"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"RUNTIME"
name=
"Maven: org.objenesis:objenesis:2.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.velocity:velocity:1.7"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.cxf:cxf-rt-frontend-jaxrs:3.0.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.cxf:cxf-core:3.0.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.codehaus.woodstox:woodstox-core-asl:4.2.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.codehaus.woodstox:stax2-api:3.1.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.ws.xmlschema:xmlschema-core:2.1.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.ws.rs:javax.ws.rs-api:2.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.annotation:javax.annotation-api:1.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.cxf:cxf-rt-transports-http:3.0.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.cxf:cxf-rt-frontend-jaxws:3.0.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: xml-resolver:xml-resolver:1.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: asm:asm:3.3.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.cxf:cxf-rt-bindings-soap:3.0.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.cxf:cxf-rt-wsdl:3.0.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: wsdl4j:wsdl4j:1.6.3"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.cxf:cxf-rt-databinding-jaxb:3.0.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.sun.xml.bind:jaxb-impl:2.2.10-b140310.1920"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.sun.xml.bind:jaxb-core:2.2.10-b140310.1920"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.cxf:cxf-rt-bindings-xml:3.0.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.cxf:cxf-rt-frontend-simple:3.0.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.cxf:cxf-rt-ws-addr:3.0.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.cxf:cxf-rt-ws-policy:3.0.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.neethi:neethi:3.0.3"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.4.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.4.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.4.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-core:2.4.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-databind:2.4.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-annotations:2.4.5"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework:spring-context-support:4.1.6.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.hibernate:hibernate-core:4.3.6.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.jboss.logging:jboss-logging-annotations:1.2.0.Beta1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.0.0.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.hibernate.common:hibernate-commons-annotations:4.0.5.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.javassist:javassist:3.18.1-GA"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.jboss:jandex:1.1.0.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.hibernate:hibernate-ehcache:4.3.6.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.xml.bind:jaxb-api:2.2.11"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.hibernate:hibernate-search:4.5.1.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.hibernate:hibernate-search-orm:4.5.1.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.hibernate:hibernate-search-engine:4.5.1.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.avro:avro:1.7.6"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.codehaus.jackson:jackson-core-asl:1.9.13"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.13"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.thoughtworks.paranamer:paranamer:2.3"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.commons:commons-compress:1.4.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.lucene:lucene-facet:3.6.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.hibernate:hibernate-search-analyzers:4.5.1.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.lucene:lucene-core:3.6.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.lucene:lucene-analyzers:3.6.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.solr:solr-analysis-extras:3.6.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.lucene:lucene-smartcn:3.6.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.lucene:lucene-stempel:3.6.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.data:spring-data-mongodb:1.8.0.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.mongodb:mongo-java-driver:2.12.5"
level=
"project"
/>
<orderEntry
type=
"library"
scope=
"RUNTIME"
name=
"Maven: org.slf4j:jcl-over-slf4j:1.7.11"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.hibernate:hibernate-validator:4.2.0.Final"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: javax.validation:validation-api:1.0.0.GA"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.springframework.data:spring-data-commons:1.10.2.RELEASE"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.poi:poi:3.13"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-codec:commons-codec:1.10"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.httpcomponents:httpclient:4.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.httpcomponents:httpcore:4.4"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.google.zxing:core:3.2.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.itextpdf:itextpdf:5.5.9"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.google.guava:guava:21.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: commons-httpclient:commons-httpclient:3.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.apache.mina:mina-core:2.1.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.samba.jcifs:jcifs:1.3.3"
level=
"project"
/>
</component>
</module>
\ No newline at end of file
\ No newline at end of file
改造接口信息.md
0 → 100644
查看文件 @
2ae4346
## 入库:
1 定时通信data里面添加boxCanPutIn1,boxCanPutIn2字段表示箱子是否可放上入库线体, 值为字符串"TRUE"时表示可放, 其他为不可放
2 堆垛机取货完成, 通知极创
http://localhost/rest/api/v2/803/service/store/xl/ddjPickUpGoodsNotice
请求参数:
{
"posName": "库位号"
"door": "1或2"
}
返回结果
{"code":0,"msg":"ok","data":""}
3 料箱放入库位完成, 通知极创
http://localhost/rest/api/v2/803/service/store/xl/inStorageFeedback
请求参数:
{
"posName": "库位号"
}
返回结果
{"code":0,"msg":"ok","data":""}
4 出库时查询接驳线体是否可以放料箱
http://localhost/rest/api/v2/803/service/store/xl/outIsReady
请求参数:
{
"cid": "001",
"posName":"库位号"
"door": "1或2"
}
返回结果
{"code":0,"msg":"ok","data":""}
5 堆垛机放货完成反馈
http://localhost/rest/api/v2/803/service/store/xl/ddjReleaseTheGoodsNotice
请求参数:
{
"posName":"库位号"
}
返回结果
{"code":0,"msg":"ok","data":""}
1 极创调用此接口判断料箱是否可以放上入料线体(增加参数deviceNo设备编号和door=1或2表示箱子放入哪个口)
http://localhost/smdbox/rest/api/v2/803/boxCanPutIn
{
"deviceNo":"rc1252-auto1",
"door":"1",
"boxCode": "CC002"
}
2 料箱到位顶起到位调用入库通知单接口(增加参数door=1或2表示箱子放入哪个口)
http://localhost/smdbox/rest/api/v2/803/boxPutIn
{
"djh": "11111",
"deviceNo":"rc1252-auto1",
"door":"1",
"boxCode": "CC002",
"materialList":
[
{
"serialNo": "CR0001",
"partNum": "CN0001",
"quantity": "1000"
}]
}
3 出库通知单接口
http://localhost/smdbox/rest/api/v2/803/outMaterials
{
"djh": "55555",
"data":
[
{
"serialNo": "CR0001",
"partNum": "CN0001",
"quantity": "100"
}]
}
4 库存信息接口
http://localhost/smdbox/rest/api/v2/803/storage
{
"serialNo": "CR0001",
"inTimeStart": "2024-07-01 00:00:00",
"inTimeEnd": "2025-07-01 00:00:00"
}
5 库位信息接口
http://localhost/smdbox/rest/api/v2/803/warehouseLocatoinMsg
{
"locationCode": "1#AC1_2A_1_10"
}
6 料箱信息对应物料接口
http://localhost/smdbox/rest/api/v2/803/boxDetailMsg
{
"boxCode": "CC002"
}
与扫码贴标batch连接:
> URL: http://IP:port/myproject/rest/api/v2/mes/barcode
> 参数:
>> codeStr 条码字符串
>> batch 批次字符串
C:
\W
indows
\s
ystem32>mongod --storageEngine=mmapv1 --logappend --directoryperdb --serviceName MongoDB --install
打印机静默打印: Chrome快捷方式增加:--kiosk-printing
--disable-print-preview
安装Mongodb服务
1、创建 D:
\M
ongoDB 及 D:
\M
ongoDB
\d
ata 和 D:
\M
ongoDB
\l
ogs 目录
2、执行 mongod --storageEngine=mmapv1 --journal --logpath D:
\M
ongoDB
\l
ogs
\M
ongoDB.log --logappend --dbpath D:
\M
ongoDB
\d
ata --directoryperdb --serviceName MongoDB --install
移除MongoDB:
sc delete MongoDB
mongod --auth -dbpath D:
\M
ongoDB
\d
ata --repair
mac mongo 启动:
sudo mongod -config /usr/local/etc/mongod.conf
Tomcat 8 启动时会出现 webresources.Cache.getResource Unable to add the resource at 的错误,需要在Tomcat的在 /conf/context.xml 的
</Context>
前添加以下内容:
<Resources
cachingAllowed=
"true"
cacheMaxSize=
"100000"
/>
//备份
mongodump -h dbhost -d dbname -o dbdirectory
"C:
\P
rogram Files
\M
ongoDB
\S
erver
\3
.2
\b
in
\m
ongodump" -d storage -o D:
\s
torage
mongodump -h192.168.3.124 -d storage -o D:
\M
ongoDB
\
//还原
mongorestore -h
<hostname><:port>
-d dbname
<path>
C:
\P
rogram Files
\A
pache Software Foundation
\T
omcat 9.0
\w
ebapps
\m
yproject
\W
EB-INF
\c
lasses
\c
om
\m
yproject
\w
ebapp
\c
ontroller
\s
torage
搅拌时获取与第一罐重量匹配的锡膏
>地址:
>>/service/store/solder/matchMixSolder
>
>参数:
>>barcode: 第一罐的条码
>
> 返回:
>>` {"code":0,"msg":"ok","data":{"posId":"3D03B02","barcode":"xxxx","weight":"100","mixTime":"300"}}`
>>
>> - code: 0为正常,其他为异常,
>> - msg:消息,
>> - data:
>> - posId: 匹配的锡膏所在库位
>> - barcode: 匹配的锡膏条码
>> - weight: 匹配的锡膏的重量
>> - mixTime: 匹配的锡膏的搅拌时间(单位:秒)
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论