cdk
2025-11-13 2a1695b65cf2717d60863d0b7aeefc02b4293d16
增加BOM查询的接口代码
已修改3个文件
已添加2个文件
229 ■■■■■ 文件已修改
Controllers/Kingdee/ErpBOMController.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/ErpKc.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/ErpMesKc.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/ErpBOMManager.cs 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/ErpKcManager.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Kingdee/ErpBOMController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
using System.Dynamic;
using Microsoft.AspNetCore.Mvc;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.util;
using MES.Service.service.Kingdee;
namespace NewPdaSqlServer.Controllers.Kingdee;
[ApiController]
[Route("api/[controller]")]
public class ErpBOMController : ControllerBase
{
    private readonly ErpBOMManager kc = new();
    //
    [HttpPost("Save")]
    public ResponseResult Save()
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos = kc.QueryErpBOM();
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
}
Dto/ErpKc.cs
@@ -14,4 +14,15 @@
        public string? FSTOREURNUM { get; set; }
        public string? FStockOrgId { get; set; }
    }
    public class ErpBom
    {
        public string? FITEMPPROPERTY { get; set; }
        public string? FMATERIALID { get; set; }
        public string? FITEMNAME { get; set; }
        public string? FENTRYID { get; set; }
        public string? FCHILDITEMNAME { get; set; }
        public string? FNUMERATOR { get; set; }
        public string? FDENOMINATOR { get; set; }
    }
}
entity/ErpMesKc.cs
@@ -48,3 +48,34 @@
    public decimal? FStockOrgId { get; set; }
}
[SugarTable("ERP_BOM")]
public class ErpBOM
{
    [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
    public Guid ID { get; set; }
    /// <summary>
    ///     é»˜è®¤å€¼: (newid())
    /// </summary>
    [SugarColumn(ColumnName = "ItemProperty")]
    public string? ItemProperty { get; set; }
    [SugarColumn(ColumnName = "ItemId")]
    public int? ItemId { get; set; }
    [SugarColumn(ColumnName = "ItemName")]
    public string? ItemName { get; set; }
    [SugarColumn(ColumnName = "ChildItemId")]
    public int? ChildItemId { get; set; }
    [SugarColumn(ColumnName = "ChildItemName")]
    public string? ChildItemName { get; set; }
    [SugarColumn(ColumnName = "Numerator")]
    public decimal? Numerator { get; set; }
    [SugarColumn(ColumnName = "Denominator")]
    public decimal? Denominator { get; set; }
}
service/ErpBOMManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,137 @@

using Kingdee.CDP.WebApi.SDK;
using MES.Service.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.util;
using Newtonsoft.Json;
using SqlSugar;
using System.Text;
namespace MES.Service.service.Kingdee;
public class ErpBOMManager : Repository<ErpBOM>
{
    #region èŽ·å–BOM
    public bool QueryErpBOM()
    {
        List<ErpBom> bom = GetErpBOM();
        // æ£€æŸ¥è¿”回结果是否为空
        if (bom == null || bom.Count == 0)
        {
            throw new NotImplementedException("返回结果为空");
        }
        else
        {
            var baseObjects = MapErpBOMtoMes(bom);
            return UseTransaction(db =>
            {
                return SaveBOMData(db, baseObjects) ? 1 : 0;
            }) > 0;
        }
    }
    private bool SaveBOMData(SqlSugarScope db, List<ErpBOM> kcc)
    {
        Db.Deleteable<ErpBOM>()
          .ExecuteCommand();
        var save = base.InsertRange(kcc);
        if (save) return true;
        throw new NotImplementedException("插入失败");
    }
    public List<ErpBom> GetErpBOM()
    {
        //注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。
        //注意 2:必须先配置第三方系统登录授权信息后,再进行业务操作,详情参考各语言版本SDK介绍中的登录配置文件说明。
        //读取配置,初始化SDK
        K3CloudApi client = new K3CloudApi();
        //用于记录结果
        StringBuilder Info = new StringBuilder();
        //业务对象标识
        string formId = "ENG_BOM";
        DateTime dt = DateTime.Now;
        //查询字段集合,即返回哪些数据,不能为空,根据不同业务单据填写不同的字段名,以下仅为示例
        //string fieldKeys = "FCod,FFileId,FRelevantObject";
        //string FilterString = "FID='-2146304'";
        string fieldKeys = "FITEMPPROPERTY ,FMATERIALID  ,FITEMNAME ,FTreeEntity_FENTRYID ,FCHILDITEMNAME ,FNUMERATOR , FDENOMINATOR";
        var filterString = new[]
                            {
                                new
                                {
                                    FieldName = "FITEMPPROPERTY",
                                    Compare = "29",
                                    Value = "3",
                                    Left = "(",
                                    Right = ")",
                                    Logic = 0
                                }
                            };
        var param = new QueryParams()
        {
            FormId = formId,
            FieldKeys = fieldKeys,
            FilterString = filterString
        };
        //调用接口
        var result = client.ExecuteBillQuery(param.ToJson());
        return result.Select(s =>
        {
            var entity = new ErpBom
            {
                FITEMPPROPERTY = s[0]?.ToString(),
                FMATERIALID = s[1]?.ToString(),
                FITEMNAME = s[2]?.ToString(),
                FENTRYID = s[3]?.ToString(),
                FCHILDITEMNAME = s[4]?.ToString(),
                FNUMERATOR = s[5]?.ToString(),
                FDENOMINATOR = s[6]?.ToString()
            };
            return entity;
        }).ToList();
    }
    private class QueryParams :BaseEntify
    {
        public string FormId { get; set; }
        public string FieldKeys { get; set; }
        public object[] FilterString { get; set; }
    }
    private List<ErpBOM> MapErpBOMtoMes(List<ErpBom> dtoList)
    {
        var ErpMesBomList = new List<ErpBOM>();
        foreach (var dto in dtoList)
        {
            var kc = new ErpBOM
            {
                ID = Guid.NewGuid(),
                ItemProperty = dto.FITEMPPROPERTY,
                ItemId = Convert.ToInt32(dto.FMATERIALID),
                ItemName = dto.FITEMNAME,
                ChildItemId = Convert.ToInt32(dto.FENTRYID),
                ChildItemName = dto.FCHILDITEMNAME,
                Numerator = Convert.ToDecimal(dto.FNUMERATOR),
                Denominator = Convert.ToDecimal(dto.FDENOMINATOR)
            };
            ErpMesBomList.Add(kc);
        }
        return ErpMesBomList;
    }
    #endregion
}
service/ErpKcManager.cs
@@ -1,13 +1,15 @@

using Kingdee.CDP.WebApi.SDK;
using MES.Service.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.util;
using Newtonsoft.Json;
using SqlSugar;
using NewPdaSqlServer.DB;
using System.Text;
using NewPdaSqlServer.Dto;
using Microsoft.AspNetCore.Mvc;
using MES.Service.Models;
namespace MES.Service.service.Kingdee;