From 43021e27282a22f25b51d499333e73225266e9c3 Mon Sep 17 00:00:00 2001 From: cnf <3200815559@qq.com> Date: 星期四, 14 八月 2025 17:34:50 +0800 Subject: [PATCH] 领料模块 --- service/Warehouse/TransferOutManager.cs | 355 +++++-- service/Warehouse/MesItemBlManager.cs | 114 +- entity/Womdaahb.cs | 422 +++++++++ Dto/service/ProductionPickDto.cs | 1 service/Wom/WomdaahbManager.cs | 1090 ++++++++++++++++++++++++ Controllers/Warehouse/TransferOutController.cs | 50 Controllers/Wom/WomdaahbController.cs | 587 +++++++++++++ 7 files changed, 2,456 insertions(+), 163 deletions(-) diff --git a/Controllers/Warehouse/TransferOutController.cs b/Controllers/Warehouse/TransferOutController.cs index 314ce0f..e4a02de 100644 --- a/Controllers/Warehouse/TransferOutController.cs +++ b/Controllers/Warehouse/TransferOutController.cs @@ -1,6 +1,7 @@ 锘縰sing System.Dynamic; using Microsoft.AspNetCore.Mvc; using NewPdaSqlServer.Dto.service; +using NewPdaSqlServer.service.@base; using NewPdaSqlServer.service.Warehouse; using NewPdaSqlServer.util; @@ -14,6 +15,8 @@ public class TransferOutController : ControllerBase { private readonly TransferOutManager _manager = new(); + + private readonly MesPrintMangeer _mCf = new(); #region 鍩虹CRUD @@ -166,6 +169,30 @@ } } + + [HttpPost("GetTransferInDetailListByBillNo")] + public ResponseResult GetTransferInDetailListByBillNo( + [FromBody] WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = + _manager.GetTransferInDetailListByBillNo(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> /// 鎵弿鏉$爜杩涜璋冩嫧鍑哄簱澶勭悊 /// </summary> @@ -197,9 +224,16 @@ try { dynamic resultInfos = new ExpandoObject(); - var (form, items) = _manager.ScanMoveBarcode(query); - resultInfos.form = form; - resultInfos.items = items; + resultInfos.tbBillList = _manager.ScanMoveBarcode(query); + if (resultInfos.tbBillList.result == "2") + { + return new ResponseResult + { + status = Convert.ToInt32(resultInfos.tbBillList.result), + message = resultInfos.tbBillList.strMsg, + data = resultInfos + }; + } return new ResponseResult { status = 0, @@ -236,14 +270,16 @@ /// </remarks> /// <response code="200">鍒嗗壊鎴愬姛</response> /// <response code="400">鍒嗗壊澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response> - [HttpPost("SplitBarcode")] - public ResponseResult SplitBarcode([FromBody] WarehouseQuery query) + [HttpPost("ScanCodeCF")] + public ResponseResult ScanCodeCF(WarehouseQuery query) { try { dynamic resultInfos = new ExpandoObject(); - var message = _manager.SplitBarcode(query); - resultInfos.tbBillList = message; + resultInfos.tbBillList = new ExpandoObject(); + resultInfos.tbBillList.printInfo = _mCf.getPrintInfo(query); + var scanResult = _manager.ScanCodeCF(query); + resultInfos.tbBillList.cfBarInfo = _mCf.getCfInfo(scanResult); return new ResponseResult { status = 0, diff --git a/Controllers/Wom/WomdaahbController.cs b/Controllers/Wom/WomdaahbController.cs new file mode 100644 index 0000000..779ca5a --- /dev/null +++ b/Controllers/Wom/WomdaahbController.cs @@ -0,0 +1,587 @@ +锘縰sing System.Dynamic; +using Microsoft.AspNetCore.Mvc; +using NewPdaSqlServer.Dto.service; +using NewPdaSqlServer.entity; +using NewPdaSqlServer.service.@base; +using NewPdaSqlServer.service.Wom; +using NewPdaSqlServer.util; + +namespace NewPdaSqlServer.Controllers.Wom; + +[ApiController] +[Route("api/[controller]")] +public class WomdaaController : ControllerBase +{ + private readonly WomdaaManager m = new(); + private readonly MesPrintMangeer _mCf = new(); + + #region 鐢熶骇棰嗘枡 + + //GetProductionPickDaa001 + /// <summary> + /// 妯$硦鏌ヨ宸ュ崟鍙峰苟杩斿洖 + /// </summary> + /// <returns></returns> + [HttpPost("GetProductionPickDaa001")] + public ResponseResult GetProductionPickDaa001(WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = m.GetProductionPickDaa001(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + //GetItemsByDaa001 + /// <summary> + /// 鏍规嵁宸ュ崟鍙疯幏鍙栦唬棰嗙墿鏂欐槑缁� + /// </summary> + /// <returns></returns> + [HttpPost("GetItemsByDaa001")] + public ResponseResult GetItemsByDaa001(WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = m.GetItemsByDaa001(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + //ScanCode + [HttpPost("ScanCode")] + public ResponseResult ScanCode(WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = m.ScanCode(query); + if(resultInfos.tbBillList.result == "2") + { + return new ResponseResult + { + status = Convert.ToInt32(resultInfos.tbBillList.result), + message = resultInfos.tbBillList.strMsg, + data = resultInfos + }; + } + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + //ScanCodeCF + [HttpPost("ScanCodeCF")] + public ResponseResult ScanCodeCF(WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = new ExpandoObject(); + //resultInfos.tbBillList.printInfo = _mCf.getPrintInfo(query); + var scanResult = m.ScanCodeCF(query); + resultInfos.tbBillList.cfBarInfo = _mCf.getCfInfo(scanResult); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 鑾峰彇鎵�鏈� + /// </summary> + /// <returns></returns> + [HttpPost("GetList")] + public ResponseResult GetList() + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = m.GetList(); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + + /// <summary> + /// 鏍规嵁涓婚敭鑾峰彇 + /// </summary> + /// <returns></returns> + [HttpPost("GetById")] + public ResponseResult GetById(int id) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = m.GetById(id); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 鏍规嵁涓婚敭鍒犻櫎 + /// </summary> + /// <returns></returns> + [HttpPost("DeleteByIds")] + public ResponseResult DeleteByIds([FromBody] object[] ids) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = m.DeleteByIds(ids); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 娣诲姞 + /// </summary> + /// <returns></returns> + [HttpPost("Insert")] + public ResponseResult Add([FromBody] Womdaa data) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = m.Insert(data); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 娣诲姞杩斿洖鑷 + /// </summary> + /// <returns></returns> + [HttpPost("InsertReturnIdentity")] + public ResponseResult InsertReturnIdentity([FromBody] Womdaa data) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = m.InsertReturnIdentity(data); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + + /// <summary> + /// 淇敼 + /// </summary> + /// <returns></returns> + [HttpPost("Update")] + public ResponseResult Update([FromBody] Womdaa data) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = m.Update(data); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + #endregion + + #region 鐜板満绠$悊 + + + /// <summary> + /// 鎵弿娉ㄥ鐮侊紝鑾峰彇宸ュ崟鍜屾潯鐮佷俊鎭� + /// </summary> + /// <returns></returns> + [HttpPost("getZsBarInfo")] + public ResponseResult getZsBarInfo([FromBody] dynamic query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + // 鍏堝垵濮嬪寲tbBillList灞炴�� + resultInfos.tbBillList = new ExpandoObject(); + resultInfos.tbBillList.ZsBarInfo = m.getZsBarInfo(query); + resultInfos.tbBillList.Traceability = m.getTraceability(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + + /// <summary> + /// 浜у搧缁戝畾锛岃拷婧爜鍜屾祦姘寸爜缁戝畾 + /// </summary> + /// <returns></returns> + [HttpPost("ProductBinding")] + public ResponseResult ProductBinding([FromBody] dynamic query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + // 鍏堝垵濮嬪寲tbBillList灞炴�� + resultInfos.tbBillList = new ExpandoObject(); + resultInfos.tbBillList = m.ProductBinding(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 鑾峰彇鍗℃澘淇℃伅 + /// </summary> + /// <returns></returns> + [HttpPost("getKbBarInfo")] + public ResponseResult getKbBarInfo([FromBody] dynamic query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + // 鍏堝垵濮嬪寲tbBillList灞炴�� + resultInfos.tbBillList = new ExpandoObject(); + resultInfos.tbBillList.KbBarInfo = m.getKbBarInfo(query); + resultInfos.tbBillList.KbBarMxInfo = m.getKbBarMxInfo(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 鑾峰彇绠辩爜淇℃伅 + /// </summary> + /// <returns></returns> + [HttpPost("getXBarInfo")] + public ResponseResult getXBarInfo([FromBody] dynamic query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + // 鍏堝垵濮嬪寲tbBillList灞炴�� + resultInfos.tbBillList = new ExpandoObject(); + resultInfos.tbBillList.XBarInfo = m.getXBarInfo(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 缁戝畾绠辩爜涓庢墭鏉跨爜 + /// </summary> + /// <returns></returns> + [HttpPost("submitAllChecked")] + public ResponseResult submitAllChecked([FromBody] dynamic query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + // 鍏堝垵濮嬪寲tbBillList灞炴�� + resultInfos.tbBillList = new ExpandoObject(); + resultInfos.tbBillList = m.submitAllChecked(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 鏍稿閫佹 + /// </summary> + /// <returns></returns> + [HttpPost("submitInspection")] + public ResponseResult submitInspection([FromBody] dynamic query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + // 鍏堝垵濮嬪寲tbBillList灞炴�� + resultInfos.tbBillList = new ExpandoObject(); + resultInfos.tbBillList = m.SubmitKbInspection(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + //GetItemsXcsl + /// <summary> + /// 鏍规嵁宸ュ崟鍙疯幏鍙栧緟鏀舵枡鐗╂枡鏄庣粏 + /// </summary> + /// <returns></returns> + [HttpPost("GetItemsXcsl")] + public ResponseResult GetItemsXcsl(WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = m.GetItemsXcsl(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + + //GetItemsXcsl + /// <summary> + /// 鐗╂枡鏉$爜鏀舵枡 + /// </summary> + /// <returns></returns> + [HttpPost("ScanXcsl")] + public ResponseResult ScanXcsl(dynamic query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = m.ScanXcsl(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + //GetItemsXcsl + /// <summary> + /// 鏍规嵁绾夸綋鑾峰彇浠櫒閲嶉噺 + /// </summary> + /// <returns></returns> + [HttpPost("GetWeightByXt")] + public ResponseResult GetWeightByXt(dynamic query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = m.GetWeightByXt(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + + /// <summary> + /// 鐜板満鏀舵枡鑾峰彇鍙�夊伐鍗曚俊鎭� + /// </summary> + /// <param name="query"></param> + /// <returns></returns> + [HttpPost("GetXcslDaa")] + public ResponseResult GetXcslDaa([FromBody] dynamic query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = m.GetXcslDaa(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + + //GetItemsXctl + /// <summary> + /// 鏍规嵁宸ュ崟鍙疯幏鍙栧緟鎶曟枡鐗╂枡鏄庣粏 + /// </summary> + /// <returns></returns> + [HttpPost("GetItemsXctl")] + public ResponseResult GetItemsXctl(WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = m.GetItemsXctl(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + //GetItemsXcsl + /// <summary> + /// 鐗╂枡鏉$爜鎶曟枡 + /// </summary> + /// <returns></returns> + [HttpPost("ScanXctl")] + public ResponseResult ScanXctl(dynamic query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = m.ScanXctl(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + #endregion +} \ No newline at end of file diff --git a/Dto/service/ProductionPickDto.cs b/Dto/service/ProductionPickDto.cs index 935b3a2..518aaaf 100644 --- a/Dto/service/ProductionPickDto.cs +++ b/Dto/service/ProductionPickDto.cs @@ -6,6 +6,7 @@ public class ProductionPickDto { public string? ItemModel { get; set; } + public string? itemNo { get; set; } public string? PlanNo { get; set; } public string? daa001 { get; set; } diff --git a/entity/Womdaahb.cs b/entity/Womdaahb.cs new file mode 100644 index 0000000..edf9b93 --- /dev/null +++ b/entity/Womdaahb.cs @@ -0,0 +1,422 @@ +锘縰sing SqlSugar; + +namespace NewPdaSqlServer.entity; + +/// <summary> +/// </summary> +[SugarTable("WOMDAAHB")] +public class Womdaahb +{ + /// <summary> + /// 榛樿鍊�: (newid()) + /// </summary> + [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)] + public Guid Guid { get; set; } + + /// <summary> + /// </summary> + [SugarColumn(ColumnName = "pbaGuid")] + public Guid? PbaGuid { get; set; } + + /// <summary> + /// </summary> + [SugarColumn(ColumnName = "caaGuid")] + public Guid? CaaGuid { get; set; } + + ///// <summary> + ///// 鑷鍒� + ///// </summary> + //[SugarColumn(ColumnName = "id")] + //public int? Id { get; set; } + + ///// <summary> + ///// 鎺掍骇ID + ///// </summary> + //[SugarColumn(ColumnName = "pid")] + //public int? Pid { get; set; } + + /// <summary> + /// 鍗曞彿 + /// </summary> + [SugarColumn(ColumnName = "daa001")] + public string? Daa001 { get; set; } + + /// <summary> + /// 浜у搧ID + /// </summary> + [SugarColumn(ColumnName = "daa002")] + public string? Daa002 { get; set; } + + /// <summary> + /// 浜у搧鍚嶇О + /// </summary> + [SugarColumn(ColumnName = "daa003")] + public string? Daa003 { get; set; } + + /// <summary> + /// 浜у搧瑙勬牸 + /// </summary> + [SugarColumn(ColumnName = "daa004")] + public string? Daa004 { get; set; } + + /// <summary> + /// 鍗曚綅 + /// </summary> + [SugarColumn(ColumnName = "daa005")] + public string? Daa005 { get; set; } + + /// <summary> + /// ERP棰勮寮�宸ユ椂闂� + /// </summary> + [SugarColumn(ColumnName = "daa006")] + public DateTime? Daa006 { get; set; } + + /// <summary> + /// ERP棰勮瀹屽伐鏃堕棿 + /// </summary> + [SugarColumn(ColumnName = "daa007")] + public DateTime? Daa007 { get; set; } + + /// <summary> + /// 宸ュ崟鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "daa008")] + public int? Daa008 { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + [SugarColumn(ColumnName = "daa009")] + public string? Daa009 { get; set; } + + /// <summary> + /// 鍏ュ簱鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "daa010")] + public int? Daa010 { get; set; } + + /// <summary> + /// 宸茬敓浜ч噺 + /// </summary> + [SugarColumn(ColumnName = "daa011")] + public int? Daa011 { get; set; } + + /// <summary> + /// 鎶ュ簾鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "daa012")] + public int? Daa012 { get; set; } + + /// <summary> + /// 宸ヤ綔杞﹂棿 + /// </summary> + [SugarColumn(ColumnName = "daa013")] + public string? Daa013 { get; set; } + + /// <summary> + /// 鎶曟枡鍗曞崟鍙� + /// </summary> + [SugarColumn(ColumnName = "daa014")] + public string? Daa014 { get; set; } + + /// <summary> + /// 鐢熶骇绾垮埆 + /// </summary> + [SugarColumn(ColumnName = "daa015")] + public string? Daa015 { get; set; } + + /// <summary> + /// 瀹為檯寮�宸ユ棩 + /// </summary> + [SugarColumn(ColumnName = "daa016")] + public DateTime? Daa016 { get; set; } + + /// <summary> + /// 瀹為檯瀹屽伐鏃� + /// </summary> + [SugarColumn(ColumnName = "daa017")] + public DateTime? Daa017 { get; set; } + + /// <summary> + /// 宸ュ崟鐘舵�� + /// </summary> + [SugarColumn(ColumnName = "daa018")] + public string? Daa018 { get; set; } + + /// <summary> + /// 榻愬鐘舵�� + /// </summary> + [SugarColumn(ColumnName = "daa019")] + public string? Daa019 { get; set; } + + /// <summary> + /// 瀹℃牳鐮� + /// </summary> + [SugarColumn(ColumnName = "fstatus")] + public int? Fstatus { get; set; } + + /// <summary> + /// 瀹℃牳鏃ユ湡 + /// </summary> + [SugarColumn(ColumnName = "check_date")] + public DateTime? CheckDate { get; set; } + + /// <summary> + /// 瀹℃牳浜� + /// </summary> + [SugarColumn(ColumnName = "check_user")] + public string? CheckUser { get; set; } + + /// <summary> + /// 绾垮埆缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "daa020")] + public string? Daa020 { get; set; } + + /// <summary> + /// 浠诲姟鍗曞崟鍙� + /// </summary> + [SugarColumn(ColumnName = "daa021")] + public string? Daa021 { get; set; } + + /// <summary> + /// 閫氱煡澶囨枡锛�0-鏈�氱煡锛�1-閫氱煡 + /// 榛樿鍊�: ((0)) + /// </summary> + [SugarColumn(ColumnName = "daa022")] + public int? Daa022 { get; set; } + + /// <summary> + /// 鐢熶骇搴忓彿 + /// </summary> + [SugarColumn(ColumnName = "daa023")] + public int? Daa023 { get; set; } + + /// <summary> + /// 鎺掍骇鏃ユ湡 + /// </summary> + [SugarColumn(ColumnName = "daa024")] + public string? Daa024 { get; set; } + + /// <summary> + /// 棣栦欢鏄惁妫�楠�1-妫�楠岋紝0鏈楠� + /// </summary> + [SugarColumn(ColumnName = "daa025")] + public string? Daa025 { get; set; } + + /// <summary> + /// 棣栦欢妫�楠岀粨鏋� + /// </summary> + [SugarColumn(ColumnName = "daa026")] + public string? Daa026 { get; set; } + + /// <summary> + /// 宸叉姤妫�锛�0-鏈姤妫�锛�1-宸叉姤妫� + /// </summary> + [SugarColumn(ColumnName = "is_reportcheck")] + public int? IsReportcheck { get; set; } + + /// <summary> + /// 鎶ユ浜� + /// </summary> + [SugarColumn(ColumnName = "usname")] + public string? Usname { get; set; } + + /// <summary> + /// 鎶ユ鏃堕棿 + /// </summary> + [SugarColumn(ColumnName = "reporttime")] + public DateTime? Reporttime { get; set; } + + /// <summary> + /// 鏈哄彴缂栧彿 + /// </summary> + [SugarColumn(ColumnName = "machine_no")] + public string? MachineNo { get; set; } + + /// <summary> + /// 澶囨枡瀹屾垚1-瀹屾垚锛�0鏈畬鎴� + /// </summary> + [SugarColumn(ColumnName = "daa027")] + public int? Daa027 { get; set; } + + /// <summary> + /// 澶囨枡瀹屾垚鏃堕棿 + /// </summary> + [SugarColumn(ColumnName = "daa028")] + public string? Daa028 { get; set; } + + /// <summary> + /// 鏍囧噯宸ユ椂 + /// </summary> + [SugarColumn(ColumnName = "prod_hour")] + public int? ProdHour { get; set; } + + /// <summary> + /// 鍗曚汉灏忔椂浜ц兘 + /// </summary> + [SugarColumn(ColumnName = "person_hour_capacity")] + public int? PersonHourCapacity { get; set; } + + /// <summary> + /// 鐞嗚鏍囦骇 + /// </summary> + [SugarColumn(ColumnName = "the_capacity")] + public int? TheCapacity { get; set; } + + /// <summary> + /// 璁″垝鐢ㄤ汉鏁� + /// </summary> + [SugarColumn(ColumnName = "plan_personnel")] + public int? PlanPersonnel { get; set; } + + /// <summary> + /// 璁″垝鏍囧噯浜ц兘 + /// </summary> + [SugarColumn(ColumnName = "plan_capacity")] + public int? PlanCapacity { get; set; } + + /// <summary> + /// 鐞嗚鐢ㄦ椂/M + /// </summary> + [SugarColumn(ColumnName = "the_min")] + public int? TheMin { get; set; } + + /// <summary> + /// 鐞嗚鐢ㄦ椂/H + /// </summary> + [SugarColumn(ColumnName = "the_hour")] + public int? TheHour { get; set; } + + /// <summary> + /// 绾夸綋绫诲埆 + /// </summary> + [SugarColumn(ColumnName = "line_type")] + public string? LineType { get; set; } + + /// <summary> + /// 鏍囧噯浜烘暟 + /// </summary> + [SugarColumn(ColumnName = "personnel")] + public int? Personnel { get; set; } + + /// <summary> + /// 鎹㈢嚎鏃堕棿 + /// </summary> + [SugarColumn(ColumnName = "change_line_time")] + public int? ChangeLineTime { get; set; } + + /// <summary> + /// 浼戞伅鏃堕棿 + /// </summary> + [SugarColumn(ColumnName = "rest_time")] + public int? RestTime { get; set; } + + /// <summary> + /// 鎺掍骇搴忓彿 + /// </summary> + [SugarColumn(ColumnName = "schedule_order")] + public int? ScheduleOrder { get; set; } + + /// <summary> + /// MES棰勮寮�宸ユ椂闂� + /// </summary> + [SugarColumn(ColumnName = "mes_start_prod")] + public DateTime? MesStartProd { get; set; } + + /// <summary> + /// MES棰勮瀹屽伐鏃堕棿 + /// </summary> + [SugarColumn(ColumnName = "mes_end_prod")] + public DateTime? MesEndProd { get; set; } + + /// <summary> + /// 鎺掍骇鎺ㄩ�佹爣璇� + /// </summary> + [SugarColumn(ColumnName = "prodts")] + public int? Prodts { get; set; } + + /// <summary> + /// 棰勮澶囨枡鏃堕棿 + /// </summary> + [SugarColumn(ColumnName = "prepare_time")] + public DateTime? PrepareTime { get; set; } + + /// <summary> + /// 鎻掍欢鎶曞叆浜烘暟 + /// </summary> + [SugarColumn(ColumnName = "cj_worker")] + public int? CjWorker { get; set; } + + /// <summary> + /// 鎻掍欢璁″垝鎶曞叆浜烘暟 + /// </summary> + [SugarColumn(ColumnName = "p_cj_worker")] + public int? PCjWorker { get; set; } + + /// <summary> + /// 鎻掍欢鏃ヤ骇閲� + /// </summary> + [SugarColumn(ColumnName = "cj_daily_out")] + public int? CjDailyOut { get; set; } + + /// <summary> + /// 鎻掍欢鏍囧噯宸ユ椂 + /// </summary> + [SugarColumn(ColumnName = "cj_std_hour")] + public int? CjStdHour { get; set; } + + /// <summary> + /// 閿$剨鎶曞叆浜烘暟 + /// </summary> + [SugarColumn(ColumnName = "hx_worker")] + public int? HxWorker { get; set; } + + /// <summary> + /// 閿$剨璁″垝鎶曞叆浜烘暟 + /// </summary> + [SugarColumn(ColumnName = "p_hx_worker")] + public int? PHxWorker { get; set; } + + /// <summary> + /// 閿$剨鏃ヤ骇閲� + /// </summary> + [SugarColumn(ColumnName = "hx_daily_out")] + public int? HxDailyOut { get; set; } + + /// <summary> + /// 閿$剨鏍囧噯宸ユ椂 + /// </summary> + [SugarColumn(ColumnName = "hx_std_hour")] + public int? HxStdHour { get; set; } + + /// <summary> + /// 鎻掍欢鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "cj_num")] + public int? CjNum { get; set; } + + /// <summary> + /// 瀹㈡埛 + /// </summary> + [SugarColumn(ColumnName = "cust")] + public string? Cust { get; set; } + + /// <summary> + /// 鏄惁棣栨 + /// </summary> + [SugarColumn(ColumnName = "IS_SJ")] + public int? IsSj { get; set; } + + /// <summary> + /// 浜у搧缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "daa029")] + public string? Daa029 { get; set; } + + /// <summary> + /// 瀹為檯绾夸綋缂栫爜 + /// </summary> + [SugarColumn(ColumnName = "sj_xt")] + public string? SjXt { get; set; } +} \ No newline at end of file diff --git a/service/Warehouse/MesItemBlManager.cs b/service/Warehouse/MesItemBlManager.cs index c9b5ff5..93e4d24 100644 --- a/service/Warehouse/MesItemBlManager.cs +++ b/service/Warehouse/MesItemBlManager.cs @@ -132,29 +132,36 @@ try { // 璋冪敤瀛樺偍杩囩▼ - var parameters = new List<SqlParameter> - { - new SqlParameter("@c_user", query.userName), - new SqlParameter("@p_bill_no", query.billNo ?? string.Empty), - new SqlParameter("@p_item_barcode", query.barcode), - new SqlParameter("@p_bl_no", query.blNo), - new SqlParameter("@p_type", query.Type), - new SqlParameter("@outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output }, - new SqlParameter("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output }, - new SqlParameter("@barcode_num", SqlDbType.Decimal) { Direction = ParameterDirection.Output }, - new SqlParameter("@split_num", SqlDbType.Decimal) { Direction = ParameterDirection.Output } - }; + var parameters = new SqlParameter[] + { + new SqlParameter("@C_USER", SqlDbType.NVarChar, 100) { Value = query.userName ?? string.Empty }, + new SqlParameter("@P_BILL_NO", SqlDbType.NVarChar, 50) { Value = query.billNo ?? string.Empty }, + new SqlParameter("@P_ITEM_BARCODE", SqlDbType.NVarChar, 100) { Value = query.barcode ?? string.Empty }, + new SqlParameter("@P_BL_NO", SqlDbType.NVarChar, 100) { Value = query.blNo ?? string.Empty }, + new SqlParameter("@P_TYPE", SqlDbType.NVarChar, 20) { Value = query.Type ?? string.Empty }, + new SqlParameter("@OUT_MSG", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output }, + new SqlParameter("@OUT_SUM", SqlDbType.Int) { Direction = ParameterDirection.Output }, + new SqlParameter("@BARCODE_NUM", SqlDbType.Decimal) { + Direction = ParameterDirection.Output, + Precision = 18, + Scale = 10 + }, + new SqlParameter("@SPLIT_NUM", SqlDbType.Decimal) { + Direction = ParameterDirection.Output, + Precision = 18, + Scale = 10 + } + }; // 鎵ц瀛樺偍杩囩▼ - Db.Ado.ExecuteCommand( - "EXEC PRC_PDA_SCBLCL @c_user, @p_bill_no, @p_item_barcode, @p_bl_no, @p_type, @outMsg OUTPUT, @outSum OUTPUT, @barcode_num OUTPUT, @split_num OUTPUT", - parameters.ToArray()); + string procedureName = "PRC_PDA_SCBLCL"; + int res = DbHelperSQL.RunProcedure_NonQuery(procedureName, parameters); // 鑾峰彇杈撳嚭鍙傛暟 outMsg = parameters[5].Value?.ToString() ?? ""; - outSum = Convert.ToInt32(parameters[6].Value); - barcodeNum = Convert.ToDecimal(parameters[7].Value); - splitNum = Convert.ToDecimal(parameters[8].Value); + outSum = parameters[6].Value as int? ?? 0; // 榛樿鍊兼牴鎹渶姹傝皟鏁� + barcodeNum = parameters[7].Value as decimal? ?? 0m; + splitNum = parameters[8].Value as decimal? ?? 0m; // 澶勭悊瀛樺偍杩囩▼杩斿洖鐨勭粨鏋� if (outSum == 2) // 闇�瑕佹媶鍒� @@ -598,7 +605,7 @@ WarehouseQuery query) { - // 杈撳叆鍙傛暟楠岃瘉锛堜繚鎸佷笉鍙橈級 + // Validate input parameters if (string.IsNullOrEmpty(query.userName)) throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒"); @@ -614,47 +621,41 @@ if (string.IsNullOrEmpty(query.blNo)) throw new Exception("琛ユ枡鍗曞彿涓嶈兘涓虹┖锛�"); - // 鍑嗗瀛樺偍杩囩▼鍙傛暟 - var outMsg = ""; - var outSum = -1; - var outCfBar = ""; + // Prepare parameters for the stored procedure + var parameters = new List<SugarParameter> +{ + new SugarParameter("@C_USER", query.userName), + new SugarParameter("@P_BILL_NO", query.billNo), + new SugarParameter("@P_ITEM_BARCODE", query.barcode), + new SugarParameter("@P_BL_NO", query.blNo), + new SugarParameter("@P_TYPE", query.Type), + new SugarParameter("@NUM", query.Num), + new SugarParameter("@OUT_MSG", "", System.Data.DbType.String, ParameterDirection.Output), + new SugarParameter("@OUT_SUM", 0, System.Data.DbType.Int32, ParameterDirection.Output), + new SugarParameter("@OUT_CF_BAR", "", System.Data.DbType.String, ParameterDirection.Output) +}; - try + // Execute the stored procedure + Db.Ado.UseStoredProcedure().ExecuteCommand("PRC_PDA_SCBLCL_CF", parameters); + + // Get output parameters + var outMsg = parameters.FirstOrDefault(p => p.ParameterName == "@OUT_MSG")?.Value?.ToString(); + var outSum = Convert.ToInt32(parameters.FirstOrDefault(p => p.ParameterName == "@OUT_SUM")?.Value ?? -1); + var outCfBar = parameters.FirstOrDefault(p => p.ParameterName == "@OUT_CF_BAR")?.Value?.ToString(); + + // Handle the result + if (outSum == -1) { - // 璋冪敤瀛樺偍杩囩▼ - var parameters = new List<SugarParameter> - { - new SugarParameter("@C_USER", query.userName), // 鎿嶄綔浜哄憳 - new SugarParameter("@P_BILL_NO", query.billNo), // 宸ュ崟鍙� - new SugarParameter("@P_ITEM_BARCODE", query.barcode), // 鏉$爜 - new SugarParameter("@P_BL_NO", query.blNo), // 琛ユ枡鍗曞彿 - new SugarParameter("@P_TYPE", query.Type), // 绫诲瀷(鐢熶骇琛ユ枡/鐢熶骇瓒呴) - new SugarParameter("@NUM", query.Num), // 鎷嗗垎鏁� - new SugarParameter("@OUT_MSG", null, true), // 杈撳嚭娑堟伅 - new SugarParameter("@OUT_SUM", null, true), // 鎵ц缁撴灉(1鎴愬姛,-1澶辫触) - new SugarParameter("@OUT_CF_BAR", null, true) // 杈撳嚭鏂版潯鐮佺紪鍙� - }; - - // 鎵ц瀛樺偍杩囩▼ - Db.Ado.UseStoredProcedure().ExecuteCommand("PRC_PDA_SCBLCL_CF", parameters); - - // 鑾峰彇杈撳嚭鍙傛暟 - outMsg = parameters.First(p => p.ParameterName == "@OUT_MSG").Value?.ToString(); - outSum = Convert.ToInt32(parameters.First(p => p.ParameterName == "@OUT_SUM").Value); - outCfBar = parameters.First(p => p.ParameterName == "@OUT_CF_BAR").Value?.ToString(); - - // 澶勭悊瀛樺偍杩囩▼杩斿洖缁撴灉 - if (outSum != 1) - { - throw new Exception(outMsg ?? "鎿嶄綔澶辫触"); - } - } - catch (Exception ex) - { - throw new Exception(outMsg ?? ex.Message); + throw new Exception(outMsg ?? "鎿嶄綔澶辫触"); } - // 鑾峰彇寰呭彂鏂欐槑缁嗗垪琛紙淇濇寔涓嶅彉锛� + if (outSum == 2) + { + // Handle case where barcode needs to be split + // You might want to return the new barcode to the client + } + + // Get pending list for the supplement order var pendingList = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) => new JoinQueryInfos(JoinType.Left, a.Id == b.Mid)) .Where((a, b) => a.BlNo == query.blNo @@ -670,7 +671,6 @@ }) .ToList(); - // 杩斿洖缁撴灉锛堟垚鍔熺姸鎬佸拰寰呭彂鏂欏垪琛級 return (outSum == 1, pendingList); //if (string.IsNullOrEmpty(query.userName)) diff --git a/service/Warehouse/TransferOutManager.cs b/service/Warehouse/TransferOutManager.cs index 06d5955..34119aa 100644 --- a/service/Warehouse/TransferOutManager.cs +++ b/service/Warehouse/TransferOutManager.cs @@ -42,6 +42,7 @@ // 鏍规嵁pid鏌ヨ瀵瑰簲鐨勫嚭搴撳崟鍙� var billNos = Db.Queryable<MesDbck>() .Where(x => result.Contains(x.Id) && x.FApproveStatus == 1) + .OrderBy(x => x.FCreateDate) .Select(x => x.FBillNo) .ToList(); @@ -53,41 +54,144 @@ /// </summary> /// <param name="query">鏌ヨ鍙傛暟,鍖呭惈鍗曟嵁鍙�</param> /// <returns>寰呭鐞嗙殑璋冩嫧鍑哄簱鏄庣粏鍒楄〃</returns> - public List<ItemDetailModel> GetTransferOutDetailListByBillNo( + public ProductionPickDto GetTransferOutDetailListByBillNo( WarehouseQuery query) { - var p_bill_no = query.billNo; + if (string.IsNullOrEmpty(query.billNo)) throw new Exception("璋冩嫧鍗曞彿涓虹┖"); - // 鏍规嵁SQL鏌ヨ鏉′欢鑾峰彇寰呭鐞嗙殑鍑哄簱鏄庣粏 - // 鍏宠仈鏌ヨTransferOutDetail銆乀ransferOut鍜孧esItems涓夊紶琛� - // 绛涢�夋潯浠�:鏈畬鎴愭暟閲忓ぇ浜�0涓斿崟鎹凡瀹℃牳 - var result = Db.Queryable<MesDbckDetail, MesDbck, MesItems>( - (b, a, s) => new JoinQueryInfos( - JoinType.Left, b.Pid == a.Id, - JoinType.Left, b.FMaterialId == s.Id.ToString())) - .Where((b, a, s) => - !((b.FQty ?? 0) == (b.SQty ?? 0) && (b.FQty ?? 0) == (b.RQty ?? 0)) - && a.FBillNo == p_bill_no // 鍖归厤鍗曟嵁鍙� - && a.FApproveStatus == 1) // 鍗曟嵁宸插鏍� - .OrderBy((b, a, s) => s.ItemNo) - .Select((b, a, s) => new ItemDetailModel - { - ItemNo = s.ItemNo, - ItemName = s.ItemName, - ItemModel = s.ItemModel, - FQty = b.FQty, // 鐢宠鏁伴噺 - SQty = b.SQty, // 宸叉壂鏁伴噺 - RQty = b.RQty, // 宸叉壂鏁伴噺 - // 淇濈暀鍏朵粬蹇呰瀛楁... - Pid = b.Pid.ToString(), - FMaterialId = b.FMaterialId, - Id = b.Id.ToString() - }) - .ToList(); + var sql1 = string.Format(@"SELECT * FROM MES_DBCK WHERE FDocumentStatus = 'C' AND FBillNo = '{0}'", query.billNo); - if(result.Count < 1) throw new Exception("璇ヨ皟鎷ㄥ崟涓嶅瓨鍦ㄦ垨宸叉壂瀹岋紝璇烽噸鏂版壂鎻�"); + var dbck = Db.Ado.SqlQuery<ItemDetailModel>(sql1); - return result; + if (dbck.Count < 1) throw new Exception("璋冩嫧鍗曞彿涓嶅瓨鍦ㄦ垨鏈鏍革紒"); + + var sql2 = string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.FQty FQty,b.SQty SQty,b.FQty - b.SQty DSQty , + dbo.F_QX_GETRECODEPOTSE(B.FMATERIALID,'','','') as RecoKw + FROM MES_DBCK_DETAIL B + LEFT JOIN MES_DBCK A ON A.ID = B.pid + LEFT JOIN MES_ITEMS C ON B.FMATERIALID = C.item_id + LEFT JOIN WOMCAB D ON B.erpid = D.ERPID + WHERE A.FBillNo = '{0}' ORDER BY FSEQ", query.billNo); + + var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql2); + + + var DS_list = womdabs.Where(s => s.DSQty > 0).ToList(); + + var YS_list = womdabs.Where(s => s.SQty > 0).ToList(); + + //var p_bill_no = query.billNo; + + //// 鏍规嵁SQL鏌ヨ鏉′欢鑾峰彇寰呭鐞嗙殑鍑哄簱鏄庣粏 + //// 鍏宠仈鏌ヨTransferOutDetail銆乀ransferOut鍜孧esItems涓夊紶琛� + //// 绛涢�夋潯浠�:鏈畬鎴愭暟閲忓ぇ浜�0涓斿崟鎹凡瀹℃牳 + //var result = Db.Queryable<MesDbckDetail, MesDbck, MesItems>( + // (b, a, s) => new JoinQueryInfos( + // JoinType.Left, b.Pid == a.Id, + // JoinType.Left, b.FMaterialId == s.Id.ToString())) + // .Where((b, a, s) => + // !((b.FQty ?? 0) == (b.SQty ?? 0) && (b.FQty ?? 0) == (b.RQty ?? 0)) + // && a.FBillNo == p_bill_no // 鍖归厤鍗曟嵁鍙� + // && a.FApproveStatus == 1) // 鍗曟嵁宸插鏍� + // .OrderBy((b, a, s) => s.ItemNo) + // .Select((b, a, s) => new ItemDetailModel + // { + // ItemNo = s.ItemNo, + // ItemName = s.ItemName, + // ItemModel = s.ItemModel, + // FQty = b.FQty, // 鐢宠鏁伴噺 + // SQty = b.SQty, // 宸叉壂鏁伴噺 + // RQty = b.RQty, // 宸叉壂鏁伴噺 + // // 淇濈暀鍏朵粬蹇呰瀛楁... + // Pid = b.Pid.ToString(), + // FMaterialId = b.FMaterialId, + // Id = b.Id.ToString() + // }) + // .ToList(); + + //if(result.Count < 1) throw new Exception("璇ヨ皟鎷ㄥ崟涓嶅瓨鍦ㄦ垨宸叉壂瀹岋紝璇烽噸鏂版壂鎻�"); + + var dto = new ProductionPickDto + { + items = DS_list, + Ysitems = YS_list + // yisao = mesInvItemOutCDetailsList + }; + + return dto; + } + + + /// <summary> + /// 鏍规嵁鍗曟嵁鍙疯幏鍙栧緟澶勭悊鐨勮皟鎷ㄥ嚭搴撴槑缁嗗垪琛� + /// </summary> + /// <param name="query">鏌ヨ鍙傛暟,鍖呭惈鍗曟嵁鍙�</param> + /// <returns>寰呭鐞嗙殑璋冩嫧鍑哄簱鏄庣粏鍒楄〃</returns> + public ProductionPickDto GetTransferInDetailListByBillNo( + WarehouseQuery query) + { + if (string.IsNullOrEmpty(query.billNo)) throw new Exception("璋冩嫧鍗曞彿涓虹┖"); + + var sql1 = string.Format(@"SELECT * FROM MES_DBCK WHERE FDocumentStatus = 'C' AND FBillNo = '{0}'", query.billNo); + + var dbck = Db.Ado.SqlQuery<ItemDetailModel>(sql1); + + if (dbck.Count < 1) throw new Exception("璋冩嫧鍗曞彿涓嶅瓨鍦ㄦ垨鏈鏍革紒"); + + var sql2 = string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.FQty FQty,b.SQty SQty,b.RQty RQty,b.SQty - b.RQty DSQty , + dbo.F_QX_GETRECODEPOTSE(B.FMATERIALID,'','','') as RecoKw + FROM MES_DBCK_DETAIL B + LEFT JOIN MES_DBCK A ON A.ID = B.pid + LEFT JOIN MES_ITEMS C ON B.FMATERIALID = C.item_id + LEFT JOIN WOMCAB D ON B.erpid = D.ERPID + WHERE A.FBillNo = '{0}' ORDER BY FSEQ", query.billNo); + + var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql2); + + + var DS_list = womdabs.Where(s => s.DSQty > 0).ToList(); + + var YS_list = womdabs.Where(s => s.RQty > 0).ToList(); + + //var p_bill_no = query.billNo; + + //// 鏍规嵁SQL鏌ヨ鏉′欢鑾峰彇寰呭鐞嗙殑鍑哄簱鏄庣粏 + //// 鍏宠仈鏌ヨTransferOutDetail銆乀ransferOut鍜孧esItems涓夊紶琛� + //// 绛涢�夋潯浠�:鏈畬鎴愭暟閲忓ぇ浜�0涓斿崟鎹凡瀹℃牳 + //var result = Db.Queryable<MesDbckDetail, MesDbck, MesItems>( + // (b, a, s) => new JoinQueryInfos( + // JoinType.Left, b.Pid == a.Id, + // JoinType.Left, b.FMaterialId == s.Id.ToString())) + // .Where((b, a, s) => + // !((b.FQty ?? 0) == (b.SQty ?? 0) && (b.FQty ?? 0) == (b.RQty ?? 0)) + // && a.FBillNo == p_bill_no // 鍖归厤鍗曟嵁鍙� + // && a.FApproveStatus == 1) // 鍗曟嵁宸插鏍� + // .OrderBy((b, a, s) => s.ItemNo) + // .Select((b, a, s) => new ItemDetailModel + // { + // ItemNo = s.ItemNo, + // ItemName = s.ItemName, + // ItemModel = s.ItemModel, + // FQty = b.FQty, // 鐢宠鏁伴噺 + // SQty = b.SQty, // 宸叉壂鏁伴噺 + // RQty = b.RQty, // 宸叉壂鏁伴噺 + // // 淇濈暀鍏朵粬蹇呰瀛楁... + // Pid = b.Pid.ToString(), + // FMaterialId = b.FMaterialId, + // Id = b.Id.ToString() + // }) + // .ToList(); + + //if(result.Count < 1) throw new Exception("璇ヨ皟鎷ㄥ崟涓嶅瓨鍦ㄦ垨宸叉壂瀹岋紝璇烽噸鏂版壂鎻�"); + + var dto = new ProductionPickDto + { + items = DS_list, + Ysitems = YS_list + // yisao = mesInvItemOutCDetailsList + }; + + return dto; } public List<ItemDetailModel> GetDBCKDetal( @@ -130,7 +234,7 @@ /// </summary> /// <param name="query">鍖呭惈鍗曟嵁鍙枫�佺敤鎴峰悕鍜屾潯鐮佷俊鎭殑鏌ヨ鍙傛暟</param> /// <returns>澶勭悊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏鍒楄〃</returns> - public (WarehouseQuery form, List<ItemDetailModel> items) + public ProductionPickDto ScanMoveBarcode(WarehouseQuery query) { var p_bill_no = query.billNo; @@ -148,8 +252,7 @@ // 鏌ヨ鏉$爜搴撳瓨淇℃伅骞堕獙璇� var stock = Db.Queryable<MesInvItemStocks>() .Where(x => x.ItemBarcode == p_item_barcode - && x.Quantity > 0 - && !string.IsNullOrEmpty(x.DepotsCode)) + && x.Quantity > 0) .First(); if (stock == null) throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{p_item_barcode}"); @@ -200,7 +303,18 @@ query.Fum = Convert.ToDecimal(splitNum); // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏 - return (query, GetDBCKDetal(query)); + //return (query, GetDBCKDetal(query)); + var dto = new ProductionPickDto + { + itemNo = item.ItemNo, + barcodeNum = barcodeNum, + splitNum = splitNum, + barcode = query.barcode, + strMsg = _strMsg, + result = _intSum + }; + + return dto; } catch (Exception ex) { @@ -223,6 +337,97 @@ ScanReceiveBarcode(WarehouseQuery query) { var p_bill_no = query.billNo; + var p_item_barcode = query.barcode; + + var barinfo = Db.Queryable<MesInvItemStocks>() + .Where(x => x.ItemBarcode == p_item_barcode) + .First(); + + + //// 楠岃瘉鍗曟嵁鍙� + //if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); + + //// 鏌ヨ鍑哄簱鍗曞苟楠岃瘉鐘舵�� + //var transferOut = Db.Queryable<MesDbck>() + // .Where(x => x.FBillNo == p_bill_no && x.FApproveStatus == 1) + // .First(); + //if (transferOut == null) throw new Exception("鏈壘鍒拌皟鎷ㄧ敵璇峰崟鎴栬�呰皟鎷ㄧ敵璇峰崟娌″鏍�"); + + // 鏌ヨ鏉$爜搴撳瓨淇℃伅骞堕獙璇� + var stock = Db.Queryable<MesDbckDetail>() + .Where(x => x.FMaterialId == barinfo.ItemId.ToString() + && x.FQty > 0 + && !string.IsNullOrEmpty(x.FStockInId) + && !string.IsNullOrEmpty(x.FOwnerInId)) + .First(); + if (stock == null) throw new Exception($"璋冩嫧鏄庣粏涓� 銆愮墿鏂欍�戞垨 銆愯皟鍏ヤ粨搴撱�戞垨銆愯皟鍏ヨ揣涓汇�戜俊鎭笉瀛樺湪锛岃鏍稿锛亄p_item_barcode}"); + + // 鏌ヨ鐗╂枡淇℃伅 + var item = Db.Queryable<MesItems>() + .Where(x => x.Id.ToString() == stock.FMaterialId) + .First(); + if (item == null) throw new Exception("鏈壘鍒扮墿鏂�"); + + var _strMsg = ""; + var _intSum = ""; + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + using (var cmd = new SqlCommand("[prc_pda_DBRK]", conn)) + { + try + { + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter[] parameters = + { + new("@outMsg", SqlDbType.NVarChar, 300), + new("@outSum", SqlDbType.NVarChar, 300), + new("@barcode_num", SqlDbType.NVarChar, 300), + new("@outBillNo", SqlDbType.NVarChar, 300), + new("@c_user", query.userName), + new("@p_bill_no", p_bill_no), + new("@p_item_barcode", p_item_barcode), + new("@p_depot_section_code", query.sectionCode), + }; + parameters[0].Direction = ParameterDirection.Output; + parameters[1].Direction = ParameterDirection.Output; + parameters[2].Direction = ParameterDirection.Output; + parameters[3].Direction = ParameterDirection.Output; + foreach (var parameter in parameters) + cmd.Parameters.Add(parameter); + cmd.ExecuteNonQuery(); + _strMsg = parameters[0].Value.ToString(); + _intSum = parameters[1].Value.ToString(); + + var barcodeNum = parameters[2].Value.ToString(); + var outBillNo = parameters[3].Value.ToString(); + + var result = Convert.ToInt32(_intSum); + if (result <= 0) throw new Exception(_strMsg); + + query.itemNo = item.ItemNo; + query.Num = Convert.ToDecimal(barcodeNum); + //query.Fum = Convert.ToDecimal(splitNum); + query.billNo = outBillNo; + + // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏 + return (query, GetDBCKDetal(query)); + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + finally + { + conn.Close(); + } + } + } + } + + public ProductionPickDto ScanCodeCF(WarehouseQuery query) + { + var p_bill_no = query.daa001; var p_item_barcode = query.barcode; var barinfo = Db.Queryable<MesInvItemStocks>() @@ -255,9 +460,10 @@ var _strMsg = ""; var _intSum = ""; + var _cfBar = ""; using (var conn = new SqlConnection(DbHelperSQL.strConn)) { - using (var cmd = new SqlCommand("[prc_pda_DBRK]", conn)) + using (var cmd = new SqlCommand("[prc_pda_DBCK_CF]", conn)) { try { @@ -265,86 +471,36 @@ cmd.CommandType = CommandType.StoredProcedure; SqlParameter[] parameters = { - new("@outMsg", SqlDbType.NVarChar, 300), + new("@outMsg", SqlDbType.NVarChar, 2000), new("@outSum", SqlDbType.NVarChar, 300), - new("@barcode_num", SqlDbType.NVarChar, 300), - new("@split_num", SqlDbType.NVarChar, 300), - new("@c_user", query.userName), - new("@p_bill_no", p_bill_no), - new("@p_item_barcode", p_item_barcode), - new("@p_depot_section_code", query.sectionCode), + new("@outCfBar", SqlDbType.NVarChar, 300), + new("@c_User", query.userName), + new("@p_biLL_no", query.daa001), + new("@p_item_barcode", query.barcode), + new("@num", query.Num) }; parameters[0].Direction = ParameterDirection.Output; parameters[1].Direction = ParameterDirection.Output; parameters[2].Direction = ParameterDirection.Output; - parameters[3].Direction = ParameterDirection.Output; foreach (var parameter in parameters) cmd.Parameters.Add(parameter); cmd.ExecuteNonQuery(); _strMsg = parameters[0].Value.ToString(); _intSum = parameters[1].Value.ToString(); + _cfBar = parameters[2].Value.ToString(); - var barcodeNum = parameters[2].Value.ToString(); - var splitNum = parameters[3].Value.ToString(); - + var result = Convert.ToInt32(_intSum); if (result <= 0) throw new Exception(_strMsg); - query.itemNo = item.ItemNo; - query.Num = Convert.ToDecimal(barcodeNum); - query.Fum = Convert.ToDecimal(splitNum); - - // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏 - return (query, GetDBCKDetal(query)); - } - catch (Exception ex) - { - throw new Exception(ex.Message); - } - finally - { - conn.Close(); - } - } - } - } - - //璋冩嫧鍑哄簱鎷嗗垎 prc_pda_DBCK_CF - public string SplitBarcode(WarehouseQuery query) - { - var _strMsg = ""; - var _intSum = ""; - using (var conn = new SqlConnection(DbHelperSQL.strConn)) - { - using (var cmd = new SqlCommand("[prc_pda_DBRK]", conn)) - { - try - { - conn.Open(); - cmd.CommandType = CommandType.StoredProcedure; - SqlParameter[] parameters = + var dto = new ProductionPickDto { - new("@outMsg", SqlDbType.NVarChar, 300), - new("@outSum", SqlDbType.NVarChar, 300), - new("@c_user", query.userName), - new("@p_bill_no", query.billNo), - new("@p_item_barcode", query.barcode), - new("@NUM", query.Fum), + daa001 = query.daa001, + barcode = query.barcode,//鍘熸潯鐮� + cfBarcode = _cfBar//鎷嗗垎鍚庢潯鐮� }; - - parameters[0].Direction = ParameterDirection.Output; - parameters[1].Direction = ParameterDirection.Output; - - foreach (var parameter in parameters) - cmd.Parameters.Add(parameter); - cmd.ExecuteNonQuery(); - _strMsg = parameters[0].Value.ToString(); - _intSum = parameters[1].Value.ToString(); - - var result = Convert.ToInt32(_intSum); - if (result <= 0) throw new Exception(_strMsg); - - return _strMsg; + + return dto; } catch (Exception ex) { @@ -357,4 +513,5 @@ } } } + } \ No newline at end of file diff --git a/service/Wom/WomdaahbManager.cs b/service/Wom/WomdaahbManager.cs new file mode 100644 index 0000000..1436d92 --- /dev/null +++ b/service/Wom/WomdaahbManager.cs @@ -0,0 +1,1090 @@ +锘縰sing System.Data; +using System.Data.SqlClient; +using System.Text; +using Masuit.Tools; +using Microsoft.SqlServer.Server; +using NewPdaSqlServer.DB; +using NewPdaSqlServer.Dto.service; +using NewPdaSqlServer.entity; +using NewPdaSqlServer.entity.Base; +using SqlSugar; + +namespace NewPdaSqlServer.service.Wom; + +public class WomdaaManager : Repository<Womdaa> +{ + //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉� + //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 WomdaaManager.cs + + //鑾峰彇宸ュ崟鍙� + public List<string> GetProductionPickDaa001(WarehouseQuery query) + { + var sql = + "SELECT DAA001 FROM WOMDAA A LEFT JOIN (SELECT COUNT(1) UN_NUM, PID FROM WOMDAB WHERE DAB006 > DAB007 GROUP BY DAB002) B ON A.GUID = B.daaGuid WHERE DAA001 = " + + query.daa001 + + " and DAA018 != '瀹屽伐' AND DAA022 = 1 AND UN_NUM > 0 AND ROWNUM <= 10 order by a.id desc"; + + return Db.Ado.SqlQuery<string>(sql); + } + + //鏍规嵁宸ュ崟鍙疯繑鍥炰骇鍝佸瀷鍙峰拰寰呴鐗╂枡 + public ProductionPickDto GetItemsByDaa001(WarehouseQuery query) + { + return getDaa001(query); + } + + public ProductionPickDto ScanCode(WarehouseQuery query) + { + var _strMsg = ""; + var _intSum = ""; + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + if (query.userName.IsNullOrEmpty()) throw new Exception("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖"); + if (query.daa001.IsNullOrEmpty()) throw new Exception("棰嗘枡鍗曞彿涓嶅厑璁镐负绌�"); + if (query.barcode.IsNullOrEmpty()) throw new Exception("鏉$爜涓嶅厑璁镐负绌�"); + + using (var cmd = new SqlCommand("[prc_pda_SCLL]", conn)) + { + try + { + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter[] parameters = + { + new("@outMsg", SqlDbType.NVarChar, 300), + new("@outSum", SqlDbType.NVarChar, 300), + new("@barcode_num", SqlDbType.NVarChar, 300), + new("@split_num", SqlDbType.NVarChar, 300), + new("@c_User", query.userName), + new("@p_biLL_no", query.daa001), + new("@p_item_barcode", query.barcode) + }; + parameters[0].Direction = ParameterDirection.Output; + parameters[1].Direction = ParameterDirection.Output; + parameters[2].Direction = ParameterDirection.Output; + parameters[3].Direction = ParameterDirection.Output; + foreach (var parameter in parameters) + cmd.Parameters.Add(parameter); + cmd.ExecuteNonQuery(); + _strMsg = parameters[0].Value.ToString(); + _intSum = parameters[1].Value.ToString(); + + var barcodeNum = parameters[2].Value.ToString(); + var splitNum = parameters[3].Value.ToString(); + + var result = Convert.ToInt32(_intSum); + if (result <= 0) throw new Exception(_strMsg); + + var dto = new ProductionPickDto + { + daa001 = query.daa001, + barcodeNum = barcodeNum, + splitNum = splitNum, + barcode = query.barcode, + strMsg = _strMsg, + result = _intSum + }; + + return dto; + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + finally + { + conn.Close(); + } + } + } + } + + //prC_pda_SCLL_CF + public ProductionPickDto ScanCodeCF(WarehouseQuery query) + { + if (query.userName.IsNullOrEmpty()) throw new Exception("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖"); + if (query.daa001.IsNullOrEmpty()) throw new Exception("棰嗘枡鍗曞彿涓嶅厑璁镐负绌�"); + if (query.barcode.IsNullOrEmpty()) throw new Exception("鏉$爜涓嶅厑璁镐负绌�"); + + if (query.Num is null or 0) throw new Exception("鏉$爜鎷嗗垎鏁颁笉鍏佽涓虹┖鎴栬�呬负0"); + + var _strMsg = ""; + var _intSum = ""; + var _cfBar = "";//鎷嗗垎鍚庢潯鐮� + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + using (var cmd = new SqlCommand("[prc_pda_SCLL_CF]", conn)) + { + try + { + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter[] parameters = + { + new("@outMsg", SqlDbType.NVarChar, 2000), + new("@outSum", SqlDbType.NVarChar, 300), + new("@outCfBar", SqlDbType.NVarChar, 300), + new("@c_User", query.userName), + new("@p_biLL_no", query.daa001), + new("@p_item_barcode", query.barcode), + new("@num", query.Num) + }; + 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(); + _cfBar = parameters[2].Value.ToString(); + + + var result = Convert.ToInt32(_intSum); + if (result <= 0) throw new Exception(_strMsg); + + var dto = new ProductionPickDto + { + daa001 = query.daa001, + barcode = query.barcode,//鍘熸潯鐮� + cfBarcode = _cfBar//鎷嗗垎鍚庢潯鐮� + }; + + return dto; + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + finally + { + conn.Close(); + } + } + } + } + + private ProductionPickDto getDaa001(WarehouseQuery query) + { + if (string.IsNullOrEmpty(query.daa001)) throw new Exception("宸ュ崟鍙蜂负绌�"); + + var womdaa = Db.Queryable<Womdaa, MesItems>((a, i) => + new JoinQueryInfos(JoinType.Left, + a.Daa002 == i.ItemId.ToString())) + .Where((a, i) => a.Daa001 == query.daa001 + && a.Fstatus == 1) + .Select((a, i) => new + { + a.Daa001, a.CaaGuid + }).First(); + + if (womdaa?.Daa001 == null) throw new Exception("宸ュ崟鍙蜂笉瀛樺湪"); + + //var womdabs = Db.Queryable<Womdaa, Womdab, MesItems, Womcab>( + // (a, b, c, d) => + // new JoinQueryInfos( + // JoinType.Left, + // a.Guid == b.DaaGuid, + // JoinType.Inner, + // c.Id.ToString() == + // b.Dab003, + // JoinType.Inner, b.Erpid == d.Erpid + // )) + // .Where((a, b, c, d) => + // a.Daa001 == query.daa001 && d.Iss1ueType == "1") + // .Select((a, b, c, d) => new ItemDetailModel + // { + // ItemNo = c.ItemNo, + // ItemName = c.ItemName, + // ItemModel = c.ItemModel, + // FQty = b.Dab006, // 鐢宠鏁伴噺 + // SQty = b.Dab007, // 宸叉壂鏁伴噺 + // DSQty = b.Dab006 - b.Dab007, // 宸叉壂鏁伴噺 + // }) + // .ToList(); + + var sql =string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.dab006 FQty,b.dab007 SQty,b.dab006 - b.dab007 DSQty , + dbo.F_QX_GETRECODEPOTSE(B.dab003,'','','') as RecoKw + FROM WOMDAB B + LEFT JOIN WOMDAA A ON A.guid = B.daaGuid + LEFT JOIN MES_ITEMS C ON B.dab003 = C.item_id + LEFT JOIN WOMCAB D ON B.erpid = D.ERPID + WHERE daa001 = '{0}' AND ISSUE_TYPE = 1 ORDER BY DAB002", query.daa001); + + var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql); + + + var DS_list = womdabs.Where(s => s.DSQty > 0).ToList(); + + var YS_list = womdabs.Where(s => s.SQty > 0).ToList(); + + var mesInvItemOutCDetailsList = Db + .Queryable<MesInvItemOutCDetails, MesItems, MesDepots> + ((a, b, c) => + new JoinQueryInfos( + JoinType.Inner, a.ItemId == b.Id, + JoinType.Inner, c.DepotId == a.DepotId + )) + .Where((a, b, c) => a.WorkNo == query.daa001) + .Select((a, b, c) => new MesInvItemOutCDetails + { + ItemName = b.ItemName, + ItemNo = b.ItemNo, + ItemId = a.ItemId, + DepotId = a.DepotId, + WorkNo = a.WorkNo, + DepotName = c.DepotName, + Quantity = a.Quantity + }) + .ToList(); + + var womcaa = Db.Queryable<Womcaa>().Where(s => s.Guid == womdaa.CaaGuid) + .First(); + + if (womcaa == null) + { + throw new Exception("鐢熶骇浠诲姟鍗曚笉瀛樺湪"); + } + + var dto = new ProductionPickDto + { + daa001 = womdaa.Daa001, + PlanNo = womcaa.Caa020, + items = DS_list, + Ysitems = YS_list + // yisao = mesInvItemOutCDetailsList + }; + + return dto; + } + + /// <summary> + /// 鑾峰彇宸ュ崟鏉$爜淇℃伅 + /// </summary> + /// <param name="query"></param> + /// <returns></returns> + public dynamic getZsBarInfo(dynamic query) + { + + var sql = string.Format(@"SELECT TOP 1 A.barCode AS zsBarcode, + D.name AS lineName, + D.line_no, + B.daa001, + C.item_no, + C.item_name, + C.item_model, + A.quantity as barQty, + B.daa008 as sumQty, + isnull((SELECT count(1) FROM WORK_COLLECT WHERE processNo = '{0}' AND ABOUT_GUID = A.ABOUT_GUID),0) AS finQty, + isnull((SELECT TOP 1 processNo FROM WORK_COLLECT WHERE WORK_COLLECT.barCode = '{1}' AND checkResult = '鈭�' ORDER BY WORK_COLLECT.createDate DESC ),'') AS lastGx +FROM WORK_TRAC_CODE A + LEFT JOIN WOMDAA B ON A.ABOUT_GUID = B.guid + LEFT JOIN MES_ITEMS C ON B.daa002 = C.item_id + LEFT JOIN MES_WORKSHOP_LINE D ON A.lineId = D.id +WHERE A.barCode = '{1}'", query.GX, query.Zsbarcode); + + var ZsBarInfo = Db.Ado.SqlQuery<dynamic>(sql); + + if (ZsBarInfo.Count < 1) + { + throw new Exception($"璇ヨ拷婧爜{query.Zsbarcode}涓嶅瓨鍦ㄤ笉瀛樺湪"); + } + + return ZsBarInfo; + } + + //鑾峰彇鐢熶骇 + public dynamic getTraceability(dynamic query) + { + var sql = string.Format(@"SELECT processNo, A.barCode, B.lineId, line_no, name AS lineName, checkResult, C.USER_NAME +FROM WORK_COLLECT A + LEFT JOIN WORK_TRAC_CODE B ON A.barCode = B.barCode + LEFT JOIN SYS_USER C ON C.ACCOUNT = A.createBy + LEFT JOIN MES_WORKSHOP_LINE D ON B.lineId = D.id +WHERE A.barCode = '{0}'", query.Zsbarcode); + + var Traceability = Db.Ado.SqlQuery<dynamic>(sql); + + return Traceability; + } + + public dynamic ProductBinding(dynamic query) + { + if (query == null) throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓� null"); + + // 2. 浣跨敤 string.IsNullOrEmpty 鐩存帴鍒ゆ柇瀛楃涓插睘鎬э紙閬垮厤 NullReferenceException锛� + if (string.IsNullOrEmpty(query.userName?.ToString())) + throw new ArgumentException("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖", nameof(query.userName)); + + if (string.IsNullOrEmpty(query.ZsBar?.ToString())) + throw new ArgumentException("杩芥函鐮佷笉鍏佽涓虹┖", nameof(query.ZsBar)); + + if (string.IsNullOrEmpty(query.LsBar?.ToString())) + throw new ArgumentException("鍚庣洊鐮佷笉鍏佽涓虹┖", nameof(query.LsBar)); + + var _strMsg = ""; + var _intSum = ""; + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + using (var cmd = new SqlCommand("prc_pda_product_binding", conn)) + { + try + { + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter[] parameters = + { + new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userName }, + new("@pi_trac_barcode", SqlDbType.NVarChar, 100) { Value = query.ZsBar }, + new("@pi_ls_barcode", SqlDbType.NVarChar, 100) { Value = query.LsBar }, + new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output }, + new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output } + }; + + foreach (var parameter in parameters) + cmd.Parameters.Add(parameter); + + cmd.ExecuteNonQuery(); + + _strMsg = parameters[3].Value?.ToString() ?? ""; + _intSum = parameters[4].Value?.ToString() ?? "-1"; + + var result = Convert.ToInt32(_intSum); + if (result <= 0) throw new Exception(_strMsg); + + var dto = new + { + message = _strMsg, + status = result, + tracBarcode = query.ZsBar + }; + + return dto; + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + finally + { + conn.Close(); + } + } + } + } + + + /// <summary> + /// 鑾峰彇鍗℃澘淇℃伅 + /// </summary> + /// <param name="query"></param> + /// <returns></returns> + public dynamic getKbBarInfo(dynamic query) + { + if (string.IsNullOrEmpty(query.Kbbarcode?.ToString())) + throw new ArgumentException("鍗℃澘鏉$爜涓嶅厑璁镐负绌�", nameof(query.userName)); + + var sql = string.Format(@"SELECT OLDQTY, + ISNULL((SELECT COUNT(1) FROM MES_INV_ITEM_BARCODES_TBMX WHERE ABOUT_TB_BARCODE = '{0}'), 0) AS YSum, + DAA001 +FROM MES_INV_ITEM_BARCODES A LEFT JOIN WOMDAA B ON A.ABOUT_GUID = B.guid +WHERE ITEM_BARCODE = '{0}' ", query.Kbbarcode); + + var ZsBarInfo = Db.Ado.SqlQuery<dynamic>(sql); + + if (ZsBarInfo.Count < 1) + { + throw new Exception($"璇ュ崱鏉跨爜{query.Zsbarcode}涓嶅瓨鍦紒"); + } + + return ZsBarInfo; + } + + /// <summary> + /// 鑾峰彇鍗℃澘鏄庣粏淇℃伅 + /// </summary> + /// <param name="query"></param> + /// <returns></returns> + public dynamic getKbBarMxInfo(dynamic query) + { + + var sql = string.Format(@"SELECT ITEM_BARCODE, QUANTITY,item_no,item_name,item_model,weight +FROM MES_INV_ITEM_BARCODES_TBMX A + LEFT JOIN WOMDAA B ON B.daa001 = A.DAA_001 + LEFT JOIN MES_ITEMS C ON C.item_id = B.daa002 +WHERE ABOUT_TB_BARCODE = '{0}' ", query.Kbbarcode); + + var ZsBarInfo = Db.Ado.SqlQuery<dynamic>(sql); + + + return ZsBarInfo; + } + + /// <summary> + /// 鑾峰彇绠辨槑缁嗕俊鎭� + /// </summary> + /// <param name="query"></param> + /// <returns></returns> + public dynamic getXBarInfo(dynamic query) + { + //var sql1 = string.Format(@"SELECT 1 FROM MES_INV_ITEM_BARCODES_TBMX WHERE ITEM_BARCODE = '{0}' ", query.Xbarcode); + + //var IS_CZ = Db.Ado.SqlQuery<dynamic>(sql1); + + //if (IS_CZ.Count < 1) + //{ + // throw new Exception($"璇ョ鏉$爜[{query.Xbarcode}]涓嶅瓨鍦紒"); + //} + + + // 鏍¢獙瀛樺偍杩囩▼ + if (string.IsNullOrEmpty(query.KbBar?.ToString())) + throw new ArgumentException("鍗℃澘鏉$爜涓嶅厑璁镐负绌�", nameof(query.KbBar)); + // 鏍¢獙瀛樺偍杩囩▼ + if (string.IsNullOrEmpty(query.Xbarcode?.ToString())) + throw new ArgumentException("绠辨潯鐮佷笉鍏佽涓虹┖", nameof(query.Xbarcode)); + + var successRecords = new List<dynamic>(); + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + conn.Open(); + using (var transaction = conn.BeginTransaction()) // 寮�鍚簨鍔� + { + try + { + + using (var cmd = new SqlCommand("prc_pda_Xbar_binding_JY", conn, transaction)) + { + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter[] parameters = + { + new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userName }, + new("@pi_kb_barcode", SqlDbType.NVarChar, 100) { Value = query.KbBar }, + new("@pi_ls_barcode", SqlDbType.NVarChar, 100) { Value = query.Xbarcode }, + new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output }, + new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output } + }; + + foreach (var parameter in parameters) + cmd.Parameters.Add(parameter); + + cmd.ExecuteNonQuery(); + + var _strMsg = parameters[3].Value?.ToString() ?? ""; + var _intSum = parameters[4].Value?.ToString() ?? "-1"; + + var result = Convert.ToInt32(_intSum); + if (result <= 0) + { + //transaction.Rollback(); + throw new Exception(_strMsg); + //return new { + // status = result, + // message = $"鎿嶄綔鍥炴粴锛歿_strMsg}", + // failedBarcode = xBar.iteM_BARCODE, + // successCount = successRecords.Count + //}; + } + + } + + transaction.Commit(); // 鍏ㄩ儴鎴愬姛鎻愪氦浜嬪姟 + } + catch (Exception ex) + { + transaction.Rollback(); + throw new Exception($"寮傚父淇℃伅 锛歿ex.Message}"); + } + finally + { + conn.Close(); + } + } + } + + var sql2 = string.Format(@"SELECT ITEM_BARCODE, QUANTITY,item_no,item_name,item_model,'0' as is_hedui +FROM MES_INV_ITEM_BARCODES_TBMX A + LEFT JOIN WOMDAA B ON B.daa001 = A.DAA_001 + LEFT JOIN MES_ITEMS C ON C.item_id = B.daa002 +WHERE DAA_001 = '{0}' + AND ITEM_BARCODE = '{1}' + AND ISNULL(ABOUT_TB_BARCODE, '') = '' ", query.DAA001, query.Xbarcode); + + var ZsBarInfo = Db.Ado.SqlQuery<dynamic>(sql2); + + if (ZsBarInfo.Count < 1) + { + throw new Exception($"璇ョ鏉$爜[{query.Xbarcode}]瀵瑰簲宸ュ崟涓庢墭鐮佸伐鍗昜{query.DAA001}]涓嶅尮閰嶆垨宸茬粦瀹氭墭鐮侊紒"); + } + + return ZsBarInfo; + } + + public dynamic submitAllChecked(dynamic query) + { + if (query == null) throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓� null"); + + // 鍙傛暟鏍¢獙寮哄寲 + if (string.IsNullOrEmpty(query.userName?.ToString())) + throw new ArgumentException("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖", nameof(query.userName)); + + if (string.IsNullOrEmpty(query.KbBar?.ToString())) + throw new ArgumentException("鍗℃澘鏉$爜涓嶅厑璁镐负绌�", nameof(query.KbBar)); + + if (query.XbarInfo == null || !((IEnumerable<dynamic>)query.XbarInfo).GetEnumerator().MoveNext()) + throw new ArgumentException("绠辩爜鍒楄〃涓嶈兘涓虹┖", nameof(query.XbarInfo)); + + var successRecords = new List<dynamic>(); + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + conn.Open(); + using (var transaction = conn.BeginTransaction()) // 寮�鍚簨鍔� + { + try + { + foreach (var xBar in query.XbarInfo) // 閬嶅巻绠辩爜闆嗗悎 + { + using (var cmd = new SqlCommand("prc_pda_Xbar_binding", conn, transaction)) + { + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter[] parameters = + { + new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userName }, + new("@pi_kb_barcode", SqlDbType.NVarChar, 100) { Value = query.KbBar }, + new("@pi_ls_barcode", SqlDbType.NVarChar, 100) { Value = xBar.iteM_BARCODE }, + new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output }, + new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output } + }; + + foreach (var parameter in parameters) + cmd.Parameters.Add(parameter); + + cmd.ExecuteNonQuery(); + + var _strMsg = parameters[3].Value?.ToString() ?? ""; + var _intSum = parameters[4].Value?.ToString() ?? "-1"; + + var result = Convert.ToInt32(_intSum); + if (result <= 0) + { + //transaction.Rollback(); + throw new Exception(_strMsg); + //return new { + // status = result, + // message = $"鎿嶄綔鍥炴粴锛歿_strMsg}", + // failedBarcode = xBar.iteM_BARCODE, + // successCount = successRecords.Count + //}; + } + + successRecords.Add(new { + kbBarcode = query.KbBar, + xBarcode = xBar.iteM_BARCODE, + processTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + }); + } + } + transaction.Commit(); // 鍏ㄩ儴鎴愬姛鎻愪氦浜嬪姟 + return new { + status = 1, + message = "鎵归噺缁戝畾鎴愬姛", + successCount = successRecords.Count, + details = successRecords + }; + } + catch (Exception ex) + { + transaction.Rollback(); + throw new Exception($"寮傚父淇℃伅 锛歿ex.Message}"); + } + finally + { + conn.Close(); + } + } + } + } + + public dynamic SubmitKbInspection(dynamic query) + { + if (query == null) throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓� null"); + + // 鍙傛暟鏍¢獙 + if (string.IsNullOrEmpty(query.userAccount?.ToString())) + throw new ArgumentException("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖", nameof(query.userAccount)); + + if (string.IsNullOrEmpty(query.KbBar?.ToString())) + throw new ArgumentException("鍗℃澘鏉$爜涓嶅厑璁镐负绌�", nameof(query.KbBar)); + + var _strMsg = ""; + var _status = -1; + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + using (var cmd = new SqlCommand("prc_pda_KBbar_submitInspection", conn)) + { + try + { + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter[] parameters = + { + new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userAccount }, + new("@pi_kb_barcode", SqlDbType.NVarChar, 100) { Value = query.KbBar }, + new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output }, + new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output } + }; + + foreach (var parameter in parameters) + cmd.Parameters.Add(parameter); + + cmd.ExecuteNonQuery(); + + _strMsg = parameters[2].Value?.ToString() ?? ""; + _status = Convert.ToInt32(parameters[3].Value ?? -1); + + if (_status <= 0) throw new Exception(_strMsg); + + return new { + message = _strMsg, + status = _status, + kbBarcode = query.KbBar + }; + } + catch (Exception ex) + { + throw new Exception($"鍗℃澘閫佹澶辫触锛歿ex.Message}"); + } + finally + { + conn.Close(); + } + } + } + } + + + + //鏍规嵁宸ュ崟鍙疯繑鍥炰骇鍝佸瀷鍙峰拰寰呴鐗╂枡 + public XcslResultDto GetItemsXcsl(WarehouseQuery query) + { + if (string.IsNullOrEmpty(query.daa001)) throw new Exception("宸ュ崟鍙蜂负绌�"); + + var womdaa = Db.Queryable<Womdaa, MesItems>((a, i) => + new JoinQueryInfos(JoinType.Left, + a.Daa002 == i.ItemId.ToString())) + .Where((a, i) => a.Daa001 == query.daa001 + && a.Fstatus == 1) + .Select((a, i) => new + { + a.Daa001, + a.CaaGuid, + a.Daa008, + a.Daa021 + }).First(); + + if (womdaa?.Daa001 == null) throw new Exception("宸ュ崟鍙蜂笉瀛樺湪"); + + // 浣跨敤鍙傛暟鍖栨煡璇㈤槻姝QL娉ㄥ叆 + var sqlParams = new List<SugarParameter> { new("@daa001", query.daa001) }; + + var sql1 = @"SELECT A.item_out_no, + SUM(B.QUANTITY) AS BL_Num, + ISNULL(Sub.JS_Sum, 0) AS JS_Num, -- 浣跨敤LEFT JOIN瀛愭煡璇㈢殑缁撴灉 + C.item_no, + C.item_name, + C.item_model, + D.USER_NAME +FROM MES_INV_ITEM_OUTS A + LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B ON A.GUID = B.ITEM_OUT_ID + LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id + LEFT JOIN SYS_USER D ON A.create_by = D.ACCOUNT +-- 鏂板LEFT JOIN鑱氬悎瀛愭煡璇� + LEFT JOIN (SELECT B1.ITEM_ID, + SUM(B1.QUANTITY) AS JS_Sum + FROM MES_INV_ITEM_OUTS A1 + LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B1 ON A1.GUID = B1.ITEM_OUT_ID + WHERE A1.out_type = '鐢熶骇棰嗘枡' + AND A1.task_no = @daa001 + AND ISNULL(B1.IS_XCSL, '0') = 1 + GROUP BY B1.ITEM_ID -- 鎸塈TEM_ID鎻愬墠鑱氬悎 +) AS Sub ON Sub.ITEM_ID = C.item_id +WHERE A.out_type = '鐢熶骇棰嗘枡' + AND A.task_no = @daa001 +GROUP BY A.item_out_no, + C.item_no, + C.item_name, + C.item_model, + D.USER_NAME, + C.item_id, + ISNULL(Sub.JS_Sum, 0);"; + + var XcslItem = Db.Ado.SqlQuery<dynamic>(sql1, sqlParams); + + var sql2 = @"SELECT B.ITEM_BARCODE ,B.QUANTITY,C.item_no,C.item_name,D.USER_NAME,A.create_date +FROM MES_INV_ITEM_OUTS A +LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B ON A.GUID = B.ITEM_OUT_ID +LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id +LEFT JOIN SYS_USER D ON A.create_by = D.ACCOUNT +WHERE out_type = '鐢熶骇棰嗘枡' +AND A.task_no = @daa001 +AND ISNULL(IS_XCSL,'0') = 0"; + + var XcslWjsBar = Db.Ado.SqlQuery<dynamic>(sql2, sqlParams); + + var sql3 = @"SELECT B.ITEM_BARCODE ,B.QUANTITY,C.item_no,C.item_name,D.USER_NAME,B.XCSL_CREATE_DATE +FROM MES_INV_ITEM_OUTS A +LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B ON A.GUID = B.ITEM_OUT_ID +LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id +LEFT JOIN SYS_USER D ON B.XCSL_CREATE_BY = D.ACCOUNT +WHERE out_type = '鐢熶骇棰嗘枡' +AND A.task_no = @daa001 +AND ISNULL(IS_XCSL,'0') = 1"; + + var XcslYjsBar = Db.Ado.SqlQuery<dynamic>(sql3, sqlParams); + + + var dto = new XcslResultDto + { + GD_Num = womdaa.Daa008, + workNo = womdaa.Daa021, + XcslItemList = XcslItem, + XcslWjsBarList = XcslWjsBar, + XcslYjsBarList = XcslYjsBar + + }; + + return dto; + } + + // 鐜板満鏀舵枡灞曠ず鍒楄〃 + public class XcslResultDto + { + public int? GD_Num { get; set; } + public string? workNo { get; set; } + public List<dynamic> XcslItemList { get; set; } + public List<dynamic> XcslWjsBarList { get; set; } + public List<dynamic> XcslYjsBarList { get; set; } + } + + + public dynamic ScanXcsl(dynamic query) + { + if (query == null) throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓� null"); + + // 鍙傛暟鏍¢獙锛堟牴鎹瓨鍌ㄨ繃绋嬫柊澧炲弬鏁帮級 + if (string.IsNullOrEmpty(query.userAccount?.ToString())) + throw new ArgumentException("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖", nameof(query.userAccount)); + + if (string.IsNullOrEmpty(query.Bar?.ToString())) + throw new ArgumentException("鐗╂枡鏉$爜涓嶅厑璁镐负绌�", nameof(query.Bar)); + + if (string.IsNullOrEmpty(query.DAA001?.ToString())) + throw new ArgumentException("宸ュ崟鍗曞彿涓嶅厑璁镐负绌�", nameof(query.DAA001)); + + var _strMsg = ""; + var _status = -1; + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + using (var cmd = new SqlCommand("prc_pda_ScanXcsl", conn)) + { + try + { + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + // 鏍规嵁瀛樺偍杩囩▼璋冩暣鍙傛暟椤哄簭鍜屽懡鍚� + SqlParameter[] parameters = + { + new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userAccount }, + new("@pi_barcode", SqlDbType.NVarChar, 100) { Value = query.Bar }, + new("@pi_daa001", SqlDbType.NVarChar, 100) { Value = query.DAA001 }, + new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output }, + new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output } + }; + + foreach (var parameter in parameters) + cmd.Parameters.Add(parameter); + + cmd.ExecuteNonQuery(); + + _strMsg = parameters[3].Value?.ToString() ?? ""; + _status = Convert.ToInt32(parameters[4].Value ?? -1); + + if (_status <= 0) throw new Exception(_strMsg); + + return new + { + message = _strMsg, + status = _status, + daa001 = query.DAA001, + barCode = query.Bar + }; + } + catch (Exception ex) + { + throw new Exception($"浜х嚎鏀舵枡澶辫触锛歿ex.Message}"); + } + finally + { + conn.Close(); + } + } + } + } + + + public dynamic GetWeightByXt(dynamic query) + { + if (query == null) throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓簄ull"); + + // 鍙傛暟鏍¢獙 + if (string.IsNullOrEmpty(query.userName?.ToString())) + throw new ArgumentException("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖", nameof(query.userName)); + + if (string.IsNullOrEmpty(query.LsBar?.ToString())) + throw new ArgumentException("鍗℃澘鏉$爜涓嶅厑璁镐负绌�", nameof(query.LsBar)); + + var _strMsg = ""; + var _status = -1; + var _weight = "0"; + + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + using (var cmd = new SqlCommand("prc_pda_Xbar_chenzhong", conn)) + { + try + { + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + + SqlParameter[] parameters = + { + new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userName }, + new("@pi_ls_barcode", SqlDbType.NVarChar, 100) { Value = query.LsBar }, + new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output }, + new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output }, + new("@po_outWeight", SqlDbType.NVarChar, 100) { Direction = ParameterDirection.Output } + }; + + cmd.Parameters.AddRange(parameters); + cmd.ExecuteNonQuery(); + + _strMsg = parameters[2].Value?.ToString() ?? ""; + _status = Convert.ToInt32(parameters[3].Value ?? -1); + _weight = parameters[4].Value?.ToString() ?? "0"; + + if (_status <= 0) throw new Exception(_strMsg); + + return new + { + message = _strMsg, + status = _status, + weight = _weight, + barCode = query.Bar + }; + } + catch (Exception ex) + { + throw new Exception($"浜у搧绉伴噸澶辫触锛歿ex.Message}"); + } + finally + { + conn.Close(); + } + } + } + } + + public dynamic GetXcslDaa(dynamic unity) + { + + var sqlParams = new List<SugarParameter> { }; + + var sql2 = new StringBuilder(@" + SELECT '['+DAA001+']['+DAA021+']' AS daaInfo,DAA001,DAA021 + FROM WOMDAA + WHERE daa018 <>'W:瀹屽伐'"); + + if (!string.IsNullOrWhiteSpace(unity.selectKey?.ToString())) + { + sqlParams.Add(new("@selectKey", unity.selectKey)); + sql2.Append(@" + AND (DAA001 LIKE '%' + @selectKey + '%' + OR DAA021 LIKE '%' + @selectKey + '%')"); + } + + var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams); + + if (XcslItem == null) + { + throw new Exception("璇ユ潯浠朵笅鏃犲搴斿伐鍗曚俊鎭紝璇烽噸鏂拌緭鍏ワ紒"); + } + + return XcslItem; + } + + + public XcslResultDto GetItemsXctl(WarehouseQuery query) + { + if (string.IsNullOrEmpty(query.daa001)) throw new Exception("宸ュ崟鍙蜂负绌�"); + + var womdaa = Db.Queryable<Womdaa, MesItems>((a, i) => + new JoinQueryInfos(JoinType.Left, + a.Daa002 == i.ItemId.ToString())) + .Where((a, i) => a.Daa001 == query.daa001 + && a.Fstatus == 1) + .Select((a, i) => new + { + a.Daa001, + a.CaaGuid, + a.Daa008, + a.Daa021 + }).First(); + + if (womdaa?.Daa001 == null) throw new Exception("宸ュ崟鍙蜂笉瀛樺湪"); + + // 浣跨敤鍙傛暟鍖栨煡璇㈤槻姝QL娉ㄥ叆 + var sqlParams = new List<SugarParameter> { new("@daa001", query.daa001) }; + + var sql1 = @"SELECT A.item_out_no, + SUM(B.QUANTITY) AS BL_Num, + ISNULL(SL_SUM.JS_Sum, 0) AS JS_Num, + ISNULL(TL_SUM.JS_Sum, 0) AS TR_Num, + C.item_no, + C.item_name, + C.item_model +FROM MES_INV_ITEM_OUTS A + LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B ON A.GUID = B.ITEM_OUT_ID + LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id + LEFT JOIN SYS_USER D ON A.create_by = D.ACCOUNT + LEFT JOIN (SELECT B1.ITEM_ID, + SUM(B1.QUANTITY) AS JS_Sum + FROM MES_INV_ITEM_OUTS A1 + LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B1 ON A1.GUID = B1.ITEM_OUT_ID + WHERE A1.out_type = '鐢熶骇棰嗘枡' + AND A1.task_no = @daa001 + AND ISNULL(B1.IS_XCSL, '0') = 1 + GROUP BY B1.ITEM_ID +) AS SL_SUM ON SL_SUM.ITEM_ID = C.item_id + LEFT JOIN (SELECT B1.ITEM_ID, + SUM(B1.QUANTITY) AS JS_Sum + FROM MES_INV_ITEM_OUTS A1 + LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B1 ON A1.GUID = B1.ITEM_OUT_ID + WHERE A1.out_type = '鐢熶骇棰嗘枡' + AND A1.task_no = @daa001 + AND ISNULL(B1.IS_CXTR, '0') = 1 + GROUP BY B1.ITEM_ID +) AS TL_SUM ON TL_SUM.ITEM_ID = C.item_id +WHERE A.out_type = '鐢熶骇棰嗘枡' + AND A.task_no = @daa001 +GROUP BY A.item_out_no, + C.item_no, + C.item_name, + C.item_model, + D.USER_NAME, + C.item_id, + ISNULL(SL_SUM.JS_Sum, 0), + ISNULL(TL_SUM.JS_Sum, 0);"; + + var XcslItem = Db.Ado.SqlQuery<dynamic>(sql1, sqlParams); + + var sql2 = @"SELECT B.ITEM_BARCODE ,B.QUANTITY,C.item_no,C.item_name,D.USER_NAME,A.create_date +FROM MES_INV_ITEM_OUTS A +LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B ON A.GUID = B.ITEM_OUT_ID +LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id +LEFT JOIN SYS_USER D ON A.create_by = D.ACCOUNT +WHERE out_type = '鐢熶骇棰嗘枡' +AND A.task_no = @daa001 +AND ISNULL(IS_CXTR,'0') = 0"; + + var XcslWjsBar = Db.Ado.SqlQuery<dynamic>(sql2, sqlParams); + + var sql3 = @"SELECT B.ITEM_BARCODE ,B.QUANTITY,C.item_no,C.item_name,D.USER_NAME,B.CXTR_CREATE_DATE +FROM MES_INV_ITEM_OUTS A +LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B ON A.GUID = B.ITEM_OUT_ID +LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id +LEFT JOIN SYS_USER D ON B.CXTR_CREATE_BY = D.ACCOUNT +WHERE out_type = '鐢熶骇棰嗘枡' +AND A.task_no = @daa001 +AND ISNULL(IS_CXTR,'0') = 1"; + + var XcslYjsBar = Db.Ado.SqlQuery<dynamic>(sql3, sqlParams); + + + var dto = new XcslResultDto + { + GD_Num = womdaa.Daa008, + workNo = womdaa.Daa021, + XcslItemList = XcslItem, + XcslWjsBarList = XcslWjsBar, + XcslYjsBarList = XcslYjsBar + + }; + + return dto; + } + + public dynamic ScanXctl(dynamic query) + { + if (query == null) throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓� null"); + + // 鍙傛暟鏍¢獙锛堟牴鎹瓨鍌ㄨ繃绋嬫柊澧炲弬鏁帮級 + if (string.IsNullOrEmpty(query.userAccount?.ToString())) + throw new ArgumentException("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖", nameof(query.userAccount)); + + if (string.IsNullOrEmpty(query.Bar?.ToString())) + throw new ArgumentException("鐗╂枡鏉$爜涓嶅厑璁镐负绌�", nameof(query.Bar)); + + if (string.IsNullOrEmpty(query.DAA001?.ToString())) + throw new ArgumentException("宸ュ崟鍗曞彿涓嶅厑璁镐负绌�", nameof(query.DAA001)); + + var _strMsg = ""; + var _status = -1; + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + using (var cmd = new SqlCommand("prc_pda_ScanXctl", conn)) + { + try + { + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + // 鏍规嵁瀛樺偍杩囩▼璋冩暣鍙傛暟椤哄簭鍜屽懡鍚� + SqlParameter[] parameters = + { + new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userAccount }, + new("@pi_barcode", SqlDbType.NVarChar, 100) { Value = query.Bar }, + new("@pi_daa001", SqlDbType.NVarChar, 100) { Value = query.DAA001 }, + new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output }, + new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output } + }; + + foreach (var parameter in parameters) + cmd.Parameters.Add(parameter); + + cmd.ExecuteNonQuery(); + + _strMsg = parameters[3].Value?.ToString() ?? ""; + _status = Convert.ToInt32(parameters[4].Value ?? -1); + + if (_status <= 0) throw new Exception(_strMsg); + + return new + { + message = _strMsg, + status = _status, + daa001 = query.DAA001, + barCode = query.Bar + }; + } + catch (Exception ex) + { + throw new Exception($"浜х嚎鏀舵枡澶辫触锛歿ex.Message}"); + } + finally + { + conn.Close(); + } + } + } + } + +} \ No newline at end of file -- Gitblit v1.9.3