Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
QisdaNew
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 6f3952a0
由
sunke
编写于
2020-04-15 19:43:57 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
更新紧急料出库不会更新需求单发料数量问题
报警允许按条码查询
1 个父辈
7c15fb15
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
520 行增加
和
0 行删除
myproject/src/main/java/com/myproject/util/QisdaApi.java
myproject/src/main/java/com/myproject/util/QisdaApi.java
0 → 100644
查看文件 @
6f3952a
package
com
.
myproject
.
util
;
import
com.google.common.base.Strings
;
import
com.google.common.collect.Lists
;
import
com.myproject.bean.qisda.AppendInfo
;
import
com.myproject.bean.qisda.DiffInfo
;
import
com.myproject.bean.update.Barcode
;
import
com.myproject.bean.update.DataLog
;
import
com.myproject.bean.update.qisda.DNInfo
;
import
com.myproject.bean.update.qisda.DNItem
;
import
com.myproject.bean.update.qisda.OutItem
;
import
com.myproject.exception.ApiException
;
import
com.myproject.exception.ValidateException
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* Created by sunke on 2020/4/14.
*/
public
class
QisdaApi
{
protected
final
static
Logger
log
=
LogManager
.
getLogger
(
QisdaApi
.
class
);
private
static
String
USER_NAME
=
"SMD-BOX"
;
/**
* 获取库存进行比对
*/
public
static
Map
<
String
,
DiffInfo
>
getInventory
()
throws
ApiException
{
String
url
=
"http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMIStcok"
;
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<
String
,
Object
>();
paramMap
.
put
(
"area"
,
"4D"
);
Map
<
String
,
DiffInfo
>
diffInfoMap
=
new
HashMap
<>();
String
result
=
HttpHelper
.
postParam
(
url
,
paramMap
);
log
.
info
(
"Qisda获取库存信息进行比对返回:"
+
result
);
Map
<
String
,
Object
>
resultMap
=
JsonUtil
.
toMap
(
result
);
String
code
=
resultMap
.
get
(
"code"
).
toString
();
if
(
code
.
equals
(
"200"
)){
List
<
Map
<
String
,
Object
>>
data
=
(
List
<
Map
<
String
,
Object
>>)
resultMap
.
get
(
"data"
);
for
(
Map
<
String
,
Object
>
itemMap
:
data
)
{
DiffInfo
diffInfo
=
new
DiffInfo
();
String
partno
=
itemMap
.
get
(
"partno"
).
toString
();
String
facility
=
itemMap
.
get
(
"facility"
).
toString
();
String
location
=
itemMap
.
get
(
"location"
).
toString
();
String
reelid
=
itemMap
.
get
(
"reelid"
).
toString
();
String
qty
=
itemMap
.
get
(
"qty"
).
toString
();
diffInfo
.
setPn
(
partno
);
diffInfo
.
setReelId
(
reelid
);
diffInfo
.
setLocation
(
location
);
diffInfo
.
setQty
(
qty
);
diffInfo
.
setFacility
(
facility
);
diffInfoMap
.
put
(
reelid
,
diffInfo
);
}
}
else
{
String
errorMsg
=
" Qisda获取库存信息进行比对转换出错:"
+
resultMap
.
get
(
"msg"
);
log
.
info
(
errorMsg
);
throw
new
ApiException
(
errorMsg
);
}
return
diffInfoMap
;
}
/**
*
* 缺料反馈接口 (出完工单时调用),绑定首盘不管是否缺料都调用,其他类型的只在所有出库完成时调用一次
*
* 只有首盘会反馈多次缺料信息,若首盘反馈第一次缺料后,料自动匹配齐了,第二次反馈时料号传N/A
*
* @param outItemList
* @param lessBind 是否是绑定缺料反馈
*/
public
static
void
VMILocationOutFeedback
(
List
<
OutItem
>
outItemList
,
boolean
lessBind
){
String
url
=
"http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMILocationOutFeedback"
;
List
<
Map
<
String
,
Object
>>
materialInfoList
=
new
ArrayList
<>();
for
(
OutItem
outItem
:
outItemList
)
{
Map
<
String
,
Object
>
materialInfoMap
=
new
HashMap
<
String
,
Object
>();
materialInfoMap
.
put
(
"so"
,
outItem
.
getSo
());
//DN单号或者是厂别
materialInfoMap
.
put
(
"partNum"
,
outItem
.
getPn
());
//料号
int
lossqty
=
outItem
.
outLessQty
();
if
(
lessBind
){
//绑定缺料反馈
lossqty
=
outItem
.
preBindLessQty
();
}
materialInfoMap
.
put
(
"lossqty"
,
lossqty
+
""
);
//缺料数量
materialInfoMap
.
put
(
"slot"
,
outItem
.
getSlotStr
());
//料站
materialInfoMap
.
put
(
"serial"
,
outItem
.
gethSerial
());
//需求单号
materialInfoList
.
add
(
materialInfoMap
);
}
if
(
materialInfoList
.
isEmpty
()){
log
.
info
(
"需求单不缺料,不进行缺料反馈"
);
}
else
{
String
lackOfMaterial
=
JsonUtil
.
toJsonStr
(
materialInfoList
);
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<
String
,
Object
>();
paramMap
.
put
(
"lackOfMaterial"
,
lackOfMaterial
);
log
.
info
(
"缺料反馈接口(VMILocationOutFeedback)参数lackOfMaterial="
+
lackOfMaterial
);
try
{
String
result
=
HttpHelper
.
postParam
(
url
,
paramMap
);
log
.
info
(
"收到缺料反馈接口(VMILocationOutFeedback)返回:"
+
result
);
}
catch
(
ApiException
e
)
{
log
.
error
(
"缺料反馈接口(VMILocationOutFeedback)接口出错"
,
e
);
}
}
}
/**
* 获取DN单详情
* @param dnNo
* @param isCheck
* @return
* @throws ApiException
*/
public
static
List
<
DNItem
>
GetDNDetails
(
String
dnNo
,
boolean
isCheck
)
throws
ApiException
{
String
url
=
"http://10.85.17.43:8080/WMSWeb.asmx/GetDNDetailsJson"
;
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<
String
,
Object
>();
//paramMap.put("DHNO","DNMISW1911197845");
paramMap
.
put
(
"DHNO"
,
dnNo
);
String
isCheckStr
=
"N"
;
if
(
isCheck
){
isCheckStr
=
"Y"
;
}
paramMap
.
put
(
"ISCheck"
,
isCheckStr
);
paramMap
.
put
(
"isBack"
,
"Y"
);
String
errorMsg
=
""
;
Map
<
String
,
DNItem
>
itemMap
=
new
HashMap
<>();
try
{
String
returnResult
=
HttpHelper
.
postParam
(
url
,
paramMap
);
log
.
info
(
"获取DN单详情结果:"
+
returnResult
);
String
resultStr
=
XmlUtil
.
getNodeBody
(
"string"
,
returnResult
);
if
(
resultStr
.
startsWith
(
"["
)){
List
<
Map
<
String
,
Object
>>
items
=
JsonUtil
.
toObj
(
resultStr
,
List
.
class
);
for
(
Map
<
String
,
Object
>
map
:
items
)
{
DNItem
item
=
new
DNItem
();
String
no
=
map
.
get
(
"DLNO"
).
toString
();
item
.
setDnNo
(
no
);
String
dnDateStr
=
map
.
get
(
"DLCRDTE"
).
toString
()+
" "
+
map
.
get
(
"DLCRTIME"
).
toString
();
item
.
setDnDateStr
(
dnDateStr
);
int
dnQty
=
Float
.
valueOf
(
map
.
get
(
"WACTQTY"
).
toString
()).
intValue
();
item
.
setDnQty
(
dnQty
);
String
facility
=
map
.
get
(
"WPORD"
).
toString
();
item
.
setFacility
(
facility
);
String
company
=
map
.
get
(
"DSN"
).
toString
();
item
.
setCompany
(
company
);
String
pn
=
map
.
get
(
"WPROD"
).
toString
();
item
.
setPn
(
pn
);
DNItem
dnItem
=
itemMap
.
get
(
pn
);
if
(
dnItem
!=
null
){
int
totalDNQty
=
dnItem
.
getDnQty
()
+
item
.
getDnQty
();
log
.
info
(
"PN["
+
pn
+
"]有重复,合并数量["
+
dnItem
.
getDnQty
()
+
" + "
+
item
.
getDnQty
()
+
" = "
+
totalDNQty
);
dnItem
.
setDnQty
(
totalDNQty
);
}
else
{
dnItem
=
item
;
}
itemMap
.
put
(
pn
,
dnItem
);
}
}
else
{
//返回错训误了
errorMsg
=
resultStr
;
}
}
catch
(
Exception
e
)
{
errorMsg
=
e
.
getMessage
();
log
.
error
(
"获取DN单详情接口出错"
,
e
);
}
if
(!
Strings
.
isNullOrEmpty
(
errorMsg
)){
throw
new
ApiException
(
errorMsg
);
}
List
<
DNItem
>
dnItems
=
Lists
.
newArrayList
();
if
(!
itemMap
.
isEmpty
()){
dnItems
.
addAll
(
itemMap
.
values
());
}
return
dnItems
;
}
/**
* 6. CIS收料判定接口(绑过料串的条码扫码入库时判断)
*/
public
static
void
VMIMateriaReceiveJudge
(
DNInfo
dnInfo
,
Barcode
barcode
)
throws
ValidateException
{
String
url
=
"http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMIMateriaReceiveJudge"
;
Map
<
String
,
Object
>
materialInfoMap
=
new
HashMap
<
String
,
Object
>();
String
dnOrFacility
=
dnInfo
.
getDnNo
();
if
(
dnInfo
.
isFacilityIn
()){
dnOrFacility
=
dnInfo
.
getFacility
();
}
materialInfoMap
.
put
(
"dnOrFacility"
,
dnOrFacility
);
//DN单号或者是厂别
materialInfoMap
.
put
(
"reelID"
,
barcode
.
getBarcode
());
//料卷ID
materialInfoMap
.
put
(
"partNum"
,
barcode
.
getPartNumber
());
//料号
materialInfoMap
.
put
(
"qty"
,
barcode
.
getAmount
());
//数量
materialInfoMap
.
put
(
"lifeCycle"
,
barcode
.
getLifeCycle
());
//生命周期
String
productCode
=
DateUtil
.
toDateString
(
barcode
.
getProduceDate
(),
"yyyyMMdd"
);
materialInfoMap
.
put
(
"productCode"
,
productCode
);
//生产日期
materialInfoMap
.
put
(
"lot"
,
barcode
.
getBatch
());
//生产批次(批次号)
materialInfoMap
.
put
(
"vendor"
,
barcode
.
getProvider
());
//供应商
materialInfoMap
.
put
(
"location"
,
""
);
//location
materialInfoMap
.
put
(
"qrCodeInfo"
,
barcode
.
getFullCodeStr
());
//完整的二维码信息
String
materialInfo
=
JsonUtil
.
toJsonStr
(
materialInfoMap
);
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<
String
,
Object
>();
paramMap
.
put
(
"materialInfo"
,
materialInfo
);
log
.
info
(
"DN单Facility收料判断参数:materialInfo="
+
materialInfo
);
try
{
String
result
=
HttpHelper
.
postParam
(
url
,
paramMap
);
log
.
info
(
"DN单Facility收料判定接口返回:"
+
result
);
String
resultStr
=
XmlUtil
.
getNodeBody
(
"string"
,
result
);
//0+提示信息/1/-1 0为NG,1为OK,-1为系统内部异常
if
(
resultStr
.
startsWith
(
"1"
)){
log
.
info
(
barcode
.
getBarcode
()
+
" ["
+
dnOrFacility
+
"]收料判定: OK"
);
}
else
{
log
.
info
(
barcode
.
getBarcode
()
+
" ["
+
dnOrFacility
+
"]收料判定: NG"
+
resultStr
);
if
(
resultStr
.
startsWith
(
"0"
)){
throw
new
ValidateException
(
" ["
+
dnOrFacility
+
"]收料判定NG:"
+
resultStr
);
}
else
{
throw
new
ValidateException
(
" ["
+
dnOrFacility
+
"]收料判定NG:"
+
resultStr
);
}
}
}
catch
(
ApiException
e
)
{
log
.
error
(
" ["
+
dnOrFacility
+
"]收料判定接口"
,
e
);
throw
new
ValidateException
(
" ["
+
dnOrFacility
+
"]收料接口处理异常:"
+
e
.
getMessage
());
}
}
/**
* 3. CIS入库判定接口 (没绑过料串的条码调用此接口)
*/
public
static
Barcode
VMILocationInCheck
(
Barcode
barcode
)
throws
ValidateException
{
String
url
=
"http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMILocationInCheck"
;
String
reelid
=
barcode
.
getBarcode
();
String
partNum
=
barcode
.
getPartNumber
();
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<
String
,
Object
>();
paramMap
.
put
(
"reelid"
,
reelid
);
paramMap
.
put
(
"partNum"
,
partNum
);
log
.
info
(
"纯入库判断参数:reelid="
+
reelid
);
try
{
//0+提示信息/1+工单 0:为NG ;1:为OK 工单号码则表示该料卷被绑定在此工单上;-1为内部异常
String
result
=
HttpHelper
.
postParam
(
url
,
paramMap
);
//String result = "<?xml version=\"1.0\" encoding=\"utf-8\"?><string xmlns=\"http://tempuri.org/\">{\"state\":\"1\",\"msg\":\"入库判定OK\",\"info\":{\"so\":\"2388518\",\"facility\":\"ST\",\"company\":\"BACHS\",\"qty\":\"1\",\"soseq\":\"2092475\",\"slot\":\"5-4\"}}</string>";
log
.
info
(
"收到纯入库判定接口返回:"
+
result
);
String
resultStr
=
XmlUtil
.
getNodeBody
(
"string"
,
result
);
//0+提示信息/1/-1 0为NG,1为OK,-1为系统内部异常
Map
<
String
,
Object
>
resultMap
=
JsonUtil
.
toMap
(
resultStr
);
String
state
=
resultMap
.
get
(
"state"
).
toString
();
if
(
state
.
equals
(
"1"
)){
log
.
info
(
reelid
+
" CIS入库判定: OK"
);
AppendInfo
appendInfo
=
barcode
.
getAppendInfo
();
Object
infoObj
=
resultMap
.
get
(
"info"
);
if
(
infoObj
!=
null
){
log
.
info
(
"写入条码工单数量信息,并清空分盘数据"
);
Map
infoMap
=
(
Map
)
infoObj
;
String
so
=
infoMap
.
get
(
"so"
).
toString
();
//有工单信息,需要绑定工单
String
soseq
=
infoMap
.
get
(
"soseq"
).
toString
();
String
facility
=
infoMap
.
get
(
"facility"
).
toString
();
String
company
=
infoMap
.
get
(
"company"
).
toString
();
String
qty
=
infoMap
.
get
(
"qty"
).
toString
();
String
slot
=
infoMap
.
get
(
"slot"
).
toString
();
Object
slotlocation
=
infoMap
.
get
(
"slotserial"
);
if
(
so
.
equals
(
"0"
)){
so
=
null
;
slot
=
null
;
}
appendInfo
.
setCutMap
(
null
);
appendInfo
.
setSo
(
so
);
appendInfo
.
setSoseq
(
soseq
);
appendInfo
.
setSlotStr
(
slot
);
if
(
slotlocation
==
null
||
slotlocation
.
equals
(
"0"
)){
appendInfo
.
setBindSlot
(
null
);
appendInfo
.
setPreBindSlot
(
null
);
appendInfo
.
setSlotIndex
(-
1
);
}
else
{
String
location
=
slotlocation
.
toString
();
log
.
info
(
reelid
+
"数量:"
+
qty
+
"绑定工单"
+
so
+
"["
+
location
+
"]"
);
appendInfo
.
setBindSlot
(
location
);
appendInfo
.
setPreBindSlot
(
location
);
try
{
int
slotIndex
=
Integer
.
valueOf
(
location
);
appendInfo
.
setSlotIndex
(
slotIndex
);
//TODO:需要重新绑定
}
catch
(
Exception
e
){
}
}
appendInfo
.
setFacility
(
facility
);
appendInfo
.
setCompany
(
company
);
int
amount
=
Integer
.
valueOf
(
qty
);
barcode
.
setAmount
(
amount
);
barcode
.
setInitialAmount
(
amount
);
//绑定工单
// appendInfo.sethSerial(outItem.gethSerial());
// appendInfo.setRefno(outItem.getRefno());
// appendInfo.setSlotIndex(outItem.getSlotlocation());
// barcode.setAppendInfo(appendInfo);
// int realLockQty = outItem.getRealLockQty() + barcode.getAmount();
// outItem.setRealLockQty(realLockQty);
barcode
.
setAppendInfo
(
appendInfo
);
}
}
else
{
log
.
info
(
reelid
+
" 纯入库判定: NG"
+
resultStr
);
String
ngMsg
=
resultMap
.
get
(
"msg"
).
toString
();
throw
new
ValidateException
(
"纯入库判定NG:["
+
state
+
"]"
+
ngMsg
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"纯入库判定接口出错"
+
e
.
getMessage
());
throw
new
ValidateException
(
"纯入库判定接口处理异常:"
+
e
.
getMessage
());
}
return
barcode
;
}
/**
* 纯入库操作完成时通知Qisda
*/
public
static
void
VMILocationIn
(
String
reelID
,
String
location
){
String
url
=
"http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMILocationIn"
;
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<
String
,
Object
>();
paramMap
.
put
(
"reelID"
,
reelID
);
paramMap
.
put
(
"location"
,
location
);
paramMap
.
put
(
"userName"
,
USER_NAME
);
log
.
info
(
"纯入库操作完成时通知Qisda接口(VMILocationIn):reelID="
+
reelID
+
"&location="
+
location
);
try
{
String
result
=
HttpHelper
.
postParam
(
url
,
paramMap
);
log
.
info
(
"纯入库操作完成时通知Qisda接口(VMILocationIn)返回:"
+
result
);
}
catch
(
ApiException
e
)
{
log
.
error
(
"纯入库操作完成时通知Qisda接口(VMILocationIn)出错"
,
e
);
}
}
/**
* CIS收料入库接口
*/
public
static
void
VMIMateriaReceive
(
Barcode
barcode
,
DataLog
task
){
String
url
=
"http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMIMateriaReceive"
;
Map
<
String
,
Object
>
materialInfoMap
=
new
HashMap
<
String
,
Object
>();
materialInfoMap
.
put
(
"dnOrFacility"
,
barcode
.
getAppendInfo
().
getDnOrFacility
());
//DN单号或者是厂别
materialInfoMap
.
put
(
"reelID"
,
barcode
.
getBarcode
());
//料卷ID
materialInfoMap
.
put
(
"partNum"
,
barcode
.
getPartNumber
());
//料号
materialInfoMap
.
put
(
"qty"
,
barcode
.
getAmount
()
+
""
);
//数量
materialInfoMap
.
put
(
"lifeCycle"
,
barcode
.
getLifeCycle
());
//生命周期
String
productCode
=
DateUtil
.
toDateString
(
barcode
.
getProduceDate
(),
"yyyyMMdd"
);
materialInfoMap
.
put
(
"productCode"
,
productCode
);
//生产日期
materialInfoMap
.
put
(
"lot"
,
barcode
.
getBatch
());
//生产批次(批次号)
materialInfoMap
.
put
(
"vendor"
,
barcode
.
getProvider
());
//供应商
materialInfoMap
.
put
(
"location"
,
task
.
getPosName
());
//location
materialInfoMap
.
put
(
"qrCodeInfo"
,
barcode
.
getFullCodeStr
());
//完整的二维码信息
materialInfoMap
.
put
(
"reelType"
,
"0"
);
//料卷类型
String
materialInfo
=
JsonUtil
.
toJsonStr
(
materialInfoMap
);
//materialInfo = "{\"dnOrFacility\":\"DNMIST1901002587\",\"reelID\":\"R000002014042300013\",\"reelType\":\"0\",\"partNum\":\"6H.15010.204\",\"qty\":\"3\",\"lifeCycle\":\"240\",\"productCode\":\"20191102\",\"lot\":\"L00000000IA9617JL1D81\",\"vendor\":\"82012\",\"location\":\"1-1\",\"qrCodeInfo\":\"L00000000IA9617JL1D81;E20190101 0730;B8C.00501.010503562019010103000;R000002014042300013\"}";
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<
String
,
Object
>();
paramMap
.
put
(
"materialInfo"
,
materialInfo
);
paramMap
.
put
(
"userName"
,
USER_NAME
);
log
.
info
(
"DN单收料或Facility收料通知Qisda接口(VMIMateriaReceive)返回:"
+
materialInfo
);
try
{
String
result
=
HttpHelper
.
postParam
(
url
,
paramMap
);
log
.
info
(
"DN单收料或Facility收料接口返回:"
+
result
);
}
catch
(
ApiException
e
)
{
log
.
error
(
"DN单收料或Facility收料接口出错"
,
e
);
}
}
/**
* 出仓完成时通知
* @param materialInfoMap
*/
public
static
void
VMILocationOut
(
Map
<
String
,
Object
>
materialInfoMap
){
String
url
=
"http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMILocationOut"
;
String
materialInfo
=
JsonUtil
.
toJsonStr
(
materialInfoMap
);
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<
String
,
Object
>();
paramMap
.
put
(
"materialInfo"
,
materialInfo
);
paramMap
.
put
(
"userName"
,
USER_NAME
);
log
.
info
(
"出仓完成时通知Qisda:materialInfo="
+
materialInfo
);
try
{
String
result
=
HttpHelper
.
postParam
(
url
,
paramMap
);
log
.
info
(
"出仓完成时通知Qisda(VMILocationOut)返回:"
+
result
);
}
catch
(
ApiException
e
)
{
log
.
error
(
"出仓完成时通知Qisda(VMILocationOut)接口出错"
,
e
);
}
}
/**
* 物料放上小车时调用
* @param task 任务信息
* @param barcode 条码信息
* @param latest 本次工单第几盘料(F 第一次,L 最后一次, M 中间)
*/
public
static
void
VMIMateriaRecAss
(
DataLog
task
,
Barcode
barcode
,
String
latest
){
String
url
=
"http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/VMIMateriaRecAss"
;
Map
<
String
,
Object
>
materialInfoMap
=
new
HashMap
<
String
,
Object
>();
AppendInfo
appendInfo
=
task
.
getAppendInfo
();
materialInfoMap
.
put
(
"action"
,
appendInfo
.
getAction
());
materialInfoMap
.
put
(
"facility"
,
appendInfo
.
getFacility
());
materialInfoMap
.
put
(
"so"
,
appendInfo
.
getSo
());
materialInfoMap
.
put
(
"partNum"
,
task
.
getPartNumber
());
materialInfoMap
.
put
(
"reelID"
,
task
.
getBarcode
());
materialInfoMap
.
put
(
"slot"
,
appendInfo
.
getSlotStr
());
materialInfoMap
.
put
(
"slotserial"
,
appendInfo
.
getSlotIndex
());
materialInfoMap
.
put
(
"qty"
,
task
.
getNum
()
+
""
);
materialInfoMap
.
put
(
"latest"
,
latest
);
//本次工单第几盘料(F 第一次,L 最后一次, M 中间, E是错误)
materialInfoMap
.
put
(
"cloudLocation"
,
task
.
getPosName
());
//云料仓的库位
materialInfoMap
.
put
(
"location"
,
""
);
//料架库位
materialInfoMap
.
put
(
"vehicleID"
,
appendInfo
.
getRfid
());
//料车编号
if
(
latest
.
equals
(
"E"
)){
//错误状态不发料车编号
materialInfoMap
.
put
(
"vehicleID"
,
""
);
//料车编号
}
materialInfoMap
.
put
(
"vehicleLocation"
,
appendInfo
.
getRfidLoc
());
//料车架位号
materialInfoMap
.
put
(
"lot"
,
barcode
.
getBatch
());
//生产批次(批次号)
String
productCode
=
DateUtil
.
toDateString
(
barcode
.
getProduceDate
(),
"yyyyMMdd"
);
materialInfoMap
.
put
(
"productCode"
,
productCode
);
//生产日期
materialInfoMap
.
put
(
"vendorCode"
,
barcode
.
getProvider
());
//供应商
materialInfoMap
.
put
(
"hSerial"
,
appendInfo
.
gethSerial
());
materialInfoMap
.
put
(
"flag"
,
""
);
//子盘或母盘(L:子盘,M:母盘,其他'')
String
idte
=
DateUtil
.
toDateString
(
task
.
getUpdateDate
(),
"yyyyMMdd"
);
String
idme
=
DateUtil
.
toDateString
(
task
.
getUpdateDate
(),
"HHmmss"
);
materialInfoMap
.
put
(
"idte"
,
idte
);
//发料日期
materialInfoMap
.
put
(
"itme"
,
idme
);
//发料时间
materialInfoMap
.
put
(
"soseq"
,
appendInfo
.
getSoseq
());
//工单序号
String
materialInfo
=
JsonUtil
.
toJsonStr
(
materialInfoMap
);
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<
String
,
Object
>();
paramMap
.
put
(
"materialInfo"
,
materialInfo
);
paramMap
.
put
(
"userName"
,
USER_NAME
);
log
.
info
(
"物料放上小车时通知Qisda:materialInfo="
+
materialInfo
);
try
{
String
result
=
HttpHelper
.
postParam
(
url
,
paramMap
);
log
.
info
(
"物料放上小车时通知Qisda(VMIMateriaRecAss)返回:"
+
result
);
}
catch
(
ApiException
e
)
{
log
.
error
(
"物料放上小车时通知Qisda(VMIMateriaRecAss)接口出错"
,
e
);
}
}
/**
* 移远料号转换
*/
public
static
String
PartNoMapping
(
String
vdPartNum
)
throws
ApiException
{
String
url
=
"http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/PartNoMapping"
;
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<
String
,
Object
>();
paramMap
.
put
(
"vdPartNum"
,
vdPartNum
);
log
.
info
(
"从Qisda获取料号转换:vdPartNum="
+
vdPartNum
);
String
result
=
HttpHelper
.
postParam
(
url
,
paramMap
);
log
.
info
(
"从Qisda获取料号转换:(PartNoMapping)返回:"
+
result
);
Map
<
String
,
Object
>
resultMap
=
JsonUtil
.
toMap
(
result
);
String
msg
=
resultMap
.
get
(
"msg"
).
toString
();
if
(
msg
.
startsWith
(
"0"
)){
String
errorMsg
=
"从Qisda获取料号["
+
vdPartNum
+
"]转换出错:"
+
msg
;
log
.
info
(
errorMsg
);
throw
new
ApiException
(
errorMsg
);
}
return
msg
;
}
public
static
PLATE_SIZE
PartNoRule
(
String
partNum
,
String
vendorCode
){
String
url
=
"http://10.85.17.233/ESMTCommonInterface/CommonService.asmx/PartNoRule"
;
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<
String
,
Object
>();
paramMap
.
put
(
"partNum"
,
partNum
);
paramMap
.
put
(
"vendorCode"
,
vendorCode
);
try
{
String
result
=
HttpHelper
.
postParam
(
url
,
paramMap
);
log
.
info
(
"从Qisda获取料号"
+
partNum
+
"["
+
vendorCode
+
"]尺寸(PartNoRule)返回:"
+
result
);
Map
<
String
,
Object
>
resultMap
=
JsonUtil
.
toMap
(
result
);
String
code
=
resultMap
.
get
(
"code"
).
toString
();
if
(
code
.
equals
(
"200"
)){
List
<
Map
<
String
,
Object
>>
data
=
(
List
<
Map
<
String
,
Object
>>)
resultMap
.
get
(
"data"
);
for
(
Map
<
String
,
Object
>
itemMap
:
data
)
{
String
w
=
itemMap
.
get
(
"specifications"
).
toString
();
String
h
=
itemMap
.
get
(
"widthSize"
).
toString
();
return
new
PLATE_SIZE
(
Integer
.
valueOf
(
w
),
Integer
.
valueOf
(
h
));
}
}
}
catch
(
ApiException
e
)
{
log
.
error
(
"从Qisda获取料号["
+
partNum
+
"["
+
vendorCode
+
"]尺寸(PartNoRule)接口出错"
,
e
);
}
return
null
;
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论