From 90443c7af59e227a33b933a1225417272bd118a3 Mon Sep 17 00:00:00 2001
From: hao <1836460075@qq.com>
Date: 星期五, 13 六月 2025 16:04:29 +0800
Subject: [PATCH] 生产订单入库数

---
 StandardInterface/MESApplication/Controllers/BasicData/ProductionOrderController.cs |    1 
 StandardInterface/MES.Service/service/SRM/MesDeliveryNoteBarcodeManager.cs          |    4 
 StandardInterface/MES.Service/Modes/Womcaa.cs                                       |    7 +
 StandardInterface/MESApplication/Controllers/Kingdee/ErpKcController.cs             |   46 +++++++++
 StandardInterface/MES.Service/Dto/webApi/Inventory.cs                               |    9 +
 StandardInterface/MES.Service/Modes/ErpMesKc.cs                                     |   49 +++++++++
 StandardInterface/MES.Service/service/WomcaaManager.cs                              |    3 
 StandardInterface/MES.Service/Dto/webApi/ErpKc.cs                                   |   19 +++
 StandardInterface/MES.Service/Dto/webApi/ErpCAA.cs                                  |    1 
 StandardInterface/MES.Service/service/Kingdee/ErpKcManager.cs                       |  145 +++++++++++++++++++++++++++++
 StandardInterface/MESApplication/appsettings.json                                   |    2 
 11 files changed, 282 insertions(+), 4 deletions(-)

diff --git a/StandardInterface/MES.Service/Dto/webApi/ErpCAA.cs b/StandardInterface/MES.Service/Dto/webApi/ErpCAA.cs
index ca7db32..c882e0f 100644
--- a/StandardInterface/MES.Service/Dto/webApi/ErpCAA.cs
+++ b/StandardInterface/MES.Service/Dto/webApi/ErpCAA.cs
@@ -73,6 +73,7 @@
   public string? XS_CN { get; set; }  //灏忔椂浜ц兘
   public string? SJ_xs { get; set; }  //瀹為檯绌存暟
     public string? NEXT_Gx { get; set; }  //涓嬮亾宸ュ簭
+    public string? RKS { get; set; }  //鍏ュ簱鏁�
     ////濮斿瀛楁
     //public string? F_ZJXF_DATETIME_YHRQ { get; set; }
     //public string? F_ZJXF_BASE_KH { get; set; }
diff --git a/StandardInterface/MES.Service/Dto/webApi/ErpKc.cs b/StandardInterface/MES.Service/Dto/webApi/ErpKc.cs
new file mode 100644
index 0000000..8c40a48
--- /dev/null
+++ b/StandardInterface/MES.Service/Dto/webApi/ErpKc.cs
@@ -0,0 +1,19 @@
+锘縩amespace MES.Service.Dto.webApi;
+
+public class ErpKc
+{
+    public string? FMaterialId { get; set; }
+    public string? FStockId { get; set; }
+    public string? FMtoNo { get; set; }
+    public string? FLot { get; set; }
+    public string? FStockUnitId { get; set; }
+    public string? FBaseUnitId { get; set; }
+    public string? FStockStatusId { get; set; }
+    public string? FBASEQTY { get; set; }
+    public string? FSTOREURNOM { get; set; }
+    public string? FSTOREURNUM { get; set; }
+  //  public string? FOwnerId { get; set; } // 鏂板璐т富缂栫爜瀛楁
+    public string? FStockOrgId { get; set; } //  鏂板搴撳瓨缁勭粐瀛楁
+   
+
+}
diff --git a/StandardInterface/MES.Service/Dto/webApi/Inventory.cs b/StandardInterface/MES.Service/Dto/webApi/Inventory.cs
new file mode 100644
index 0000000..2df26d4
--- /dev/null
+++ b/StandardInterface/MES.Service/Dto/webApi/Inventory.cs
@@ -0,0 +1,9 @@
+锘縩amespace MES.Service.Dto.webApi;
+
+public class Inventory
+{
+    public string? ItemNo { get; set; } // 鏂欏彿
+    public string? DepotCode { get; set; } // 浠撳簱
+    public string? StockOrgNumber { get; set; } // 鐢ㄤ簬搴撳瓨缁勭粐杩囨护
+    //public string? OwnerNumber { get; set; } // 鏂板璐т富缂栫爜
+}
diff --git a/StandardInterface/MES.Service/Modes/ErpMesKc.cs b/StandardInterface/MES.Service/Modes/ErpMesKc.cs
new file mode 100644
index 0000000..7236e96
--- /dev/null
+++ b/StandardInterface/MES.Service/Modes/ErpMesKc.cs
@@ -0,0 +1,49 @@
+锘縰sing SqlSugar;
+
+namespace MES.Service.Modes;
+
+[SugarTable("ERP_MES_KC")]
+public class ErpMesKc
+{
+    [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_ERP_KC", IsPrimaryKey = true)]
+    public decimal Id { get; set; }
+
+    [SugarColumn(ColumnName = "FNUMBER")]
+    public string? FNumber { get; set; }
+
+    [SugarColumn(ColumnName = "FQTY")]
+    public decimal? FQty { get; set; }
+
+    [SugarColumn(ColumnName = "FBASEUNIT")]
+    public string? FBaseUnit { get; set; }
+
+    [SugarColumn(ColumnName = "FSTOCKUNIT")]
+    public string? FStockUnit { get; set; }
+
+    [SugarColumn(ColumnName = "FSTOCKNUMBER")]
+    public string? FStockNumber { get; set; }
+
+    [SugarColumn(ColumnName = "CREATE_DATE")]
+    public DateTime? CreateDate { get; set; }
+
+    [SugarColumn(ColumnName = "FBATCHNO")]
+    public string? FBatchno { get; set; }
+
+    [SugarColumn(ColumnName = "FMTONO")]
+    public string? FMtono { get; set; }
+
+    [SugarColumn(ColumnName = "FSTOCKSTATUS")]
+    public string? FStockStatus { get; set; }
+
+    [SugarColumn(ColumnName = "FSTOREURNOM")]
+    public decimal? FStoreUrnom { get; set; }
+
+    [SugarColumn(ColumnName = "FSTOREURNUM")]
+    public decimal? FStoreUrnum { get; set; }
+    [SugarColumn(ColumnName = "FOWNERID")]
+    public string? FOwnerId { get; set; }
+    [SugarColumn(ColumnName = "FSTOCKORGID")]
+    public string? FStockOrgId { get; set; }
+
+
+}
diff --git a/StandardInterface/MES.Service/Modes/Womcaa.cs b/StandardInterface/MES.Service/Modes/Womcaa.cs
index ed9b931..896d312 100644
--- a/StandardInterface/MES.Service/Modes/Womcaa.cs
+++ b/StandardInterface/MES.Service/Modes/Womcaa.cs
@@ -485,6 +485,11 @@
         /// 涓嬮亾宸ュ簭 
         ///</summary>
         [SugarColumn(ColumnName = "NEXT_GX")]
-        public string Nextgx { get; set; }
+        public string Nextgx { get; set; } 
+        /// <summary>
+        /// 涓嬮亾宸ュ簭 
+        ///</summary>
+        [SugarColumn(ColumnName = "RKS")]
+        public string Rks { get; set; }
     }
 }
diff --git a/StandardInterface/MES.Service/service/Kingdee/ErpKcManager.cs b/StandardInterface/MES.Service/service/Kingdee/ErpKcManager.cs
new file mode 100644
index 0000000..4d87a6f
--- /dev/null
+++ b/StandardInterface/MES.Service/service/Kingdee/ErpKcManager.cs
@@ -0,0 +1,145 @@
+锘�
+using Kingdee.CDP.WebApi.SDK;
+using MES.Service.DB;
+using MES.Service.Dto.webApi;
+using MES.Service.Modes;
+using SqlSugar;
+using System.Text;
+
+namespace MES.Service.service.Kingdee;
+
+public class ErpKcManager : Repository<ErpMesKc>
+{
+    public bool QueryStocks(Inventory inventory)
+    {
+        List<ErpKc> erpKc = GetErpInventory(inventory);
+
+        // 妫�鏌ヨ繑鍥炵粨鏋滄槸鍚︿负绌�
+        if (erpKc == null || erpKc.Count == 0)
+        {
+            throw new NotImplementedException("杩斿洖缁撴灉涓虹┖");
+        }
+        else
+        {
+            var baseObjects = MapErpCABtoWomcab(erpKc);
+
+            return UseTransaction(db =>
+            {
+                return SaveData(db, baseObjects) ? 1 : 0;
+            }) > 0;
+        }
+    }
+
+    #region 1.鑾峰彇鍗虫椂搴撳瓨
+    public List<ErpKc> GetErpInventory(Inventory inventory)
+    {
+        //娉ㄦ剰 1锛氭澶勪笉鍐嶄娇鐢ㄥ弬鏁板舰寮忎紶鍏ョ敤鎴峰悕鍙婂瘑鐮佺瓑鏁忔劅淇℃伅锛屾敼涓哄湪鐧诲綍閰嶇疆鏂囦欢涓缃��
+        //娉ㄦ剰 2锛氬繀椤诲厛閰嶇疆绗笁鏂圭郴缁熺櫥褰曟巿鏉冧俊鎭悗锛屽啀杩涜涓氬姟鎿嶄綔锛岃鎯呭弬鑰冨悇璇█鐗堟湰SDK浠嬬粛涓殑鐧诲綍閰嶇疆鏂囦欢璇存槑銆�
+        //璇诲彇閰嶇疆锛屽垵濮嬪寲SDK
+        K3CloudApi client = new K3CloudApi();
+        //鐢ㄤ簬璁板綍缁撴灉
+        StringBuilder Info = new StringBuilder();
+        //涓氬姟瀵硅薄鏍囪瘑
+        string formId = "STK_Inventory";
+        DateTime dt = DateTime.Now;
+        //鏌ヨ瀛楁闆嗗悎锛屽嵆杩斿洖鍝簺鏁版嵁锛屼笉鑳戒负绌猴紝鏍规嵁涓嶅悓涓氬姟鍗曟嵁濉啓涓嶅悓鐨勫瓧娈靛悕锛屼互涓嬩粎涓虹ず渚�
+        //string fieldKeys = "FCode,FFileId,FRelevantObject";
+        //string FilterString = "FID='-2146304'";
+        string fieldKeys = "FMaterialId.FNumber,FMtoNo,FStockId.FNumber,FLot.FNumber,FStockUnitId.FNumber,FBaseUnitId.FNumber,FStockStatusId.FName,FBASEQTY,FMaterialid.FSTOREURNOM,FMaterialid.FSTOREURNUM,FStockOrgId.FNumber";
+        string FilterString = string.Format(@"FMaterialId.FNumber like '%{0}%' and FStockId.FNumber like '%{1}%' and FBaseQty>0 and FStockOrgId.FNumber like'%{2}%'", inventory.ItemNo,inventory.DepotCode, inventory.StockOrgNumber);
+        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 ErpKc
+            {
+                FMaterialId = s[0]?.ToString(),
+                FMtoNo = s[1]?.ToString(),
+                FStockId = s[2]?.ToString(),
+                FLot = s[3]?.ToString(),
+                FStockUnitId = s[4]?.ToString(),
+                FBaseUnitId = s[5]?.ToString(),
+                FStockStatusId = s[6]?.ToString(),
+                FBASEQTY = s[7]?.ToString() ,
+                FSTOREURNOM = s[8]?.ToString(),
+                FSTOREURNUM = s[9]?.ToString(),
+                //  FOwnerId = s[10]?.ToString()
+                FStockOrgId = s[10]?.ToString()
+            };
+            return entity;
+        }).ToList();
+    }
+    #endregion
+
+
+    private List<ErpMesKc> MapErpCABtoWomcab(List<ErpKc> dtoList)
+    {
+        var ErpMesKcList = new List<ErpMesKc>();
+
+        foreach (var dto in dtoList)
+        {
+            var kc = new ErpMesKc
+            {
+                FNumber = dto.FMaterialId,
+               // FQty = Convert.ToDecimal(dto.FBASEQTY),
+                FQty = SafeParseDecimal(dto.FBASEQTY),
+                FBaseUnit=dto.FBaseUnitId,
+                FStockUnit=dto.FStockUnitId,
+                FStockNumber=dto.FStockId,
+                CreateDate=DateTime.Now,
+                FBatchno=dto.FLot,
+                FMtono=dto.FMtoNo,
+                FStockStatus=dto.FStockStatusId,
+                FStoreUrnom= Convert.ToDecimal(dto.FSTOREURNOM),
+                FStoreUrnum= Convert.ToDecimal(dto.FSTOREURNUM),
+                //FOwnerId=dto.FOwnerId,
+                FStockOrgId = dto.FStockOrgId,
+
+            };
+
+            ErpMesKcList.Add(kc);
+        }
+
+        return ErpMesKcList;
+    }
+
+
+    private decimal SafeParseDecimal(string? input)
+    {
+        if (string.IsNullOrWhiteSpace(input)) return 0;
+
+        if (decimal.TryParse(
+            input,
+            System.Globalization.NumberStyles.Float,
+            System.Globalization.CultureInfo.InvariantCulture,
+            out var result))
+            return result;
+
+        return 0; //    璺宠繃閿欒瀛楁锛岀粰榛樿鍊�
+    }
+
+    // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶
+    private bool SaveData(SqlSugarScope db, List<ErpMesKc> kcc)
+    {
+        var save = base.InsertRange(kcc);
+        if (save) return true;
+        throw new NotImplementedException("鎻掑叆澶辫触");
+    }
+
+}
diff --git a/StandardInterface/MES.Service/service/SRM/MesDeliveryNoteBarcodeManager.cs b/StandardInterface/MES.Service/service/SRM/MesDeliveryNoteBarcodeManager.cs
index 072a2d0..6e7305a 100644
--- a/StandardInterface/MES.Service/service/SRM/MesDeliveryNoteBarcodeManager.cs
+++ b/StandardInterface/MES.Service/service/SRM/MesDeliveryNoteBarcodeManager.cs
@@ -64,7 +64,9 @@
     // 鍒犻櫎鏁版嵁鐨勬柟娉�
     private bool DeleteDataByShd(SqlSugarScope db, ErpDelivery delivery)
     {
-        var del = db.Deleteable<MesDeliveryNoteBarcode>().Where(s => s.DeliveryNo == delivery.DeliveryNo).ExecuteCommand() > 0;
+        var del = db.Deleteable<MesDeliveryNoteBarcode>().
+            Where(s => s.DeliveryNo == delivery.DeliveryNo)
+            .ExecuteCommand() > 0;
 
         if (del)
         {
diff --git a/StandardInterface/MES.Service/service/WomcaaManager.cs b/StandardInterface/MES.Service/service/WomcaaManager.cs
index bfc2467..853ca03 100644
--- a/StandardInterface/MES.Service/service/WomcaaManager.cs
+++ b/StandardInterface/MES.Service/service/WomcaaManager.cs
@@ -210,7 +210,8 @@
             Jt=dto.JT,
             Xscn=dto.XS_CN,
             Sjxs=dto.SJ_xs,
-            Nextgx=dto.NEXT_Gx
+            Nextgx=dto.NEXT_Gx,
+            Rks=dto.RKS,
             //娌冨皵鏂板
             // WR_F_SCDD_SCTZD = dto.F_SCDD_SCTZD
             //WR_F_SCDD_XH = dto.F_SCDD_XH
diff --git a/StandardInterface/MESApplication/Controllers/BasicData/ProductionOrderController.cs b/StandardInterface/MESApplication/Controllers/BasicData/ProductionOrderController.cs
index ead12be..6b5c4b8 100644
--- a/StandardInterface/MESApplication/Controllers/BasicData/ProductionOrderController.cs
+++ b/StandardInterface/MESApplication/Controllers/BasicData/ProductionOrderController.cs
@@ -36,6 +36,7 @@
         entity.Data = JsonConvert.SerializeObject(rohIn);
         entity.Status = 1;
         entity.CreateBy = "PL017";
+        entity.Route= rohIn.OrderDto.FBillNo;
         try
         {
             dynamic resultInfos = new ExpandoObject();
diff --git a/StandardInterface/MESApplication/Controllers/Kingdee/ErpKcController.cs b/StandardInterface/MESApplication/Controllers/Kingdee/ErpKcController.cs
new file mode 100644
index 0000000..fad5bef
--- /dev/null
+++ b/StandardInterface/MESApplication/Controllers/Kingdee/ErpKcController.cs
@@ -0,0 +1,46 @@
+锘縰sing MES.Service.Dto.service;
+using MES.Service.Dto.webApi;
+using MES.Service.Modes;
+using MES.Service.service;
+using MES.Service.service.Kingdee;
+using MES.Service.util;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using System.Dynamic;
+
+namespace MESApplication.Controllers.Kingdee;
+
+
+[ApiController]
+[Route("api/[controller]")]
+public class ErpKcController : ControllerBase 
+{
+    private readonly MessageCenterManager _manager = new();
+    private readonly ErpKcManager kc = new();
+    private readonly string METHOD = "POST";
+    private readonly string TableName = "ERPKC";
+    private readonly string URL = "http://localhost:10054/api/ErpKc/";
+
+
+    //
+    [HttpPost("Save")]
+    public ResponseResult Save(Inventory inventory)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos = kc.QueryStocks(inventory);
+
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+}
diff --git a/StandardInterface/MESApplication/appsettings.json b/StandardInterface/MESApplication/appsettings.json
index 28cfc2a..59a3601 100644
--- a/StandardInterface/MESApplication/appsettings.json
+++ b/StandardInterface/MESApplication/appsettings.json
@@ -10,6 +10,6 @@
   "AppSettings": {
     "TestErpUrl": "http://192.168.11.120:8098/WebService1.asmx/mesToErpinfo",
     "ProductionErpUrl": "http://192.168.11.120:8098/WebService1.asmx/mesToErpinfoFormal",
-    "DataBaseConn": "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ORCL))); Persist Security Info=True;User ID = hm_prd; Password=hmprd"
+    "DataBaseConn": "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.22)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ORCL))); Persist Security Info=True;User ID = test_dev; Password=hmprd"
   }
 }

--
Gitblit v1.9.3