新火炬后端单体项目初始化代码
zhangherong
8 天以前 9825ca9fb40954a2a4044b4c224486a2f813d243
src/main/java/org/jeecg/modules/sap/service/impl/ProductionOrderSyncImpl.java
@@ -1,7 +1,14 @@
package org.jeecg.modules.sap.service.impl;
import com.sap.conn.jco.*;
import com.alibaba.fastjson.JSONObject;
import com.sap.conn.jco.JCoDestination;
import com.sap.conn.jco.JCoFunction;
import com.sap.conn.jco.JCoRepository;
import com.sap.conn.jco.JCoTable;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.aspect.annotation.ApiLog;
import org.jeecg.common.constant.ApiLogCategoryEnum;
import org.jeecg.config.sap.SapRfcConnectionManager;
import org.jeecg.modules.sap.FunctionConst;
import org.jeecg.modules.sap.dto.ProductionOrderDTO;
@@ -10,7 +17,9 @@
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 生成订单同步服务
@@ -18,98 +27,139 @@
@Service
@Slf4j
public class ProductionOrderSyncImpl implements ProductionOrderSync {
    //新火炬工厂编码
    private static final String factoryCode = "2301";
    //标准生产订单
    private static final String orderTypeCode1 = "Z001";
    //返工订单  暂时不用
    private static final String orderTypeCode2 = "Z002";
    //八分厂调度员
//    private static final String productionManager = "012";
    private static final String productionManager = "010";
    //生产订单状态 CRTD 新建,REL 下达,TECO 关闭  实际上,只有REL状态的工单才可以进行操作
    private static final String orderStatus = "REL";
    @Autowired
    private SapRfcConnectionManager connectionManager;
    @Override
    public void syncProductionOrder() {
    @ApiLog(apiName = "生产订单同步(ZPPF_033_1)", apiCategory = ApiLogCategoryEnum.SAP)
    public Map<String, Object> syncProductionOrder(String factoryCode, String orderTypeCode, String productionManager, String orderStatus, String createTime, String updateTime) throws Exception {
        Map<String, Object> resultMap = new HashMap<>();
        JCoDestination destination = connectionManager.getDestination();
        try {
            JCoRepository repository = destination.getRepository();
            JCoFunction function = repository.getFunction(FunctionConst.ZPPF_033_1);
            if (function == null) {
                throw new RuntimeException("RFC 函数 ZPPF_033_1 未找到!");
            }
            // 设置输入参数
            //订单号查询条件
        JCoRepository repository = destination.getRepository();
        JCoFunction function = repository.getFunction(FunctionConst.ZPPF_033_1);
        if (function == null) {
            throw new RuntimeException("RFC 函数 ZPPF_033_1 未找到!");
        }
        // 设置输入参数
        //订单号查询条件
//            JCoTable AUFNRTable = function.getTableParameterList().getTable("ZTAB_AUFNR");
            //订单类型 标准生产订单
        List<JSONObject> items = new ArrayList<>();
        //订单类型 标准生产订单
        if(StringUtils.isNotBlank(orderTypeCode)){
            JCoTable AUARTTable = function.getTableParameterList().getTable("ZTAB_AUART");
            AUARTTable.appendRow();
            AUARTTable.setValue("AUART", orderTypeCode1);
            //八分厂调度
            String[] split = orderTypeCode.split(",");
            for(String code : split){
                AUARTTable.appendRow();
                AUARTTable.setValue("AUART", code);
            }
            //组装请求参数
            JSONObject item = new JSONObject();
            item.put("AUART", orderTypeCode);
            items.add(item);
        }
        if(StringUtils.isNotBlank(productionManager)){
            JCoTable FEVORTable = function.getTableParameterList().getTable("ZTAB_FEVOR");
            FEVORTable.appendRow();
            FEVORTable.setValue("FEVOR", productionManager);
            String[] split = productionManager.split(",");
            for(String code : split){
                FEVORTable.appendRow();
                FEVORTable.setValue("FEVOR", code);
            }
            //组装请求参数
            JSONObject item = new JSONObject();
            item.put("FEVOR", productionManager);
            items.add(item);
        }
        if(StringUtils.isNotBlank(factoryCode)){
            //新火炬
            JCoTable WERKSTable = function.getTableParameterList().getTable("ZTAB_WERKS");
            WERKSTable.appendRow();
            WERKSTable.setValue("WERKS", factoryCode);
            //订单状态
            JCoTable TXT04Table = function.getTableParameterList().getTable("ZTAB_TXT04");
            TXT04Table.appendRow();
            TXT04Table.setValue("TXT04", orderStatus);
            // 执行调用
            function.execute(destination);
            //获取返回结果
            String zmess = function.getExportParameterList().getValue("ZMESS").toString();
            String ztype = function.getExportParameterList().getValue("ZTYPE").toString();//S 标识 成功
            if(!"S".equals(ztype)){
                log.error("获取订单信息失败,ZTYPE={}, ZMESS={}", ztype, zmess);
                return;
            String[] split = factoryCode.split(",");
            for(String code : split){
                WERKSTable.appendRow();
                WERKSTable.setValue("WERKS", code);
            }
            // 获取输出参数
            JCoTable outputTable = function.getTableParameterList().getTable("ZTAB_OUT");
            int numRows = outputTable.getNumRows();
            List<ProductionOrderDTO> resultList = new ArrayList<>();
            ProductionOrderDTO dto;
            for (int i = 0; i < numRows; i++) {
                outputTable.setRow(i);
                dto = new ProductionOrderDTO();
                dto.setKDPOS(outputTable.getString("KDPOS"));
                dto.setCHARG(outputTable.getString("CHARG"));
                dto.setMAKTX(outputTable.getString("MAKTX"));
                dto.setMATNR(outputTable.getString("MATNR"));
                dto.setKDAUF(outputTable.getString("KDAUF"));
                dto.setAUFNR(outputTable.getString("AUFNR"));
                dto.setDAUAT(outputTable.getString("DAUAT"));
                dto.setGAMNG(outputTable.getString("GAMNG"));
                dto.setGMEIN(outputTable.getString("GMEIN"));
                dto.setAPRIO(outputTable.getString("APRIO"));
                dto.setAUFPL(outputTable.getString("AUFPL"));
                dto.setSTLNR(outputTable.getString("STLNR"));
                dto.setDWERK(outputTable.getString("DWERK"));
                dto.setNAME1(outputTable.getString("NAME1"));
                dto.setFEVOR(outputTable.getString("FEVOR"));
                dto.setTXT(outputTable.getString("TXT"));
                dto.setUSNAM(outputTable.getString("USNAM"));
                dto.setUDATE(outputTable.getString("UDATE"));
                dto.setLAEDA(outputTable.getString("LAEDA"));
                dto.setTIMES(outputTable.getString("TIMES"));
                dto.setTXT04(outputTable.getString("TXT04"));
                dto.setTXT30(outputTable.getString("TXT30"));
                dto.setGSTRP(outputTable.getString("GSTRP"));
                dto.setGLTRP(outputTable.getString("GLTRP"));
                //添加结果集
                resultList.add(dto);
                log.info(dto.toString());
            }
        } catch (JCoException e) {
            log.error(e.getMessage(), e);
            //组装请求参数
            JSONObject item = new JSONObject();
            item.put("WERKS", factoryCode);
            items.add(item);
        }
        if(StringUtils.isNotBlank(orderStatus)) {
            //新火炬
            JCoTable TXT04Table = function.getTableParameterList().getTable("ZTAB_TXT04");
            String[] split = orderStatus.split(",");
            for(String code : split){
                TXT04Table.appendRow();
                TXT04Table.setValue("TXT04", code);
            }
            //组装请求参数
            JSONObject item = new JSONObject();
            item.put("TXT04", orderStatus);
            items.add(item);
        }
        if(StringUtils.isNotBlank(createTime)){
            JCoTable UDATETable = function.getTableParameterList().getTable("ZTAB_UDATE");
            UDATETable.appendRow();
            UDATETable.setValue("LOW", createTime);
            //组装请求参数
            JSONObject item = new JSONObject();
            item.put("ZTAB_UDATE_LOW", createTime);
            items.add(item);
        }
        if(StringUtils.isNotBlank(updateTime)){
            JCoTable LAEDATable = function.getTableParameterList().getTable("ZTAB_LAEDA");
            LAEDATable.appendRow();
            LAEDATable.setValue("LOW", updateTime);
            //组装请求参数
            JSONObject item = new JSONObject();
            item.put("ZTAB_LAEDA_LOW", updateTime);
            items.add(item);
        }
        // 执行调用
        function.execute(destination);
        //获取返回结果
        String zmess = function.getExportParameterList().getValue("ZMESS").toString();
        String ztype = function.getExportParameterList().getValue("ZTYPE").toString();//S 标识 成功
        // 获取输出参数
        JCoTable outputTable = function.getTableParameterList().getTable("ZTAB_OUT");
        int numRows = outputTable.getNumRows();
        List<ProductionOrderDTO> resultList = new ArrayList<>();
        ProductionOrderDTO dto;
        for (int i = 0; i < numRows; i++) {
            outputTable.setRow(i);
            dto = new ProductionOrderDTO();
            dto.setKDPOS(outputTable.getString("KDPOS"));
            dto.setCHARG(outputTable.getString("CHARG"));
            dto.setMAKTX(outputTable.getString("MAKTX"));
            dto.setMATNR(outputTable.getString("MATNR"));
            dto.setKDAUF(outputTable.getString("KDAUF"));
            dto.setAUFNR(outputTable.getString("AUFNR"));
            dto.setDAUAT(outputTable.getString("DAUAT"));
            dto.setGAMNG(outputTable.getString("GAMNG"));
            dto.setGMEIN(outputTable.getString("GMEIN"));
            dto.setAPRIO(outputTable.getString("APRIO"));
            dto.setAUFPL(outputTable.getString("AUFPL"));
            dto.setSTLNR(outputTable.getString("STLNR"));
            dto.setDWERK(outputTable.getString("DWERK"));
            dto.setNAME1(outputTable.getString("NAME1"));
            dto.setFEVOR(outputTable.getString("FEVOR"));
            dto.setTXT(outputTable.getString("TXT"));
            dto.setUSNAM(outputTable.getString("USNAM"));
            dto.setUDATE(outputTable.getString("UDATE"));
            dto.setLAEDA(outputTable.getString("LAEDA"));
            dto.setTIMES(outputTable.getString("TIMES"));
            dto.setTXT04(outputTable.getString("TXT04"));
            dto.setTXT30(outputTable.getString("TXT30"));
            dto.setGSTRP(outputTable.getString("GSTRP"));
            dto.setGLTRP(outputTable.getString("GLTRP"));
            //添加结果集
            resultList.add(dto);
            log.info(dto.toString());
        }
        resultMap.put("zmess", zmess);
        resultMap.put("ztype", ztype);
        resultMap.put("importParameters", items);
        resultMap.put("result", resultList);
        return resultMap;
    }
}