From 459621921ba77d8cc8bf0789209b76d387b820e8 Mon Sep 17 00:00:00 2001 From: 南骏 池 <chiffly@163.com> Date: 星期三, 27 八月 2025 09:29:44 +0800 Subject: [PATCH] 1.携客云字段优化 2.库位变更——hyx --- 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