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