From bea649e648da6d97041ba5aedac0c66ac8a877f0 Mon Sep 17 00:00:00 2001
From: cdk <2441919651@qq.com>
Date: 星期四, 28 八月 2025 09:56:00 +0800
Subject: [PATCH] Merge branch 'master' of http://git.gs-mes.com:8080/r/~tjx/NewPdaSqlServer
---
Controllers/Warehouse/KwbgController.cs | 89 ++++++++++++++
service/Warehouse/KwbgManager.cs | 219 ++++++++++++++++++++++++++++++++++++
Dto/Xky/XkyBarcodeDataDto.cs | 2
3 files changed, 309 insertions(+), 1 deletions(-)
diff --git a/Controllers/Warehouse/KwbgController.cs b/Controllers/Warehouse/KwbgController.cs
new file mode 100644
index 0000000..029b76d
--- /dev/null
+++ b/Controllers/Warehouse/KwbgController.cs
@@ -0,0 +1,89 @@
+锘縰sing System.Dynamic; // 寮曞叆鍔ㄦ�佺被鍨嬫敮鎸�
+using Masuit.Tools.Win32.AntiVirus; // 寮曞叆闃茬梾姣掑伐鍏峰簱锛堜絾鏈湪浠g爜涓娇鐢級
+using Microsoft.AspNetCore.Mvc; // 寮曞叆ASP.NET Core MVC鍔熻兘
+using NewPdaSqlServer.Dto.service; // 寮曞叆椤圭洰鐗瑰畾鐨凞TO鏈嶅姟
+using NewPdaSqlServer.entity; // 寮曞叆椤圭洰瀹炰綋绫�
+using NewPdaSqlServer.service.@base; // 寮曞叆鍩虹鏈嶅姟
+using NewPdaSqlServer.service.Warehouse; // 寮曞叆浠撳簱鏈嶅姟
+using NewPdaSqlServer.util; // 寮曞叆宸ュ叿绫�
+using static Microsoft.EntityFrameworkCore.DbLoggerCategory; // 寮曞叆EF鏃ュ織绫诲埆锛堜絾鏈湪浠g爜涓娇鐢級
+
+namespace NewPdaSqlServer.Controllers.Warehouse; // 鎺у埗鍣ㄥ懡鍚嶇┖闂�
+
+/// <summary>
+/// 搴撲綅鍙樻洿鎺у埗鍣紝澶勭悊涓庡簱浣嶅彉鏇寸浉鍏崇殑API璇锋眰
+/// </summary>
+[ApiController] // 鏍囪璇ョ被涓篈PI鎺у埗鍣紝鑷姩杩涜妯″瀷楠岃瘉鍜岄敊璇鐞�
+[Route("api/[controller]")] // 瀹氫箟鎺у埗鍣ㄨ矾鐢辨ā鏉匡紝璺敱鍓嶇紑涓篴pi/鎺у埗鍣ㄥ悕锛圞wbg锛�
+public class KwbgController : ControllerBase // 鎺у埗鍣ㄧ被缁ф壙鑷狢ontrollerBase锛屾彁渚沇eb API鍔熻兘
+{
+ private readonly KwbgManager k = new(); // 鍒涘缓搴撲綅鍙樻洿绠$悊鍣ㄥ疄渚嬶紝鐢ㄤ簬澶勭悊涓氬姟閫昏緫
+ private readonly MesPrintMangeer _kBG = new(); // 鍒涘缓鎵撳嵃绠$悊鍣ㄥ疄渚嬶紝鐢ㄤ簬澶勭悊鎵撳嵃鐩稿叧涓氬姟
+
+ /// <summary>
+ /// 鑾峰彇鏉$爜淇℃伅鍜岀墿鏂欎俊鎭�
+ /// </summary>
+ /// <param name="unity">鍓嶇浼犻�掔殑WarehouseQuery瀵硅薄锛屽寘鍚煡璇㈠弬鏁�</param>
+ /// <returns>缁熶竴鐨勫搷搴旂粨鏋滐紝鍖呭惈鏉$爜淇℃伅鍜岀墿鏂欎俊鎭�</returns>
+ [HttpPost("GetBarInfo")] // 瀹氫箟HTTP POST鏂规硶鍙婂瓙璺敱锛岃闂矾寰勪负api/Kwbg/GetBarInfo
+ //public ResponseResult GetBarInfo(dynamic unity) // 鏃ф柟娉曠鍚嶏紝鍙傛暟涓篸ynamic绫诲瀷锛堝凡娉ㄩ噴锛�
+ public ResponseResult GetBarInfo(dynamic unity) // 鏂版柟娉曠鍚嶏紝鍙傛暟涓篧arehouseQuery绫诲瀷
+ {
+ try // 鎹曡幏寮傚父锛屼繚璇佹帴鍙gǔ瀹氭��
+ {
+ dynamic resultInfos = new ExpandoObject(); // 鍒涘缓鍔ㄦ�佸璞★紝鐢ㄤ簬瀛樺偍杩斿洖缁撴灉
+ resultInfos.tbBillList = k.GetBarInfo(unity); // 璋冪敤绠$悊鍣ㄦ柟娉曪紝鑾峰彇鏉$爜淇℃伅锛岃祴鍊肩粰鍔ㄦ�佸璞$殑tbBillList灞炴��
+ return new ResponseResult // 鏋勯�犵粺涓�鍝嶅簲缁撴灉瀵硅薄
+ {
+ status = 0, // 鐘舵�佺爜0琛ㄧず鎴愬姛
+ message = "OK", // 杩斿洖娑堟伅涓篛K
+ data = resultInfos // 杩斿洖鏁版嵁涓哄姩鎬佸璞★紝鍖呭惈鏉$爜鍜岀墿鏂欎俊鎭�
+ };
+ }
+ catch (Exception ex) // 鎹曡幏鎵�鏈夊紓甯�
+ {
+ return ResponseResult.ResponseError(ex); // 璋冪敤缁熶竴閿欒澶勭悊鏂规硶锛岃繑鍥為敊璇搷搴�
+ }
+ }
+
+ /// <summary>
+ /// 搴撲綅鍙樻洿鎺ュ彛銆�
+ /// 鎺ユ敹鍓嶇浼犻�掔殑WarehouseQuery鍙傛暟锛屽畬鎴愭潯鐮佸彉鏇村強鐩稿叧淇℃伅鐨勬煡璇㈠拰杩斿洖銆�
+ /// </summary>
+ /// <param name="unity">
+ /// WarehouseQuery瀵硅薄锛屽寘鍚潯鐮併�佹媶鍒嗘暟閲忋�佺敤鎴峰悕绛夊簱浣嶅彉鏇存墍闇�鍙傛暟銆�
+ /// </param>
+ /// <returns>
+ /// 杩斿洖ResponseResult缁熶竴鍝嶅簲瀵硅薄锛宻tatus涓�0琛ㄧず鎴愬姛锛宒ata鍖呭惈鍙樻洿鍚庣殑鏉$爜鍙婃墦鍗颁俊鎭��
+ /// </returns>
+ [HttpPost("ChangeDepotSection")]
+ public ResponseResult ChangeDepotSection(dynamic unity)
+ {
+ try
+ {
+ // 鍒涘缓鍔ㄦ�佸璞esultInfos锛岀敤浜庡瓨鍌ㄨ繑鍥炵粨鏋�
+ dynamic resultInfos = new ExpandoObject();
+ // 鍒濆鍖杢bBillList灞炴�т负鍔ㄦ�佸璞★紝鐢ㄤ簬瀛樺偍鏉$爜鐩稿叧淇℃伅
+ resultInfos.tbBillList = new ExpandoObject();
+
+ //resultInfos.tbBillList.printInfo = _kBG.getPrintInfo(unity);// 鑾峰彇鎵撳嵃淇℃伅锛岃皟鐢ㄦ墦鍗扮鐞嗗櫒鐨刧etPrintInfo鏂规硶锛岀粨鏋滆祴鍊肩粰tbBillList.printInfo
+
+ // 璋冪敤搴撲綅鍙樻洿绠$悊鍣ㄧ殑ChangeDepotSection鏂规硶锛屾墽琛屾潯鐮佸彉鏇存搷浣滐紝杩斿洖鎷嗗垎缁撴灉scanResult
+ var scanResult = k.ChangeDepotSection(unity);
+
+ //resultInfos.tbBillList.cfBarInfo = _kBG.getCfInfo(scanResult);// 鑾峰彇鎷嗗垎鍚庢潯鐮佺殑璇︾粏淇℃伅锛岃皟鐢ㄦ墦鍗扮鐞嗗櫒鐨刧etCfInfo鏂规硶锛岀粨鏋滆祴鍊肩粰tbBillList.cfBarInfo
+ // 鏋勯�犲苟杩斿洖缁熶竴鍝嶅簲瀵硅薄锛宻tatus涓�0琛ㄧず鎴愬姛锛宮essage涓�"OK"锛宒ata涓簉esultInfos
+ return new ResponseResult
+ {
+ status = 0,
+ message = "OK",
+ data = resultInfos
+ };
+ }
+ catch (Exception ex)
+ {
+ // 鎹曡幏寮傚父锛岃皟鐢ㄧ粺涓�閿欒澶勭悊鏂规硶ResponseError锛岃繑鍥為敊璇搷搴�
+ return ResponseResult.ResponseError(ex);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Dto/Xky/XkyBarcodeDataDto.cs b/Dto/Xky/XkyBarcodeDataDto.cs
index 3759eb8..d713ae0 100644
--- a/Dto/Xky/XkyBarcodeDataDto.cs
+++ b/Dto/Xky/XkyBarcodeDataDto.cs
@@ -29,7 +29,7 @@
public string OuterBarcode { get; set; }
[JsonProperty("includeQty")]
- public int IncludeQty { get; set; }
+ public decimal IncludeQty { get; set; }
[JsonProperty("smallPackageLength")]
public int? SmallPackageLength { get; set; }
diff --git a/service/Warehouse/KwbgManager.cs b/service/Warehouse/KwbgManager.cs
new file mode 100644
index 0000000..93f22ef
--- /dev/null
+++ b/service/Warehouse/KwbgManager.cs
@@ -0,0 +1,219 @@
+锘縰sing System.Data;
+using System.Data.SqlClient;
+using Masuit.Tools;
+using Masuit.Tools.Hardware;
+using NewPdaSqlServer.DB;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.entity;
+using SqlSugar;
+using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
+
+namespace NewPdaSqlServer.service.Warehouse;
+
+/// <summary>
+/// 搴撲綅鍙樻洿绠$悊绫伙紝缁ф壙鑷�氱敤浠撳偍绫籖epository锛屾搷浣滈噰璐��璐х敵璇疯〃锛圡esCgthSq锛�
+/// </summary>
+public class KwbgManager : Repository<MesCgthSq>
+{
+ /// <summary>
+ /// 鏍规嵁浼犲叆鐨刉arehouseQuery瀵硅薄锛堝寘鍚潯鐮佷俊鎭級锛屾煡璇㈢墿鏂欏簱瀛樿〃MES_INV_ITEM_STOCKS锛岃幏鍙栧搴旂殑搴撳瓨淇℃伅
+ /// </summary>
+ /// <param name="unity">WarehouseQuery瀵硅薄锛屽寘鍚潯鐮佺紪鍙风瓑鏌ヨ鏉′欢</param>
+ /// <returns>
+ /// 杩斿洖MES_INV_ITEM_STOCKS琛ㄤ腑涓庢潯鐮佸尮閰嶇殑绗竴鏉″簱瀛樹俊鎭紙MesInvItemStocks绫诲瀷锛夈��
+ /// 濡傛灉鏈壘鍒帮紝鍒欐姏鍑哄紓甯告彁绀衡�滆鏉$爜搴撳瓨涓嶅瓨鍦紒鈥�
+ /// resultInfos.tbBillList = m.GetBarInfo(unity);
+ /// </returns>
+ ///public MesInvItemStocks GetBarInfo(WarehouseQuery unity)
+ public dynamic GetBarInfo(dynamic query)
+ {
+ if (query == null)
+ throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓簄ull");
+
+ if (string.IsNullOrEmpty(query.barcode?.ToString()))
+ throw new ArgumentException("鐗╂枡鏉$爜涓嶈兘涓虹┖", nameof(query.barcode));
+
+ var parameters = new[]
+ {
+ new SugarParameter("@pi_barcode", query.barcode),
+ new SugarParameter("@inP1", null),
+ new SugarParameter("@inP2", null),
+ new SugarParameter("@inP3", null),
+ new SugarParameter("@inP4", null)
+ };
+
+ try
+ {
+ List<dynamic>? ZsBarInfo = Db.Ado.SqlQuery<dynamic>(
+ "EXEC prc_pda_kwbg_selKwInfoByBarcode @pi_barcode,@inP1,@inP2,@inP3,@inP4", parameters);
+
+ return ZsBarInfo;
+ }
+ catch (Exception ex)
+ {
+ // 淇濈暀鍘熸湁寮傚父澶勭悊閫昏緫
+ throw new Exception($"{ex.Message}");
+ }
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗╂枡ID鏌ヨ鐗╂枡琛∕ES_ITEMS锛岃幏鍙栫墿鏂欒缁嗕俊鎭�
+ /// </summary>
+ /// <param name="strItemId">鐗╂枡ID锛坉ecimal绫诲瀷锛�</param>
+ /// <returns>
+ /// 杩斿洖MES_ITEMS琛ㄤ腑涓嶪D鍖归厤涓旀湭绂佺敤锛團forbidstatus涓�"A"锛夌殑绗竴鏉$墿鏂欎俊鎭紙MesItems绫诲瀷锛夈��
+ /// 濡傛灉鏈壘鍒帮紝鍒欐姏鍑哄紓甯告彁绀衡�滆鏉$爜瀵瑰簲鐗╂枡淇℃伅涓嶅瓨鍦ㄦ垨宸茬鐢紒鈥�
+ /// resultInfos.tbMesItems = m.GetItemNo(resultInfos.tbBillList.ItemId);
+ /// </returns>
+ public MesItems GetItemNo(decimal strItemId)
+ {
+ // 浣跨敤SqlSugar鐨凲ueryable鏂规硶锛屾煡璇ES_ITEMS琛�
+ // 鏉′欢锛欼d瀛楁绛変簬strItemId锛屼笖Fforbidstatus瀛楁涓�"A"锛堣〃绀烘湭绂佺敤锛�
+ var itemInfo = Db.Queryable<MesItems>()
+ .Where(s => s.Id == strItemId && s.Fforbidstatus == "A")
+ .First(); // 鑾峰彇绗竴鏉″尮閰嶈褰�
+
+ // 濡傛灉鏈煡璇㈠埌缁撴灉锛坕temInfo涓簄ull锛夛紝鍒欐姏鍑哄紓甯革紝鎻愮ず鐗╂枡淇℃伅涓嶅瓨鍦ㄦ垨宸茬鐢�
+ if (itemInfo is null) throw new Exception("璇ユ潯鐮佸搴旂墿鏂欎俊鎭笉瀛樺湪鎴栧凡绂佺敤锛�");
+
+ // 杩斿洖鏌ヨ鍒扮殑鐗╂枡淇℃伅瀵硅薄
+ return itemInfo;
+ }
+ /// <summary>
+ /// 浠撳簱淇℃伅琛�
+ /// </summary>
+ /// <param name="depot_id"></param>
+ /// <returns></returns>
+ public MesDepots GetDepot(decimal depot_id)
+ {
+ var depotInfo = Db.Queryable< MesDepots >()
+ .Where(s => s.DepotId == depot_id)
+ .First(); // 鑾峰彇绗竴鏉″尮閰嶈褰�
+ // 濡傛灉鏈煡璇㈠埌缁撴灉锛坕temInfo涓簄ull锛夛紝鍒欐姏鍑哄紓甯革紝鎻愮ず鐗╂枡淇℃伅涓嶅瓨鍦ㄦ垨宸茬鐢�
+ if (depotInfo is null) throw new Exception("璇ユ潯鐮佸簱瀛樹笉瀛樺湪浠撳簱锛�");
+ return depotInfo;
+ }
+
+
+
+ /// <summary>
+ /// 鍙樻洿搴撲綅
+ /// </summary>
+ /// <param name="unity"></param>
+ /// <returns></returns>
+ /// <exception cref="Exception"></exception>
+ public dynamic ChangeDepotSection(dynamic unity)
+ {
+ // 瀛樺偍杩囩▼杈撳嚭淇℃伅
+ var _strMsg = "";
+ // 瀛樺偍杩囩▼杈撳嚭鐨勬暟閲忥紙鐢ㄤ簬鍒ゆ柇鍙樻洿鏄惁鎴愬姛锛�
+ var _intSum = "";
+ // 瀛樺偍杩囩▼杈撳嚭鐨勬柊搴撲綅浠g爜
+ var _NewDepotSectionCode = ""; // 鏂板簱浣嶄唬鐮�
+
+ // 鍒涘缓SQL杩炴帴锛屼娇鐢ㄩ厤缃殑杩炴帴瀛楃涓�
+ using (var conn = new SqlConnection(DbHelperSQL.strConn))
+ {
+ //if (string.IsNullOrEmpty(query.barcode?.ToString()))
+ //throw new ArgumentException("鐗╂枡鏉$爜涓嶈兘涓虹┖", nameof(query.barcode));
+
+ if (string.IsNullOrEmpty(unity.userName?.ToString()))
+ throw new ArgumentException("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖", nameof(unity.userName));
+ if (string.IsNullOrEmpty(unity.OldDepotSectionCode?.ToString()))
+ throw new ArgumentException("鍘熷簱浣嶄笉鍏佽涓虹┖", nameof(unity.OldDepotSectionCode));
+ if (string.IsNullOrEmpty(unity.NewDepotSectionCode?.ToString()))
+ throw new ArgumentException("鏂板簱浣嶄笉鍏佽涓虹┖", nameof(unity.NewDepotSectionCode));
+ if (string.IsNullOrEmpty(unity.barcode?.ToString()))
+ throw new ArgumentException("鐗╂枡鏉$爜涓嶅厑璁镐负绌�", nameof(unity.barcode));
+
+ //if (unity.userName.IsNullOrEmpty()) throw new Exception("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖");
+ //if (unity.OldDepotSectionCode.IsNullOrEmpty()) throw new Exception("鍘熷簱浣嶄笉鍏佽涓虹┖");
+ //if (unity.NewDepotSectionCode.IsNullOrEmpty()) throw new Exception("鏂板簱浣嶄笉鍏佽涓虹┖");
+ //if (unity.barcode.IsNullOrEmpty()) throw new Exception("鐗╂枡鏉$爜涓嶅厑璁镐负绌�");
+
+ // 鍒涘缓SQL鍛戒护锛屾寚瀹氳鎵ц鐨勫瓨鍌ㄨ繃绋�
+ using (var cmd = new SqlCommand("[prc_pda_change_depot]", conn))
+ {
+ try
+ {
+ // 鎵撳紑鏁版嵁搴撹繛鎺�
+ conn.Open();
+ // 璁剧疆鍛戒护绫诲瀷涓哄瓨鍌ㄨ繃绋�
+ cmd.CommandType = CommandType.StoredProcedure;
+
+ // 鏋勯�犲瓨鍌ㄨ繃绋嬪弬鏁版暟缁�
+ SqlParameter[] parameters =
+ {
+ // 杈撳嚭鍙傛暟锛氳繑鍥炰俊鎭�
+ new("@outMsg", SqlDbType.NVarChar, 2000),
+ // 杈撳嚭鍙傛暟锛氳繑鍥炴暟閲�
+ new("@outSum", SqlDbType.Int),
+ // 杈撳嚭鍙傛暟锛氳繑鍥炴柊搴撲綅浠g爜
+ new("@new_depotSectionsCode", SqlDbType.NVarChar, 300),
+ // 杈撳叆鍙傛暟锛氭搷浣滅敤鎴�
+ new SqlParameter("@c_user", unity.userName?.ToString() ?? ""),
+ // 杈撳叆鍙傛暟锛氬師鏉$爜
+ new SqlParameter("@p_barcode", unity.barcode?.ToString() ?? ""),
+ // 杈撳叆鍙傛暟锛氬師搴撲綅浠g爜
+ new("@old_depotSectionsCode", unity.OldDepotSectionCode?.ToString() ??""),
+ // 杈撳叆鍙傛暟锛氭柊搴撲綅浠g爜
+ new("@new_depotSectionsCode_input", unity.NewDepotSectionCode?.ToString() ??""),
+ // 杈撳叆鍙傛暟锛氫粨搴撲唬鐮�
+ new("@DepotCode", unity.DepotCode) { Value = unity.DepotCode ?? "" },
+ // 杈撳叆鍙傛暟锛氫粨搴搃d
+ new SqlParameter("@DepotId", (int?)unity.DepotId ?? (object)DBNull.Value)
+ };
+ // 璁剧疆杈撳嚭鍙傛暟鏂瑰悜
+ parameters[0].Direction = ParameterDirection.Output;
+ parameters[1].Direction = ParameterDirection.Output;
+ parameters[2].Direction = ParameterDirection.Output;
+
+ // 娣诲姞鎵�鏈夊弬鏁板埌鍛戒护瀵硅薄
+ foreach (var parameter in parameters)
+ cmd.Parameters.Add(parameter);
+
+ // 鎵ц瀛樺偍杩囩▼
+ cmd.ExecuteNonQuery();
+
+ // 鑾峰彇瀛樺偍杩囩▼杈撳嚭鍙傛暟鐨勫��
+ _strMsg = parameters[0].Value.ToString(); // 杩斿洖淇℃伅
+ _intSum = parameters[1].Value.ToString(); // 杩斿洖鏁伴噺
+ _NewDepotSectionCode = parameters[2].Value.ToString(); // 鏂板簱浣嶄唬鐮�
+
+ // 鍒ゆ柇鍙樻洿缁撴灉锛屽鏋滄暟閲忓皬浜庣瓑浜�0锛屽垯琛ㄧず鍙樻洿澶辫触锛屾姏鍑哄紓甯稿苟杩斿洖閿欒淇℃伅
+ var result = Convert.ToInt32(_intSum);
+ if (result <= 0) throw new Exception(_strMsg);
+
+ // 浣跨敤鍖垮悕瀵硅薄鑰屼笉鏄� dynamic? 鏇村悎閫�
+ var dto = new
+ {
+ barcode = unity.barcode,
+ OldDepotSectionCode = unity.OldDepotSectionCode,
+ NewDepotSectionCode = _NewDepotSectionCode
+ };
+
+ return dto;
+ }
+ catch (Exception ex)
+ {
+ // 鎹曡幏寮傚父骞舵姏鍑猴紝淇濈暀鍘熷寮傚父淇℃伅
+ throw new Exception(ex.Message);
+ }
+ finally
+ {
+ // 鍏抽棴鏁版嵁搴撹繛鎺�
+ conn.Close();
+ }
+ }
+ }
+ }
+ /*ProductionPickDto銆乄arehouseQuery鏈夎繃娣诲姞
+ public string? OldDepotSectionCode { get; set; } //鏃у簱浣嶇紪鐮�
+ public string? NewDepotSectionCode { get; set; } //鏂板簱浣嶇紪鐮�
+
+ ProductionPickDto鏈夎繃娣诲姞
+ public int? DepotId { get; set; } //浠撳簱id
+ */
+
+
+}
\ No newline at end of file
--
Gitblit v1.9.3