Преглед изворни кода

【盛威尔-华润微-按过账日期对接】

DINGYL пре 2 месеци
родитељ
комит
1c5bb15bb1

+ 1 - 0
src/main/java/com/uas/eis/service/ERPService.java

@@ -17,4 +17,5 @@ import java.util.Map;
  */
 public interface ERPService {
     Map<String, Object> sendProdIO(String master, int id,String action) throws Exception;
+    void dockProdIoSale(String master) throws Exception;
 }

+ 65 - 7
src/main/java/com/uas/eis/service/Impl/ERPServiceImpl.java

@@ -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()));
+        }
+    }
 }

+ 49 - 0
src/main/java/com/uas/eis/task/DockProdIoSaleTask.java

@@ -0,0 +1,49 @@
+package com.uas.eis.task;
+
+import com.uas.eis.core.config.SpObserver;
+import com.uas.eis.dao.BaseDao;
+import com.uas.eis.service.ERPService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DockProdIoSaleTask {
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+    private final BaseDao baseDao;
+    @Autowired
+    private ERPService erpService;
+
+    public DockProdIoSaleTask(@Qualifier("baseDao") BaseDao baseDao) {
+        this.baseDao = baseDao;
+    }
+
+    @Scheduled(cron = "0 30 23 * * ?")
+    public void DockProdIoSale() {
+        String master="SENGWILL";
+        logger.info("DockProdIoSale-"+master+" Begin");
+        try {
+            erpService.dockProdIoSale(master);
+            logger.info("DockProdIoSale-"+master+"  END");
+        }catch (Exception e) {
+            logger.error("DockProdIoSale-"+master+" ERROR", e.getMessage());
+        }
+        master="BAIXIANG";
+        try {
+            erpService.dockProdIoSale(master);
+            logger.info("DockProdIoSale-"+master+"  END");
+        }catch (Exception e) {
+            logger.error("DockProdIoSale-"+master+" ERROR", e.getMessage());
+        }
+        master="BAIXIANG_HK";
+        try {
+            erpService.dockProdIoSale(master);
+            logger.info("DockProdIoSale-"+master+"  END");
+        }catch (Exception e) {
+            logger.error("DockProdIoSale-"+master+" ERROR", e.getMessage());
+        }
+    }
+}

+ 7 - 0
src/test/java/com/uas/eis/UasEisApplicationTests.java

@@ -2,6 +2,7 @@ package com.uas.eis;
 
 import com.uas.eis.dao.*;
 import com.uas.eis.service.ERPService;
+import com.uas.eis.utils.JSONUtil;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,5 +25,11 @@ public class UasEisApplicationTests {
 		erpService.sendProdIO("SENGWILL",100117435,"post");
 	}
 
+	@Test
+	public void Test1() throws Exception {
+		String master="SENGWILL";
+		erpService.dockProdIoSale(master);
+
+	}
 
 }