package com.slcf.filter;
|
|
import java.io.BufferedReader;
|
import java.io.IOException;
|
import java.io.InputStreamReader;
|
import java.io.OutputStream;
|
import java.net.HttpURLConnection;
|
import java.net.URL;
|
import java.util.Date;
|
import java.util.HashMap;
|
|
import javax.annotation.Resource;
|
|
import com.alibaba.fastjson.JSON;
|
import com.slcf.pojo.SapRequestLogBean;
|
import com.slcf.service.SapRequestLogService;
|
import com.slcf.util.HttpHandler;
|
import net.sf.json.JSONString;
|
import org.activiti.engine.impl.transformer.IntegerToString;
|
import org.apache.log4j.Logger;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Service;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import com.slcf.bean.AllBean;
|
import com.slcf.pojo.WaitPakInBean;
|
import com.slcf.pojo.WaitPakOutBean;
|
import com.slcf.service.WaitPakInService;
|
import com.slcf.service.WaitPakOutService;
|
import com.slcf.service.impl.WaitPakInServiceImpl;
|
import com.slcf.util.Constants;
|
import com.slcf.util.SpringBeanUtils;
|
|
import net.sf.json.JSONArray;
|
import net.sf.json.JSONObject;
|
import sun.misc.BASE64Encoder;
|
|
/**
|
* 回报,处理与sap交互数据
|
* @author admin
|
* @Date 2020-02-17
|
*/
|
//@Service
|
public class UpdateThread extends Thread {//implements Runnable{
|
// @Resource
|
// WaitPakInService waitPakInService;
|
// @Resource
|
// WaitPakOutService waitPakOutService;
|
// @Resource
|
// private static WaitPakInServiceImpl waitPakInService;
|
@Autowired
|
SapRequestLogService sapRequestLogService;
|
|
Logger logger=Logger.getLogger(UpdateThread.class);
|
|
public static int count=0;
|
|
private WaitPakInService waitPakInService;
|
public WaitPakInService getWaitPakInService() {
|
return waitPakInService;
|
}
|
public void setWaitPakInService(WaitPakInService waitPakInService) {
|
this.waitPakInService = waitPakInService;
|
}
|
|
private WaitPakOutService waitPakOutService;
|
public WaitPakOutService getWaitPakOutService() {
|
return waitPakOutService;
|
}
|
public void setWaitPakOutService(WaitPakOutService waitPakOutService) {
|
this.waitPakOutService = waitPakOutService;
|
}
|
|
public void run() {
|
waitPakInService = getWaitPakInService();
|
waitPakOutService = getWaitPakOutService();
|
while(true) {
|
try {
|
updateWaitPakInData(); // 入库
|
sendPickPrintCmd(); // 打印
|
updateWaitPakOutData(); // 出库
|
// 清空2天前的日志
|
sapRequestLogService.clearSapLog();
|
// updateWaitCheckData();
|
Thread.sleep(15000);
|
} catch (InterruptedException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
public JSONObject requestSAP(JSONObject body, String url) {
|
logger.info(url);
|
JSONObject resp;
|
|
HashMap<String, Object> requestHeader = new HashMap<>();
|
requestHeader.put("Accept", "application/json");
|
requestHeader.put("Content-Type", "application/json");
|
requestHeader.put("X-Requested-With", "X");
|
requestHeader.put("Authorization","Basic TElRSTpzdGFydDEu");
|
requestHeader.put("sap-client","100");
|
String s = null;
|
try {
|
s = new HttpHandler.Builder()
|
.setUri(url)
|
.setJson(body.toString())
|
.setHeaders(requestHeader)
|
.build()
|
.doPost();
|
} catch (IOException e) {
|
throw new RuntimeException(e);
|
}
|
resp = JSONObject.fromObject(s);
|
logger.info("返回体:" + resp);
|
return resp;
|
}
|
|
/**
|
* 处理入库通知档数据
|
*/
|
private void updateWaitPakInData() {
|
try {
|
// logger.info("waitIn:" + count++);
|
WaitPakInBean waitPakInBean = waitPakInService.queryWaitPakInFnh();
|
if(waitPakInBean!=null) {
|
String httpUrl = Constants.SAP_URL + "/sap/opu/odata/SAP/Z_WM_H5_DW_SRV/AsrsTrSet";
|
int result = sendPakInStatus(httpUrl,waitPakInBean);
|
}
|
}catch(Exception e) {
|
logger.error("SAP Error updateWaitPakInData---" + e.getMessage());
|
// System.out.println(e.getMessage());
|
}
|
}
|
|
/**
|
* 入库完成,调用sap接口上传完成信息
|
*/
|
private int sendPakInStatus(String httpUrl,WaitPakInBean waitPakIn) {
|
int result = 0;
|
// String token = getXCsrfToken(httpUrl);
|
String input = Constants.SAP_USER + ":" + Constants.SAP_PASSWORD;//"ZHANGX:654321";
|
BASE64Encoder base = new BASE64Encoder();
|
String encodedPassword;
|
String token="";
|
String session_value="";
|
|
// HttpURLConnection connection1 = null;
|
// try {
|
// encodedPassword = base.encode(input.getBytes("UTF-8"));
|
// URL url1 = new URL(httpUrl);
|
// connection1 = (HttpURLConnection) url1.openConnection();
|
// connection1.setDoOutput(true);
|
// connection1.setDoInput(true);
|
// connection1.setConnectTimeout(30000);
|
// connection1.setReadTimeout(30000);
|
// connection1.setRequestMethod("GET");
|
// connection1.setRequestProperty("Authorization", "Basic " + encodedPassword);
|
// connection1.setRequestProperty("x-csrf-token","Fetch");
|
//
|
//
|
// String sessionCookie = connection1.getHeaderField("Set-Cookie");
|
// if(sessionCookie==null || sessionCookie.length()<1)
|
// {
|
// logger.error("SAP ERROR-----调用上架完成接口,get请求获取cookie失败");
|
// // SAP INFO-----调用上架完成接口,日志记录
|
// SapRequestLogBean logInfo = new SapRequestLogBean();
|
// logInfo.setMatnr(waitPakIn.getMatnr());
|
// logInfo.setRequest("获取cookie失败,cookie值:" + sessionCookie);
|
// logInfo.setResponse("SAP ERROR-----调用上架完成接口,get请求获取cookie失败");
|
// logInfo.setCreate_time(new Date());
|
// logInfo.setType(2);
|
//// sapRequestLogService.addSapLog(logInfo);
|
// return result;
|
// }
|
// String[] sessionId = sessionCookie.split(";");
|
// session_value = sessionId[0];
|
// token = connection1.getHeaderField("x-csrf-token");
|
//// Map<String, List<String>> map = connection1.getHeaderFields();
|
//// token = map.get("x-csrf-token").toString();
|
// } catch (Exception e1) {
|
// logger.error("SAP ERROR-----调用上架完成接口1,get请求获取cookie失败。" + e1.getMessage());
|
// // SAP INFO-----调用上架完成接口,日志记录
|
// SapRequestLogBean logInfo = new SapRequestLogBean();
|
// logInfo.setMatnr(waitPakIn.getMatnr());
|
// logInfo.setRequest("获取cookie失败");
|
// logInfo.setResponse("SAP ERROR-----调用上架完成接口1,get请求获取cookie失败。" + e1.getMessage());
|
// logInfo.setCreate_time(new Date());
|
// logInfo.setType(2);
|
//// sapRequestLogService.addSapLog(logInfo);
|
//// e1.printStackTrace();
|
// }finally {
|
// if(connection1!=null){
|
// connection1.disconnect();
|
// }
|
// }
|
|
JSONObject jsObj = new JSONObject();
|
try {
|
JSONArray arr = new JSONArray();
|
for(int i=0;i<1;i++) {
|
JSONObject json = new JSONObject();
|
json.put("lgnum",waitPakIn.getLgnum());
|
json.put("tbnum",Long.toString(waitPakIn.getTbnum()));
|
json.put("tbpos",Integer.toString(waitPakIn.getTbpos()));
|
json.put("zmatid",waitPakIn.getZmatid());
|
|
json.put("anfme",Double.toString(waitPakIn.getAnfme()));
|
json.put("altme",waitPakIn.getAltme());
|
json.put("nltyp","A01");
|
json.put("nlber","001");
|
json.put("nlpla",waitPakIn.getLoc_no());
|
arr.add(json);
|
}
|
jsObj.put("item", arr);
|
byte[] buff = jsObj.toString().getBytes();
|
int buffLen = buff.length;
|
JSONObject json = requestSAP(jsObj, httpUrl);
|
|
//创建连接
|
// HttpURLConnection connection = null;
|
// try {
|
//// String input = "ZHANGX:654321";
|
//// BASE64Encoder base = new BASE64Encoder();
|
//// String encodedPassword = base.encode(input.getBytes("UTF-8"));
|
//
|
// URL url = new URL(httpUrl);
|
// connection = (HttpURLConnection) url.openConnection();
|
// connection.setDoOutput(true);
|
// connection.setDoInput(true);
|
// connection.setRequestMethod("POST");
|
// connection.setConnectTimeout(30000);
|
// connection.setReadTimeout(30000);
|
//// connection.setUseCaches(false);
|
//// connection.setInstanceFollowRedirects(true);
|
//// connection.setRequestProperty("Content-Type","text/json;charset=gb2312");
|
// connection.setRequestProperty("Cookie", session_value);
|
// connection.setRequestProperty("Content-Type","application/json");
|
// connection.setRequestProperty("Accept","application/json");
|
// connection.setRequestProperty("Accept-Language","zh-CN,zh;q=0.9,en;q=0.8");
|
// connection.setRequestProperty("Content-Length","" + buffLen);
|
//// connection.setRequestProperty("Authorization", "Basic " + encodedPassword);
|
// connection.setRequestProperty("x-csrf-token",token);
|
//
|
// //POST请求
|
// OutputStream out = connection.getOutputStream();
|
// out.write(buff);
|
// out.close();
|
//
|
// //读取响应
|
// BufferedReader reader = new BufferedReader(new InputStreamReader(
|
// connection.getInputStream()));
|
// String lines;
|
// StringBuffer sb = new StringBuffer("");
|
// while ((lines = reader.readLine()) != null) {
|
// lines = new String(lines.getBytes(), "utf-8");
|
// sb.append(lines);
|
// }
|
// logger.error("SAP INFO-----调用上架完成接口,返回JSON数据:" + sb.toString());
|
// System.out.println(sb.toString());
|
// JSONObject json = JSONObject.fromObject(sb.toString());
|
String d = json.get("d").toString();
|
JSONObject jsonD = JSONObject.fromObject(d);
|
String Item = jsonD.get("item").toString();
|
JSONObject jsonItem = JSONObject.fromObject(Item);
|
String results = jsonItem.get("results").toString();
|
JSONArray array = JSONArray.fromObject(results);
|
|
if(array.size()>0) {
|
for(int i=0;i<array.size();i++){
|
JSONObject job = array.getJSONObject(i);
|
String zstatus = job.get("zstatus").toString();
|
// String message = job.get("message").toString();
|
String message="";
|
try {
|
message = java.net.URLDecoder.decode(job.get("message").toString(), "utf-8");
|
// logger.error("SAP TEST-----数据:" + message);
|
}catch(Exception em) {
|
}
|
if(zstatus.equals("s") || message.contains("已经完全提供")) {//上报SAP成功,转历史档
|
// SAP INFO-----调用上架完成接口,日志记录
|
SapRequestLogBean logInfo = new SapRequestLogBean();
|
logInfo.setMatnr(waitPakIn.getMatnr());
|
logInfo.setRequest(jsObj.toString());
|
logInfo.setResponse(json.toString());
|
logInfo.setCreate_time(new Date());
|
logInfo.setRemark("上架完成接口:" + message);
|
logInfo.setType(1);
|
// sapRequestLogService.addSapLog(logInfo);
|
// if(zstatus.equals("s")) {
|
waitPakIn.setIo_status("Y");
|
waitPakInService.upWaitPakIn(waitPakIn);
|
waitPakInService.moveToLog(waitPakIn);
|
}else if(zstatus.equals("e")) {//上报SAP失败,更新io_status=X
|
// SAP INFO-----调用上架完成接口,日志记录
|
SapRequestLogBean logInfo = new SapRequestLogBean();
|
logInfo.setMatnr(waitPakIn.getMatnr());
|
logInfo.setRequest(jsObj.toString());
|
logInfo.setResponse(json.toString());
|
logInfo.setCreate_time(new Date());
|
logInfo.setRemark("上架完成接口:" + message);
|
logInfo.setType(2);
|
// sapRequestLogService.addSapLog(logInfo);
|
waitPakIn.setIo_status("X");
|
waitPakIn.setMemo(message);
|
waitPakInService.upWaitPakIn(waitPakIn);
|
}
|
// System.out.println("zstatus信息.." + zstatus);
|
// System.out.println("message信息.." + message);
|
}
|
}
|
result = 1;
|
}catch (Exception e) {
|
waitPakIn.setIo_status("X");
|
waitPakIn.setMemo(e.getMessage());
|
waitPakInService.upWaitPakIn(waitPakIn);
|
logger.error("SAP Error sendPakInStatus--"+waitPakIn.getMatnr()+"---" + e.getMessage());
|
logger.error("1入库完成回报异常时ASRS请求JSON:" + jsObj.toString());
|
// System.out.println(e.getMessage());
|
}
|
// }catch (Exception e) {
|
// waitPakIn.setIo_status("X");
|
// waitPakIn.setMemo(e.getMessage());
|
// waitPakInService.upWaitPakIn(waitPakIn);
|
// logger.error("SAP Error sendPakInStatus--"+waitPakIn.getMatnr()+"---" + e.getMessage());
|
// logger.error("2入库完成回报异常时ASRS请求JSON:" + jsObj.toString());
|
//// System.out.println(e.getMessage());
|
// }
|
return result;
|
}
|
|
/**
|
* 处理出库通知档数据
|
*/
|
private void updateWaitPakOutData() {
|
try {
|
// logger.info("waitOut:" + count++);
|
WaitPakOutBean waitPakOutBean = waitPakOutService.queryWaitPakOutFnh();
|
if(waitPakOutBean!=null) {
|
String httpUrl = Constants.SAP_URL + "/sap/opu/odata/SAP/Z_WM_H5_DW_SRV/ToConHeadSet";
|
int result = sendPakOutStatus(httpUrl,waitPakOutBean);
|
}
|
}catch(Exception e) {
|
logger.error("SAP Error updateWaitPakOutData---" + e.getMessage());
|
}
|
}
|
|
/**
|
* 出库完成,调用sap接口上传完成信息
|
*/
|
private int sendPakOutStatus(String httpUrl,WaitPakOutBean waitPakOut) {
|
int result = 0;
|
// String token = getXCsrfToken(httpUrl);
|
String input = Constants.SAP_USER + ":" + Constants.SAP_PASSWORD;//"ZHANGX:654321";
|
BASE64Encoder base = new BASE64Encoder();
|
String encodedPassword;
|
String token="";
|
String session_value="";
|
|
// HttpURLConnection connection1 = null;
|
// try {
|
// encodedPassword = base.encode(input.getBytes("UTF-8"));
|
// URL url1 = new URL(httpUrl);
|
// connection1 = (HttpURLConnection) url1.openConnection();
|
// connection1.setDoOutput(true);
|
// connection1.setDoInput(true);
|
// connection1.setConnectTimeout(30000);
|
// connection1.setReadTimeout(30000);
|
// connection1.setRequestMethod("GET");
|
// connection1.setRequestProperty("Authorization", "Basic " + encodedPassword);
|
// connection1.setRequestProperty("x-csrf-token","Fetch");
|
// String sessionCookie = connection1.getHeaderField("Set-Cookie");
|
// if(sessionCookie==null || sessionCookie.length()<1)
|
// {
|
// logger.error("调用下架完成接口,get请求获取cookie失败");
|
// // SAP INFO-----调用上架完成接口,日志记录
|
// SapRequestLogBean logInfo = new SapRequestLogBean();
|
// logInfo.setMatnr(waitPakOut.getMatnr());
|
// logInfo.setRequest("获取cookie值失败,cookie:" + sessionCookie);
|
// logInfo.setResponse("调用出库完成接口,get请求获取cookie失败");
|
// logInfo.setCreate_time(new Date());
|
// logInfo.setType(2);
|
//// sapRequestLogService.addSapLog(logInfo);
|
// return result;
|
// }
|
// String[] sessionId = sessionCookie.split(";");
|
// session_value = sessionId[0];
|
// token = connection1.getHeaderField("x-csrf-token");
|
//
|
//// Map<String, List<String>> map = connection1.getHeaderFields();
|
//// token = map.get("x-csrf-token").toString();
|
// } catch (Exception e1) {
|
// logger.error("调用下架完成接口,get请求获取cookie失败" + e1.getMessage());
|
// // SAP INFO-----调用上架完成接口,日志记录
|
// SapRequestLogBean logInfo = new SapRequestLogBean();
|
// logInfo.setMatnr(waitPakOut.getMatnr());
|
// logInfo.setRequest("获取cookie失败");
|
// logInfo.setResponse("调用出库完成接口,get请求获取cookie失败");
|
// logInfo.setCreate_time(new Date());
|
// logInfo.setType(2);
|
//// sapRequestLogService.addSapLog(logInfo);
|
//// e1.printStackTrace();
|
// }finally{
|
// if(connection1!=null){
|
// connection1.disconnect();
|
// }
|
// }
|
|
logger.info("TEST===>>4");
|
|
JSONObject jsObj = new JSONObject();
|
try {
|
JSONArray arr = new JSONArray();
|
for(int i=0;i<1;i++) {
|
JSONObject json = new JSONObject();
|
json.put("lgnum",waitPakOut.getLgnum());
|
json.put("tanum",Long.toString(waitPakOut.getTanum()));
|
json.put("tapos",Integer.toString(waitPakOut.getTapos()));
|
|
double nista = waitPakOut.getNista();
|
// if(nista>0)
|
if(nista>=-1 && (int)nista!=0)
|
{
|
double vsolm = waitPakOut.getVsolm();
|
if( (int)nista == -1 ) {
|
nista=0;
|
}
|
double ndifa = vsolm - nista;
|
json.put("nista",Double.toString(nista)); //实际数量
|
json.put("ndifa",Double.toString(ndifa)); //差异数量
|
}
|
json.put("altme",waitPakOut.getMeins());
|
json.put("nltyp","A01");
|
// json.put("nlpla",waitPakOut.getNlpla());
|
json.put("arbpl","A01-01");
|
arr.add(json);
|
}
|
int action = 1;
|
if (waitPakOut.getAction() == 3){
|
action = waitPakOut.getAction();
|
}
|
jsObj.put("trart", Integer.toString(action));
|
jsObj.put("item", arr);
|
byte[] buff = jsObj.toString().getBytes();
|
int buffLen = buff.length;
|
//创建连接
|
// HttpURLConnection connection = null;
|
// try {
|
//// String input = "ZHANGX:654321";
|
//// BASE64Encoder base = new BASE64Encoder();
|
//// String encodedPassword = base.encode(input.getBytes("UTF-8"));
|
//
|
// URL url = new URL(httpUrl);
|
// connection = (HttpURLConnection) url.openConnection();
|
// connection.setDoOutput(true);
|
// connection.setDoInput(true);
|
// connection.setConnectTimeout(30000);
|
// connection.setReadTimeout(30000);
|
// connection.setRequestMethod("POST");
|
// // connection.setUseCaches(false);
|
// // connection.setInstanceFollowRedirects(true);
|
//// connection.setRequestProperty("Content-Type","text/json;charset=gb2312");
|
// connection.setRequestProperty("Cookie", session_value);
|
// connection.setRequestProperty("Content-Type","application/json");
|
// connection.setRequestProperty("Accept","application/json");
|
// connection.setRequestProperty("Accept-Language","zh-CN,zh;q=0.9,en;q=0.8");
|
// connection.setRequestProperty("Content-Length","" + buffLen);
|
//// connection.setRequestProperty("Authorization", "Basic " + encodedPassword);
|
// connection.setRequestProperty("x-csrf-token",token);
|
//
|
// //POST请求
|
// OutputStream out = connection.getOutputStream();
|
// out.write(buff);
|
// out.close();
|
//
|
// //读取响应
|
// BufferedReader reader = new BufferedReader(new InputStreamReader(
|
// connection.getInputStream()));
|
// String lines;
|
// StringBuffer sb = new StringBuffer("");
|
// while ((lines = reader.readLine()) != null) {
|
// lines = new String(lines.getBytes(), "utf-8");
|
// sb.append(lines);
|
// }
|
// System.out.println(sb.toString());
|
JSONObject json = requestSAP(jsObj, httpUrl);
|
// JSONObject json = JSONObject.fromObject(sb.toString());
|
String d = json.get("d").toString();
|
JSONObject jsonD = JSONObject.fromObject(d);
|
String Item = jsonD.get("item").toString();
|
JSONObject jsonItem = JSONObject.fromObject(Item);
|
String results = jsonItem.get("results").toString();
|
JSONArray array = JSONArray.fromObject(results);
|
|
logger.info("出库通知档SAP返回数据集大小 ===>> " + array.size());
|
if(array.size()>0) {
|
for(int i=0;i<array.size();i++){
|
JSONObject job = array.getJSONObject(i);
|
String zstatus = job.get("zstatus").toString();
|
// String message = job.get("message").toString();
|
String message="";
|
try {
|
message = java.net.URLDecoder.decode(job.get("message").toString(), "utf-8");
|
}catch(Exception em) {
|
}
|
if(zstatus.equals("s") || message.contains("已经完全提供") || message.contains("已确认")) {
|
// SAP INFO-----调用下架完成接口,日志记录
|
SapRequestLogBean logInfo = new SapRequestLogBean();
|
logInfo.setMatnr(waitPakOut.getMatnr());
|
logInfo.setRequest(jsObj.toString());
|
logInfo.setResponse(json.toString());
|
logInfo.setCreate_time(new Date());
|
logInfo.setType(1);
|
logInfo.setRemark("出库完成接口:" + message);
|
// sapRequestLogService.addSapLog(logInfo);
|
// if(zstatus.equals("s")) {//上报SAP成功,转历史档
|
waitPakOut.setIo_status("Y");
|
waitPakOutService.upWaitPakOut(waitPakOut,0);
|
waitPakOutService.moveToLog(waitPakOut);
|
}else if(zstatus.equals("e")) {//上报SAP失败,更新io_status=X
|
// SAP INFO-----调用下架完成接口,日志记录
|
SapRequestLogBean logInfo = new SapRequestLogBean();
|
logInfo.setMatnr(waitPakOut.getMatnr());
|
logInfo.setRequest(jsObj.toString());
|
logInfo.setResponse(json.toString());
|
logInfo.setCreate_time(new Date());
|
logInfo.setType(2);
|
logInfo.setRemark("出库完成接口:" + message);
|
// sapRequestLogService.addSapLog(logInfo);
|
waitPakOut.setIo_status("X");
|
waitPakOut.setMemo(message);
|
waitPakOutService.upWaitPakOut(waitPakOut,0);
|
logger.error("SAP返回异常时,ASRS提交的json--" + jsObj.toString());
|
}
|
// System.out.println("zstatus信息.." + zstatus);
|
// System.out.println("message信息.." + message);
|
}
|
}
|
result = 1;
|
}catch (Exception e) {
|
waitPakOut.setIo_status("X");
|
waitPakOut.setMemo(e.getMessage());
|
waitPakOutService.upWaitPakOut(waitPakOut,0);
|
logger.error("出库通知档回报异常1--"+waitPakOut.getMatnr() + "---" + e.getMessage());
|
logger.error("1出库完成回报异常时ASRS请求JSON:" + jsObj.toString());
|
// System.out.println(e.getMessage());
|
}
|
// }catch (Exception e) {
|
// waitPakOut.setIo_status("X");
|
// waitPakOut.setMemo(e.getMessage());
|
// waitPakOutService.upWaitPakOut(waitPakOut,0);
|
// logger.error("出库通知档回报异常2--"+waitPakOut.getMatnr() + "---" + e.getMessage());
|
// logger.error("2出库完成回报异常时ASRS请求JSON:" + jsObj.toString());
|
//// System.out.println(e.getMessage());
|
// }
|
return result;
|
}
|
|
/**
|
* 处理打印标签需求
|
*/
|
private void sendPickPrintCmd() {
|
try {
|
WaitPakOutBean waitPakOutBean = waitPakOutService.getWaitPakOutPrint();
|
if(waitPakOutBean!=null) {
|
String httpUrl = Constants.SAP_URL + "/sap/opu/odata/SAP/Z_WM_H5_DW_SRV/ToConHeadSet";
|
int result = sendPrinCommand(httpUrl,waitPakOutBean);
|
}
|
}catch(Exception e) {
|
logger.error("SAP Error updateWaitPakOutData---" + e.getMessage());
|
}
|
}
|
|
/**
|
* 拣料站,调用SAP打印标签接口,action=2
|
*/
|
private int sendPrinCommand(String httpUrl,WaitPakOutBean waitPakOut) {
|
int result = 0;
|
// String token = getXCsrfToken(httpUrl);
|
String input = Constants.SAP_USER + ":" + Constants.SAP_PASSWORD;//"ZHANGX:654321";
|
BASE64Encoder base = new BASE64Encoder();
|
String encodedPassword;
|
String token="";
|
String session_value="";
|
//
|
// HttpURLConnection connection1 = null;
|
// try {
|
//// logger.error("sendPrinCommand-----调用打印接口" + waitPakOut.getMaktx());
|
// encodedPassword = base.encode(input.getBytes("UTF-8"));
|
// URL url1 = new URL(httpUrl);
|
// connection1 = (HttpURLConnection) url1.openConnection();
|
// connection1.setDoOutput(true);
|
// connection1.setDoInput(true);
|
// connection1.setConnectTimeout(30000);
|
// connection1.setReadTimeout(30000);
|
// connection1.setRequestMethod("GET");
|
// connection1.setRequestProperty("Authorization", "Basic " + encodedPassword);
|
// connection1.setRequestProperty("x-csrf-token","Fetch");
|
// String sessionCookie = connection1.getHeaderField("Set-Cookie");
|
// if(sessionCookie==null || sessionCookie.length()<1)
|
// {
|
// logger.error("调用打印接口,get请求获取cookie失败");
|
// // 调用sap打印接口,记录日志
|
// SapRequestLogBean logInfo = new SapRequestLogBean();
|
// logInfo.setMatnr(waitPakOut.getMatnr());
|
// logInfo.setRequest("调用打印接口,get请求获取cookie失败");
|
// logInfo.setResponse(sessionCookie);
|
// logInfo.setCreate_time(new Date());
|
// logInfo.setType(2);
|
// sapRequestLogService.addSapLog(logInfo);
|
// return result;
|
// }
|
// String[] sessionId = sessionCookie.split(";");
|
// session_value = sessionId[0];
|
// token = connection1.getHeaderField("x-csrf-token");
|
//// Map<String, List<String>> map = connection1.getHeaderFields();
|
//// token = map.get("x-csrf-token").toString();
|
// } catch (Exception e1) {
|
// logger.error("sendPrinCommand1-----调用打印接口请求cookie失败" + waitPakOut.getMaktx() + e1.getMessage());
|
// // 调用sap打印接口,记录日志
|
// SapRequestLogBean logInfo = new SapRequestLogBean();
|
// logInfo.setMatnr(waitPakOut.getMatnr());
|
// logInfo.setRequest("sendPrinCommand1-----调用打印接口请求cookie失败" + waitPakOut.getMaktx());
|
// logInfo.setResponse(e1.getMessage());
|
// logInfo.setCreate_time(new Date());
|
// logInfo.setType(2);
|
// sapRequestLogService.addSapLog(logInfo);
|
// e1.printStackTrace();
|
// }finally{
|
// if(connection1!=null){
|
// connection1.disconnect();
|
// }
|
// }
|
|
try {
|
// logger.error("sendPrinCommand2-----开始调用打印接口" + waitPakOut.getMaktx());
|
JSONObject jsObj = new JSONObject();
|
JSONArray arr = new JSONArray();
|
for(int i=0;i<1;i++) {
|
JSONObject json = new JSONObject();
|
json.put("lgnum",waitPakOut.getLgnum());
|
json.put("tanum",Long.toString(waitPakOut.getTanum()));
|
json.put("tapos",Integer.toString(waitPakOut.getTapos()));
|
|
double nista = waitPakOut.getNista();
|
if(nista>0)
|
{
|
double vsolm = waitPakOut.getVsolm();
|
double ndifa = vsolm - nista;
|
json.put("nista",Double.toString(nista)); //实际数量
|
json.put("ndifa",Double.toString(ndifa)); //差异数量
|
}
|
json.put("altme",waitPakOut.getMeins());
|
json.put("nltyp","A01");
|
// json.put("nlpla",waitPakOut.getNlpla());
|
json.put("arbpl","A01-01");
|
arr.add(json);
|
}
|
jsObj.put("trart", "2");
|
jsObj.put("item", arr);
|
byte[] buff = jsObj.toString().getBytes();
|
int buffLen = buff.length;
|
//创建连接
|
// HttpURLConnection connection = null;
|
// try {
|
//// String input = "ZHANGX:654321";
|
//// BASE64Encoder base = new BASE64Encoder();
|
//// String encodedPassword = base.encode(input.getBytes("UTF-8"));
|
//
|
// URL url = new URL(httpUrl);
|
// connection = (HttpURLConnection) url.openConnection();
|
// connection.setDoOutput(true);
|
// connection.setDoInput(true);
|
// connection.setConnectTimeout(30000);
|
// connection.setReadTimeout(30000);
|
// connection.setRequestMethod("POST");
|
// // connection.setUseCaches(false);
|
// // connection.setInstanceFollowRedirects(true);
|
//// connection.setRequestProperty("Content-Type","text/json;charset=gb2312");
|
// connection.setRequestProperty("Cookie", session_value);
|
// connection.setRequestProperty("Content-Type","application/json");
|
// connection.setRequestProperty("Accept","application/json");
|
// connection.setRequestProperty("Accept-Language","zh-CN,zh;q=0.9,en;q=0.8");
|
// connection.setRequestProperty("Content-Length","" + buffLen);
|
//// connection.setRequestProperty("Authorization", "Basic " + encodedPassword);
|
// connection.setRequestProperty("x-csrf-token",token);
|
//
|
// //POST请求
|
// OutputStream out = connection.getOutputStream();
|
// out.write(buff);
|
// out.close();
|
//// logger.error("sendPrinCommand3-----调用打印接口" + waitPakOut.getMaktx());
|
// //读取响应
|
// BufferedReader reader = new BufferedReader(new InputStreamReader(
|
// connection.getInputStream()));
|
// String lines;
|
// StringBuffer sb = new StringBuffer("");
|
// while ((lines = reader.readLine()) != null) {
|
// lines = new String(lines.getBytes(), "utf-8");
|
// sb.append(lines);
|
// }
|
//// System.out.println(sb.toString());
|
// JSONObject json = JSONObject.fromObject(sb.toString());
|
JSONObject json = requestSAP(jsObj, httpUrl);
|
String d = json.get("d").toString();
|
JSONObject jsonD = JSONObject.fromObject(d);
|
String Item = jsonD.get("item").toString();
|
JSONObject jsonItem = JSONObject.fromObject(Item);
|
String results = jsonItem.get("results").toString();
|
JSONArray array = JSONArray.fromObject(results);
|
logger.error("sendPrinCommand4-----调用打印接口" + waitPakOut.getMaktx());
|
if(array.size()>0) {
|
for(int i=0;i<array.size();i++){
|
JSONObject job = array.getJSONObject(i);
|
String zstatus = job.get("zstatus").toString();
|
// String message = job.get("message").toString();
|
String message="";
|
try {
|
message = java.net.URLDecoder.decode(job.get("message").toString(), "utf-8");
|
}catch(Exception em) {
|
}
|
if(zstatus.equals("s") || message.contains("已经完全提供")) {
|
// if(zstatus.equals("s")) {//上报SAP成功,转历史档
|
waitPakOut.setAction(1); //模式变为1单独确认
|
waitPakOut.setPrnstatus(2); //打印完成
|
waitPakOutService.upWaitPakOut(waitPakOut,0);
|
logger.error("sendPrinCommand5---调用打印接口成功,请求json数据--" + jsObj.toString());
|
logger.info("sendPrinCommand5---调用打印接口成功,返回json数据--" + json.toString());
|
// 调用sap打印接口,记录日志
|
SapRequestLogBean logInfo = new SapRequestLogBean();
|
logInfo.setMatnr(waitPakOut.getMatnr());
|
logInfo.setRequest(jsObj.toString());
|
logInfo.setResponse(json.toString());
|
logInfo.setCreate_time(new Date());
|
logInfo.setRemark(message);
|
logInfo.setType(1);
|
sapRequestLogService.addSapLog(logInfo);
|
}else if(zstatus.equals("e")) {//上报SAP失败,更新io_status=X
|
waitPakOut.setPrnstatus(3); //打印失败
|
waitPakOut.setMemo(message);
|
waitPakOutService.upWaitPakOut(waitPakOut,0);
|
logger.error("sendPrinCommand6---调用打印接口失败,请求json数据--" + message);
|
// 调用sap打印接口,记录日志
|
SapRequestLogBean logInfo = new SapRequestLogBean();
|
logInfo.setMatnr(waitPakOut.getMatnr());
|
logInfo.setRequest(jsObj.toString());
|
logInfo.setResponse(json.toString());
|
logInfo.setCreate_time(new Date());
|
logInfo.setRemark(message);
|
logInfo.setType(2);
|
sapRequestLogService.addSapLog(logInfo);
|
}
|
}
|
}
|
result = 1;
|
}catch (Exception e) {
|
waitPakOut.setPrnstatus(3); //打印失败
|
waitPakOut.setMemo(e.getMessage());
|
waitPakOutService.upWaitPakOut(waitPakOut,0);
|
logger.error("sendPrinCommand7---调用打印接口回报异常--"+waitPakOut.getMatnr() + "---" + e.getMessage());
|
// 调用sap打印接口,记录日志
|
SapRequestLogBean logInfo = new SapRequestLogBean();
|
logInfo.setMatnr(waitPakOut.getMatnr());
|
// logInfo.setRequest(jsObj.toString());
|
logInfo.setResponse("sendPrinCommand7---调用打印接口回报异常--"+waitPakOut.getMatnr() + "---");
|
logInfo.setCreate_time(new Date());
|
logInfo.setRemark(e.getMessage());
|
logInfo.setType(2);
|
sapRequestLogService.addSapLog(logInfo);
|
// System.out.println(e.getMessage());
|
}
|
// }catch (Exception e) {
|
// waitPakOut.setPrnstatus(3); //打印失败
|
// waitPakOut.setMemo(e.getMessage());
|
// waitPakOutService.upWaitPakOut(waitPakOut,0);
|
// logger.error("sendPrinCommand8---调用打印接口回报异常--"+waitPakOut.getMatnr() + "---" + e.getMessage());
|
// // 调用sap打印接口,记录日志
|
// SapRequestLogBean logInfo = new SapRequestLogBean();
|
// logInfo.setMatnr(waitPakOut.getMatnr());
|
// logInfo.setRequest("打印请求失败");
|
// logInfo.setResponse("sendPrinCommand8---调用打印接口回报异常--"+waitPakOut.getMatnr() + "---");
|
// logInfo.setCreate_time(new Date());
|
// logInfo.setRemark(e.getMessage());
|
// logInfo.setType(2);
|
// sapRequestLogService.addSapLog(logInfo);
|
//// System.out.println(e.getMessage());
|
// }
|
return result;
|
}
|
|
/**
|
* 处理盘点通知档数据
|
*/
|
private void updateWaitCheckData() {
|
try {
|
// logger.info("waitCheck:" + count++);
|
}catch(Exception e) {
|
|
}
|
}
|
|
public static void main(String[] args) {
|
UpdateThread Thread1=new UpdateThread();
|
Thread mThread1=new Thread(Thread1,"线程1");
|
// Thread mThread2=new Thread(Thread1,"线程2");
|
// Thread mThread3=new Thread(Thread1,"线程3");
|
mThread1.start();
|
// mThread2.start();
|
// mThread3.start();
|
}
|
}
|