Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit b3c77f8b
由
sunke
编写于
2022-02-07 10:32:55 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
PanaCIM对接
1 个父辈
befc4c4e
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
703 行增加
和
518 行删除
pom.xml
src/main/java/com/neotel/smfcore/common/exception/ApiException.java
src/main/java/com/neotel/smfcore/common/utils/HttpHelper.java
src/main/java/com/neotel/smfcore/panacim/PanaApiController.java
src/main/java/com/neotel/smfcore/panacim/PanaMaterial.java
pom.xml
查看文件 @
b3c77f8
...
@@ -186,17 +186,17 @@
...
@@ -186,17 +186,17 @@
<dependency>
<dependency>
<groupId>
org.mapstruct
</groupId>
<groupId>
org.mapstruct
</groupId>
<artifactId>
mapstruct
</artifactId>
<artifactId>
mapstruct
</artifactId>
<version>
1.
3.1
.Final
</version>
<version>
1.
4.2
.Final
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.mapstruct
</groupId>
<groupId>
org.mapstruct
</groupId>
<artifactId>
mapstruct-processor
</artifactId>
<artifactId>
mapstruct-processor
</artifactId>
<version>
1.
3.1
.Final
</version>
<version>
1.
4.2
.Final
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.mapstruct
</groupId>
<groupId>
org.mapstruct
</groupId>
<artifactId>
mapstruct-jdk8
</artifactId>
<artifactId>
mapstruct-jdk8
</artifactId>
<version>
1.4.
0
.Final
</version>
<version>
1.4.
2
.Final
</version>
</dependency>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.mina/mina-core -->
<!-- https://mvnrepository.com/artifact/org.apache.mina/mina-core -->
...
@@ -220,6 +220,11 @@
...
@@ -220,6 +220,11 @@
<artifactId>
core
</artifactId>
<artifactId>
core
</artifactId>
<version>
3.2.1
</version>
<version>
3.2.1
</version>
</dependency>
</dependency>
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
<artifactId>
httpclient
</artifactId>
<version>
4.4
</version>
</dependency>
</dependencies>
</dependencies>
...
...
src/main/java/com/neotel/smfcore/common/exception/ApiException.java
0 → 100644
查看文件 @
b3c77f8
package
com
.
neotel
.
smfcore
.
common
.
exception
;
/**
* Created by kangmor on 2015/11/12.
*/
public
class
ApiException
extends
Exception
{
public
ApiException
(
String
message
){
super
(
message
);
}
}
src/main/java/com/neotel/smfcore/common/utils/HttpHelper.java
0 → 100755
查看文件 @
b3c77f8
package
com
.
neotel
.
smfcore
.
common
.
utils
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.neotel.smfcore.common.exception.ApiException
;
import
lombok.val
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.NameValuePair
;
import
org.apache.http.client.HttpClient
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.entity.StringEntity
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.message.BasicNameValuePair
;
import
org.apache.http.util.EntityUtils
;
import
org.apache.logging.log4j.util.Strings
;
import
java.io.*
;
import
java.net.URL
;
import
java.net.URLConnection
;
import
java.util.*
;
import
java.util.Map.Entry
;
/**
* HTTP网络请求
*/
public
class
HttpHelper
{
// 编码方式
private
static
final
String
CONTENT_CHARSET
=
"UTF-8"
;
public
static
String
postJson
(
String
url
,
Map
<
String
,
Object
>
params
)
throws
ApiException
{
CloseableHttpClient
httpClient
=
HttpClients
.
createDefault
();
HttpPost
httpPost
=
new
HttpPost
(
url
);
httpPost
.
addHeader
(
"Content-Type"
,
"application/json;charset=utf-8"
);
// 设置请求参数
if
(
params
!=
null
&&
!
params
.
isEmpty
())
{
ObjectMapper
mapper
=
new
ObjectMapper
();
try
{
String
requestBody
=
mapper
.
writeValueAsString
(
params
);
httpPost
.
setEntity
(
new
StringEntity
(
requestBody
));
}
catch
(
JsonProcessingException
e
)
{
throw
new
ApiException
(
"Request params to ["
+
url
+
"] failed:"
+
e
.
getMessage
());
}
catch
(
UnsupportedEncodingException
e
)
{
throw
new
ApiException
(
"Request params to ["
+
url
+
"] failed:"
+
e
.
getMessage
());
}
}
try
{
CloseableHttpResponse
response
=
httpClient
.
execute
(
httpPost
);
//System.out.println(response.getStatusLine().getStatusCode() + "\n");
HttpEntity
entity
=
response
.
getEntity
();
String
responseContent
=
EntityUtils
.
toString
(
entity
,
CONTENT_CHARSET
);
response
.
close
();
httpClient
.
close
();
return
responseContent
;
}
catch
(
Exception
e
){
throw
new
ApiException
(
"Request to ["
+
url
+
"] failed:"
+
e
.
getMessage
());
}
}
}
src/main/java/com/neotel/smfcore/panacim/PanaApiController.java
查看文件 @
b3c77f8
//package com.neotel.smfcore.panacim;
package
com
.
neotel
.
smfcore
.
panacim
;
//package com.neotel.smfcore.panacim;
//
//import com.fasterxml.jackson.databind.ObjectMapper;
import
com.fasterxml.jackson.databind.ObjectMapper
;
//import com.google.common.base.Strings;
import
com.google.common.base.Strings
;
//import com.google.common.collect.Lists;
import
com.google.common.collect.Lists
;
//import com.google.common.collect.Maps;
import
com.google.common.collect.Maps
;
//import com.myproject.bean.json.PanaMaterial;
import
com.neotel.smfcore.common.exception.ValidateException
;
//import com.myproject.bean.update.*;
import
com.neotel.smfcore.common.utils.HttpHelper
;
//import com.myproject.dao.mongo.IDataLogDao;
import
com.neotel.smfcore.common.utils.StorageConstants
;
//import com.myproject.manager.IStoragePosManager;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
//import com.myproject.util.HttpHelper;
import
com.neotel.smfcore.core.device.api.CodeValidateParam
;
//import com.myproject.util.StorageConstants;
import
com.neotel.smfcore.core.device.api.IOpAuthApi
;
//import com.myproject.webapp.controller.storage.BaseController;
import
com.neotel.smfcore.core.device.enums.OP
;
//import com.neotel.smfcore.common.exception.ValidateException;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
//import com.neotel.smfcore.core.barcode.service.po.Barcode;
import
com.neotel.smfcore.core.device.util.DataCache
;
//import com.neotel.smfcore.core.device.api.IOpAuthApi;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
//import com.neotel.smfcore.core.system.listener.ITaskListener;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
//import com.neotel.smfcore.core.system.service.po.DataLog;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
//import org.apache.commons.lang.StringUtils;
import
com.neotel.smfcore.core.system.listener.ITaskListener
;
//import org.apache.logging.log4j.LogManager;
import
com.neotel.smfcore.core.system.service.dao.IDataLogDao
;
//import org.apache.logging.log4j.Logger;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
//import org.springframework.beans.factory.annotation.Autowired;
import
com.neotel.smfcore.core.system.util.TaskService
;
//import org.springframework.stereotype.Controller;
import
org.apache.commons.lang3.StringUtils
;
//import org.springframework.web.bind.annotation.RequestBody;
import
org.apache.logging.log4j.LogManager
;
//import org.springframework.web.bind.annotation.RequestMapping;
import
org.apache.logging.log4j.Logger
;
//import org.springframework.web.bind.annotation.ResponseBody;
import
org.springframework.beans.factory.annotation.Autowired
;
//
import
org.springframework.stereotype.Controller
;
//import javax.servlet.http.HttpServletRequest;
import
org.springframework.web.bind.annotation.RequestBody
;
//import java.text.SimpleDateFormat;
import
org.springframework.web.bind.annotation.RequestMapping
;
//import java.util.*;
import
org.springframework.web.bind.annotation.ResponseBody
;
//import java.util.concurrent.atomic.AtomicLong;
//
import
javax.servlet.http.HttpServletRequest
;
//
import
java.text.SimpleDateFormat
;
//@Controller
import
java.util.*
;
//@RequestMapping("/rest/api")
import
java.util.concurrent.atomic.AtomicLong
;
//public class PanaApiController implements IOpAuthApi, ITaskListener{
//
// @Autowired
@Controller
// protected ITaskService taskService;
@RequestMapping
(
"/rest/api"
)
// @Autowired
public
class
PanaApiController
implements
IOpAuthApi
,
ITaskListener
{
// protected IStoragePosManager storagePosManager;
//
@Autowired
// protected static DataCache dataCache;
protected
TaskService
taskService
;
//
@Autowired
// @Autowired
protected
IStoragePosManager
storagePosManager
;
// public void setDataCache(DataCache dataCache) {
// PanaApiController.dataCache = dataCache;
protected
static
DataCache
dataCache
;
// }
//
@Autowired
// @Autowired
public
void
setDataCache
(
DataCache
dataCache
)
{
// protected IDataLogDao dataLogDao;
PanaApiController
.
dataCache
=
dataCache
;
//
}
// protected final static Logger log = LogManager.getLogger(PanaApiController.class);
//
@Autowired
// private static String PanaCIMIP = "";
protected
IDataLogDao
dataLogDao
;
//
// private static String PanaCIMPort = "";
protected
final
static
Logger
log
=
LogManager
.
getLogger
(
PanaApiController
.
class
);
//
// private static String TowerID = "InoAutoB";
private
static
String
PanaCIMIP
=
""
;
// private static AtomicLong seq = new AtomicLong(0);
//
private
static
String
PanaCIMPort
=
""
;
// @RequestMapping(value = "/setConfiguration")
// @ResponseBody
private
static
String
TowerID
=
"InoAutoB"
;
// public String setConfiguration(@RequestBody Map<String,String> map) {
private
static
AtomicLong
seq
=
new
AtomicLong
(
0
);
// String ip = map.get("PanaCIMIP");
// String port = map.get("PanaCIMPort");
@RequestMapping
(
value
=
"/setConfiguration"
)
//
@ResponseBody
// log.info("收到 PanaCIM 的注册信息【"+ip+":"+port+"】");
public
String
setConfiguration
(
@RequestBody
Map
<
String
,
String
>
map
)
{
// if(Strings.isNullOrEmpty(ip)){
String
ip
=
map
.
get
(
"PanaCIMIP"
);
// return "ERROR:IP is empty.";
String
port
=
map
.
get
(
"PanaCIMPort"
);
// }
//
log
.
info
(
"收到 PanaCIM 的注册信息【"
+
ip
+
":"
+
port
+
"】"
);
// if(Strings.isNullOrEmpty(port)){
if
(
Strings
.
isNullOrEmpty
(
ip
)){
// return "ERROR: port is empty";
return
"ERROR:IP is empty."
;
// }
}
// PanaCIMIP = ip;
// PanaCIMPort = port;
if
(
Strings
.
isNullOrEmpty
(
port
)){
//
return
"ERROR: port is empty"
;
// return "OK";
}
// }
PanaCIMIP
=
ip
;
//
PanaCIMPort
=
port
;
//
// private static String getInNotifyApi(){
return
"OK"
;
// if(!Strings.isNullOrEmpty(PanaCIMIP)){
}
// return "http://"+PanaCIMIP + ":" + PanaCIMPort + "/api/Storage/checkInNotification";
// }
// return "";
private
static
String
getInNotifyApi
(){
// }
if
(!
Strings
.
isNullOrEmpty
(
PanaCIMIP
)){
//
return
"http://"
+
PanaCIMIP
+
":"
+
PanaCIMPort
+
"/api/Storage/checkInNotification"
;
// private static String getOutNotifyApi(){
}
//
return
""
;
// if(!Strings.isNullOrEmpty(PanaCIMIP)){
}
// return "http://"+PanaCIMIP + ":" + PanaCIMPort + "/api/Storage/deliverNotification";
// }
private
static
String
getOutNotifyApi
(){
// return "";
if
(!
Strings
.
isNullOrEmpty
(
PanaCIMIP
)){
// }
return
"http://"
+
PanaCIMIP
+
":"
+
PanaCIMPort
+
"/api/Storage/deliverNotification"
;
//
}
// private static String getRequestReelUrl(){
return
""
;
// if(!Strings.isNullOrEmpty(PanaCIMIP)){
}
// return "http://"+PanaCIMIP + ":" + PanaCIMPort + "/api/Storage/requestReel";
// }
private
static
String
getRequestReelUrl
(){
// return "";
if
(!
Strings
.
isNullOrEmpty
(
PanaCIMIP
)){
// }
return
"http://"
+
PanaCIMIP
+
":"
+
PanaCIMPort
+
"/api/Storage/requestReel"
;
//
}
//
return
""
;
// @RequestMapping(value = "/keepAlive")
}
// @ResponseBody
// public String keepAlive(HttpServletRequest request) {
// return "OK";
@RequestMapping
(
value
=
"/keepAlive"
)
// }
@ResponseBody
//
public
String
keepAlive
(
HttpServletRequest
request
)
{
// //private static String getApiUrl(String apiPath){
return
"OK"
;
// // return "http://"+PanaCIMIP + ":" + PanaCIMPort + apiPath;
}
// //}
//
private
static
String
nextSeq
(){
// private static String nextSeq(){
return
"SMDBOX_"
+
TowerID
+
"_"
+
seq
.
incrementAndGet
();
// return "SMDBOX_"+TowerID+"_"+seq.incrementAndGet();
}
// }
//
//
//
@RequestMapping
(
value
=
"/deliverMaterial"
)
// public static boolean checkInNotification(Barcode barcode) {
@ResponseBody
// String inNotifyApi = getInNotifyApi();
public
Map
<
String
,
Object
>
deliverMaterial
(
@RequestBody
PanaMaterial
panaMaterial
)
{
// try {
Map
<
String
,
Object
>
result
=
new
HashMap
<
String
,
Object
>();
// if(Strings.isNullOrEmpty(inNotifyApi)){
try
{
// inNotifyApi = getInNotifyApi();
String
TransactionID
=
panaMaterial
.
getTransactionID
();
// log.info("没有配置API,查找setConfiguration注册的IP 及端口");
String
TowerID
=
panaMaterial
.
getTowerID
();
// }
String
JobID
=
panaMaterial
.
getJobID
();
// if(!Strings.isNullOrEmpty(inNotifyApi)){
List
<
String
>
ReelBarcodes
=
panaMaterial
.
getReelBarcodes
();
//["ABC123","BCD345","LL13212"]
// log.info("向 PanaCIM["+inNotifyApi+"] 通知料盘【"+barcode.getBarcode()+"】的入库信息");
log
.
info
(
"收到 PanaCIM 的deliverMaterial 命令:ReelBarcodes="
+
StringUtils
.
join
(
ReelBarcodes
,
","
));
// //String url = getApiUrl("/api/Storage/checkInNotification");
List
<
String
>
ReelBarcodesDelivered
=
Lists
.
newArrayList
();
// Map<String, Object> params = new LinkedHashMap<>();
List
<
String
>
ReelBarcodesNonExisting
=
Lists
.
newArrayList
();
// params.put("TransactionID",nextSeq());
for
(
String
barcode
:
ReelBarcodes
){
//加入到出库列表
// params.put("ReelBarcode",barcode.getBarcode());
try
{
// params.put("PartNo",barcode.getPartNumber());
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
barcode
);
// params.put("Quantity",barcode.getAmount());
if
(
pos
==
null
){
// params.put("Msd",false);
log
.
info
(
"二维码["
+
barcode
+
"]在仓库中不存在"
);
// params.put("MsdLevel","1");
ReelBarcodesNonExisting
.
add
(
barcode
);
// params.put("Location","0");
continue
;
// params.put("TowerID",TowerID);
}
//
log
.
info
(
"出库["
+
barcode
+
"]位置仓位【"
+
pos
.
getPosName
()+
"】"
);
// String result = HttpHelper.postJson(inNotifyApi,params);
taskService
.
checkout
(
pos
,
false
,
null
,
false
);
// log.info("Response Of checkInNotification From PanaCIM:"+result);
ReelBarcodesDelivered
.
add
(
barcode
);
// if(!Strings.isNullOrEmpty(result)){
}
catch
(
Exception
e
){
// ObjectMapper mapper = new ObjectMapper();
ReelBarcodesNonExisting
.
add
(
barcode
);
// HashMap<String,String> jsonMap = mapper.readValue(result, HashMap.class);
}
// String ErrorCode = jsonMap.get("ErrorCode");
}
// if("0".equals(ErrorCode)){//成功
result
.
put
(
"TransactionID"
,
TransactionID
);
// return true;
result
.
put
(
"ErrorCode"
,
"0"
);
// }
result
.
put
(
"JobID"
,
JobID
);
// }
result
.
put
(
"TowerID"
,
TowerID
);
// }else{
result
.
put
(
"ReelBarcodesDelivered"
,
ReelBarcodesDelivered
);
// log.info("没有配置PanaCIM接口,无需通知");
result
.
put
(
"ReelBarcodesNonExisting"
,
ReelBarcodesNonExisting
);
// return true;
// }
}
catch
(
Exception
e
)
{
//
log
.
error
(
"PanaCIM的指令deliverMaterial出错"
,
e
);
// } catch (Exception e) {
result
.
put
(
"ErrorCode"
,
"100"
);
// log.error("入库通知PanaCIM["+inNotifyApi+"]的料盘"+barcode.getBarcode()+"出错",e);
}
// }
return
result
;
// return false;
}
// }
//
// public static boolean deliverNotification(Barcode barcode) {
// String outNotifyApi = getOutNotifyApi();
@RequestMapping
(
value
=
"/getInventory"
)
// try {
@ResponseBody
// if(Strings.isNullOrEmpty(outNotifyApi)){
public
Map
<
String
,
Object
>
getInventory
(
@RequestBody
Map
<
String
,
String
>
map
)
{
// outNotifyApi = getOutNotifyApi();
Map
<
String
,
Object
>
result
=
new
HashMap
<
String
,
Object
>();
// log.info("没有配置API,查找setConfiguration注册的IP 及端口");
try
{
// }
String
TransactionID
=
map
.
get
(
"TransactionID"
);
// if(!Strings.isNullOrEmpty(outNotifyApi)){
String
TowerID
=
map
.
get
(
"TowerID"
);
// log.info("向 PanaCIM["+outNotifyApi+"] 通知料盘【"+barcode.getBarcode()+"】的出库信息");
// //String url = getApiUrl("/api/Storage/deliverNotification");
log
.
info
(
"收到 PanaCIM 的getInventory 命令:TransactionID="
+
TransactionID
+
" TowerID="
+
TowerID
);
// Map<String, Object> params = new HashMap<String, Object>();
/**
// params.put("TransactionID",nextSeq());
* {
// params.put("ReelBarcode",barcode.getBarcode());
"ErrorCode":0,
// params.put("PartNO",barcode.getPartNumber());
"ReelBarCodes":
// params.put("Quantity",barcode.getAmount());
[{"JobID":"1234","Location":"0","Msd":false,"Msdlevel":"1","PartNo":"part123","Quantity":123,"ReelBarcode":"123456789","TowerID":"InoAuto A"},
// SimpleDateFormat dataformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
{"JobID":"1234","Location":"0","Msd":false,"Msdlevel":"1","PartNo":"part321","Quantity":321,"ReelBarcode":"123456789","TowerID":"InoAuto B"},
// params.put("Timestamp",dataformat.format(new Date()));
{"JobID":"1234","Location":"0","Msd":false,"Msdlevel":"1","PartNo":"part213","Quantity":213,"ReelBarcode":"123456789","TowerID":"InoAuto C"}],
// params.put("TowerID",TowerID);
"TransactionID":"testme"
// params.put("JobID","");
}
// params.put("Msd",false);
*/
// params.put("MsdLevel","1");
Collection
<
Storage
>
allStorage
=
dataCache
.
getAllStorage
().
values
();
// params.put("Location","0");
List
<
Storage
>
storageList
=
Lists
.
newArrayList
();
//
if
(
Strings
.
isNullOrEmpty
(
TowerID
)){
// String result = HttpHelper.postJson(outNotifyApi,params);
storageList
.
addAll
(
allStorage
);
// log.info("Response Of deliverNotification From PanaCIM:"+result);
}
else
{
// if(!Strings.isNullOrEmpty(result)){
for
(
Storage
storage
:
allStorage
)
{
// ObjectMapper mapper = new ObjectMapper();
if
(
storage
.
getName
().
equals
(
TowerID
)){
// HashMap<String,String> jsonMap = mapper.readValue(result, HashMap.class);
storageList
.
add
(
storage
);
// String ErrorCode = jsonMap.get("ErrorCode");
break
;
// if("0".equals(ErrorCode)){//成功
}
// return true;
}
// }
}
// }
List
ReelBarCodes
=
Lists
.
newArrayList
();
//
for
(
Storage
storage
:
storageList
)
{
// }else{
List
<
StoragePos
>
poses
=
storagePosManager
.
findNotEmptyByStorageId
(
storage
.
getId
());
// log.info("没有配置PanaCIM接口,无需通知");
for
(
StoragePos
pos
:
poses
){
// return true;
Barcode
barcode
=
pos
.
getBarcode
();
// }
Map
<
String
,
Object
>
item
=
Maps
.
newHashMap
();
//
item
.
put
(
"TowerID"
,
TowerID
);
// } catch (Exception e) {
item
.
put
(
"JobID"
,
barcode
.
getLockName
());
// log.error("出库通知PanaCIM["+outNotifyApi+"]料盘"+barcode.getBarcode()+" 出错",e);
item
.
put
(
"ReelBarcode"
,
barcode
.
getBarcode
());
// }
item
.
put
(
"PartNo"
,
barcode
.
getPartNumber
());
// return false;
item
.
put
(
"Quantity"
,
barcode
.
getAmount
());
// }
item
.
put
(
"Msd"
,
false
);
//
item
.
put
(
"msdlevel"
,
""
);
//
item
.
put
(
"Location"
,
"0"
);
// @RequestMapping(value = "/deliverMaterial")
ReelBarCodes
.
add
(
item
);
// @ResponseBody
}
// public Map<String,Object> deliverMaterial(@RequestBody PanaMaterial panaMaterial) {
}
// Map<String, Object> result = new HashMap<String, Object>();
// try {
result
.
put
(
"TransactionID"
,
TransactionID
);
// /*String TransactionID = map.get("TransactionID");
result
.
put
(
"ErrorCode"
,
"0"
);
// String TowerID = map.get("TowerID");
result
.
put
(
"ReelBarCodes"
,
ReelBarCodes
);
//// String Timestamp = request.getParameter("Timestamp");//Date(2009-02-15T00:00:00Z)
}
catch
(
Exception
e
)
{
// String JobID = map.get("JobID");
log
.
error
(
"PanaCIM的指令 getInventory 出错"
,
e
);
// String ReelBarcodes = map.get("ReelBarcodes");//["ABC123","BCD345","LL13212"]*/
result
.
put
(
"ErrorCode"
,
"200"
);
// String TransactionID = panaMaterial.getTransactionID();
}
// String TowerID = panaMaterial.getTowerID();
return
result
;
//// String Timestamp = request.getParameter("Timestamp");//Date(2009-02-15T00:00:00Z)
}
// String JobID = panaMaterial.getJobID();
// List<String> ReelBarcodes = panaMaterial.getReelBarcodes();//["ABC123","BCD345","LL13212"]
@RequestMapping
(
value
=
"/reserveMaterial"
)
// log.info("收到 PanaCIM 的deliverMaterial 命令:ReelBarcodes="+ StringUtils.join(ReelBarcodes,","));
@ResponseBody
// //ObjectMapper mapper = new ObjectMapper();
public
Map
<
String
,
Object
>
reserveMaterial
(
@RequestBody
PanaMaterial
panaMaterial
)
{
// //ArrayList<String> codes = mapper.readValue(ReelBarcodes, ArrayList.class);
/**
//
* "TransactionID":"testme",
// List<String> ReelBarcodesDelivered = Lists.newArrayList();
"TransactionType":0,
// List<String> ReelBarcodesNonExisting = Lists.newArrayList();
"JobID":"job123",
// for (String barcode : ReelBarcodes){//加入到出库列表
"ReelBarcodesReserved": ["ABC123","BCD345","LL13212"]
// try{
*/
// StoragePos pos = storagePosManager.getByBarcode(barcode);
Map
<
String
,
Object
>
result
=
new
HashMap
<
String
,
Object
>();
// if(pos == null){
try
{
// log.info( "二维码["+barcode+"]在仓库中不存在");
String
TransactionID
=
panaMaterial
.
getTransactionID
();
// ReelBarcodesNonExisting.add(barcode);
//1=create reservation based on JobID 2=update 3=cancel
// continue;
String
TransactionType
=
panaMaterial
.
getTransactionType
();
// }
String
JobID
=
panaMaterial
.
getJobID
();
// log.info("出库["+barcode+"]位置仓位【"+pos.getPosName()+"】");
List
<
String
>
reelBarcodesReserved
=
panaMaterial
.
getReelBarcodesReserved
();
// taskService.checkout(pos,false,null,false);
log
.
info
(
"收到 PanaCIM 的reserveMaterial 指令:TransactionID="
+
TransactionID
+
" TransactionType="
+
TransactionType
+
" JobID="
+
JobID
+
" ReelBarcodesReserved="
+
StringUtils
.
join
(
reelBarcodesReserved
,
","
));
// ReelBarcodesDelivered.add(barcode);
// }catch (Exception e){
if
(
reelBarcodesReserved
==
null
){
// ReelBarcodesNonExisting.add(barcode);
log
.
error
(
"PanaCIM 的指令reserveMaterial 执行时发现reelBarcodesReserved为 NUll,直接返回"
);
// }
result
.
put
(
"ErrorCode"
,
"301"
);
// }
result
.
put
(
"ErrorMessage"
,
"The field ReelBarcodesReserved is empty"
);
// result.put("TransactionID",TransactionID);
}
else
{
// result.put("ErrorCode","0");
List
<
String
>
ReelBarcodesRejected
=
Lists
.
newArrayList
();
// result.put("JobID",JobID);
//这里使用指定批次的锁定
// result.put("TowerID",TowerID);
if
(
"1"
.
equals
(
TransactionType
)
||
"2"
.
equals
(
TransactionType
)){
//create//update
// result.put("ReelBarcodesDelivered",ReelBarcodesDelivered);
// result.put("ReelBarcodesNonExisting", ReelBarcodesNonExisting);
for
(
String
barcode
:
reelBarcodesReserved
){
//
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
barcode
);
// } catch (Exception e) {
if
(
pos
==
null
){
// log.error("PanaCIM的指令deliverMaterial出错",e);
ReelBarcodesRejected
.
add
(
barcode
);
// result.put("ErrorCode","100");
}
else
{
// }
pos
.
getBarcode
().
setLockId
(
JobID
);
// return result;
pos
.
getBarcode
().
setLockName
(
JobID
);
// }
storagePosManager
.
save
(
pos
);
//
}
//
}
//
}
else
if
(
"3"
.
equals
(
TransactionType
)){
//cancel
// @RequestMapping(value = "/getInventory")
List
<
StoragePos
>
lockPoses
=
storagePosManager
.
findLockPos
(
JobID
);
// @ResponseBody
if
(
lockPoses
.
isEmpty
()){
// public Map<String,Object> getInventory(@RequestBody Map<String,String> map) {
result
.
put
(
"ErrorCode"
,
"301"
);
// Map<String, Object> result = new HashMap<String, Object>();
result
.
put
(
"ErrorMessage"
,
"JobId 为"
+
JobID
+
"的 Job 不存在"
);
// try {
}
else
{
// String TransactionID = map.get("TransactionID");
//查找所有的 POS
// //String TowerID = map.get("TowerID");
for
(
StoragePos
pos
:
lockPoses
){
//
pos
.
getBarcode
().
setLockId
(
""
);
// //storagePosManager.getInventory()
pos
.
getBarcode
().
setLockName
(
""
);
//
storagePosManager
.
save
(
pos
);
// log.info("收到 PanaCIM 的getInventory 命令:TransactionID="+TransactionID/**+" TowerID="+TowerID*/);
}
// /**
}
// * {
// "ErrorCode":0,
}
// "ReelBarCodes":
// [{"JobID":"1234","Location":"0","Msd":false,"Msdlevel":"1","PartNo":"part123","Quantity":123,"ReelBarcode":"123456789","TowerID":"InoAuto A"},
/**
// {"JobID":"1234","Location":"0","Msd":false,"Msdlevel":"1","PartNo":"part321","Quantity":321,"ReelBarcode":"123456789","TowerID":"InoAuto B"},
* "ErrorCode":0,
// {"JobID":"1234","Location":"0","Msd":false,"Msdlevel":"1","PartNo":"part213","Quantity":213,"ReelBarcode":"123456789","TowerID":"InoAuto C"}],
"ErrorMessage":null,
// "TransactionID":"testme"
"JobID":"job123",
// }
"ReelBarcodesRejected":[],
// */
"TransactionID":"testme"
// List ReelBarCodes = Lists.newArrayList();
*/
// Storage storage = dataCache.defaultStorage();
result
.
put
(
"TransactionID"
,
TransactionID
);
// List<StoragePos> poses = storagePosManager.findNotEmptyByStorageId(storage.getId());
result
.
put
(
"ErrorCode"
,
"0"
);
// for (StoragePos pos : poses){
result
.
put
(
"ErrorMessage"
,
null
);
// Barcode barcode = pos.getBarcode();
result
.
put
(
"JobID"
,
JobID
);
// Map<String,Object> item = Maps.newHashMap();
result
.
put
(
"ReelBarcodesRejected"
,
ReelBarcodesRejected
);
// item.put("TowerID",TowerID);
}
// item.put("JobID",barcode.getLockName());
// item.put("ReelBarcode",barcode.getBarcode());
// item.put("PartNo",barcode.getPartNumber());
}
catch
(
Exception
e
)
{
// item.put("Quantity",barcode.getAmount());
log
.
error
(
"PanaCIM的指令 reserveMaterial 出错"
,
e
);
// item.put("Msd",false);
result
.
put
(
"ErrorCode"
,
"300"
);
// item.put("msdlevel","");
result
.
put
(
"ErrorMessage"
,
e
.
getMessage
());
// item.put("Location","0");
}
// ReelBarCodes.add(item);
return
result
;
// }
}
// result.put("TransactionID",TransactionID);
// result.put("ErrorCode","0");
// result.put("ReelBarCodes",ReelBarCodes);
@RequestMapping
(
value
=
"/deliverJob"
)
//
@ResponseBody
//
public
Map
<
String
,
Object
>
deliverJob
(
@RequestBody
Map
<
String
,
String
>
map
)
{
// } catch (Exception e) {
Map
<
String
,
Object
>
result
=
new
HashMap
<
String
,
Object
>();
// log.error("PanaCIM的指令 getInventory 出错",e);
try
{
// result.put("ErrorCode","200");
String
TransactionID
=
map
.
get
(
"TransactionID"
);
// }
String
TowerID
=
map
.
get
(
"TowerID"
);
// return result;
String
JobID
=
map
.
get
(
"JobID"
);
// }
String
Timestamp
=
map
.
get
(
"Timestamp"
);
//
log
.
info
(
"收到 PanaCIM deliverJob 指令:TransactionID="
+
TransactionID
+
" TowerID="
+
TowerID
+
" JobID="
+
JobID
+
" Timestamp="
+
Timestamp
);
// @RequestMapping(value = "/reserveMaterial")
// @ResponseBody
List
<
StoragePos
>
lockPoses
=
storagePosManager
.
findLockPos
(
JobID
);
// public Map<String,Object> reserveMaterial(@RequestBody PanaMaterial panaMaterial) {
//if(batch != null){
// /**
//查找所有的 POS
// * "TransactionID":"testme",
if
(
lockPoses
.
isEmpty
()){
// "TransactionType":0,
result
.
put
(
"ErrorCode"
,
"401"
);
// "JobID":"job123",
result
.
put
(
"ErrorMessage"
,
"JobID["
+
JobID
+
"]未包含物料"
);
// "ReelBarcodesReserved": ["ABC123","BCD345","LL13212"]
}
else
{
// */
List
<
DataLog
>
tasks
=
Lists
.
newArrayList
();
// Map<String, Object> result = new HashMap<String, Object>();
for
(
StoragePos
pos
:
lockPoses
){
// try {
//已经加过的就不再加了
// String TransactionID = panaMaterial.getTransactionID();
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
// //1=create reservation based on JobID 2=update 3=cancel
Barcode
barcode
=
pos
.
getBarcode
();
// String TransactionType = panaMaterial.getTransactionType();
String
partNumber
=
barcode
.
getPartNumber
();
// String JobID = panaMaterial.getJobID();
DataLog
task
=
new
DataLog
();
// List<String> reelBarcodesReserved = panaMaterial.getReelBarcodesReserved();
task
.
setType
(
OP
.
CHECKOUT
);
// log.info("收到 PanaCIM 的reserveMaterial 指令:TransactionID="+TransactionID+" TransactionType="+TransactionType+" JobID="+JobID+" ReelBarcodesReserved="+StringUtils.join(reelBarcodesReserved,","));
task
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
//
task
.
setPartNumber
(
partNumber
);
// if(reelBarcodesReserved == null){
// log.error("PanaCIM 的指令reserveMaterial 执行时发现reelBarcodesReserved为 NUll,直接返回");
// result.put("ErrorCode","301");
//操作人
// result.put("ErrorMessage","The field ReelBarcodesReserved is empty");
//task.setCreator(loginUser.getUsername());
// }else{
// List<String> ReelBarcodesRejected = Lists.newArrayList();
//来源
// //这里使用指定批次的锁定
task
.
setSourceType
(
StorageConstants
.
TASK_SOURCE
.
BATCH
.
name
());
// if("1".equals(TransactionType) || "2".equals(TransactionType)){//create//update
task
.
setSourceId
(
JobID
);
//
task
.
setSourceName
(
"PanaCIM"
);
// for (String barcode :reelBarcodesReserved){
task
.
setSubSourceId
(
""
);
// StoragePos pos = storagePosManager.getByBarcode(barcode);
task
.
setSubSourceInfo
(
""
);
// if(pos == null){
// ReelBarcodesRejected.add(barcode);
task
.
setBarcode
(
barcode
.
getBarcode
());
// }else{
task
.
setNum
(
barcode
.
getAmount
());
// pos.getBarcode().setLockId(JobID);
// pos.getBarcode().setLockName(JobID);
task
.
setCid
(
storage
.
getCid
());
// storagePosManager.save(pos);
task
.
setStorageId
(
storage
.
getId
());
// }
task
.
setStorageName
(
storage
.
getName
());
// }
// }else if("3".equals(TransactionType)){//cancel
task
.
setPosId
(
pos
.
getId
());
// List<StoragePos> lockPoses = storagePosManager.findLockPos(JobID);
task
.
setPosName
(
pos
.
getPosName
());
// if(lockPoses.isEmpty()){
// result.put("ErrorCode","301");
tasks
.
add
(
task
);
// result.put("ErrorMessage","JobId 为"+JobID+"的 Job 不存在");
}
// }else{
// //查找所有的 POS
dataLogDao
.
insertAll
(
tasks
);
// for (StoragePos pos : lockPoses){
// pos.getBarcode().setLockId("");
log
.
info
(
"将"
+
JobID
+
" 添加到出库列表,任务数["
+
tasks
.
size
()+
"]"
);
// pos.getBarcode().setLockName("");
List
<
String
>
ReelBarcodesFailed
=
Lists
.
newArrayList
();
// storagePosManager.save(pos);
result
.
put
(
"TransactionID"
,
TransactionID
);
// }
result
.
put
(
"ErrorCode"
,
"0"
);
// }
result
.
put
(
"JobID"
,
JobID
);
//
result
.
put
(
"TowerID"
,
TowerID
);
// }
result
.
put
(
"ReelBarcodesFailed"
,
ReelBarcodesFailed
);
//
}
// /**
// * "ErrorCode":0,
// "ErrorMessage":null,
// "JobID":"job123",
// "ReelBarcodesRejected":[],
// "TransactionID":"testme"
// */
// result.put("TransactionID",TransactionID);
// result.put("ErrorCode","0");
// result.put("ErrorMessage",null);
// result.put("JobID",JobID);
// result.put("ReelBarcodesRejected",ReelBarcodesRejected);
// }
//
//
// } catch (Exception e) {
// log.error("PanaCIM的指令 reserveMaterial 出错",e);
// result.put("ErrorCode","300");
// result.put("ErrorMessage",e.getMessage());
// }
// return result;
// }
//
//
// @RequestMapping(value = "/deliverJob")
// @ResponseBody
// public Map<String,Object> deliverJob(@RequestBody Map<String,String> map) {
// Map<String, Object> result = new HashMap<String, Object>();
// try {
// String TransactionID = map.get("TransactionID");
// String TowerID = map.get("TowerID");
// String JobID = map.get("JobID");
// String Timestamp = map.get("Timestamp");
// log.info("收到 PanaCIM deliverJob 指令:TransactionID=" + TransactionID + " TowerID=" + TowerID + " JobID=" + JobID + " Timestamp=" + Timestamp);
//
// List<StoragePos> lockPoses = storagePosManager.findLockPos(JobID);
// //if(batch != null){
// //查找所有的 POS
// if(lockPoses.isEmpty()){
// result.put("ErrorCode","401");
// result.put("ErrorMessage","JobID["+JobID+"]未包含物料");
// }else{
// List<DataLog> tasks = Lists.newArrayList();
// for (StoragePos pos :lockPoses){
// //已经加过的就不再加了
// Storage storage = dataCache.getStorageById(pos.getStorageId());
// Barcode barcode = pos.getBarcode();
// String partNumber = barcode.getPartNumber();
// DataLog task = new DataLog();
// task.setType(StorageConstants.OP.CHECKOUT);
// task.setStatus(StorageConstants.OP_STATUS.WAIT.name());
// task.setPartNumber(partNumber);
//
//
// //操作人
// //task.setCreator(loginUser.getUsername());
//
// //来源
// task.setSourceType(StorageConstants.TASK_SOURCE.BATCH.name());
// task.setSourceId(JobID);
// task.setSourceName("PanaCIM");
// task.setSubSourceId("");
// task.setSubSourceInfo("");
//
// task.setBarcode(barcode.getBarcode());
// task.setNum(barcode.getAmount());
//
// task.setCid(storage.getCid());
// task.setStorageId(storage.getId());
// task.setStorageName(storage.getName());
//
// task.setPosId(pos.getId());
// task.setPosName(pos.getPosName());
//
// tasks.add(task);
// }
//
// dataLogDao.insertAll(tasks);
//
// log.info("将"+ JobID + " 添加到出库列表,任务数["+tasks.size()+"]");
// List<String> ReelBarcodesFailed = Lists.newArrayList();
// result.put("TransactionID",TransactionID);
// result.put("ErrorCode","0");
// result.put("JobID",JobID);
// result.put("TowerID",TowerID);
// result.put("ReelBarcodesFailed",ReelBarcodesFailed);
// }
//
//// }else{
//// result.put("ErrorCode", "402");
//// result.put("ErrorMessage", "操作失败ID为["+JobID+"]的指定批次不存在");
//// }
//
// } catch (Exception e) {
// log.error("PanaCIM的指令 deliverJob 出错", e);
// result.put("ErrorCode", "400");
// result.put("ErrorMessage", e.getMessage());
// }
// return result;
// }
//
//
// @Override
// public Barcode canPutIn(Barcode barcode) throws ValidateException {
// String requestReelUrl = getRequestReelUrl();
// if(Strings.isNullOrEmpty(requestReelUrl)){
// requestReelUrl = getRequestReelUrl();
// log.info("没有配置PanaCIM条码检测接口,查找setConfiguration注册的IP 及端口");
// return null;
// }
// try {
// if(!Strings.isNullOrEmpty(requestReelUrl)){
// log.info("向 PanaCIM["+requestReelUrl+"]请求料盘【"+reelBarcode+"】的信息");
// //String url = getApiUrl("/api/Storage/requestReel");
// Map<String, Object> params = new HashMap<String, Object>();
// params.put("TransactionID", nextSeq());
// params.put("ErrorCode","0");
// params.put("Reelbarcode",reelBarcode);
// String result = HttpHelper.postJson(requestReelUrl,params);
// log.info("PanaCIM 返回料盘【"+reelBarcode+"】的信息:"+result);
// if(!Strings.isNullOrEmpty(result)){
// ObjectMapper mapper = new ObjectMapper();
// HashMap<String,String> jsonMap = mapper.readValue(result, HashMap.class);
// String ErrorCode = jsonMap.get("ErrorCode");
// if("0".equals(ErrorCode)){//成功
// return true;
// }
// }
// }else{
// }else{
//
log.info("没有条码检测接口,无需验证
");
//
result.put("ErrorCode", "402
");
// re
turn true
;
// re
sult.put("ErrorMessage", "操作失败ID为["+JobID+"]的指定批次不存在")
;
// }
// }
//
// } catch (Exception e) {
}
catch
(
Exception
e
)
{
// log.error("向 PanaCIM请求料盘【"+reelBarcode+"】的信息出错",e);
log
.
error
(
"PanaCIM的指令 deliverJob 出错"
,
e
);
// }
result
.
put
(
"ErrorCode"
,
"400"
);
// return false;
result
.
put
(
"ErrorMessage"
,
e
.
getMessage
());
//
}
// boolean checkResult = PanaApiController.requestReel(barcode.getBarcode());
return
result
;
// if (!checkResult) {
}
// throw new ValidateException("PanaCIM验证条码[" + barcode.getBarcode() + "]失败", "PanaCIM验证失败");
// }
// return null;
@Override
// }
public
Barcode
resolveBarcode
(
CodeValidateParam
param
)
throws
ValidateException
{
//
return
null
;
// @Override
}
// public boolean canCheckout(Barcode barcode) throws ValidateException {
// return false;
@Override
// }
public
Barcode
canPutIn
(
Barcode
barcode
)
throws
ValidateException
{
//
String
requestReelUrl
=
getRequestReelUrl
();
// @Override
try
{
// public void onTaskStatusChange(DataLog task) {
if
(!
Strings
.
isNullOrEmpty
(
requestReelUrl
)){
//
log
.
info
(
"向 PanaCIM["
+
requestReelUrl
+
"]请求料盘【"
+
barcode
.
getBarcode
()+
"】的信息"
);
// }
//String url = getApiUrl("/api/Storage/requestReel");
//}
Map
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"TransactionID"
,
nextSeq
());
params
.
put
(
"ErrorCode"
,
"0"
);
params
.
put
(
"Reelbarcode"
,
barcode
.
getBarcode
());
String
result
=
HttpHelper
.
postJson
(
requestReelUrl
,
params
);
log
.
info
(
"PanaCIM 返回料盘【"
+
barcode
.
getBarcode
()+
"】的信息:"
+
result
);
if
(!
Strings
.
isNullOrEmpty
(
result
)){
ObjectMapper
mapper
=
new
ObjectMapper
();
HashMap
<
String
,
String
>
jsonMap
=
mapper
.
readValue
(
result
,
HashMap
.
class
);
String
ErrorCode
=
jsonMap
.
get
(
"ErrorCode"
);
if
(
"0"
.
equals
(
ErrorCode
)){
//成功
String
qtyStr
=
jsonMap
.
get
(
"Quantity"
);
if
(!
Strings
.
isNullOrEmpty
(
qtyStr
)){
/**
* Sample json Data: {
* "TransactionID": "101_MAT_1481090400", "ErrorCode": 0,
* "ReelBarcode": "MAT123567",
* "PartNo": "0805",
* "Quantity": 2000, "Msd": True, "Msdlevel": "4", "Location": "0",
* "MsdDetail”:{
* "FloorLifeExpirationTime":"2017-01-23T21:35:45.5403903Z",
* "ShelfLifeExpirationTime":"2018-06-23T21:35:45.5403903Z",
* “FloorTimeRunning”: true
* }
* } }
*/
int
qty
=
Double
.
valueOf
(
qtyStr
).
intValue
();
if
(
qty
>
0
){
barcode
.
setAmount
(
qty
);
}
}
return
barcode
;
}
else
{
throw
new
ValidateException
(
"PanaCIM ["
+
barcode
.
getBarcode
()
+
"] NG:"
+
ErrorCode
,
"PanaCIM验证失败"
);
}
}
}
else
{
log
.
info
(
"没有配置PanaCIM条码检测接口,查找setConfiguration注册的IP 及端口"
);
return
null
;
}
}
catch
(
Exception
e
)
{
log
.
error
(
"向 PanaCIM请求料盘【"
+
barcode
.
getBarcode
()+
"】的信息出错"
,
e
);
}
return
null
;
}
@Override
public
boolean
canCheckout
(
Barcode
barcode
)
throws
ValidateException
{
return
false
;
}
@Override
public
boolean
isEnable
()
{
return
false
;
}
@Override
public
void
onTaskStatusChange
(
DataLog
task
)
{
if
(
task
.
isFinished
()){
if
(
task
.
isPutInTask
()){
checkInNotification
(
task
);
}
else
{
deliverNotification
(
task
);
}
}
}
/**
* 入库完成通知
* @param task
*/
public
static
void
checkInNotification
(
DataLog
task
)
{
String
inNotifyApi
=
getInNotifyApi
();
try
{
if
(!
Strings
.
isNullOrEmpty
(
inNotifyApi
)){
log
.
info
(
"向 PanaCIM["
+
inNotifyApi
+
"] 通知料盘【"
+
task
.
getBarcode
()+
"】的入库信息"
);
//String url = getApiUrl("/api/Storage/checkInNotification");
Map
<
String
,
Object
>
params
=
new
LinkedHashMap
<>();
params
.
put
(
"TransactionID"
,
nextSeq
());
params
.
put
(
"ReelBarcode"
,
task
.
getBarcode
());
params
.
put
(
"PartNo"
,
task
.
getPartNumber
());
params
.
put
(
"Quantity"
,
task
.
getNum
());
params
.
put
(
"Msd"
,
false
);
params
.
put
(
"MsdLevel"
,
"1"
);
params
.
put
(
"Location"
,
"0"
);
params
.
put
(
"TowerID"
,
task
.
getStorageName
());
String
result
=
HttpHelper
.
postJson
(
inNotifyApi
,
params
);
log
.
info
(
"Response Of checkInNotification From PanaCIM:"
+
result
);
}
else
{
log
.
info
(
"没有配置PanaCIM接口,无需通知"
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"入库通知PanaCIM["
+
inNotifyApi
+
"]的料盘"
+
task
.
getBarcode
()+
"出错"
,
e
);
}
}
/**
* 出库完成通知
*/
public
static
void
deliverNotification
(
DataLog
task
)
{
String
outNotifyApi
=
getOutNotifyApi
();
try
{
if
(!
Strings
.
isNullOrEmpty
(
outNotifyApi
)){
log
.
info
(
"向 PanaCIM["
+
outNotifyApi
+
"] 通知料盘【"
+
task
.
getBarcode
()+
"】的出库信息"
);
//String url = getApiUrl("/api/Storage/deliverNotification");
Map
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"TransactionID"
,
nextSeq
());
params
.
put
(
"ReelBarcode"
,
task
.
getBarcode
());
params
.
put
(
"PartNO"
,
task
.
getPartNumber
());
params
.
put
(
"Quantity"
,
task
.
getNum
());
SimpleDateFormat
dataformat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
params
.
put
(
"Timestamp"
,
dataformat
.
format
(
new
Date
()));
params
.
put
(
"TowerID"
,
task
.
getStorageName
());
params
.
put
(
"JobID"
,
""
);
params
.
put
(
"Msd"
,
false
);
params
.
put
(
"MsdLevel"
,
"1"
);
params
.
put
(
"Location"
,
"0"
);
String
result
=
HttpHelper
.
postJson
(
outNotifyApi
,
params
);
log
.
info
(
"Response Of deliverNotification From PanaCIM:"
+
result
);
}
else
{
log
.
info
(
"没有配置PanaCIM接口,无需通知"
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"出库通知PanaCIM["
+
outNotifyApi
+
"]料盘"
+
task
.
getBarcode
()+
" 出错"
,
e
);
}
}
}
src/main/java/com/neotel/smfcore/panacim/PanaMaterial.java
0 → 100644
查看文件 @
b3c77f8
package
com
.
neotel
.
smfcore
.
panacim
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
java.util.List
;
/**
* Created by sunke on 17/4/17.
*/
public
class
PanaMaterial
{
@JsonProperty
(
"TransactionID"
)
String
transactionID
;
@JsonProperty
(
"TowerID"
)
String
towerID
;
@JsonProperty
(
"Priority"
)
String
priority
;
@JsonProperty
(
"Display"
)
String
display
;
// String Timestamp = request.getParameter("Timestamp");//Date(2009-02-15T00:00:00Z)
@JsonProperty
(
"JobID"
)
String
jobID
;
@JsonProperty
(
"ReelBarcodes"
)
List
<
String
>
ReelBarcodes
;
@JsonProperty
(
"TransactionType"
)
String
transactionType
;
@JsonProperty
(
"ReelBarcodesReserved"
)
List
<
String
>
reelBarcodesReserved
;
public
String
getTransactionID
()
{
return
transactionID
;
}
public
void
setTransactionID
(
String
transactionID
)
{
this
.
transactionID
=
transactionID
;
}
public
String
getTowerID
()
{
return
towerID
;
}
public
void
setTowerID
(
String
towerID
)
{
this
.
towerID
=
towerID
;
}
public
String
getJobID
()
{
return
jobID
;
}
public
void
setJobID
(
String
jobID
)
{
this
.
jobID
=
jobID
;
}
public
List
<
String
>
getReelBarcodes
()
{
return
ReelBarcodes
;
}
public
void
setReelBarcodes
(
List
<
String
>
reelBarcodes
)
{
ReelBarcodes
=
reelBarcodes
;
}
public
String
getTransactionType
()
{
return
transactionType
;
}
public
void
setTransactionType
(
String
transactionType
)
{
this
.
transactionType
=
transactionType
;
}
public
List
<
String
>
getReelBarcodesReserved
()
{
return
reelBarcodesReserved
;
}
public
void
setReelBarcodesReserved
(
List
<
String
>
reelBarcodesReserved
)
{
this
.
reelBarcodesReserved
=
reelBarcodesReserved
;
}
public
String
getDisplay
()
{
return
display
;
}
public
void
setDisplay
(
String
display
)
{
this
.
display
=
display
;
}
public
String
getPriority
()
{
return
priority
;
}
public
void
setPriority
(
String
priority
)
{
this
.
priority
=
priority
;
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论