From 2d7c60af5abaae8da7001e9b2db5588bd5429a09 Mon Sep 17 00:00:00 2001 From: 南骏 池 <chiffly@163.com> Date: 星期一, 10 三月 2025 12:56:25 +0800 Subject: [PATCH] 1.受托退料 --- Controllers/Warehouse/MesSttlController.cs | 266 ++++++++++ service/Warehouse/MesSttlManager.cs | 139 +++++ entity/MesShouTui.cs | 106 ++++ service/Warehouse/MesXsckManager.cs | 827 ------------------------------- Controllers/Warehouse/MesXsckController.cs | 130 ----- entity/MesShouTuiDetail.cs | 70 ++ 6 files changed, 581 insertions(+), 957 deletions(-) diff --git a/Controllers/Warehouse/MesSttlController.cs b/Controllers/Warehouse/MesSttlController.cs new file mode 100644 index 0000000..2496b66 --- /dev/null +++ b/Controllers/Warehouse/MesSttlController.cs @@ -0,0 +1,266 @@ +锘縰sing System.Dynamic; +using Microsoft.AspNetCore.Mvc; +using NewPdaSqlServer.Dto.service; +using NewPdaSqlServer.entity; +using NewPdaSqlServer.service.Warehouse; +using NewPdaSqlServer.util; +using static Microsoft.EntityFrameworkCore.DbLoggerCategory; + +namespace NewPdaSqlServer.Controllers.Warehouse; + +/// <summary> +/// 鐢熶骇琛ユ枡鐩稿叧鎺ュ彛 +/// </summary> +[Route("api/[controller]")] +[ApiController] +public class MesSttlController : ControllerBase +{ + private readonly MesSttlManager _manager = new(); + + #region 鍩虹 + /***杩涘叆妯$増绠$悊鍙互淇敼妯$増***/ + + /// <summary> + /// 鑾峰彇鎵�鏈� + /// </summary> + /// <returns></returns> + [HttpPost("GetList")] + public ResponseResult GetList() + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.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 = _manager.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 = _manager.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] MesItemBl data) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.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] MesItemBl data) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.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] MesItemBl data) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.Update(data); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + #endregion + + + /// <summary> + /// 鑾峰彇鍙楁墭閫�鏂欑敵璇峰垪琛� + /// </summary> + /// + /// <returns>鍙楁墭閫�鏂欑敵璇峰垪琛�</returns> + [HttpPost("GetSttlBillNo")] + public ResponseResult GetSttlBillNo(WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.GetSttlBillNo(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("GetMesItemDetailByBillNo")] + public ResponseResult GetMesItemDetailByBillNo( + [FromBody] WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.GetMesItemDetailByBillNo(query); + + if (resultInfos.tbBillList.Count < 1) + { + return new ResponseResult + { + status = 1, + message = "璇ョ敵璇峰崟鍙蜂笉瀛樺湪鎴栨湭瀹℃牳锛侊紒锛�", + data = "" + }; + } + + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } + + /// <summary> + /// 鑾峰彇鏉$爜淇℃伅鍜岀墿鏂欎俊鎭� + /// </summary> + /// <returns></returns> + [HttpPost("SttlScanBarcode")] + public ResponseResult SttlScanBarcode(WarehouseQuery unity) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = _manager.SttlScanBarcode(unity); + 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); + } + } + + +} \ No newline at end of file diff --git a/Controllers/Warehouse/MesXsckController.cs b/Controllers/Warehouse/MesXsckController.cs index 4368ba0..8d67113 100644 --- a/Controllers/Warehouse/MesXsckController.cs +++ b/Controllers/Warehouse/MesXsckController.cs @@ -328,134 +328,4 @@ #endregion - #region 鐢熶骇瓒呴 - - /// <summary> - /// 鑾峰彇鐢熶骇瓒呴鍗曞彿鍒楄〃 - /// </summary> - /// <returns>瓒呴鍗曞彿鍒楄〃</returns> - /// <response code="200">鎴愬姛鑾峰彇瓒呴鍗曞彿鍒楄〃</response> - /// <response code="400">鑾峰彇澶辫触</response> - [HttpPost("GetSccList")] - public ResponseResult GetSccList(WarehouseQuery query) - { - try - { - dynamic resultInfos = new ExpandoObject(); - resultInfos.tbBillList = _manager.GetSccList(query); - return new ResponseResult - { - status = 0, - message = "OK", - data = resultInfos - }; - } - catch (Exception ex) - { - return ResponseResult.ResponseError(ex); - } - } - - /// <summary> - /// 鑾峰彇鐢熶骇瓒呴鍗曟槑缁� - /// </summary> - /// <param name="query">鏌ヨ鍙傛暟锛屽繀椤诲寘鍚玝illNo</param> - /// <returns>瓒呴鍗曟槑缁嗗垪琛�</returns> - /// <remarks> - /// 璇锋眰绀轰緥: - /// POST /api/MesItemBl/GetMesItemBlDetailBySccBillNo - /// { - /// "billNo": "SC202401010001" - /// } - /// </remarks> - /// <response code="200">鎴愬姛鑾峰彇瓒呴鍗曟槑缁�</response> - /// <response code="400">鑾峰彇澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response> - [HttpPost("GetMesItemBlDetailBySccBillNo")] - public ResponseResult GetMesItemBlDetailBySccBillNo( - [FromBody] WarehouseQuery query) - { - try - { - dynamic resultInfos = new ExpandoObject(); - resultInfos.tbBillList = - _manager.GetMesItemBlDetailBySccBillNo(query); - return new ResponseResult - { - status = 0, - message = "OK", - data = resultInfos - }; - } - catch (Exception ex) - { - return ResponseResult.ResponseError(ex); - } - } - - /// <summary> - /// 鐢熶骇瓒呴鎵弿鏉$爜1 - /// </summary> - /// <param name="query">鏌ヨ鍙傛暟</param> - /// <returns>鎵弿缁撴灉鍜屽緟澶勭悊鍒楄〃</returns> - /// <remarks> - /// 璇锋眰绀轰緥: - /// POST /api/MesItemBl/ScanBarcodeForOverPicking - /// { - /// "billNo": "WO202401010001", - /// "barcode": "1234567890", - /// "userName": "admin", - /// "blNo": "SC202401010001" - /// } - /// </remarks> - /// <response code="200">鎵弿鎴愬姛</response> - /// <response code="400">鎵弿澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response> - [HttpPost("ScanBarcodeForOverPicking")] - public ResponseResult ScanBarcodeForOverPicking( - [FromBody] WarehouseQuery query) - { - try - { - dynamic resultInfos = new ExpandoObject(); - var (success, pendingList) = - _manager.ScanBarcodeForOverPicking(query); - resultInfos.success = success; - resultInfos.pendingList = pendingList; - return new ResponseResult - { - status = 0, - message = "OK", - data = resultInfos - }; - } - catch (Exception ex) - { - return ResponseResult.ResponseError(ex); - } - } - - - [HttpPost("PrintBarcodeForOverPicking")] - public ResponseResult PrintForOverPicking(WarehouseQuery query) - { - try - { - dynamic resultInfos = new ExpandoObject(); - var (success, pendingList) = - _manager.PrintBarcodeForOverPicking(query); - resultInfos.success = success; - resultInfos.pendingList = pendingList; - 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/entity/MesShouTui.cs b/entity/MesShouTui.cs new file mode 100644 index 0000000..21c5884 --- /dev/null +++ b/entity/MesShouTui.cs @@ -0,0 +1,106 @@ +锘縰sing SqlSugar; + +namespace MES.Service.Models; + +/// <summary> +/// 鍙楅�� +/// </summary> +[SugarTable("Mes_SHOU_TUI")] +public class MesShouTui +{ + /// <summary> + /// 涓婚敭 + /// </summary> + [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)] + public Guid? Guid { get; set; } + + /// <summary> + /// 缂栧彿 + /// </summary> + [SugarColumn(ColumnName = "billNo")] + public string? BillNo { get; set; } + + /// <summary> + /// 瀹㈡埛 + /// </summary> + [SugarColumn(ColumnName = "FCustId")] + public string? FCustId { get; set; } + + /// <summary> + /// 搴撳瓨缁勭粐 + /// </summary> + [SugarColumn(ColumnName = "FStockOrgId")] + public string? FStockOrgId { get; set; } + + /// <summary> + /// 閫�鏂欐柟寮� + /// </summary> + [SugarColumn(ColumnName = "FReturnStyle")] + public string? FReturnStyle { get; set; } + + /// <summary> + /// 鏄惁鍏宠仈婧愬崟 + /// </summary> + [SugarColumn(ColumnName = "FIsLink")] + public bool? FIsLink { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + [SugarColumn(ColumnName = "remark")] + public string? Remark { get; set; } + + /// <summary> + /// 寤虹珛鏃堕棿 + /// </summary> + [SugarColumn(ColumnName = "createDate")] + public DateTime? CreateDate { get; set; } + + /// <summary> + /// 寤虹珛浜� + /// </summary> + [SugarColumn(ColumnName = "createBy")] + public string? CreateBy { get; set; } + + /// <summary> + /// 鏇存柊浜� + /// </summary> + [SugarColumn(ColumnName = "lastupdateBy")] + public string? LastUpdateBy { get; set; } + + /// <summary> + /// 鏇存柊鏃堕棿 + /// </summary> + [SugarColumn(ColumnName = "lastupdateDate")] + public DateTime? LastUpdateDate { get; set; } + + /// <summary> + /// 瀹℃牳浜� + /// </summary> + [SugarColumn(ColumnName = "checkBy")] + public string? CheckBy { get; set; } + + /// <summary> + /// 瀹℃牳鏃堕棿 + /// </summary> + [SugarColumn(ColumnName = "checkDate")] + public DateTime? CheckDate { get; set; } + + /// <summary> + /// 瀹℃牳 + /// </summary> + [SugarColumn(ColumnName = "isCheck")] + public bool? IsCheck { get; set; } + + /// <summary> + /// 瀹岀粨 + /// </summary> + [SugarColumn(ColumnName = "isFinish")] + public bool? IsFinish { get; set; } + + /// <summary> + /// 浠撳簱 + /// </summary> + [SugarColumn(ColumnName = "FStockId")] + public string? FStockId { get; set; } +} \ No newline at end of file diff --git a/entity/MesShouTuiDetail.cs b/entity/MesShouTuiDetail.cs new file mode 100644 index 0000000..4343907 --- /dev/null +++ b/entity/MesShouTuiDetail.cs @@ -0,0 +1,70 @@ +锘縰sing SqlSugar; + +namespace MES.Service.Models; + +/// <summary> +/// 鍙楅��鏄庣粏 +/// </summary> +[SugarTable("Mes_SHOU_TUI_DETAIL")] +public class MesShouTuiDetail +{ + /// <summary> + /// 涓婚敭 + /// </summary> + [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)] + public Guid? Guid { get; set; } + + /// <summary> + /// 澶栭敭 + /// </summary> + [SugarColumn(ColumnName = "pGuid")] + public Guid? PGuid { get; set; } + + /// <summary> + /// 鐗╂枡 + /// </summary> + [SugarColumn(ColumnName = "FMaterialId")] + public string? FMaterialId { get; set; } + + /// <summary> + /// 鐢宠鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "FQty")] + public decimal? FQty { get; set; } + + /// <summary> + /// 琛ユ枡鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "FFeedQty")] + public decimal? FFeedQty { get; set; } + + /// <summary> + /// 鍗曚綅 + /// </summary> + [SugarColumn(ColumnName = "FUintId")] + public string? FUintId { get; set; } + + /// <summary> + /// 搴撳瓨鐘舵�� + /// </summary> + [SugarColumn(ColumnName = "FStockStatusId")] + public string? FStockStatusId { get; set; } + + /// <summary> + /// 鎺掑簭 + /// </summary> + [SugarColumn(ColumnName = "Fidx")] + public int? FIdx { get; set; } + + /// <summary> + /// 宸叉壂鏁伴噺 + /// </summary> + [SugarColumn(ColumnName = "SQty")] + public decimal? SQty { get; set; } + + /// <summary> + /// 鍙楁墭鍏ュ簱鏄庣粏guid + /// </summary> + [SugarColumn(ColumnName = "RkMxGuid")] + public Guid? RkMxGuid { get; set; } +} \ No newline at end of file diff --git a/service/Warehouse/MesSttlManager.cs b/service/Warehouse/MesSttlManager.cs new file mode 100644 index 0000000..22f1a79 --- /dev/null +++ b/service/Warehouse/MesSttlManager.cs @@ -0,0 +1,139 @@ +锘縰sing Masuit.Tools; +using MES.Service.Models; +using MES.Service.Modes; +using NewPdaSqlServer.DB; +using NewPdaSqlServer.Dto.service; +using NewPdaSqlServer.entity; +using NewPdaSqlServer.util; +using OracleInternal.Sharding; +using SqlSugar; +using SqlSugar.Extensions; +using System.Data; +using System.Data.SqlClient; +using static Microsoft.EntityFrameworkCore.DbLoggerCategory; + +namespace NewPdaSqlServer.service.Warehouse; + +public class MesSttlManager : Repository<MesItemBl> +{ + /// <summary> + /// 鑾峰彇鍙楁墭閫�鏂欑敵璇峰垪琛� + /// </summary> + /// <returns>鍙楁墭閫�鏂欑敵璇峰垪琛�</returns> + public List<string> GetSttlBillNo(WarehouseQuery query) + { + var list = Db.Queryable<MesShouTui>() + .Where(s => s.IsCheck == true && s.IsFinish == false) + .Select(s => s.BillNo).ToList(); + + return list; + } + + /// <summary> + /// 鏍规嵁鍗曞彿鑾峰彇MES鐗╂枡琛ㄦ槑缁� + /// </summary> + /// <param name="query">浠撳簱鏌ヨ鍙傛暟</param> + /// <returns>鐗╂枡鏄庣粏鍒楄〃</returns> + public List<ItemDetailModel> GetMesItemDetailByBillNo( + WarehouseQuery query) + { + // 鍏宠仈鏌ヨ鐗╂枡琛ㄣ�佺墿鏂欐槑缁嗚〃鍜岀墿鏂欏熀纭�淇℃伅琛� + var mesItemTblDetails = Db + .Queryable<MesShouTui, MesShouTuiDetail, MesItems>( + (a, b, c) => new JoinQueryInfos( + JoinType.Left, + a.Guid == b.PGuid, + JoinType.Left, + b.FMaterialId == c.Id.ToString()) + ).Where((a, b, c) => a.BillNo == query.billNo && a.IsCheck == true) + .Select<ItemDetailModel>((a, b, c) => new ItemDetailModel + { + ItemNo = c.ItemNo, + ItemName = c.ItemName, + ItemModel = c.ItemModel, + FQty = b.FQty, // 鐢宠鏁伴噺 + SQty = b.SQty, // 宸叉壂鏁伴噺 + Pid = b.PGuid.ToString(), + FMaterialId = b.FMaterialId, + Id = b.Guid.ToString() + }).ToList(); + + // 绛涢�夊嚭寰呴��鏁伴噺澶т簬宸查��鏁伴噺鐨勮褰� + //var itemTblDetails = mesItemTblDetails + // .Where(s => (s.Tld005 ?? 0) - (s.Tld006 ?? 0) > 0).ToList(); + + return mesItemTblDetails; + } + + /// <summary> + /// 鍙楁墭閫�鏂欏叆搴� + /// </summary> + /// <param name="query"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public ProductionPickDto SttlScanBarcode(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_STTL]", 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(); + } + } + } + } +} \ No newline at end of file diff --git a/service/Warehouse/MesXsckManager.cs b/service/Warehouse/MesXsckManager.cs index e097e57..446cbb7 100644 --- a/service/Warehouse/MesXsckManager.cs +++ b/service/Warehouse/MesXsckManager.cs @@ -659,831 +659,4 @@ #endregion - #region 鐢熶骇瓒呴 - - public List<string> GetSccList(WarehouseQuery query) - { - var list = Db.Queryable<MesItemBl>() - .Where(s => (s.Bl018 ?? false) == true - && (s.Bl019 ?? false) == false - && s.Bl008 == query.Type) - .Select(s => s.BlNo) - .ToList(); - return list; - } - - /// <summary> - /// 鑾峰彇鐢熶骇瓒呴鍗曟槑缁� - /// </summary> - /// <param name="query">鏌ヨ鍙傛暟</param> - /// <returns>鐢熶骇瓒呴鍗曟槑缁嗗垪琛�</returns> - public (string bl001, List<MesItemBlDetail> item) - GetMesItemBlDetailBySccBillNo( - WarehouseQuery query) - { - if (string.IsNullOrEmpty(query.billNo)) - throw new Exception("璇烽�夊崟鎹彿锛�"); - - // 妫�鏌ヨ秴棰嗗崟鏄惁瀛樺湪涓斾负鐢熶骇瓒呴/濮斿瓒呴绫诲瀷 - var mesItemBl = Db.Queryable<MesItemBl>() - .Where(a => a.BlNo == query.billNo && a.Bl008 == query.Type) - .First(); - - if (mesItemBl == null) - throw new Exception("鍗曟嵁鍙蜂笉姝g‘锛�"); - - // 妫�鏌ュ伐鍗曟槑缁嗙姸鎬� - var blDetails = Db.Queryable<MesItemBlDetail>() - .Where(it => it.Mid == mesItemBl.Id) - .ToList(); - - foreach (var womdab in blDetails.Select(detail => Db.Queryable<Womdab>() - .Where(it => it.Erpid == detail.Bld014) - .First())) - { - if (womdab == null) - throw new Exception("鏈壘鍒板伐鍗曟槑缁嗭紒"); - - if ((womdab.Dab006 ?? 0) != (womdab.Dab007 ?? 0) || - (womdab.Dab021 ?? 0) != (womdab.Dab022 ?? 0)) - throw new Exception("鐗╂枡鏈瀹屾枡鎴栧瓨鍦ㄥ緟琛ョ墿鏂欙紒"); - } - - // 鑾峰彇鏈畬鎴愮殑瓒呴鍗曟槑缁� - var pendingDetails = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) => - new JoinQueryInfos(JoinType.Left, a.Id == b.Mid)) - .Where((a, b) => a.BlNo == query.billNo - && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0) - .OrderBy((a, b) => b.Bld002) - .Select((a, b) => new MesItemBlDetail - { - Bld012 = b.Bld012, - Bld002 = b.Bld002, - Bld003 = b.Bld003, - Bld004 = b.Bld004, - Bld007 = b.Bld007, - Bld008 = b.Bld008 - }) - .ToList(); - - return (mesItemBl.Bl001, pendingDetails); - } - - /// <summary> - /// 鐢熶骇瓒呴鎵弿鏉$爜 prc_rf_pda_scan_zout_barcodeCL - /// </summary> - /// <param name="query">鏌ヨ鍙傛暟</param> - /// <returns>鎵弿缁撴灉</returns> - /// <remarks> - /// 鍙傛暟璇存槑: - /// - billNo: 宸ュ崟鍙�(蹇呭~) - /// - barcode: 鏉$爜(蹇呭~) - /// - userName: 鐢ㄦ埛鍚�(蹇呭~) - /// - blNo: 瓒呴鍗曞彿(蹇呭~) - /// </remarks> - public (WarehouseQuery item, List<MesItemBlDetail> pendingList) - ScanBarcodeForOverPicking( - WarehouseQuery query) - { - #region 鍙傛暟鏍¢獙 - - if (string.IsNullOrEmpty(query.billNo)) - throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); - - if (string.IsNullOrEmpty(query.barcode)) - throw new Exception("璇锋壂鎻忔潯鐮侊紒"); - - if (string.IsNullOrEmpty(query.userName)) - throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒"); - - if (string.IsNullOrEmpty(query.blNo)) - throw new Exception("瓒呴鍗曞彿涓嶈兘涓虹┖锛�"); - - #endregion - - // 妫�楠屾槸鍚﹂噸澶嶆壂鎻� - var exists = Db.Queryable<MesInvItemOutCDetails>() - .Where(b => b.ItemBarcode == query.barcode) - .Any(); - - if (exists) - throw new Exception("姝ゆ潯鐮佸凡鎵弿,鍕块噸澶嶆壂鐮侊紒"); - - // 鏌ヨ鏉$爜搴撳瓨淇℃伅 - var stockBarcode = Db.Queryable<MesInvItemStocks>() - .Where(t => t.ItemBarcode == query.barcode && t.Quantity > 0) - .First(); - - if (stockBarcode == null) - throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮�,璇锋牳瀵癸紒{query.barcode}"); - - // 妫�鏌ヨ秴棰嗗崟鐘舵�� - var mesItemBl = Db.Queryable<MesItemBl>() - .Where(a => a.BlNo == query.blNo && (a.Bl018 ?? false) == false) - .First(); - - if (mesItemBl == null) - throw new Exception($"鐢宠鍗� {query.blNo} 宸叉挙鍥烇紒"); - - if (mesItemBl.Bl018 != true) - throw new Exception($"鐢宠鍗� {query.blNo} 鏈鏍革紒"); - - if (mesItemBl.Bl019 == true) - throw new Exception($"鐢宠鍗� {query.blNo} 宸插畬缁擄紒"); - - // 妫�鏌ュ伐鍗曟槑缁嗙姸鎬� - var blDetails = Db.Queryable<MesItemBlDetail>() - .Where(it => it.Mid == mesItemBl.Id) - .ToList(); - - foreach (var womdab1 in blDetails.Select(detail => Db - .Queryable<Womdab>() - .Where(it => it.Erpid == detail.Bld014) - .First())) - { - if (womdab1 == null) - throw new Exception("鏈壘鍒板伐鍗曟槑缁嗭紒"); - - if ((womdab1.Dab006 ?? 0) != (womdab1.Dab007 ?? 0) || - (womdab1.Dab021 ?? 0) != (womdab1.Dab022 ?? 0)) - throw new Exception("鐗╂枡鏈瀹屾枡鎴栧瓨鍦ㄥ緟琛ョ墿鏂欙紒"); - } - - // 鑾峰彇瓒呴鍗曟槑缁嗗苟鏍¢獙 - var blDetail = Db.Queryable<MesItemBlDetail>() - .Where(b => - b.Mid == mesItemBl.Id && b.Bld012 == stockBarcode.ItemId) - .First(); - - if (blDetail == null) - throw new Exception($"鐢宠鍗曚笉瀛樺湪姝ょ墿鏂� {stockBarcode.ItemNo} 璇风‘璁わ紒"); - - // 妫�鏌ュ緟瓒呴鏁伴噺 - var quantity = (blDetail.Bld007 ?? 0) - (blDetail.Bld008 ?? 0); - if (quantity == 0) - throw new Exception("鐗╂枡宸叉壂鐮佸畬鎴愶紝璇锋牳瀵癸紒"); - - // 妫�鏌ュ伐鍗曚俊鎭� - var womdaa = Db.Queryable<Womdaa>() - .Where(a => a.Daa001 == query.billNo) - .First(); - - if (womdaa == null) - throw new Exception($"宸ュ崟 {query.billNo} 涓嶅瓨鍦紝璇风‘璁わ紒"); - - var womdab = Db.Queryable<Womdab>() - .Where(b => b.Dab001 == query.billNo && b.Erpid == blDetail.Bld014) - .First(); - - if (womdab == null) - throw new Exception($"澶囨枡鏄庣粏涓嶅瓨鍦ㄦ鐗╂枡 {stockBarcode.ItemNo} 璇风‘璁わ紒"); - - // 濡傛灉鏉$爜鏁伴噺澶т簬寰呰秴棰嗘暟閲�,杩斿洖寰呭鐞嗗垪琛ㄤ緵纭 - if (stockBarcode.Quantity > quantity) - { - var pendingList = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) => - new JoinQueryInfos(JoinType.Left, a.Id == b.Mid)) - .Where((a, b) => a.BlNo == query.blNo - && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0) - .Select((a, b) => new MesItemBlDetail - { - Bld012 = b.Bld012, - Bld002 = b.Bld002, - Bld003 = b.Bld003, - Bld004 = b.Bld004, - Bld007 = b.Bld007, - Bld008 = b.Bld008 - }) - .ToList(); - - query.Num = stockBarcode.Quantity; - query.Fum = quantity; - - return (query, pendingList); - } - - // 鎵ц鏁版嵁搴撲簨鍔� - UseTransaction(db => - { - // 鐢熸垚鎴栬幏鍙栧嚭搴撳崟 - var outId = Guid.Empty; - var outNo = ""; - var outRecord = db.Queryable<MesInvItemOuts>() - .Where(a => a.TaskNo == query.blNo - && a.DepotId == stockBarcode.DepotId - && a.OutDate.Value.Date == DateTime.Now.Date - && a.BillTypeId == 200 - && a.TransactionNo == 210 - && a.Status == 0) - .First(); - - if (outRecord == null) - { - outId = Guid.NewGuid(); - outNo = BillNo.GetBillNo("BL(宸ュ崟琛ユ枡)"); // 闇�瑕佸疄鐜扮敓鎴愬崟鍙风殑鏂规硶 - - // 鎻掑叆鍑哄簱鍗曚富琛� - db.Insertable(new MesInvItemOuts - { - Guid = outId, - ItemOutNo = outNo, - TaskNo = query.blNo, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - BillTypeId = 200, - TransactionNo = 210, - Remark = mesItemBl.Bl007, - DepotCode = womdab.Dab017, - OutPart = womdaa.Daa013, - FType = 0, - WorkNo = womdaa.Daa021, - OutType = query.Type, - BoardItem = womdaa.Daa002, - PbillNo = womdaa.Daa001, - OutDate = DateTime.Now, - Status = 0, - BbillNo = query.blNo - }).IgnoreColumns(true).ExecuteCommand(); - } - else - { - outId = outRecord.Guid; - outNo = outRecord.ItemOutNo; - } - - // 鏇存柊鎴栨彃鍏ュ嚭搴撳崟鏄庣粏 - var outItem = db.Queryable<MesInvItemOutItems>() - .Where(it => - it.ItemOutId == outId && it.ItemId == stockBarcode.ItemId) - .First(); - - if (outItem == null) - // 鎻掑叆鍑哄簱鍗曟槑缁� - db.Insertable(new MesInvItemOutItems - { - Guid = Guid.NewGuid(), - ItemOutId = outId, - ItemNo = blDetail.Bld002, - Quantity = stockBarcode.Quantity, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - DepotCode = womdab.Dab017, - TaskNo = query.blNo, - WorkNo = womdaa.Daa021, - WorkLine = blDetail.Bld013, - ErpItemNo = womdab.Dab003, - ErpId = womdab.Eid, - ErpAutoid = womdab.Erpid, - PbillNo = query.billNo, - ItemId = blDetail.Bld012, - DepotId = stockBarcode.DepotId.ToString(), - // Unit = blDetail.Bld009, - // DepotId = stockBarcode.DepotsId - }).IgnoreColumns(true).ExecuteCommand(); - else - // 鏇存柊鍑哄簱鍗曟槑缁嗘暟閲� - db.Updateable<MesInvItemOutItems>() - .SetColumns(it => new MesInvItemOutItems - { - Quantity = it.Quantity + stockBarcode.Quantity - }) - .Where(it => - it.ItemOutId == outId && - it.ItemId == stockBarcode.ItemId) - .ExecuteCommand(); - - // 鎻掑叆鍑哄簱鏉$爜鏄庣粏 - db.Insertable(new MesInvItemOutCDetails - { - Guid = Guid.NewGuid(), - ItemOutId = outId, - ItemBarcode = stockBarcode.ItemBarcode, - ItemNo = stockBarcode.ItemNo, - LotNo = stockBarcode.LotNo, - Quantity = stockBarcode.Quantity, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - DepotCode = stockBarcode.DepotsCode, - DepotSectionCode = stockBarcode.DepotSectionsCode, - Remark = blDetail.Bld010, - TaskNo = query.blNo, - WorkNo = blDetail.Bld001, - WorkLine = blDetail.Bld013, - SuppNo = stockBarcode.SuppNo, - PbillNo = query.billNo, - ItemId = blDetail.Bld012, - Unit = blDetail.Bld009, - DepotId = (int)stockBarcode.DepotsId, - Dabid = womdab.Guid, - }).IgnoreColumns(true).ExecuteCommand(); - - // 鎻掑叆涓氬姟娴佹按 - db.Insertable(new MesInvBusiness2 - { - Guid = Guid.NewGuid(), - Status = 1, - BillTypeId = 200, - TransactionCode = "210", - BusinessType = -1, - ItemBarcode = query.barcode, - ItemNo = stockBarcode.ItemNo, - LotNo = stockBarcode.LotNo, - EpFlag = true, - Quantity = stockBarcode.Quantity, - FromInvDepotsCode = stockBarcode.DepotsCode, - FromInvDepotSectionsCode = stockBarcode.DepotSectionsCode, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - TaskNo = mesItemBl.Bl012, - BillNo = query.blNo, - WorkNo = blDetail.Bld001, - WorkLine = blDetail.Bld013, - SuppNo = stockBarcode.SuppNo, - SuppId = stockBarcode.SuppId, - ItemId = stockBarcode.ItemId - // CkDepot = stockBarcode.DepotsId - }).IgnoreColumns(true).ExecuteCommand(); - - // 鏇存柊宸ュ崟澶囨枡鏄庣粏 - db.Updateable<Womdab>() - .SetColumns(it => new Womdab - { - Dab020 = (it.Dab020 ?? 0) + stockBarcode.Quantity, - Dab023 = (it.Dab023 ?? 0) + stockBarcode.Quantity - }) - .Where(it => it.Id == womdab.Id) - .ExecuteCommand(); - - // 鏇存柊瓒呴鍗曟槑缁� - db.Updateable<MesItemBlDetail>() - .SetColumns(it => new MesItemBlDetail - { - Bld008 = (it.Bld008 ?? 0) + (int)stockBarcode.Quantity, - Bld011 = (it.Bld007 ?? 0) <= - (it.Bld008 ?? 0) + stockBarcode.Quantity - ? 1 - : 0 - }) - .Where(it => it.Id == blDetail.Id) - .ExecuteCommand(); - - // 鏇存柊搴撳瓨鏁伴噺涓�0 - db.Updateable<MesInvItemStocks>() - .SetColumns(it => it.Quantity == 0) - .Where(it => it.Guid == stockBarcode.Guid) - .ExecuteCommand(); - - // 妫�鏌ユ槸鍚︽墍鏈夋槑缁嗛兘宸插畬鎴� - var hasUnfinished = db.Queryable<MesItemBlDetail>() - .Where(it => it.Mid == mesItemBl.Id && (it.Bld011 ?? 0) == 0) - .Any(); - - // 濡傛灉鎵�鏈夋槑缁嗗畬鎴�,鏇存柊瓒呴鍗曠姸鎬佷负宸插畬鎴� - if (!hasUnfinished) - db.Updateable<MesItemBl>() - .SetColumns(it => it.Bl019 == true) - .Where(it => it.Id == mesItemBl.Id) - .ExecuteCommand(); - - return 1; - }); - - // 鑾峰彇鏈�缁堢殑寰呭鐞嗗垪琛� - var finalPendingList = Db.Queryable<MesItemBl, MesItemBlDetail>( - (a, b) => - new JoinQueryInfos(JoinType.Left, a.Id == b.Mid)) - .Where((a, b) => a.BlNo == query.blNo - && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0) - .Select((a, b) => new MesItemBlDetail - { - Bld012 = b.Bld012, - Bld002 = b.Bld002, - Bld003 = b.Bld003, - Bld004 = b.Bld004, - Bld007 = b.Bld007, - Bld008 = b.Bld008 - }) - .ToList(); - - return (query, finalPendingList); - } - - /// <summary> - /// 鐢熶骇瓒呴鎵撳嵃鏉$爜 - /// </summary> - /// <param name="query">鏌ヨ鍙傛暟</param> - /// <returns>澶勭悊缁撴灉</returns> - public (bool success, List<MesItemBlDetail> pendingList) - PrintBarcodeForOverPicking(WarehouseQuery query) - { - UseTransaction(db => - { - #region 鍙傛暟鏍¢獙 - - if (string.IsNullOrEmpty(query.billNo)) - throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); - - if (string.IsNullOrEmpty(query.barcode)) - throw new Exception("璇锋壂鎻忔潯鐮侊紒"); - - if (string.IsNullOrEmpty(query.userName)) - throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒"); - - if (string.IsNullOrEmpty(query.blNo)) - throw new Exception("瓒呴鍗曞彿涓嶈兘涓虹┖锛�"); - - if (query.Num <= 0) - throw new Exception("璇疯緭鍏ユ纭殑鍙戞枡鏁伴噺锛�"); - - #endregion - - // 鏌ヨ搴撳瓨鏉$爜淇℃伅 - var stockBarcode = db.Queryable<MesInvItemStocks>() - .Where(t => t.ItemBarcode == query.barcode && t.Quantity > 0) - .First(); - - if (stockBarcode == null) - throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{query.barcode}"); - - var totalQty = stockBarcode.Quantity; - string newBarcode = null; - - // 鎷嗗垎鏉$爜 - if (totalQty > query.Num) - { - var mesItems = db.Queryable<MesItems>() - .Where(s => s.Id == stockBarcode.ItemId).First(); - // 鐢熸垚鏂版潯鐮佸彿 - newBarcode = BillNo.GetBillNo("TMBH(鏉$爜缂栧彿)", mesItems.ItemNo); - - // 鍐欏叆鏂版潯鐮佽褰� - db.Insertable(new MesInvItemBarcodes - { - Guid = Guid.NewGuid(), - ItemBarcode = newBarcode, - ItemNo = stockBarcode.ItemNo, - LotNo = stockBarcode.LotNo, - Quantity = query.Num, - EpFlag = true, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - OldItemBarcode = query.barcode, - Factory = stockBarcode.Factory, - Company = stockBarcode.Company, - WorkNo = stockBarcode.WorkNo, - WorkLine = stockBarcode.WorkLine, - SuppId = stockBarcode.SuppId, - SuppNo = stockBarcode.SuppNo, - ItemId = stockBarcode.ItemId - }).IgnoreColumns(true).ExecuteCommand(); - - // 鏇存柊鍘熸潯鐮佹暟閲� - db.Updateable<MesInvItemBarcodes>() - .SetColumns(it => new MesInvItemBarcodes - { Quantity = totalQty - query.Num }) - .Where(it => it.ItemBarcode == query.barcode) - .ExecuteCommand(); - - // 鍒犻櫎鍘熸潯鐮佸簱瀛樿褰� - db.Deleteable<MesInvItemStocks>() - .Where(it => it.ItemBarcode == query.barcode) - .ExecuteCommand(); - - // 鎻掑叆鍓╀綑鏉$爜鏁伴噺鐨勬柊搴撳瓨璁板綍 - db.Insertable(new MesInvItemStocks - { - Guid = Guid.NewGuid(), - ItemBarcode = stockBarcode.ItemBarcode, - ItemNo = stockBarcode.ItemNo, - LotNo = stockBarcode.LotNo, - Quantity = totalQty - query.Num, - EpFlag = stockBarcode.EpFlag, - CustomerNo = stockBarcode.CustomerNo, - DepotsCode = stockBarcode.DepotsCode, - DepotsId = stockBarcode.DepotsId, - DepotSectionsCode = stockBarcode.DepotSectionsCode, - CheckDate = stockBarcode.CheckDate, - ItemType = stockBarcode.ItemType, - IndepDate = stockBarcode.IndepDate, - Factory = stockBarcode.Factory, - Company = stockBarcode.Company, - IqcStatus = stockBarcode.IqcStatus, - BoardStyle = stockBarcode.BoardStyle, - WorkNo = stockBarcode.WorkNo, - WorkLine = stockBarcode.WorkLine, - SuppNo = stockBarcode.SuppNo, - SuppId = stockBarcode.SuppId, - ItemId = stockBarcode.ItemId - }).IgnoreColumns(true).ExecuteCommand(); - - // 鍐欐柊鏉$爜鐨勪氦鏄撹〃锛屾柊鏉$爜涓嶅叆搴撶洿鎺ュ嚭 - db.Insertable(new MesInvBusiness2 - { - Guid = Guid.NewGuid(), - Status = 1, - BillTypeId = 200, - TransactionCode = "210", - BusinessType = -1, - ItemBarcode = newBarcode, - ItemNo = stockBarcode.ItemNo, - LotNo = stockBarcode.LotNo, - EpFlag = true, - Quantity = query.Num, - ToInvDepotsCode = stockBarcode.DepotsCode, - ToInvDepotSectionsCode = stockBarcode.DepotSectionsCode, - Description = "鐢熶骇瓒呴", - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - TaskNo = stockBarcode.TaskNo, - WorkNo = stockBarcode.WorkNo, - WorkLine = stockBarcode.WorkLine, - SuppNo = stockBarcode.SuppNo, - SuppId = stockBarcode.SuppId, - ItemId = stockBarcode.ItemId - }).IgnoreColumns(true).ExecuteCommand(); - } - else if (totalQty < query.Num) - { - throw new Exception("鍙戞枡鏁伴噺澶т簬鏉$爜鏁�,璇锋牳瀵癸紒"); - } - - if (string.IsNullOrEmpty(newBarcode)) - newBarcode = query.barcode; - - // 妫�鏌ヨ秴棰嗗崟鐘舵�� - var mesItemBl = db.Queryable<MesItemBl>() - .Where(a => a.BlNo == query.blNo && a.Bl008 == "鐢熶骇瓒呴") - .First(); - - if (mesItemBl == null) - throw new Exception("鐢宠鍗曚笉瀛樺湪锛�"); - - if (!(mesItemBl.Bl018 ?? false)) - throw new Exception($"鐢宠鍗� {query.blNo} 鏈鏍革紒"); - - if (mesItemBl.Bl019 ?? false) - throw new Exception($"鐢宠鍗� {query.blNo} 宸插畬缁擄紒"); - - // 妫�鏌ヨ秴棰嗗崟鏄庣粏 - var blDetail = db.Queryable<MesItemBlDetail>() - .Where(b => - b.Mid == mesItemBl.Id && b.Bld012 == stockBarcode.ItemId) - .First(); - - if (blDetail == null) - throw new Exception($"鐢宠鍗曚笉瀛樺湪姝ょ墿鏂� {stockBarcode.ItemNo} 璇风‘璁わ紒"); - - var pendingQty = (blDetail.Bld007 ?? 0) - (blDetail.Bld008 ?? 0); - if (pendingQty == 0) - throw new Exception("鐗╂枡宸叉壂鐮佸畬鎴愶紝璇锋牳瀵癸紒"); - - // 妫�鏌ュ伐鍗� - var workOrder = db.Queryable<Womdaa>() - .Where(a => a.Daa001 == query.billNo) - .First(); - - if (workOrder == null) - throw new Exception($"宸ュ崟 {query.billNo} 涓嶅瓨鍦紝璇风‘璁わ紒"); - - var workOrderDetail = db.Queryable<Womdab>() - .Where(b => - b.Dab001 == query.billNo && b.Erpid == blDetail.Bld014) - .First(); - - if (workOrderDetail == null) - throw new Exception($"澶囨枡鏄庣粏涓嶅瓨鍦ㄦ鐗╂枡 {stockBarcode.ItemNo} 璇风‘璁わ紒"); - - if (query.Num > pendingQty) - throw new Exception( - $"鎷嗗垎鏁伴噺锛歿query.Num} 澶т簬寰呭彂鏂欐暟閲忥細{pendingQty}锛岃鏍稿锛�"); - - // 鑾峰彇鎴栧垱寤哄嚭搴撳崟 - var itemOut = db.Queryable<MesInvItemOuts>() - .Where(a => a.BbillNo == query.blNo - && a.DepotCode == workOrderDetail.Dab017 - && a.OutDate.Value.Date.ToString("yyyy-MM-dd") == - DateTime.Now.Date.ToString("yyyy-MM-dd") - && a.BillTypeId == 200 - && a.TransactionNo == 210 - && a.Status == 0) - .First(); - - if (itemOut == null) - { - // 鍒涘缓鏂扮殑鍑哄簱鍗� - itemOut = new MesInvItemOuts - { - Guid = Guid.NewGuid(), - ItemOutNo = BillNo.GetBillNo("BL(宸ュ崟琛ユ枡)"), // 闇�瑕佸疄鐜扮敓鎴愬崟鍙风殑鏂规硶 - TaskNo = query.blNo, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - BillTypeId = 200, - TransactionNo = 210, - Remark = mesItemBl.Bl007, - DepotCode = workOrderDetail.Dab017, - OutPart = workOrder.Daa013, - FType = 0, - Factory = stockBarcode.Factory, - Company = stockBarcode.Company, - WorkNo = workOrder.Daa021, - OutType = "鐢熶骇瓒呴鍗�", - BoardItem = workOrder.Daa002, - PbillNo = workOrder.Daa001, - OutDate = DateTime.Now, - Status = 0, - BbillNo = query.blNo - }; - - db.Insertable(itemOut).IgnoreColumns(true).ExecuteCommand(); - } - - // 妫�鏌ユ槸鍚﹀凡瀛樺湪鍑哄簱鍗曟槑缁� - var itemOutItemCount = db.Queryable<MesInvItemOutItems>() - .Where(it => - it.ItemOutId == itemOut.Guid && - it.ItemId == stockBarcode.ItemId) - .Count(); - - if (itemOutItemCount == 0) - // 鎻掑叆鏂扮殑鍑哄簱鍗曟槑缁� - db.Insertable(new MesInvItemOutItems - { - Guid = Guid.NewGuid(), - ItemOutId = itemOut.Guid, - ItemNo = blDetail.Bld002, - Quantity = query.Num, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - Factory = stockBarcode.Factory, - Company = stockBarcode.Company, - DepotCode = workOrderDetail.Dab017, - TaskNo = query.blNo, - WorkNo = workOrder.Daa021, - WorkLine = blDetail.Bld013, - ErpItemNo = workOrderDetail.Dab003, - ErpId = workOrderDetail.Eid, - ErpAutoid = workOrderDetail.Erpid, - PbillNo = query.billNo, - ItemId = blDetail.Bld012 - // Unit = blDetail.Bld009, - // DepotId = stockBarcode.DepotsId - }).IgnoreColumns(true).ExecuteCommand(); - else - // 鏇存柊宸叉湁鍑哄簱鍗曟槑缁嗘暟閲� - db.Updateable<MesInvItemOutItems>() - .SetColumns(it => it.Quantity == it.Quantity + query.Num) - .Where(it => - it.ItemOutId == itemOut.Guid && - it.ItemId == stockBarcode.ItemId) - .ExecuteCommand(); - - // 鎻掑叆鍑哄簱鏄庣粏璁板綍 - db.Insertable(new MesInvItemOutCDetails - { - Guid = Guid.NewGuid(), - ItemOutId = itemOut.Guid, - ItemBarcode = newBarcode, - ItemNo = stockBarcode.ItemNo, - LotNo = stockBarcode.LotNo, - Quantity = query.Num, - ForceOutFlag = 0, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - DepotCode = stockBarcode.DepotsCode, - DepotSectionCode = stockBarcode.DepotSectionsCode, - Remark = blDetail.Bld010, - Factory = stockBarcode.Factory, - Company = stockBarcode.Company, - TaskNoy = mesItemBl.Bl013, - BoardStyle = mesItemBl.Bl002, - TaskNo = query.blNo, - WorkNo = blDetail.Bld001, - WorkLine = blDetail.Bld013, - SuppNo = stockBarcode.SuppNo, - PbillNo = query.billNo, - ItemId = blDetail.Bld012, - Unit = blDetail.Bld009, - DepotId = (int)stockBarcode.DepotsId, - LineK3id = workOrderDetail.Erpid, - EbelnK3id = workOrderDetail.Eid - }).IgnoreColumns(true).ExecuteCommand(); - - // 鎻掑叆涓氬姟浜ゆ槗璁板綍 - db.Insertable(new MesInvBusiness2 - { - Guid = Guid.NewGuid(), - Status = 1, - BillTypeId = 200, // p_bill_type_id - TransactionCode = "210", // p_transaction_no - BusinessType = 1, - ItemBarcode = newBarcode, - ItemNo = stockBarcode.ItemNo, - LotNo = stockBarcode.LotNo, - EpFlag = true, - Quantity = query.Num, - FromInvDepotsCode = stockBarcode.DepotsCode, - FromInvDepotSectionsCode = stockBarcode.DepotSectionsCode, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - Factory = stockBarcode.Factory, - Company = stockBarcode.Company, - TaskNo = mesItemBl.Bl012, // Matches C_QTCK.Bl012 - BillNo = query.blNo, - WorkNo = blDetail.Bld001, // Matches C_QTCK_D.Bld001 - WorkLine = blDetail.Bld013, // Matches C_QTCK_D.Bld013 - SuppNo = stockBarcode.SuppNo, - ItemId = stockBarcode.ItemId - }).IgnoreColumns(true).ExecuteCommand(); - - // 鏇存柊宸ュ崟琛ㄦ暟閲� - db.Updateable<Womdab>() - .SetColumns(it => new Womdab - { - Dab020 = (it.Dab020 ?? 0) + stockBarcode.Quantity, - Dab023 = (it.Dab023 ?? 0) + stockBarcode.Quantity - }) - .Where(it => it.Id == workOrderDetail.Id) - .ExecuteCommand(); - - // 鏇存柊鍙戣揣閫氱煡鍗曟槑缁嗗凡琛ユ暟閲� - db.Updateable<MesItemBlDetail>() - .SetColumns(it => new MesItemBlDetail - { - Bld008 = (it.Bld008 ?? 0) + (int)stockBarcode.Quantity - }) - .Where(it => it.Id == blDetail.Id) - .ExecuteCommand(); - - // 妫�鏌ュ彂璐ч�氱煡鍗曟槑缁嗘槸鍚﹀畬鎴� - var blDetail1 = db.Queryable<MesItemBlDetail>() - .Where(it => it.Id == blDetail.Id) - .First(); - - if ((blDetail1.Bld007 ?? 0) <= (blDetail1.Bld008 ?? 0)) - // 鏇存柊鏄庣粏瀹屾垚鐘舵�� - db.Updateable<MesItemBlDetail>() - .SetColumns(it => it.Bld011 == 1) - .Where(it => it.Id == blDetail1.Id) - .ExecuteCommand(); - - // 妫�鏌ユ槸鍚︽墍鏈夋槑缁嗛兘宸插畬鎴� - var hasUnfinished = db.Queryable<MesItemBlDetail>() - .Where(it => it.Mid == mesItemBl.Id && (it.Bld011 ?? 0) == 0) - .Any(); - - // 濡傛灉鎵�鏈夋槑缁嗗畬鎴�,鏇存柊鍙戣揣閫氱煡鍗曠姸鎬佷负宸插畬鎴� - if (!hasUnfinished) - db.Updateable<MesItemBl>() - .SetColumns(it => it.Bl019 == true) - .Where(it => it.Id == mesItemBl.Id) - .ExecuteCommand(); - - return 1; - }); - - - // 鑾峰彇鏈�缁堢殑寰呭鐞嗗垪琛� - // 鑾峰彇鍙戣揣閫氱煡鍗曟槑缁嗕腑鏈畬鎴愮殑璁板綍 - // 閫氳繃宸﹁繛鎺ユ煡璇㈠彂璐ч�氱煡鍗�(MesItemBl)鍜屽彂璐ч�氱煡鍗曟槑缁�(MesItemBlDetail)琛� - // 鏉′欢: 1.鍙戣揣閫氱煡鍗曞彿鍖归厤 2.璁″垝鏁伴噺(Bld007)鍑忓幓宸茶ˉ鏁伴噺(Bld008)澶т簬0(鍗虫湭瀹屾垚鐨�) - var pendingList = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) => - new JoinQueryInfos(JoinType.Left, a.Id == b.Mid)) - .Where((a, b) => a.BlNo == query.blNo - && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0) - .Select((a, b) => new MesItemBlDetail - { - Bld012 = b.Bld012, // 鐗╂枡ID - Bld002 = b.Bld002, // 鐗╂枡缂栧彿 - Bld003 = b.Bld003, // 鐗╂枡鍚嶇О - Bld004 = b.Bld004, // 鐗╂枡瑙勬牸 - Bld007 = b.Bld007, // 璁″垝鏁伴噺 - Bld008 = b.Bld008 // 宸茶ˉ鏁伴噺 - }) - .ToList(); - - return (true, pendingList); - } - - #endregion } \ No newline at end of file -- Gitblit v1.9.3