新火炬后端单体项目初始化代码
zhangherong
2025-07-29 068ebcfcabb9e4ea74bcddaafab1e66232e7fc8a
art: SAP-同步生产订单接口测试
已添加4个文件
已修改1个文件
204 ■■■■■ 文件已修改
src/main/java/org/jeecg/modules/sap/FunctionConst.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/sap/controller/SAPTestController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/sap/dto/ProductionOrderDTO.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/sap/service/ProductionOrderSync.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/sap/service/impl/ProductionOrderSyncImpl.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/sap/FunctionConst.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package org.jeecg.modules.sap;
public class FunctionConst {
    //1.生产订单同步接口
    public static String ZPPF_033_1 = "ZPPF_033_1";
    //2.订单BOM同步接口
    public static String ZPPF_033_3 = "ZPPF_033_3";
    //3.产品工序同步接口
    public static String ZPPF_033_2 = "ZPPF_033_2";
    //4.生产订单工序报工接口、生产订单入库、不合格品处理
    public static String ZMES_PRODORDCONF_CREATE_TT2301 = "ZMES_PRODORDCONF_CREATE_TT2301";
    //5.生产订单投料接口
    public static String ZMES_GOODSMVT_CREATE_2301 = "ZMES_GOODSMVT_CREATE_2301";
    //6.生产订单关闭接口
    public static String ZPPF_019 = "ZPPF_019";
}
src/main/java/org/jeecg/modules/sap/controller/SAPTestController.java
@@ -4,6 +4,7 @@
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.sap.service.ProductionOrderSync;
import org.jeecg.modules.sap.service.SAPService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -17,6 +18,8 @@
public class SAPTestController {
    @Autowired
    private SAPService sapService;
    @Autowired
    private ProductionOrderSync productionOrderSync;
    @ApiOperation(value = "SAP集成测试-测试接口", notes = "SAP集成测试-测试接口")
    @GetMapping("/test")
@@ -24,4 +27,11 @@
        String test = sapService.test();
        return Result.ok(test);
    }
    @ApiOperation(value = "SAP集成测试-测试接口", notes = "SAP集成测试-测试接口")
    @GetMapping("/syncProductionOrder")
    public Result<?> syncProductionOrder() {
        productionOrderSync.syncProductionOrder();
        return Result.ok();
    }
}
src/main/java/org/jeecg/modules/sap/dto/ProductionOrderDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package org.jeecg.modules.sap.dto;
import lombok.Data;
@Data
public class ProductionOrderDTO {
    /** é”€å”®è®¢å•行项  */
    private String KDPOS;
    /** æ‰¹å·  */
    private String CHARG;
    /** ç‰©æ–™æè¿°ï¼ˆçŸ­æ–‡æœ¬ï¼‰  */
    private String MAKTX;
    /** ç‰©æ–™å· */
    private String MATNR;
    /** é”€å”®è®¢å•号 */
    private String KDAUF;
    /** è®¢å•号 */
    private String AUFNR;
    /** è®¢å•类型 */
    private String DAUAT;
    /** è®¢å•数量总计 */
    private String GAMNG;
    /** åŸºæœ¬è®¡é‡å•位 */
    private String GMEIN;
    /** è®¢å•优先级 */
    private String APRIO;
    /** è®¢å•中工序的工艺路线号 */
    private String AUFPL;
    /** ç‰©æ–™å• */
    private String STLNR;
    /** å·¥åŽ‚ */
    private String DWERK;
    /** åç§° */
    private String NAME1;
    /** ç”Ÿäº§ç®¡ç†å‘˜ */
    private String FEVOR;
    /** ç”Ÿäº§è°ƒåº¦å‘˜æè¿°  */
    private String TXT;
    /** ä¿®æ”¹æ–‡æ¡£ä¸­çš„个人负责的用户名 */
    private String USNAM;
    /** åˆ›å»ºä¿®æ”¹æ–‡æ¡£çš„æ•°æ®  */
    private String UDATE;
    /** ä¸Šæ¬¡æ›´æ”¹çš„æ—¥æœŸ */
    private String LAEDA;
    /** æ—¶é—´å·²æ›´æ”¹  */
    private String TIMES;
    /** å¯¹è±¡çš„单个状态 (短form) */
    private String TXT04;
    /** å¯¹è±¡çŠ¶æ€ */
    private String TXT30;
    /** è®¢å•开始日期  */
    private String GSTRP;
    /** åŸºæœ¬å®Œæˆæ—¥æœŸ */
    private String GLTRP;
}
src/main/java/org/jeecg/modules/sap/service/ProductionOrderSync.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
package org.jeecg.modules.sap.service;
public interface ProductionOrderSync {
    /**
     * åŒæ­¥ç”Ÿæˆè®¢å•
     */
    void syncProductionOrder();
}
src/main/java/org/jeecg/modules/sap/service/impl/ProductionOrderSyncImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,115 @@
package org.jeecg.modules.sap.service.impl;
import com.sap.conn.jco.*;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.config.sap.SapRfcConnectionManager;
import org.jeecg.modules.sap.FunctionConst;
import org.jeecg.modules.sap.dto.ProductionOrderDTO;
import org.jeecg.modules.sap.service.ProductionOrderSync;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
 * ç”Ÿæˆè®¢å•同步服务
 */
@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() {
        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 æœªæ‰¾åˆ°ï¼");
            }
            // è®¾ç½®è¾“入参数
            //订单号查询条件
//            JCoTable AUFNRTable = function.getTableParameterList().getTable("ZTAB_AUFNR");
            //订单类型 æ ‡å‡†ç”Ÿäº§è®¢å•
            JCoTable AUARTTable = function.getTableParameterList().getTable("ZTAB_AUART");
            AUARTTable.appendRow();
            AUARTTable.setValue("AUART", orderTypeCode1);
            //八分厂调度
            JCoTable FEVORTable = function.getTableParameterList().getTable("ZTAB_FEVOR");
            FEVORTable.appendRow();
            FEVORTable.setValue("FEVOR", productionManager);
            //新火炬
            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;
            }
            // èŽ·å–è¾“å‡ºå‚æ•°
            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);
        }
    }
}