|
|
@@ -18,14 +18,10 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.io.OutputStream;
|
|
|
-import java.net.HttpURLConnection;
|
|
|
-import java.net.URL;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
|
-import static com.uas.eis.utils.PSHttpUtils.doPost;
|
|
|
|
|
|
@Service
|
|
|
public class ERPServiceImpl implements ERPService {
|
|
|
@@ -95,6 +91,8 @@ public class ERPServiceImpl implements ERPService {
|
|
|
return modelMap;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 生成SSDP字符串并Base64编码
|
|
|
*/
|
|
|
@@ -107,9 +105,7 @@ public class ERPServiceImpl implements ERPService {
|
|
|
if (sb.length() > 0) {
|
|
|
sb.setLength(sb.length() - 1);
|
|
|
}
|
|
|
- System.out.println("buildSsdp:"+sb.toString());
|
|
|
String ssdp=Base64.encodeBase64String(sb.toString().getBytes(StandardCharsets.UTF_8));
|
|
|
- //System.out.println("ssdp:"+ssdp);
|
|
|
return ssdp;
|
|
|
}
|
|
|
|
|
|
@@ -126,7 +122,6 @@ public class ERPServiceImpl implements ERPService {
|
|
|
}
|
|
|
// 拼接密钥
|
|
|
sb.append(SIGN_KEY);
|
|
|
- System.out.println("generateSign:"+sb.toString());
|
|
|
// MD5 32位大写
|
|
|
return DigestUtils.md5Hex(sb.toString()).toUpperCase();
|
|
|
}
|
|
|
@@ -170,4 +165,67 @@ public class ERPServiceImpl implements ERPService {
|
|
|
}
|
|
|
return array;
|
|
|
}
|
|
|
+ private JSONArray buildBusinessDataByDate(int dockid_) {
|
|
|
+ JSONArray array = new JSONArray();
|
|
|
+ SqlRowList rs = baseDao.queryForRowSet("select * from PRODIO_DOCK_BYDATE_REC where DOCKID_="+dockid_+" order by pi_id,PRODUCTMODEL,QTY,SALEPRICE");
|
|
|
+ while (rs.next()) {
|
|
|
+ JSONObject item = new JSONObject();
|
|
|
+ item.put("year", rs.getGeneralInt("year_"));
|
|
|
+ item.put("month", rs.getGeneralInt("MONTH_"));
|
|
|
+ item.put("serialno", rs.getGeneralString("serialno"));
|
|
|
+ item.put("shipmenttype", rs.getGeneralInt("shipmenttype")); // 1-销售出库 2-退货
|
|
|
+ item.put("sapno", sapno);
|
|
|
+ item.put("terminalaccount", rs.getGeneralString("TERMINALACCOUNT"));
|
|
|
+ item.put("productmodel",rs.getGeneralString("PRODUCTMODEL"));
|
|
|
+ item.put("outorderno", rs.getGeneralString("OUTORDERNO"));
|
|
|
+ item.put("saleprice", rs.getGeneralDouble("SALEPRICE"));
|
|
|
+ item.put("qty", rs.getGeneralInt("QTY"));
|
|
|
+ array.add(item);
|
|
|
+ }
|
|
|
+ return array;
|
|
|
+ }
|
|
|
+ /*根据过账日期对接*/
|
|
|
+ @Override
|
|
|
+ public void dockProdIoSale(String master) throws Exception {
|
|
|
+ SpObserver.putSp(master);
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
|
|
|
+ sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
|
|
|
+ int dockid_=baseDao.getSeqId("PRODIO_DOCK_BYDATE_REC_SEQ");
|
|
|
+ baseDao.execute("insert into PRODIO_DOCK_BYDATE_REC(PI_ID, YEAR_, MONTH_, SERIALNO, SHIPMENTTYPE, TERMINALACCOUNT, PRODUCTMODEL, OUTORDERNO, SALEPRICE, QTY, PI_DATE1,DOCKID_)" +
|
|
|
+ " select PI_ID, YEAR_, MONTH_, SERIALNO, SHIPMENTTYPE, TERMINALACCOUNT, PRODUCTMODEL, OUTORDERNO, SALEPRICE, QTY, PI_DATE1," +dockid_+
|
|
|
+ " from PRODIO_DOCK_BYDATE_VIEW" +
|
|
|
+ " where pi_date1 is not null and trunc(pi_date1)=trunc(sysdate)");
|
|
|
+ int n=baseDao.getCount("select count(1) from PRODIO_DOCK_BYDATE_REC where DOCKID_="+dockid_);
|
|
|
+ if(n>0){
|
|
|
+ String time_Stamp= sdf.format(new Date());
|
|
|
+ // 1. 构造业务数据
|
|
|
+ JSONArray businessData = buildBusinessDataByDate(dockid_);
|
|
|
+ String reqData = com.alibaba.fastjson.JSONArray.toJSONString(businessData);
|
|
|
+ // 2. 构造公共参数
|
|
|
+ TreeMap<String, String> publicParams = buildPublicParams(time_Stamp);
|
|
|
+ // 3. 生成签名
|
|
|
+ String sign = generateSign(publicParams, reqData);
|
|
|
+ String ssdp = buildSsdp(publicParams);
|
|
|
+ String url=API_URL+"?ssdp="+ssdp;
|
|
|
+ HttpUtil.Response response = HttpUtil.doPost(url, reqData, false, null);
|
|
|
+ if (response.getStatusCode() == HttpStatus.OK.value()){
|
|
|
+ String res=response.getResponseText();
|
|
|
+ if(StringUtil.hasText(res)){
|
|
|
+ String logSql="insert into dockProdSaleLog(id_,date_,count_,time_Stamp,sign,ssdp,reqData,res,dockid_) " +
|
|
|
+ " values(DOCKPRODIOLOG_SEQ.nextval,sysdate,"+n+",'"+time_Stamp+"','"+sign+"','"+ssdp+"','"+reqData+"','"+res+"',"+dockid_+")";
|
|
|
+ baseDao.execute(logSql);
|
|
|
+ }else{
|
|
|
+ String logSql="insert into dockProdSaleLog(id_,date_,count_,time_Stamp,sign,ssdp,reqData,dockid_) " +
|
|
|
+ " values(DOCKPRODIOLOG_SEQ.nextval,sysdate,"+n+",'"+time_Stamp+"','"+sign+"','"+ssdp+"','"+reqData+"',"+dockid_+")";
|
|
|
+ baseDao.execute(logSql);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ String logSql="insert into dockProdSaleLog(id_,date_,count_,time_Stamp,sign,ssdp,reqData,dockid_,res,dockid_) " +
|
|
|
+ " values(DOCKPRODIOLOG_SEQ.nextval,sysdate,"+n+",'"+time_Stamp+"','"+sign+"','"+ssdp+"','"+reqData+"','"+response.getStatusCode()+"',"+dockid_+")";
|
|
|
+ baseDao.execute(logSql);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ logger.info("DockProdIoSale-"+master+" n=0 {}",sdf.format(new Date()));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|