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

【华信科小米EDI对接】【6-外部供应商创建小米SRM ASN公用X5同步接口】

wub пре 3 дана
родитељ
комит
07980c4e98

+ 16 - 0
src/main/java/com/uas/eis/controller/ERPController.java

@@ -50,8 +50,24 @@ public class ERPController {
         return erpService.closePurchase(data);
     }
 
+    /**
+     * 小米推送送货指令到华信科
+     * @param data
+     * @return
+     */
     @RequestMapping("/erp/deliInstruction")
     public Map<String, Object> deliInstruction(String data){
         return erpService.deliInstruction(data);
     }
+
+    /**
+     * 6:外部供应商创建小米SRM ASN公用X5同步接口
+     * @param data
+     * @return
+     */
+    @RequestMapping("/erp/createASN")
+    public Map<String, Object> createASN(String id){
+        return erpService.createASN(id);
+    }
+
 }

+ 28 - 0
src/main/java/com/uas/eis/sdk/dto/ASNItem.java

@@ -0,0 +1,28 @@
+package com.uas.eis.sdk.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+public class ASNItem {
+
+    @JsonProperty("DELIVERY_NOTICE_ITEM")
+    private String DELIVERY_NOTICE_ITEM;
+    @JsonProperty("DELI_INSTRU_NUM")
+    private String DELI_INSTRU_NUM;
+    @JsonProperty("DELI_INSTRU_ITEM")
+    private String DELI_INSTRU_ITEM;
+    @JsonProperty("PURORD_NUM")
+    private String PURORD_NUM;
+    @JsonProperty("PURORD_ITEM_NUM")
+    private String PURORD_ITEM_NUM;
+    @JsonProperty("MATERIAL_NUM")
+    private String MATERIAL_NUM;
+    @JsonProperty("SHIP_QTY")
+    private String SHIP_QTY;
+    @JsonProperty("QTY_UNIT")
+    private String QTY_UNIT;
+    @JsonProperty("APP_MODELS")
+    private String APP_MODELS;
+
+}

+ 60 - 0
src/main/java/com/uas/eis/sdk/dto/ASNMain.java

@@ -0,0 +1,60 @@
+package com.uas.eis.sdk.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ASNMain {
+
+    @JsonProperty("SYSTEMID")
+    private String SYSTEMID;
+    @JsonProperty("GUID")
+    private String GUID;
+    @JsonProperty("DELIVERY_NOTICE")
+    private String DELIVERY_NOTICE;
+    @JsonProperty("SUPPLIER_CODE")
+    private String SUPPLIER_CODE;
+    @JsonProperty("SUPPLIER_NAME")
+    private String SUPPLIER_NAME;
+    @JsonProperty("ASN_STATUS")
+    private String ASN_STATUS;
+    @JsonProperty("SHIP_WAREHOUSE_ID")
+    private String SHIP_WAREHOUSE_ID;
+    @JsonProperty("ETD_DATE")
+    private String ETD_DATE;
+    @JsonProperty("ETD_TIME")
+    private String ETD_TIME;
+    @JsonProperty("SHIP_DATE")
+    private String SHIP_DATE;
+    @JsonProperty("SHIP_TIME")
+    private String SHIP_TIME;
+    @JsonProperty("ETA_DATE")
+    private String ETA_DATE;
+    @JsonProperty("ETA_TIME")
+    private String ETA_TIME;
+    @JsonProperty("NUM_OF_CARTON")
+    private String NUM_OF_CARTON;
+    @JsonProperty("SHIP_TO_CODE")
+    private String SHIP_TO_CODE;
+    @JsonProperty("SHIP_TO_NAME")
+    private String SHIP_TO_NAME;
+    @JsonProperty("SHIPTO_WAREHOUSE_ID")
+    private String SHIPTO_WAREHOUSE_ID;
+    @JsonProperty("DESTINATION_CODE")
+    private String DESTINATION_CODE;
+    @JsonProperty("DESTINATION_NAME")
+    private String DESTINATION_NAME;
+    @JsonProperty("DESTINATION_WAREHOUSE_ID")
+    private String DESTINATION_WAREHOUSE_ID;
+    @JsonProperty("PURCHASE_ORG")
+    private String PURCHASE_ORG;
+    @JsonProperty("STOCK_ORG_TO")
+    private String STOCK_ORG_TO;
+    @JsonProperty("IF_BYDELIINSTR")
+    private String IF_BYDELIINSTR;
+    @JsonProperty("IT_ASN_ITEM")
+    private List<ASNItem> IT_ASN_ITEM;
+
+}

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

@@ -14,4 +14,5 @@ public interface ERPService {
     void confirmPurchase(String id);
     Map<String, Object> closePurchase(String data);
     Map<String, Object> deliInstruction(String data);
+    Map<String, Object> createASN(String id);
 }

+ 64 - 0
src/main/java/com/uas/eis/service/Impl/ERPServiceImpl.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.TextNode;
+import com.uas.eis.beans.x5domain.X5Response;
 import com.uas.eis.core.support.TokenProperties;
 import com.uas.eis.dao.BaseDao;
 import com.uas.eis.dao.SqlRowList;
@@ -407,6 +408,69 @@ public class ERPServiceImpl implements ERPService {
         return result;
     }
 
+    @Override
+    public Map<String, Object> createASN(String id) {
+        Map<String, Object> data = new HashMap<>();
+        UUID uuid = UUID.randomUUID();
+        ASNMain asnMain = new ASNMain();
+        asnMain.setSYSTEMID("SRM");
+        asnMain.setGUID(uuid.toString().replaceAll("-", "").toUpperCase());
+        SqlRowList rs = baseDao.queryForRowSet("select * from asnXM where asn_id=" + id);
+        // 获取当前日期
+        Date currentDate = new Date();
+        // 创建SimpleDateFormat对象,指定格式
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+        SimpleDateFormat hhmmss = new SimpleDateFormat("yyyyMMddHHMMSS");
+        Map<String, Object> result = new HashMap<>();
+        if (rs.next()){
+            String asn_code = rs.getGeneralString("asn_code");
+            asnMain.setDELIVERY_NOTICE(rs.getGeneralString("delivery_notice"));
+            asnMain.setSUPPLIER_CODE(rs.getGeneralString("supplier_code"));
+            asnMain.setSUPPLIER_NAME(rs.getGeneralString("supplier_name"));
+            asnMain.setASN_STATUS(rs.getGeneralString("asn_status"));
+            asnMain.setSHIP_WAREHOUSE_ID(rs.getGeneralString("ship_warehouse_id"));
+            asnMain.setETD_DATE(rs.getGeneralString("etd_date"));
+            asnMain.setETD_TIME(rs.getGeneralString("etd_time"));
+            asnMain.setSHIP_DATE(rs.getGeneralString("ship_date"));
+            asnMain.setSHIP_TIME(rs.getGeneralString("ship_time"));
+            asnMain.setETA_DATE(rs.getGeneralString("eta_date"));
+            asnMain.setETA_TIME(rs.getGeneralString("eta_time"));
+            asnMain.setNUM_OF_CARTON(rs.getGeneralString("num_of_carton"));
+            asnMain.setSHIP_TO_CODE(rs.getGeneralString("ship_to_code"));
+            asnMain.setSHIP_TO_NAME(rs.getGeneralString("ship_to_name"));
+            asnMain.setSHIPTO_WAREHOUSE_ID(rs.getGeneralString("shipto_warehouse_id"));
+            asnMain.setDESTINATION_CODE(rs.getGeneralString("destination_code"));
+            asnMain.setDESTINATION_NAME(rs.getGeneralString("destination_name"));
+            asnMain.setDESTINATION_WAREHOUSE_ID(rs.getGeneralString("destination_warehouse_id"));
+            asnMain.setPURCHASE_ORG(rs.getGeneralString("purchase_org"));
+            asnMain.setSTOCK_ORG_TO(rs.getGeneralString("stock_org_to"));
+            asnMain.setIF_BYDELIINSTR(rs.getGeneralString("if_bydeliinstr"));
+            List<ASNItem> IT_ASN_ITEM = new ArrayList<>();
+            SqlRowList rs_asnDetail = baseDao.queryForRowSet("select * from asnDetailXM where asnd_asnid=" + id);
+            if (rs_asnDetail.next()){
+                ASNItem asnItem = new ASNItem();
+                asnItem.setDELIVERY_NOTICE_ITEM(rs_asnDetail.getGeneralString("delivery_notice_item"));
+                asnItem.setDELI_INSTRU_NUM(rs_asnDetail.getGeneralString("deli_instru_num"));
+                asnItem.setDELI_INSTRU_ITEM(rs_asnDetail.getGeneralString("deli_instru_item"));
+                asnItem.setPURORD_NUM(rs_asnDetail.getGeneralString("purord_num"));
+                asnItem.setPURORD_ITEM_NUM(rs_asnDetail.getGeneralString("purord_item_num"));
+                asnItem.setMATERIAL_NUM(rs_asnDetail.getGeneralString("material_num"));
+                asnItem.setSHIP_QTY(rs_asnDetail.getGeneralString("ship_qty"));
+                asnItem.setQTY_UNIT(rs_asnDetail.getGeneralString("qty_unit"));
+                asnItem.setAPP_MODELS(rs_asnDetail.getGeneralString("app_models"));
+                IT_ASN_ITEM.add(asnItem);
+            }
+            asnMain.setIT_ASN_ITEM(IT_ASN_ITEM);
+            //asnMain.setSUPPLIER_CODE("108207");
+            data.put("data", asnMain);
+            EDIX5JsonHttpClient edix5JsonHttpClient = new EDIX5JsonHttpClient(xmediConfiguration.getX5appid(), xmediConfiguration.getX5appkey(), xmediConfiguration.getX5createAsnUrl());
+            X5Response<Object> createAsn = edix5JsonHttpClient.post(data, xmediConfiguration, baseDao, "CreateAsn");
+            result.put("header", createAsn.getHeader());
+            result.put("body", createAsn.getBody());
+        }
+        return result;
+    }
+
     public static String unescapeJsonWithJackson(String jsonString) {
         try {
             ObjectMapper mapper = new ObjectMapper();

+ 5 - 6
src/main/java/com/uas/eis/task/httpclient/EDIX5JsonHttpClient.java

@@ -3,7 +3,6 @@ package com.uas.eis.task.httpclient;
 import com.alibaba.fastjson.JSON;
 import com.uas.eis.beans.x5domain.*;
 import com.uas.eis.dao.BaseDao;
-import com.uas.eis.sdk.dto.ConfirmPurchase;
 import com.uas.eis.utils.X5StringUtils;
 import com.uas.eis.utils.XMEDIConfiguration;
 import org.apache.commons.codec.digest.DigestUtils;
@@ -40,8 +39,8 @@ public class EDIX5JsonHttpClient extends X5HttpClient {
         String kind="";
         if("ConfirmPurchase".equals(type)){
             kind="采购订单确认";
-        }else if("ProductWIP".equals(type)){
-            kind="物料WIP同步";
+        }else if("CreateAsn".equals(type)){
+            kind="创建ASN";
         }
         X5Response<T> x5Response;
         if (X5StringUtils.isEmpty(appid) || X5StringUtils.isEmpty(appkey) || X5StringUtils.isEmpty(url)) {
@@ -95,7 +94,7 @@ public class EDIX5JsonHttpClient extends X5HttpClient {
                     baseDao.execute("insert into XIAOMIDOCKINGLOG(ML_ID,ML_DATE,ML_CONTENT,ML_RESULT,ML_TYPE)" +
                             "values(XIAOMIDOCKINGLOG_seq.nextval,sysdate,'上传失败!','状态码:"+x5Response.getHeader().getCode() + " 错误描述:" + x5Response.getHeader().getDesc()+"','"+kind+"')");
                     Map<String,Object> datas = (Map<String,Object>) body;
-                    ConfirmPurchase confirmPurchase = (ConfirmPurchase) datas.get("data");
+ //                   ConfirmPurchase confirmPurchase = (ConfirmPurchase) datas.get("data");
 //                    Map<String,Object> datas = (Map<String,Object>) body;
 //                    List<Map<String,Object>> list = (List<Map<String,Object>>) datas.get("data");
 //                    if(list.size()>0){
@@ -107,7 +106,7 @@ public class EDIX5JsonHttpClient extends X5HttpClient {
                 baseDao.execute("insert into XIAOMIDOCKINGLOG(ML_ID,ML_DATE,ML_CONTENT,ML_RESULT,ML_TYPE)" +
                         "values(XIAOMIDOCKINGLOG_seq.nextval,sysdate,'上传失败!','"+statusLine.getStatusCode() + " " + statusLine.getReasonPhrase()+"','"+kind+"')");
                 Map<String,Object> datas = (Map<String,Object>) body;
-                ConfirmPurchase confirmPurchase = (ConfirmPurchase) datas.get("data");
+ //               ConfirmPurchase confirmPurchase = (ConfirmPurchase) datas.get("data");
 //                Map<String,Object> datas = (Map<String,Object>) body;
 //                List<Map<String,Object>> list = (List<Map<String,Object>>) datas.get("data");
 //                if(list.size()>0){
@@ -121,7 +120,7 @@ public class EDIX5JsonHttpClient extends X5HttpClient {
             baseDao.execute("insert into XIAOMIDOCKINGLOG(ML_ID,ML_DATE,ML_CONTENT,ML_RESULT,ML_TYPE)" +
                     "values(XIAOMIDOCKINGLOG_seq.nextval,sysdate,'上传失败!','"+ ex.getMessage()+"','"+kind+"')");
             Map<String,Object> datas = (Map<String,Object>) body;
-            ConfirmPurchase confirmPurchase = (ConfirmPurchase) datas.get("data");
+//            ConfirmPurchase confirmPurchase = (ConfirmPurchase) datas.get("data");
 //            List<Map<String,Object>> list = (List<Map<String,Object>>) datas.get("data");
 //            if(list.size()>0){
 //                baseDao.execute("update CUSTOMTABLE set CT_ERROR='"+ex.getMessage()+"',ct_senddate=sysdate where ct_id="+list.get(0).get("ct_id"));

+ 11 - 0
src/main/java/com/uas/eis/utils/XMEDIConfiguration.java

@@ -81,6 +81,9 @@ public class XMEDIConfiguration {
     @Value("${xmedi.x5vendercodeSZ}")
     private String x5vendercodeSZ;
 
+    @Value("${xmedi.x5createAsnUrl}")
+    private String x5createAsnUrl;
+
     public String getUsername() {
         return username;
     }
@@ -184,4 +187,12 @@ public class XMEDIConfiguration {
     public void setX5vendercodeSZ(String x5vendercodeSZ) {
         this.x5vendercodeSZ = x5vendercodeSZ;
     }
+
+    public String getX5createAsnUrl() {
+        return x5createAsnUrl;
+    }
+
+    public void setX5createAsnUrl(String x5createAsnUrl) {
+        this.x5createAsnUrl = x5createAsnUrl;
+    }
 }