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);
|
}
|
}
|
}
|