春风项目四线(合箱线、总装线)
wujian
2024-10-25 9906e6b188bf2c36dddc0d5adadbf02e69ea3e4b
jcdm-main/src/main/java/com/jcdm/main/webservice/service/ReceivingServices.java
@@ -1,9 +1,15 @@
package com.jcdm.main.webservice.service;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.jcdm.common.exception.ServiceException;
import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService;
import com.jcdm.main.da.opcuaconfig.init.BeanUtils;
import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo;
@@ -19,37 +25,53 @@
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.commons.io.IOUtils;
import com.jcdm.main.om.productionOrde.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import javax.swing.border.Border;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.List;
public class ReceivingServices {
    private static final Logger logger = LoggerFactory.getLogger("sys-user");
    @Autowired
//    private static IOmProductionOrdeInfoService omProductionOrdeInfoService;
    private static IOmProductionOrdeInfoService omProductionOrdeInfoService = BeanUtils.getBean(IOmProductionOrdeInfoService.class);
    public static final String ProductionPlanInformationUrl = "http://podqapp.cfmoto.com.cn:50200/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_MES&receiverParty=&receiverService=&interface=SI_ZPP_CF_MES_005_SYN_OUT&interfaceNamespace=http://cfmoto.com/xi/MES";
    public static final String ProductionPlanInformationUrl = "http://popappdb.cfmoto.com.cn:50100/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_MES&receiverParty=&receiverService=&interface=SI_ZPP_CF_MES_005_SYN_OUT&interfaceNamespace=http%3A%2F%2Fcfmoto.com%2Fxi%2FMES";
//    public static final String ProductionPlanInformationUrl = "http://podqapp.cfmoto.com.cn:50200/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_MES&receiverParty=&receiverService=&interface=SI_ZPP_CF_MES_005_SYN_OUT&interfaceNamespace=http://cfmoto.com/xi/MES";
    public static void main(String[] args) throws Exception {
//        getInterfaceInformationXml(ProductionPlanInformationUrl,getProductionPlanInformationXml("A0055577"));
//        test1();
//        String serviceUrl = "http://podqapp.cfmoto.com.cn:50200/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_MES&receiverParty=&receiverService=&interface=SI_ZPP_CF_MES_005_SYN_OUT&interfaceNamespace=http://cfmoto.com/xi/MES";
//
//        String serviceUrl = "http://podqapp.cfmoto.com.cn:50100/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_MES&receiverParty=&receiverService=&interface=SI_ZPP_CF_MES_005_SYN_OUT&interfaceNamespace=http://cfmoto.com/xi/MES";
//        String serviceUrl = "http://podqapp.cfmoto.com.cn:50100/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_MES&receiverParty=&receiverService=&interface=SI_ZPP_CF_BC_001_SYN_OUT&interfaceNamespace=http://cfmoto.com/xi/MES";
////        String content = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:sap-com:document:sap:rfc:functions\">\n" +
////                "   <soapenv:Header/>\n" +
////                "   <soapenv:Body>\n" +
////                "      <urn:ZPP_CF_MES_005>\n" +
////                "         <!--Optional:-->\n" +
////                "         <IV_WERKS>1000</IV_WERKS>\n" +
////                "         <!--Optional:-->\n" +
////                "         <IV_ZSCTZD>A0055577</IV_ZSCTZD>\n" +
////                "      </urn:ZPP_CF_MES_005>\n" +
////                "   </soapenv:Body>\n" +
////                "</soapenv:Envelope>";
//        String content = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:sap-com:document:sap:rfc:functions\">\n" +
//                "   <soapenv:Header/>\n" +
//                "   <soapenv:Body>\n" +
//                "      <urn:ZPP_CF_MES_005>\n" +
//                "         <!--Optional:-->\n" +
//                "         <IV_WERKS>1000</IV_WERKS>\n" +
//                "         <!--Optional:-->\n" +
//                "         <IV_ZSCTZD>A0055577</IV_ZSCTZD>\n" +
//                "      </urn:ZPP_CF_MES_005>\n" +
//                "      <urn:ZPP_BC_001>\n" +
//                "         <IV_AUFNR>000010569212</IV_AUFNR>\n" +
//                "          <IV_VORNR>0010</IV_VORNR>\n" +
//                "           <IV_LMNGA>1</IV_LMNGA>\n" +
//                "           <IV_XMNGA>0</IV_XMNGA>   \n" +
//                "         <IV_STATU>1</IV_STATU>  \n" +
//                "      </urn:ZPP_BC_001>\n" +
//                "   </soapenv:Body>\n" +
//                "</soapenv:Envelope>";
//        // HttpClient发送SOAP请求
@@ -79,35 +101,55 @@
//            InputStream is = postMethod.getResponseBodyAsStream();
//            // 获取请求结果字符串
//            String result = IOUtils.toString(is);
//            String jsonStr = xmlToJSON2(result);
//            Gson gson = new Gson();
//            // 将json字符串转换成对象
//            ItemList itemList = gson.fromJson(jsonStr, ItemList.class);
////            String jsonStr = xmlToJSON2(result);
////            Gson gson = new Gson();
////            // 将json字符串转换成对象
////            ItemList itemList = gson.fromJson(jsonStr, ItemList.class);
//            System.out.println("返回结果:" + result);
//        } else {
//            System.out.println("错误代码:" + status + ":" + postMethod.getResponseBodyAsString());
//        }
    }
    
    public static void insertWebserviceData(String str) {
        String result = getInterfaceInformationXml(ProductionPlanInformationUrl, getProductionPlanInformationXml(str));
    public static void insertWebserviceData(String factory,String str) {
        String result = getInterfaceInformationXml(ProductionPlanInformationUrl, getProductionPlanInformationXml(factory,str));
        logger.info("messageLocation1,"+result);
        String jsonStr = xmlToJSON2(result);
        Gson gson = new Gson();
        // 将json字符串转换成对象
        ItemList itemList = gson.fromJson(jsonStr, ItemList.class);
        for (Item item : itemList.getItem()) {
            OmProductionOrdeInfo ordeInfo = new OmProductionOrdeInfo();
            ordeInfo.setProductCode(item.getPLNBEZ());
            ordeInfo.setProductName(item.getMAKTX());
            ordeInfo.setLineCode(item.getFEVOR());
            ordeInfo.setWorkOrderNo(item.getAUFNR());
            ordeInfo.setPlanQty((long) Double.parseDouble(item.getPSMNG()));
            ordeInfo.setProductionNotice(item.getZSCTZD());
            ordeInfo.setTypeZ(item.getFERTH());
            ordeInfo.setCreateUser(item.getZUSER());
            ordeInfo.setCreateTime(item.getZDATE());
            omProductionOrdeInfoService.insertOmProductionOrdeInfo(ordeInfo);
        logger.info("messageLocation5,"+jsonStr);
        if (StrUtil.isNotBlank(jsonStr)){
            if (!jsonStr.contains("[") && !jsonStr.contains("]")){
                StringBuilder stringBuilder = new StringBuilder(jsonStr);
                stringBuilder.insert(8,"[");
                stringBuilder.insert(jsonStr.length(),"]");
                jsonStr = stringBuilder.toString();
                logger.info("messageLocation6,"+jsonStr);
            }
            Gson gson = new Gson();
            // 将json字符串转换成对象
            ItemList itemList = gson.fromJson(jsonStr, ItemList.class);
            if (ObjectUtil.isNotNull(itemList)){
                logger.info("messageLocation7,"+ itemList);
            }
            for (Item item : itemList.getItem()) {
                logger.info("messageLocation8,"+item);
                OmProductionOrdeInfo ordeInfo = new OmProductionOrdeInfo();
                ordeInfo.setWorkshopCode(item.getWERKS());
                ordeInfo.setProductCode(item.getPLNBEZ());
                ordeInfo.setProductName(item.getMAKTX());
                ordeInfo.setLineCode(item.getFEVOR());
                ordeInfo.setWorkOrderNo(item.getAUFNR());
                ordeInfo.setPlanQty((long) Double.parseDouble(item.getPSMNG()));
                ordeInfo.setProductionNotice(item.getZSCTZD());
                ordeInfo.setTypeZ(item.getFERTH());
                ordeInfo.setCreateUser(item.getZUSER());
                //ordeInfo.setCreateTime(item.getZDATE());
                ordeInfo.setDemandDate(item.getGSTRP());//开工日期
                omProductionOrdeInfoService.insertOmProductionOrdeInfo(ordeInfo);
            }
        } else {
            throw new ServiceException("未接收到数据,请检查");
        }
    }
    public static String getInterfaceInformationXml(String url,String xml){
@@ -133,43 +175,41 @@
        }
        // 设置请求头部,否则可能会报 “no SOAPAction header” 的错误
        postMethod.setRequestHeader("SOAPAction", "");
        postMethod.setRequestHeader("SOAPAction", "application/x-www-form-urlencoded; charset=UTF-8");
        // 设置请求体
        postMethod.setRequestEntity(requestEntity);
        int status = 0;
        try {
            status = client.executeMethod(postMethod);
        } catch (IOException e) {
            logger.info("errorLocation1,"+e);
            throw new RuntimeException(e);
        }
        if (status == 200) {// 成功
            InputStream is = null;
            try {
                is = postMethod.getResponseBodyAsStream();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            // 获取请求结果字符串
            String result = null;
            try {
                result = IOUtils.toString(is);
                result = postMethod.getResponseBodyAsString();
                logger.info("二次输出流333333,{}",result);
                return result;
            } catch (IOException e) {
                logger.info("errorLocation2,"+e);
                throw new RuntimeException(e);
            }
        }
        return "接口调用错误";
    }
    public static String getProductionPlanInformationXml(String str){
    public static String getProductionPlanInformationXml(String factory,String planNo){
        String content = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:sap-com:document:sap:rfc:functions\">\n" +
                "   <soapenv:Header/>\n" +
                "   <soapenv:Body>\n" +
                "      <urn:ZPP_CF_MES_005>\n" +
                "         <!--Optional:-->\n" +
                "         <IV_WERKS>1000</IV_WERKS>\n" +
                "         <IV_WERKS>"+factory+"</IV_WERKS>\n" +
                "         <!--Optional:-->\n" +
                "         <IV_ZSCTZD>"+str+"</IV_ZSCTZD>\n" +
                "         <IV_ZSCTZD>"+planNo+"</IV_ZSCTZD>\n" +
                "      </urn:ZPP_CF_MES_005>\n" +
                "   </soapenv:Body>\n" +
                "</soapenv:Envelope>";
@@ -184,15 +224,94 @@
     */
    public static String xmlToJSON2(String xmlStr){
        JSONObject jsonObject1 = cn.hutool.json.XML.toJSONObject(xmlStr, true);
        String data = new String();
        Gson gson = new Gson();
        JsonObject jsonObject2 = gson.fromJson(jsonObject1.toString(), JsonObject.class);
        JsonObject etData = jsonObject2
        JsonObject result = jsonObject2
                .getAsJsonObject("SOAP:Envelope")
                .getAsJsonObject("SOAP:Body")
                .getAsJsonObject("n0:ZPP_CF_MES_005.Response")
                .getAsJsonObject("ET_DATA");
        return etData.toString();
                .getAsJsonObject("n0:ZPP_CF_MES_005.Response");
        if (ObjectUtil.isNotNull(result)){
            logger.info("messageLocation2,"+result);
            String string = result.get("EV_MESSAGE").toString();
//            if (string.contains("查询成功")){
//                logger.info("messageLocation3,"+string);
//                JsonObject etData = jsonObject2
//                        .getAsJsonObject("SOAP:Envelope")
//                        .getAsJsonObject("SOAP:Body")
//                        .getAsJsonObject("n0:ZPP_CF_MES_005.Response")
//                        .getAsJsonObject("ET_DATA");
//                data = etData.toString();
//                logger.info("messageLocation4,"+data);
//            }
            logger.info("messageLocation3,"+string);
            JsonObject etData = jsonObject2
                    .getAsJsonObject("SOAP:Envelope")
                    .getAsJsonObject("SOAP:Body")
                    .getAsJsonObject("n0:ZPP_CF_MES_005.Response")
                    .getAsJsonObject("ET_DATA");
            data = etData.toString();
            logger.info("messageLocation4,"+data);
        }
        return data;
    }
    /**
     * 方式--贰
     * 使用hutool工具包中的工具转化
     * @param xmlStr
     * @return
     */
    public static String xmlToJSON1(String xmlStr){
        String status = "";
        if(xmlStr.contains("EV_MESSAGE")){
            JSONObject jsonObject1 = cn.hutool.json.XML.toJSONObject(xmlStr, true);
            ObjectMapper objectMapper = new ObjectMapper();
            JsonNode rootNode = null;
            try {
                rootNode = objectMapper.readTree(String.valueOf(jsonObject1));
            } catch (JsonProcessingException e) {
                throw new RuntimeException(e);
            }
            String evStatus = rootNode
                    .path("SOAP:Envelope")
                    .path("SOAP:Body")
                    .path("n0:ZPP_BC_001.Response")
                    .path("EV_MESSAGE")
                    .asText();
            status = evStatus;
        }
        return status;
    }
    /**
     * 方式--贰
     * 使用hutool工具包中的工具转化
     * @param xmlStr
     * @return
     */
    public static String xmlToJSON3(String xmlStr){
        String status = "";
        if(xmlStr.contains("EV_STATUS")){
            JSONObject jsonObject1 = cn.hutool.json.XML.toJSONObject(xmlStr, true);
            ObjectMapper objectMapper = new ObjectMapper();
            JsonNode rootNode = null;
            try {
                rootNode = objectMapper.readTree(String.valueOf(jsonObject1));
            } catch (JsonProcessingException e) {
                throw new RuntimeException(e);
            }
            String evStatus = rootNode
                    .path("SOAP:Envelope")
                    .path("SOAP:Body")
                    .path("n0:ZPP_BC_001.Response")
                    .path("EV_STATUS")
                    .asText();
            status = evStatus;
        }
        return status;
    }
}