MES.Service/service/PLM/PLMManager.cs
@@ -7,9 +7,19 @@
public class PLMManager
{
    public List<BaseObject> RetrieveDrawings(string ItemNo)
    public List<StdDocument> RetrieveDrawings(string ItemNo)
    {
        return GetPlmCfgBase(ItemNo);
        List<BaseObject> baseObjects = GetPlmCfgBase(ItemNo);
        List<RelatedObject> relatedObjects = GetPlmCfgRelatedObject(baseObjects[0].FID);
        // 检查返回结果是否为空
        if (relatedObjects == null || !relatedObjects.Any())
        {
            throw new NotImplementedException("返回结果为空");
        }
        List<StdDocument> stdDocuments = GetPlmStdDocument(relatedObjects);
        return stdDocuments;
    }
@@ -29,7 +39,7 @@
        //string fieldKeys = "FCode,FFileId,FRelevantObject";
        //string FilterString = "FID='-2146304'";
        string fieldKeys = "FID,FCode,FName";
        string FilterString = "FCode='5.03.14.1414'";
        string FilterString = string.Format(@"FCode='{0}'", ItemNo);
        string OrderString = "";
        int TopRowCount = 0;
        int StartRow = 0;
@@ -59,4 +69,103 @@
            return entity;
        }).ToList();
    }
    public List<RelatedObject> GetPlmCfgRelatedObject(long? FRelatedObject)
    {
        //注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。
        //注意 2:必须先配置第三方系统登录授权信息后,再进行业务操作,详情参考各语言版本SDK介绍中的登录配置文件说明。
        //读取配置,初始化SDK
        K3CloudApi client = new K3CloudApi();
        //用于记录结果
        StringBuilder Info = new StringBuilder();
        //业务对象标识
        //string formId = "PLM_STD_DOCUMENT";
        string formId = "PLM_CFG_RELATEDOBJECT";
        DateTime dt = DateTime.Now;
        //查询字段集合,即返回哪些数据,不能为空,根据不同业务单据填写不同的字段名,以下仅为示例
        //string fieldKeys = "FCode,FFileId,FRelevantObject";
        //string FilterString = "FID='-2146304'";
        string fieldKeys = "FID,FRE_FCode,FRelatedObject";
        string FilterString = string.Format(@"FRelatedObject='{0}'", FRelatedObject);
        string OrderString = "";
        int TopRowCount = 0;
        int StartRow = 0;
        int Limit = 0;
        var param = new QueryParam()
        {
            FormId = formId,
            FieldKeys = fieldKeys,
            FilterString = FilterString,
            OrderString = OrderString,
            TopRowCount = TopRowCount,
            StartRow = StartRow,
            Limit = Limit
        };
        //调用接口
        var result = client.ExecuteBillQuery(param.ToJson());
        return result.Select(s =>
        {
            var entity = new RelatedObject
            {
                FID = (long)s[0],
                FRE_FCode = (string)s[1],
                FRelatedObject = (long)s[2],
            };
            return entity;
        }).ToList();
    }
    public List<StdDocument> GetPlmStdDocument(List<RelatedObject> relatedObjects)
    {
        //注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。
        //注意 2:必须先配置第三方系统登录授权信息后,再进行业务操作,详情参考各语言版本SDK介绍中的登录配置文件说明。
        //读取配置,初始化SDK
        K3CloudApi client = new K3CloudApi();
        //用于记录结果
        StringBuilder Info = new StringBuilder();
        //业务对象标识
        string formId = "PLM_STD_DOCUMENT";
        DateTime dt = DateTime.Now;
        //查询字段集合,即返回哪些数据,不能为空,根据不同业务单据填写不同的字段名,以下仅为示例
        string fieldKeys = "FID,FCode,FName,FPhysicalFileName,FFileId,FRelevantObject";
        // 提取 FID 值
        var fidList = relatedObjects.Select(obj => obj.FID.ToString()).ToList();
        // 将 FID 值用逗号分隔,并包裹在单引号中
        string fids = string.Join(",", fidList.Select(fid => $"'{fid}'"));
        // 构建 FilterString
        string FilterString = $"FID in ({fids})";
        string OrderString = "";
        int TopRowCount = 0;
        int StartRow = 0;
        int Limit = 0;
        var param = new QueryParam()
        {
            FormId = formId,
            FieldKeys = fieldKeys,
            FilterString = FilterString,
            OrderString = OrderString,
            TopRowCount = TopRowCount,
            StartRow = StartRow,
            Limit = Limit
        };
        //调用接口
        var result = client.ExecuteBillQuery(param.ToJson());
        return result.Select(s =>
        {
            var entity = new StdDocument
            {
                FID = (long)s[0],
                FCode = (string)s[1],
                FName = (string)s[2],
                FPhysicalFileName = (string)s[3],
                FFileId = (string)s[4],
                FRelevantObject = (string)s[5],
            };
            return entity;
        }).ToList();
    }
}