From 2a1695b65cf2717d60863d0b7aeefc02b4293d16 Mon Sep 17 00:00:00 2001
From: cdk <2441919651@qq.com>
Date: 星期四, 13 十一月 2025 10:15:14 +0800
Subject: [PATCH] 增加BOM查询的接口代码
---
entity/ErpMesKc.cs | 31 +++++++
Controllers/Kingdee/ErpBOMController.cs | 40 ++++++++++
service/ErpKcManager.cs | 10 +-
service/ErpBOMManager.cs | 137 ++++++++++++++++++++++++++++++++++
Dto/ErpKc.cs | 11 ++
5 files changed, 225 insertions(+), 4 deletions(-)
diff --git a/Controllers/Kingdee/ErpBOMController.cs b/Controllers/Kingdee/ErpBOMController.cs
new file mode 100644
index 0000000..b268367
--- /dev/null
+++ b/Controllers/Kingdee/ErpBOMController.cs
@@ -0,0 +1,40 @@
+锘縰sing 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);
+ }
+ }
+}
diff --git a/Dto/ErpKc.cs b/Dto/ErpKc.cs
index a6845de..5b4cbd9 100644
--- a/Dto/ErpKc.cs
+++ b/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; }
+ }
}
diff --git a/entity/ErpMesKc.cs b/entity/ErpMesKc.cs
index 93af660..94e5996 100644
--- a/entity/ErpMesKc.cs
+++ b/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; }
+
+}
diff --git a/service/ErpBOMManager.cs b/service/ErpBOMManager.cs
new file mode 100644
index 0000000..2c045c4
--- /dev/null
+++ b/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
+
+}
diff --git a/service/ErpKcManager.cs b/service/ErpKcManager.cs
index 92f7e32..4986db2 100644
--- a/service/ErpKcManager.cs
+++ b/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;
--
Gitblit v1.9.3