From fb6414b4ee8ba0d65c037536da5d02eff24f60d0 Mon Sep 17 00:00:00 2001
From: tjx <t2856754968@163.com>
Date: 星期一, 22 十二月 2025 09:33:20 +0800
Subject: [PATCH] 11
---
StandardPda/MES.Service/service/Warehouse/whqohDtoManager.cs | 286 ++++++++++++++++++++++++++++++---------------------------
1 files changed, 151 insertions(+), 135 deletions(-)
diff --git a/StandardPda/MES.Service/service/Warehouse/whqohDtoManager.cs b/StandardPda/MES.Service/service/Warehouse/whqohDtoManager.cs
index 980a4c7..5db66a8 100644
--- a/StandardPda/MES.Service/service/Warehouse/whqohDtoManager.cs
+++ b/StandardPda/MES.Service/service/Warehouse/whqohDtoManager.cs
@@ -1,168 +1,184 @@
-锘縰sing Masuit.Tools;
-using MES.Service.DB;
+锘縰sing System.Data;
+using System.Globalization;
+using System.Text;
using MES.Service.Dto.service;
-using MES.Service.Modes;
+using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
using Oracle.ManagedDataAccess.Client;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Microsoft.Extensions.Configuration;
-using System.Net.Http;
-using System.Globalization;
-using System.IO;
-namespace MES.Service.service.Warehouse
+namespace MES.Service.service.Warehouse;
+
+#region 鎺ュ彛杩斿洖鏁版嵁缁撴瀯瀹氫箟
+
+public class WhqohResponse
{
- #region 鎺ュ彛杩斿洖鏁版嵁缁撴瀯瀹氫箟
- public class WhqohResponse
- {
- public Header Header { get; set; }
- public List<BodyItem> Body { get; set; }
- }
+ public Header Header { get; set; }
+ public List<BodyItem> Body { get; set; }
+}
- public class Header
- {
- public int Code { get; set; }
- public bool Success { get; set; }
- public string Message { get; set; }
- }
+public class Header
+{
+ public int Code { get; set; }
+ public bool Success { get; set; }
+ public string Message { get; set; }
+}
- public class BodyItem
- {
- public string ItemId { get; set; }
- public List<Detail> Detail { get; set; }
- }
+public class BodyItem
+{
+ public string ItemId { get; set; }
+ public List<Detail> Detail { get; set; }
+}
- public class Detail
- {
- public string WhId { get; set; }
- public string UomId { get; set; }
- public string CurrentQuantity { get; set; }
- public string AvailableQuantity { get; set; }
- public string Project { get; set; }
- public string LotCode { get; set; }
- }
- #endregion
+public class Detail
+{
+ public string WhId { get; set; }
+ public string UomId { get; set; }
+ public string CurrentQuantity { get; set; }
+ public string AvailableQuantity { get; set; }
+ public string Project { get; set; }
+ public string LotCode { get; set; }
+}
- public class whqohDtoManager
- {
- private static IConfiguration configuration = new ConfigurationBuilder()
+#endregion
+
+public class whqohDtoManager
+{
+ private static readonly IConfiguration configuration =
+ new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
- .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
+ .AddJsonFile("appsettings.json", true, true)
.Build();
- // Oracle 鏁版嵁搴撹繛鎺ュ瓧绗︿覆
- private static readonly string connectionString = configuration["AppSettings:DataBaseConn"];
- // 鎺ュ彛鍦板潃
- private static readonly string apiUrl = "http://" + configuration["AppSettings:U9IP"] + "/api/getWhqoh";
+ // Oracle 鏁版嵁搴撹繛鎺ュ瓧绗︿覆
+ private static readonly string connectionString =
+ configuration["AppSettings:DataBaseConn"];
- public static async Task<bool> GetWhqoh(WhqohDto mesItemQtRKDto)
+ // 鎺ュ彛鍦板潃
+ private static readonly string apiUrl =
+ "http://" + configuration["AppSettings:U9IP"] + "/api/getWhqoh";
+
+ public static async Task<bool> GetWhqoh(WhqohDto mesItemQtRKDto)
+ {
+ // 1. 璇锋眰鎺ュ彛
+ var requestBody = new[]
{
- // 1. 璇锋眰鎺ュ彛
- var requestBody = new[]
+ new
{
- new { ItemId = mesItemQtRKDto.itemId, WhId = "", Project = "", LotCode = "" }
- };
+ ItemId = mesItemQtRKDto.itemId, WhId = "", Project = "",
+ LotCode = ""
+ }
+ };
- string jsonRequest = JsonConvert.SerializeObject(requestBody);
+ var jsonRequest = JsonConvert.SerializeObject(requestBody);
- using var http = new HttpClient();
- var response = await http.PostAsync(apiUrl,
- new StringContent(jsonRequest, Encoding.UTF8, "application/json"));
+ using var http = new HttpClient();
+ var response = await http.PostAsync(apiUrl,
+ new StringContent(jsonRequest, Encoding.UTF8, "application/json"));
- string responseStr = await response.Content.ReadAsStringAsync();
+ var responseStr = await response.Content.ReadAsStringAsync();
- // 2. 鍙嶅簭鍒楀寲鎺ュ彛杩斿洖 JSON
- var result = JsonConvert.DeserializeObject<WhqohResponse>(responseStr);
+ // 2. 鍙嶅簭鍒楀寲鎺ュ彛杩斿洖 JSON
+ var result = JsonConvert.DeserializeObject<WhqohResponse>(responseStr);
- if (result?.Header.Success != true || result.Body == null)
+ if (result?.Header.Success != true || result.Body == null)
+ {
+ Console.WriteLine("鎺ュ彛杩斿洖澶辫触: " + result?.Header?.Message);
+ return false;
+ }
+
+ // 3. 鎵佸钩鍖栧苟鍘婚噸
+ var records =
+ new HashSet<(string ItemId, string WhId, string UomId, string
+ Project, string LotCode)>();
+ var distinctList =
+ new List<(string ItemId, string WhId, string UomId, decimal
+ CurrentQty, decimal AvailableQty, string Project, string LotCode
+ )>();
+
+ foreach (var body in result.Body)
+ foreach (var detail in body.Detail)
+ {
+ var key = (body.ItemId, detail.WhId, detail.UomId,
+ detail.Project ?? "", detail.LotCode ?? "");
+ if (records.Add(key)) // 鍘婚噸
+ distinctList.Add((
+ body.ItemId,
+ detail.WhId,
+ detail.UomId,
+ decimal.Parse(detail.CurrentQuantity,
+ CultureInfo.InvariantCulture),
+ decimal.Parse(detail.AvailableQuantity,
+ CultureInfo.InvariantCulture),
+ detail.Project ?? "",
+ detail.LotCode ?? ""
+ ));
+ }
+
+ // 4. 鍏堝垹鍚庢彃
+ using var conn = new OracleConnection(connectionString);
+ await conn.OpenAsync();
+ using var tran = conn.BeginTransaction();
+
+ try
+ {
+ var deleteSql = "";
+ // 鍒犻櫎鎵�鏈夋棫鏁版嵁锛堟寜闇�姹傝皟鏁磋寖鍥达紝鍙互鍔� WHERE锛�
+ if (mesItemQtRKDto.itemId == "" || mesItemQtRKDto.itemId == null)
+ deleteSql = "DELETE FROM WHQOH_DETAIL";
+ else
+ deleteSql = "DELETE FROM WHQOH_DETAIL where ITEM_ID='" +
+ mesItemQtRKDto.itemId + "'";
+
+ using (var delCmd = new OracleCommand(deleteSql, conn))
{
- Console.WriteLine("鎺ュ彛杩斿洖澶辫触: " + result?.Header?.Message);
- return false;
+ delCmd.Transaction = tran;
+ await delCmd.ExecuteNonQueryAsync();
}
- // 3. 鎵佸钩鍖栧苟鍘婚噸
- var records = new HashSet<(string ItemId, string WhId, string UomId, string Project, string LotCode)>();
- var distinctList = new List<(string ItemId, string WhId, string UomId, decimal CurrentQty, decimal AvailableQty, string Project, string LotCode)>();
-
- foreach (var body in result.Body)
- {
- foreach (var detail in body.Detail)
- {
- var key = (body.ItemId, detail.WhId, detail.UomId, detail.Project ?? "", detail.LotCode ?? "");
- if (records.Add(key)) // 鍘婚噸
- {
- distinctList.Add((
- body.ItemId,
- detail.WhId,
- detail.UomId,
- decimal.Parse(detail.CurrentQuantity, CultureInfo.InvariantCulture),
- decimal.Parse(detail.AvailableQuantity, CultureInfo.InvariantCulture),
- detail.Project ?? "",
- detail.LotCode ?? ""
- ));
- }
- }
- }
-
- // 4. 鍏堝垹鍚庢彃
- using var conn = new OracleConnection(connectionString);
- await conn.OpenAsync();
- using var tran = conn.BeginTransaction();
-
- try
- {
- string deleteSql = "";
- // 鍒犻櫎鎵�鏈夋棫鏁版嵁锛堟寜闇�姹傝皟鏁磋寖鍥达紝鍙互鍔� WHERE锛�
- if (mesItemQtRKDto.itemId=="" || mesItemQtRKDto.itemId==null)
- {
- deleteSql = "DELETE FROM WHQOH_DETAIL";
- }
- else
- {
- deleteSql = "DELETE FROM WHQOH_DETAIL where ITEM_ID='"+ mesItemQtRKDto.itemId + "'";
- }
-
- using (var delCmd = new OracleCommand(deleteSql, conn))
- {
- delCmd.Transaction = tran;
- await delCmd.ExecuteNonQueryAsync();
- }
-
- // 鎻掑叆鏂版暟鎹�
- string insertSql = @"
+ // 鎻掑叆鏂版暟鎹�
+ var insertSql = @"
INSERT INTO WHQOH_DETAIL
(ID, ITEM_ID, WH_ID, UOM_ID, CURRENT_QUANTITY, AVAILABLE_QUANTITY, PROJECT_CODE, LOT_CODE)
VALUES
(SEQ_WHQOH_DETAIL.NEXTVAL, :ItemId, :WhId, :UomId, :CurrentQty, :AvailableQty, :Project, :LotCode)";
- using var cmd = new OracleCommand(insertSql, conn);
- cmd.Transaction = tran;
- cmd.ArrayBindCount = distinctList.Count;
+ using var cmd = new OracleCommand(insertSql, conn);
+ cmd.Transaction = tran;
+ cmd.ArrayBindCount = distinctList.Count;
- cmd.Parameters.Add(":ItemId", OracleDbType.Varchar2, distinctList.Select(x => x.ItemId).ToArray(), System.Data.ParameterDirection.Input);
- cmd.Parameters.Add(":WhId", OracleDbType.Varchar2, distinctList.Select(x => x.WhId).ToArray(), System.Data.ParameterDirection.Input);
- cmd.Parameters.Add(":UomId", OracleDbType.Varchar2, distinctList.Select(x => x.UomId).ToArray(), System.Data.ParameterDirection.Input);
- cmd.Parameters.Add(":CurrentQty", OracleDbType.Decimal, distinctList.Select(x => x.CurrentQty).ToArray(), System.Data.ParameterDirection.Input);
- cmd.Parameters.Add(":AvailableQty", OracleDbType.Decimal, distinctList.Select(x => x.AvailableQty).ToArray(), System.Data.ParameterDirection.Input);
- cmd.Parameters.Add(":Project", OracleDbType.Varchar2, distinctList.Select(x => x.Project).ToArray(), System.Data.ParameterDirection.Input);
- cmd.Parameters.Add(":LotCode", OracleDbType.Varchar2, distinctList.Select(x => x.LotCode).ToArray(), System.Data.ParameterDirection.Input);
+ cmd.Parameters.Add(":ItemId", OracleDbType.Varchar2,
+ distinctList.Select(x => x.ItemId).ToArray(),
+ ParameterDirection.Input);
+ cmd.Parameters.Add(":WhId", OracleDbType.Varchar2,
+ distinctList.Select(x => x.WhId).ToArray(),
+ ParameterDirection.Input);
+ cmd.Parameters.Add(":UomId", OracleDbType.Varchar2,
+ distinctList.Select(x => x.UomId).ToArray(),
+ ParameterDirection.Input);
+ cmd.Parameters.Add(":CurrentQty", OracleDbType.Decimal,
+ distinctList.Select(x => x.CurrentQty).ToArray(),
+ ParameterDirection.Input);
+ cmd.Parameters.Add(":AvailableQty", OracleDbType.Decimal,
+ distinctList.Select(x => x.AvailableQty).ToArray(),
+ ParameterDirection.Input);
+ cmd.Parameters.Add(":Project", OracleDbType.Varchar2,
+ distinctList.Select(x => x.Project).ToArray(),
+ ParameterDirection.Input);
+ cmd.Parameters.Add(":LotCode", OracleDbType.Varchar2,
+ distinctList.Select(x => x.LotCode).ToArray(),
+ ParameterDirection.Input);
- int affected = await cmd.ExecuteNonQueryAsync();
- tran.Commit();
+ var affected = await cmd.ExecuteNonQueryAsync();
+ tran.Commit();
- Console.WriteLine($"鎵归噺澶勭悊鎴愬姛锛屽叡 {affected} 鏉℃暟鎹鎻掑叆銆�");
- return true;
- }
- catch (Exception ex)
- {
- tran.Rollback();
- Console.WriteLine("鎵归噺澶勭悊澶辫触: " + ex.Message);
- return false;
- }
+ Console.WriteLine($"鎵归噺澶勭悊鎴愬姛锛屽叡 {affected} 鏉℃暟鎹鎻掑叆銆�");
+ return true;
+ }
+ catch (Exception ex)
+ {
+ tran.Rollback();
+ Console.WriteLine("鎵归噺澶勭悊澶辫触: " + ex.Message);
+ return false;
}
}
-}
+}
\ No newline at end of file
--
Gitblit v1.9.3