| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using Masuit.Tools.Models; |
| | | using Microsoft.AspNetCore.SignalR.Protocol; |
| | | using NewPdaSqlServer.DB; |
| | | using NewPdaSqlServer.Dto.service; |
| | | using NewPdaSqlServer.entity; |
| | | using NewPdaSqlServer.entity.Base; |
| | | using NewPdaSqlServer.service.@base; |
| | | using NewPdaSqlServer.util; |
| | | using Newtonsoft.Json; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Data; |
| | | using System.Data.SqlClient; |
| | | using static Microsoft.EntityFrameworkCore.DbLoggerCategory; |
| | | |
| | | namespace NewPdaSqlServer.service.Warehouse; |
| | | |
| | | public class MesInvItemInCDetailsManager : Repository<MesInvItemInCDetails> |
| | | { |
| | | //å½å类已ç»ç»§æ¿äº Repository å¢ãå ãæ¥ãæ¹çæ¹æ³ |
| | | |
| | | |
| | | public ItemInBaseModel SaveBarCodes(WarehouseQuery entity) |
| | | { |
| | | ItemInBaseModel res = new ItemInBaseModel(); |
| | | string connectionString = DbHelperSQL.strConn; |
| | | |
| | | // åæ°éªè¯ |
| | | if (string.IsNullOrEmpty(entity.userName)) throw new ArgumentNullException(nameof(entity.userName), "ç¨æ·åä¸å
许为空"); |
| | | if (string.IsNullOrEmpty(entity.sectionCode)) throw new ArgumentNullException(nameof(entity.sectionCode), "åºä½ç¼å·ä¸å
许为空"); |
| | | if (string.IsNullOrEmpty(entity.barcode)) throw new ArgumentNullException(nameof(entity.barcode), "æ¡ç ä¸å
许为空"); |
| | | |
| | | using (var conn = new SqlConnection(connectionString)) |
| | | { |
| | | using (var cmd = new SqlCommand("[prc_pda_inv_cgrk]", conn)) |
| | | { |
| | | try |
| | | { |
| | | conn.Open(); |
| | | cmd.CommandType = CommandType.StoredProcedure; |
| | | |
| | | // 设置åå¨è¿ç¨åæ° |
| | | SqlParameter[] parameters = |
| | | { |
| | | new SqlParameter("@pi_user", SqlDbType.NVarChar, 100) { Value = entity.userName }, |
| | | new SqlParameter("@pi_barcode", SqlDbType.NVarChar, 100) { Value = entity.barcode.Trim().ToLower() }, |
| | | new SqlParameter("@pi_sectionCode", SqlDbType.NVarChar, 30) { Value = entity.sectionCode }, |
| | | new SqlParameter("@pi_weight", SqlDbType.Decimal) { Value = entity.weight }, |
| | | new SqlParameter("@po_outMsg", SqlDbType.NVarChar, 300) { Direction = ParameterDirection.Output }, |
| | | new SqlParameter("@po_outSum", SqlDbType.NVarChar, 300) { Direction = ParameterDirection.Output } |
| | | }; |
| | | |
| | | cmd.Parameters.AddRange(parameters); |
| | | cmd.ExecuteNonQuery(); |
| | | |
| | | // è·åè¾åºåæ° |
| | | string? outMessage = parameters[4].Value?.ToString(); |
| | | string? outSum = parameters[5].Value?.ToString(); |
| | | |
| | | |
| | | // æ£æ¥åæ°æ¯å¦ä¸ºç©ºï¼å¹¶å¨å¼å¸¸ä¸æ¾ç¤ºå®é
å¼ |
| | | if (string.IsNullOrEmpty(outMessage) || string.IsNullOrEmpty(outSum)) |
| | | { |
| | | // æ¼æ¥åæ°å®é
å¼ï¼å¤ç null çæ
åµï¼ |
| | | string messageValue = outMessage ?? "null"; |
| | | string sumValue = outSum ?? "null"; |
| | | throw new InvalidOperationException( |
| | | $"åå¨è¿ç¨è¿ååæ°å¼å¸¸ï¼è¾åºæ¶æ¯ä¸ºã{messageValue}ãï¼è¾åºæ°é为ã{sumValue}ã" |
| | | ); |
| | | } |
| | | |
| | | // éªè¯ç»æ |
| | | if (!int.TryParse(outSum, out int result) || result <= 0) |
| | | throw new InvalidOperationException(outMessage); |
| | | |
| | | // è°è¯è¾åº |
| | | Console.WriteLine($"æ¥è¯¢çæ¡ç å¼: '{entity.barcode}' (é¿åº¦: {entity.barcode.Length})"); |
| | | |
| | | // 使ç¨åæ°åæ¥è¯¢å¹¶å¿½ç¥å¤§å°åï¼éç¨äºæ¯æçæ°æ®åºï¼ |
| | | var itemBarcodeDetails = Db.Queryable<MesInvItemBarcodes>() |
| | | .Where(it => it.ItemBarcode.Trim().ToLower() == entity.barcode.Trim().ToLower()) |
| | | .First() ?? throw new InvalidOperationException($"æªæ¾å°æ¡ç '{entity.barcode}' çå¹é
ä¿¡æ¯"); |
| | | |
| | | // è°è¯è¾åºï¼æ£æ¥å¼åé¿åº¦ï¼ |
| | | Console.WriteLine($"æ¥è¯¢çæ¡ç å¼: '{entity.barcode}' (é¿åº¦: {entity.barcode.Length})"); |
| | | |
| | | // ä¼åæ¥è¯¢ï¼å»é¤ç©ºæ ¼å¹¶å¿½ç¥å¤§å°åï¼ |
| | | var MesInvItemInCDetails = Db.Queryable<MesInvItemInCDetails>() |
| | | .Where(it => it.ItemBarcode.Trim().ToLower() == entity.barcode.Trim().ToLower()) |
| | | .First() ?? throw new InvalidOperationException($"æªæ¾å°æ¡ç '{entity.barcode}' çå¹é
çå
¥åºä¿¡æ¯"); |
| | | |
| | | // ä»å
¥åºæ¡ç ä¸è·åææçItemInId |
| | | var cId = MesInvItemInCDetails.ItemInId; // å设åå¨ItemInId屿§ |
| | | |
| | | // æ¥è¯¢ç©ææ±æ»æç» |
| | | var sql = string.Format(@" |
| | | SELECT |
| | | b.Item_No AS ItemNo, |
| | | b.Item_Name AS ItemName, |
| | | b.Item_Model AS ItemModel, |
| | | a.Quantity AS FQty, |
| | | b.Item_Id AS FMaterialId, |
| | | CONVERT(VARCHAR(36), b.Guid) AS Id |
| | | FROM MES_INV_ITEM_IN_C_ITEMS a |
| | | LEFT JOIN Mes_Items b ON a.Item_Id = b.Item_Id |
| | | WHERE a.Item_In_Id = '{0}' AND a.Item_Id = '{1}'", cId, itemBarcodeDetails.ItemId); |
| | | |
| | | res.ItemInDetails = Db.Ado.SqlQuery<dynamic>(sql); |
| | | |
| | | // æ¥è¯¢å
¥åºæ¡ç æç» |
| | | var sql2 = string.Format(@" |
| | | SELECT |
| | | b.Item_No AS ItemNo, |
| | | b.Item_Name AS ItemName, |
| | | b.Item_Model AS ItemModel, |
| | | a.Quantity AS FQty, |
| | | b.Item_Id AS FMaterialId, |
| | | CONVERT(VARCHAR(36), a.Guid) AS Id, |
| | | a.Depot_Section_Code AS kw, |
| | | a.Item_Barcode AS barcode |
| | | FROM Mes_Inv_Item_In_C_Details a |
| | | LEFT JOIN Mes_Items b ON a.Item_Id = b.Item_Id |
| | | WHERE a.Item_In_Id = '{0}' AND a.Item_Id = '{1}'", cId, itemBarcodeDetails.ItemId); |
| | | |
| | | res.ItemBarCDetails = Db.Ado.SqlQuery<dynamic>(sql2); |
| | | //æ¥è¯¢å·²å
¥åºæ»æ° |
| | | var totalCDetailsQuantity = Db.Queryable<MesInvItemInCDetails>() |
| | | .Where(it => it.ItemInId == cId) |
| | | .Sum(it => it.Quantity); |
| | | |
| | | res.SumQuantity = Convert.ToDecimal(totalCDetailsQuantity); |
| | | |
| | | // 设置è¿åä¿¡æ¯ |
| | | res.Message = outMessage; |
| | | |
| | | |
| | | return res; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | |
| | | // è®°å½å¼å¸¸æ¥å¿ï¼å»ºè®®æ·»å æ¥å¿è®°å½ï¼ |
| | | res.Message = $"æä½å¤±è´¥: {ex.Message}"; |
| | | res.SumQuantity = -1; |
| | | return res; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /* public ItemInBaseModel SaveBarCodes(WarehouseQuery entity) |
| | | { |
| | | string functionName = "éè´å
¥åº", fieldName = null, inFieldVal = null; |
| | | string user = entity.userName, |
| | | sectionCode = entity.sectionCode, |
| | | itemBarcode = entity.barcode; |
| | | var transactionNo = "101"; |
| | | int? billTypeId = 100, num = 0, num2 = 0; |
| | | var freeze = 0; |
| | | decimal cSyQty = 0; |
| | | |
| | | if (string.IsNullOrEmpty(sectionCode)) |
| | | throw new Exception("请æ«åºä½æ¡ç ï¼"); |
| | | |
| | | var itemBarcodeDetails = Db.Queryable<MesInvItemBarcodes>() |
| | | .Where(it => it.ItemBarcode == itemBarcode) |
| | | .First(); |
| | | |
| | | if (itemBarcodeDetails == null) |
| | | throw new Exception("æ¡ç ä¸åå¨ï¼è¯·æ ¸å¯¹ï¼"); |
| | | |
| | | if (string.IsNullOrEmpty(itemBarcodeDetails.Memo) || itemBarcodeDetails.Memo != "éè´å
¥åº") |
| | | throw new Exception("æ¤æ¡ç ä¸å±äºå°è´§æ¡ç ï¼æ æ³ç¨éè´å
¥åºï¼"); |
| | | |
| | | var inventory = Db.Queryable<MesInvItemArn>() |
| | | .Where(it => it.BillNo == itemBarcodeDetails.BillNo && it.Fstatus == true ) |
| | | .First(); |
| | | |
| | | if (inventory == null) |
| | | throw new Exception("æ¤æ¡ç æ¾ä¸å°å¯¹åºæ¶è´§åææªå®¡æ ¸ï¼"); |
| | | |
| | | // var inventoryDetails = Db.Queryable<MesInvItemArnDetail>() |
| | | // .Where(it => it.ParentGuid == inventory.Guid |
| | | // && it.ItemId == itemBarcodeDetails.ItemId |
| | | // && it.EbelnLine == itemBarcodeDetails.WorkLine |
| | | // && it.Ebeln == itemBarcodeDetails.WorkNo) |
| | | // .First(); |
| | | |
| | | var inventoryDetails = Db.Queryable<MesInvItemArnDetail>() |
| | | .Where(it => it.Guid == itemBarcodeDetails.AboutGuid) |
| | | .First(); |
| | | |
| | | var cgddDetails = Db.Queryable<MesRohInData>() |
| | | .Where(it => it.EbelnK3id == inventoryDetails.LineK3id) |
| | | .First(); |
| | | |
| | | if (cgddDetails == null) |
| | | throw new Exception("æ¤æ¡ç æ¾ä¸å°å¯¹åºéè´è®¢åæç»ï¼"); |
| | | |
| | | if (inventoryDetails == null) |
| | | throw new Exception("æ¤æ¡ç æ¾ä¸å°å¯¹åºæ¶è´§åæç»ï¼"); |
| | | |
| | | //è·åå°è´§æ£éªæç» |
| | | var sqlParams = new List<SugarParameter> { new("@dhmxGuid", itemBarcodeDetails.AboutGuid) }; |
| | | var sql1 = @"SELECT *FROM v_dhmx WHERE dhmxGuid = @dhmxGuid "; |
| | | var dhjymx = Db.Ado.SqlQuery<vDhmx>(sql1, sqlParams).First(); |
| | | //å¤å®æ£éªè½å¦å
¥åº |
| | | if (dhjymx.CanStore!= 1) |
| | | { |
| | | throw new Exception($"该æ¡ç 对åºçæ¶æåæ£éªç»æ:ã{dhjymx.InspectionResult}ã,å¤å®ç»æï¼ã{dhjymx.JudgmentResult}ãï¼å¤çæè§ï¼ã{dhjymx.HandlingSuggestion}ã,æ æ³å
¥åº"); |
| | | } |
| | | |
| | | var depotCode = Db.Queryable<MesDepotSections>() |
| | | .Where(it => it.DepotSectionCode == sectionCode) |
| | | .Select(it => it.DepotGuid) |
| | | .First(); |
| | | |
| | | var depotCode2 = Db.Queryable<MesInvItemArn>() |
| | | .Where(it => it.BillNo == itemBarcodeDetails.BillNo) |
| | | .Select(it => it.DepotsId) |
| | | .First(); |
| | | |
| | | MesDepots mesDepost = null; |
| | | |
| | | var checkGuid = UtilityHelper.CheckGuid(depotCode); |
| | | if (checkGuid && depotCode != null) |
| | | { |
| | | mesDepost = Db.Queryable<MesDepots>() |
| | | .Where(s => s.DepotId.ToString() == depotCode).First(); |
| | | |
| | | // if (depotCode != mesDepost.Guid) |
| | | // throw new Exception("æ«æåºä½ä¸éè´å
¥åºåºä½ä¸ä¸è´ï¼"); |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("åºä½ç¼ç " + sectionCode + " ä¸åå¨ï¼è¯·ç¡®è®¤ï¼"); |
| | | } |
| | | |
| | | |
| | | //num = Db.Queryable<MesInvItemInCDetails>() |
| | | // .Where(it => it.ItemBarcode == itemBarcode) |
| | | // .Count(); |
| | | |
| | | //if (num > 0) |
| | | // throw new Exception("æ¤æ¡ç å·²æ«ç å
¥åºå®æï¼è¯·æ ¸å¯¹ï¼"); |
| | | |
| | | //num = Db.Queryable<MesInvItemStocks>() |
| | | // .Where(it => it.ItemBarcode == itemBarcode) |
| | | // .Count(); |
| | | |
| | | //if (num > 0) |
| | | // throw new Exception("æ¤æ¡ç å·²æ«ç å
¥åºï¼è¯·æ ¸å¯¹ï¼"); |
| | | |
| | | var wmsManager = new WmsBaseMangeer(); |
| | | // æ°å¢å
¥åºæ ¡éªï¼è°ç¨åå¨è¿ç¨ï¼ |
| | | var checkResult = wmsManager.pdaInvJY( |
| | | db: Db, |
| | | edtUserNo: entity.userName, |
| | | barcode: entity.barcode, |
| | | sectionCode: sectionCode, |
| | | stockId: mesDepost.DepotId.ToString(), |
| | | stockOrgId: mesDepost.FSubsidiary, |
| | | billNo: "", // æ ¹æ®å®é
åæ®å·ä¼ å¼ |
| | | transactionNo: "101" // äºå¡ç±»åä¸åå¨è¿ç¨å¹é
|
| | | ); |
| | | |
| | | if (Convert.ToInt32(checkResult.result) < 1) |
| | | throw new Exception($"å
¥åºæ ¡éªå¤±è´¥ï¼{checkResult.strMsg}"); |
| | | |
| | | |
| | | |
| | | //num = Db.Queryable<MesInvItemArn>() |
| | | // .Where(a => a.BillNo == itemBarcodeDetails.BillNo) |
| | | // .InnerJoin<MesInvItemArnDetail>((a, b) => |
| | | // b.ParentGuid == a.Guid && |
| | | // b.ItemId == itemBarcodeDetails.ItemId && b.Ischeck == 1) |
| | | // .Count(); |
| | | |
| | | //num2 = Db.Queryable<MesInvItemArn>() |
| | | // .Where(a => a.BillNo == itemBarcodeDetails.BillNo) |
| | | // .InnerJoin<MesInvItemArnDetail>((a, b) => b.ParentGuid == a.Guid |
| | | // && b.ItemId == itemBarcodeDetails.ItemId |
| | | // && (b.CheckRes == "åæ ¼" || b.CheckStates == "ç¹éç´æ¥ä½¿ç¨")) |
| | | // .Count(); |
| | | |
| | | //switch (num) |
| | | //{ |
| | | // case 0 when num2 == 0: |
| | | // case > 0 when num2 == 0: |
| | | // freeze = 1; |
| | | // break; |
| | | // case 0 when num2 > 0: |
| | | // throw new Exception("å
¥åºå¤±è´¥,å°è´§åæ®æé®é¢ï¼"); |
| | | //} |
| | | |
| | | |
| | | // å¤æè´§ä¸»ç±»å |
| | | var owner_type = wmsManager.GetOwnerType(cgddDetails.DemandOrg); |
| | | // if (Db.Queryable<SysOrganization>().Any(x => x.Fid == cgddDetails.DemandOrg)) |
| | | // { |
| | | // owner_type = "BD_OwnerOrg"; |
| | | // } |
| | | // else |
| | | // { |
| | | // // 第äºå±å¤æï¼æ£æ¥ MES_CUSTOMER |
| | | // if (Db.Queryable<MesCustomer>().Any(x => x.Id == Convert.ToInt32(cgddDetails.DemandOrg))) |
| | | // { |
| | | // owner_type = "BD_Customer"; |
| | | // } |
| | | // else |
| | | // { |
| | | // // 第ä¸å±å¤æï¼æ£æ¥ MES_SUPPLIER |
| | | // if (Db.Queryable<MesSupplier>().Any(x => x.Id == Convert.ToInt32(cgddDetails.DemandOrg))) |
| | | // { |
| | | // owner_type = "BD_Supplier"; |
| | | // } |
| | | // else |
| | | // { |
| | | |
| | | // // 第åå±å¤æï¼åæ¬¡æ£æ¥ SYS_ORGANIZATION |
| | | // if (Db.Queryable<SysOrganization>().Any(x => x.Fid == cgddDetails.ReceivingOrg)) |
| | | // { |
| | | // owner_type = "BD_OwnerOrg"; |
| | | // } |
| | | // else |
| | | // { |
| | | // throw new Exception("å
¥åºå¤±è´¥,å°è´§åæ®å¯¹åºçéæ±ç»ç»æé®é¢ï¼"); |
| | | // } |
| | | // } |
| | | // } |
| | | //} |
| | | |
| | | var result = new ItemInBaseModel(); |
| | | |
| | | UseTransaction(db => |
| | | { |
| | | var existingRecord = db.Queryable<MesInvItemIns>() |
| | | .Where(it => it.InsDate.Value.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd") |
| | | && it.TaskNo == itemBarcodeDetails.BillNo |
| | | && it.Status == 0 |
| | | && it.TransctionNo == transactionNo |
| | | && it.CreateBy == entity.userName |
| | | && it.BillTypeId == billTypeId |
| | | && it.DepotsId == mesDepost.DepotId) |
| | | .Select(it => new |
| | | { |
| | | it.Guid, |
| | | it.BillNo |
| | | }) |
| | | .First(); |
| | | |
| | | var cId = Guid.Empty; |
| | | string cBillNo = null; |
| | | |
| | | if (existingRecord != null) |
| | | { |
| | | // If record exists, assign values |
| | | cId = existingRecord.Guid; |
| | | cBillNo = existingRecord.BillNo; |
| | | } |
| | | else |
| | | { |
| | | cId = Guid.NewGuid(); |
| | | cBillNo = BillNo.GetBillNo("CGRK(éè´å
¥åº)"); |
| | | |
| | | var suppNo = db.Queryable<MesSupplier>() |
| | | .Where(s => s.Id.ToString() == inventory.SuppId).First(); |
| | | |
| | | db.Insertable(new MesInvItemIns |
| | | { |
| | | Guid = cId, |
| | | BillNo = cBillNo, |
| | | BillTypeId = billTypeId, |
| | | InsDate = DateTime.Now, |
| | | DepotsId = mesDepost.DepotId, |
| | | DepotsCode = mesDepost.DepotCode, |
| | | TransctionNo = transactionNo, |
| | | SuppId = suppNo.Id.ToString(), |
| | | SuppNo = suppNo.SuppNo, |
| | | CreateBy = user, |
| | | CreateDate = DateTime.Now, |
| | | LastupdateBy = user, |
| | | LastupdateDate = DateTime.Now, |
| | | UrgentFlag = itemBarcodeDetails.UrgentFlag.GetValueOrDefault() ? "1" : "0", |
| | | CbillNo = itemBarcodeDetails.BillNo, |
| | | Fstatus = 0, |
| | | Status = 0, |
| | | ReceiveOrgId = inventory.ReceiveOrgId, |
| | | InType = "éè´å
¥åº", |
| | | TaskNo = itemBarcodeDetails.BillNo |
| | | //WorkNo = itemBarcodeDetails.WorkNo |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | } |
| | | |
| | | cSyQty = itemBarcodeDetails.Quantity.Value; |
| | | |
| | | entity.id = cId.ToString(); |
| | | entity.PageIndex = 1; |
| | | entity.Limit = 1; |
| | | |
| | | itemBarcodeDetails.Hbdy ??= 0; |
| | | if (itemBarcodeDetails.Hbdy == 1) |
| | | { |
| | | var details = db.Queryable<MesInvItemArnDetail>() |
| | | .Where(d => |
| | | d.CbillNo == itemBarcodeDetails.BillNo && |
| | | d.Quantity != d.OkRkqty && |
| | | d.ItemId == itemBarcodeDetails.ItemId) |
| | | .ToList(); |
| | | |
| | | |
| | | foreach (var detail in details) |
| | | { |
| | | if (cSyQty == 0) break; |
| | | |
| | | var remainingQty = detail.Quantity - (detail.OkRkqty ?? 0); |
| | | if (remainingQty <= cSyQty) |
| | | { |
| | | // Update detail |
| | | db.Updateable<MesInvItemArnDetail>() |
| | | .SetColumns(d => new MesInvItemArnDetail |
| | | { |
| | | OkRkqty = (int)d.Quantity, |
| | | IsdepsIn = true |
| | | }) |
| | | .Where(d => d.Guid == detail.Guid) |
| | | .IgnoreColumns(true) |
| | | .ExecuteCommand(); |
| | | |
| | | // Check if already inserted |
| | | var count = db.Queryable<MesInvItemInCItems>() |
| | | .Where(it => |
| | | it.ItemInId == cId && |
| | | it.ItemId == detail.ItemId && |
| | | it.DepotId == mesDepost.DepotId.ToString() && |
| | | it.EbelnK3id == detail.EbelnK3id && |
| | | it.LineK3id == detail.LineK3id) |
| | | .Count(); |
| | | |
| | | cSyQty -= remainingQty.Value; |
| | | |
| | | if (count == 0) |
| | | // Insert new item into MES_INV_ITEM_IN_C_ITEMS |
| | | db.Insertable(new MesInvItemInCItems |
| | | { |
| | | ItemInId = cId, |
| | | Quantity = remainingQty, |
| | | CreateBy = user, |
| | | CreateDate = DateTime.Now, |
| | | ItemId = detail.ItemId, |
| | | DepotCode = mesDepost.DepotCode, |
| | | ItemSname = itemBarcodeDetails.ItemSname, |
| | | Unit = itemBarcodeDetails.Unit, |
| | | Ebeln = detail.Ebeln, |
| | | BillNo = cBillNo, |
| | | WorkNo = detail.WorkNo, |
| | | CbillNo = detail.CbillNo, |
| | | WorkLine = detail.WorkLine, |
| | | SuppId = itemBarcodeDetails.SuppId, |
| | | SuppNo = itemBarcodeDetails.SuppNo, |
| | | Remark = itemBarcodeDetails.Memo, |
| | | EbelnK3id = detail.EbelnK3id, |
| | | LineK3id = detail.LineK3id, |
| | | DepotId = mesDepost.DepotId.ToString(), |
| | | itemDabid = itemBarcodeDetails.AboutGuid.ToString() |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | else |
| | | db.Updateable<MesInvItemInCItems>() |
| | | .SetColumns(it => |
| | | it.Quantity == it.Quantity + remainingQty) |
| | | .Where(it => |
| | | it.ItemInId == cId && |
| | | it.ItemId == detail.ItemId && |
| | | it.DepotId == mesDepost.DepotId.ToString() && |
| | | it.EbelnK3id == detail.EbelnK3id && |
| | | it.LineK3id == detail.LineK3id) |
| | | .IgnoreColumns(true) |
| | | .ExecuteCommand(); |
| | | |
| | | // Insert new detail into MES_INV_ITEM_IN_C_DETAILS |
| | | db.Insertable(new MesInvItemInCDetails |
| | | { |
| | | ItemInId = cId, |
| | | BillNo = cBillNo, |
| | | ItemBarcode = itemBarcode, |
| | | Quantity = remainingQty, |
| | | BarcodeFlag = true, |
| | | EpFlag = true, |
| | | WorkType = 1, |
| | | ItemNo = detail.ItemNo, |
| | | SuppId = itemBarcodeDetails.SuppId, |
| | | SuppNo = itemBarcodeDetails.SuppNo, |
| | | DepotCode = mesDepost.DepotCode, |
| | | DepotSectionCode = sectionCode, |
| | | ItemSname = itemBarcodeDetails.ItemSname, |
| | | Unit = itemBarcodeDetails.Unit, |
| | | CreateBy = user, |
| | | CreateDate = DateTime.Now, |
| | | LastupdateBy = user, |
| | | LastupdateDate = DateTime.Now, |
| | | Remark = itemBarcodeDetails.Memo, |
| | | Ebeln = detail.WorkNo, |
| | | WorkNo = detail.WorkNo, |
| | | WorkLine = detail.WorkLine, |
| | | CbillNo = itemBarcodeDetails.BillNo, |
| | | UrgentFlag = detail.UrgentFlag, |
| | | BoardStyle = detail.BoardStyle, |
| | | TaskNo = detail.WorkNo, |
| | | EbelnK3id = detail.EbelnK3id, |
| | | LineK3id = detail.LineK3id, |
| | | ItemId = detail.ItemId, |
| | | ReceiveOrgId = inventory.ReceiveOrgId, |
| | | LotNo = cgddDetails.BatchNumber |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | // Partially fulfill remaining quantity |
| | | db.Updateable<MesInvItemArnDetail>() |
| | | .SetColumns(d => new MesInvItemArnDetail |
| | | { |
| | | OkRkqty = (int)((d.OkRkqty ?? 0) + cSyQty) |
| | | }) |
| | | .Where(d => d.Guid == detail.Guid) |
| | | .IgnoreColumns(true) |
| | | .ExecuteCommand(); |
| | | |
| | | var count = db.Queryable<MesInvItemInCItems>() |
| | | .Where(it => |
| | | it.ItemInId == cId && |
| | | it.ItemId == detail.ItemId && |
| | | it.DepotId == mesDepost.DepotId.ToString() && |
| | | it.EbelnK3id == detail.EbelnK3id && |
| | | it.LineK3id == detail.LineK3id) |
| | | .Count(); |
| | | |
| | | if (count == 0) |
| | | db.Insertable(new MesInvItemInCItems |
| | | { |
| | | ItemInId = cId, |
| | | Quantity = cSyQty, |
| | | CreateBy = user, |
| | | CreateDate = DateTime.Now, |
| | | ItemNo = detail.ItemNo, |
| | | DepotCode = mesDepost.DepotCode, |
| | | ItemSname = itemBarcodeDetails.ItemSname, |
| | | Unit = itemBarcodeDetails.Unit, |
| | | Ebeln = detail.WorkNo, |
| | | BillNo = cBillNo, |
| | | WorkNo = detail.WorkNo, |
| | | EbelnLineNo = detail.EbelnLine, |
| | | CbillNo = detail.CbillNo, |
| | | WorkLine = detail.WorkLine, |
| | | SuppId = itemBarcodeDetails.SuppId, |
| | | SuppNo = itemBarcodeDetails.SuppNo, |
| | | Remark = itemBarcodeDetails.Memo, |
| | | EbelnK3id = detail.EbelnK3id, |
| | | LineK3id = detail.LineK3id, |
| | | ItemId = detail.ItemId, |
| | | DepotId = mesDepost.DepotId.ToString() |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | else |
| | | db.Updateable<MesInvItemInCItems>() |
| | | .SetColumns(it => |
| | | it.Quantity == it.Quantity + cSyQty) |
| | | .Where(it => |
| | | it.ItemInId == cId && |
| | | it.ItemId == detail.ItemId && |
| | | it.DepotId == mesDepost.DepotId.ToString() && |
| | | it.EbelnK3id == detail.EbelnK3id && |
| | | it.LineK3id == detail.LineK3id) |
| | | .IgnoreColumns(true) |
| | | .ExecuteCommand(); |
| | | |
| | | db.Insertable(new MesInvItemInCDetails |
| | | { |
| | | ItemInId = cId, |
| | | BillNo = cBillNo, |
| | | ItemBarcode = itemBarcode, |
| | | Quantity = cSyQty, |
| | | BarcodeFlag = true, |
| | | EpFlag = true, |
| | | WorkType = 1, |
| | | ItemNo = detail.ItemNo, |
| | | SuppId = itemBarcodeDetails.SuppId, |
| | | SuppNo = itemBarcodeDetails.SuppNo, |
| | | DepotCode = mesDepost.DepotCode, |
| | | DepotSectionCode = sectionCode, |
| | | ItemSname = itemBarcodeDetails.ItemSname, |
| | | Unit = itemBarcodeDetails.Unit, |
| | | CreateBy = user, |
| | | CreateDate = DateTime.Now, |
| | | LastupdateBy = user, |
| | | LastupdateDate = DateTime.Now, |
| | | Remark = itemBarcodeDetails.Memo, |
| | | Ebeln = detail.WorkNo, |
| | | EbelnLineNo = detail.EbelnLine, |
| | | WorkNo = detail.WorkNo, |
| | | WorkLine = detail.WorkLine, |
| | | CbillNo = itemBarcodeDetails.BillNo, |
| | | UrgentFlag = detail.UrgentFlag, |
| | | BoardStyle = detail.BoardStyle, |
| | | TaskNo = detail.WorkNo, |
| | | EbelnK3id = detail.EbelnK3id, |
| | | LineK3id = detail.LineK3id, |
| | | ItemId = detail.ItemId, |
| | | ReceiveOrgId = inventory.ReceiveOrgId, |
| | | LotNo = cgddDetails.BatchNumber |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | |
| | | cSyQty = 0; // Remaining quantity fulfilled |
| | | } |
| | | } |
| | | |
| | | db.Insertable(new MesInvBusiness2 |
| | | { |
| | | Status = 1, |
| | | BillTypeId = billTypeId, |
| | | TransactionCode = transactionNo, |
| | | BusinessType = 1, |
| | | ItemBarcode = itemBarcode, |
| | | ItemNo = itemBarcodeDetails.ItemNo, |
| | | LotNo = cgddDetails.BatchNumber, |
| | | EpFlag = true, |
| | | Quantity = itemBarcodeDetails.Quantity, |
| | | ToInvDepotsCode = mesDepost.DepotCode, |
| | | ToInvDepotSectionsCode = sectionCode, |
| | | Description = "éè´å
¥åº", |
| | | CreateBy = user, |
| | | CreateDate = DateTime.Now, |
| | | LastupdateBy = user, |
| | | LastupdateDate = DateTime.Now, |
| | | TaskNo = itemBarcodeDetails.BillNo, |
| | | BillNo = cBillNo, |
| | | WorkNo = itemBarcodeDetails.WorkNo, |
| | | WorkLine = itemBarcodeDetails.WorkLine, |
| | | SuppId = itemBarcodeDetails.SuppId, |
| | | SuppNo = itemBarcodeDetails.SuppNo, |
| | | EbelnK3id = itemBarcodeDetails.EbelnK3id, |
| | | LineK3id = itemBarcodeDetails.LineK3id, |
| | | ItemId = itemBarcodeDetails.ItemId |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | |
| | | // Insert into mes_inv_item_stocks |
| | | } |
| | | else |
| | | { |
| | | var detailone = db.Queryable<MesInvItemArnDetail>() |
| | | .Where(d => |
| | | d.Guid == itemBarcodeDetails.AboutGuid) |
| | | .First(); |
| | | |
| | | // æ£æ¥æ¯å¦åå¨äº MES_INV_ITEM_IN_C_ITEMS 表 |
| | | var existingCount = db.Queryable<MesInvItemInCItems>() |
| | | .Where(it => |
| | | it.ItemInId == cId && |
| | | it.ItemId == detailone.ItemId && |
| | | it.DepotId == mesDepost.DepotId.ToString() && |
| | | it.itemDabid == itemBarcodeDetails.AboutGuid.ToString()) |
| | | .Count(); |
| | | |
| | | if (existingCount == 0) |
| | | // ä¸å卿¶æå
¥æ°è®°å½ |
| | | db.Insertable(new MesInvItemInCItems |
| | | { |
| | | ItemInId = cId, |
| | | Quantity = itemBarcodeDetails.Quantity, |
| | | CreateBy = user, |
| | | CreateDate = DateTime.Now, |
| | | ItemNo = itemBarcodeDetails.ItemNo, |
| | | DepotCode = mesDepost.DepotCode, |
| | | ItemSname = itemBarcodeDetails.ItemSname, |
| | | Unit = itemBarcodeDetails.Unit, |
| | | Ebeln = itemBarcodeDetails.WorkNo, |
| | | BillNo = cBillNo, |
| | | WorkNo = itemBarcodeDetails.WorkNo, |
| | | EbelnLineNo = itemBarcodeDetails.WorkLine, |
| | | CbillNo = itemBarcodeDetails.BillNo, |
| | | WorkLine = itemBarcodeDetails.WorkLine, |
| | | SuppId = itemBarcodeDetails.SuppId, |
| | | SuppNo = itemBarcodeDetails.SuppNo, |
| | | Remark = itemBarcodeDetails.Memo, |
| | | EbelnK3id = itemBarcodeDetails.EbelnK3id, |
| | | LineK3id = itemBarcodeDetails.LineK3id, |
| | | ItemId = itemBarcodeDetails.ItemId, |
| | | DepotId = mesDepost.DepotId.ToString(), |
| | | itemDabid = itemBarcodeDetails.AboutGuid.ToString() |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | else |
| | | // å卿¶æ´æ°æ°é |
| | | db.Updateable<MesInvItemInCItems>() |
| | | .SetColumns(it => new MesInvItemInCItems |
| | | { |
| | | Quantity = SqlFunc.IsNull(it.Quantity, 0) + itemBarcodeDetails.Quantity // ç¡®ä¿ Quantity ä¸ä¸º null |
| | | }) |
| | | .Where(it => |
| | | it.ItemInId == cId && |
| | | it.ItemId == detailone.ItemId && |
| | | it.DepotId == mesDepost.DepotId.ToString() && |
| | | it.itemDabid == itemBarcodeDetails.AboutGuid.ToString()) |
| | | //.IgnoreColumns(true) // ä¿ç IgnoreColumns |
| | | .ExecuteCommand(); |
| | | |
| | | // æå
¥ mes_inv_item_in_c_details 表 |
| | | db.Insertable(new MesInvItemInCDetails |
| | | { |
| | | ItemInId = cId, |
| | | BillNo = cBillNo, |
| | | ItemBarcode = itemBarcode, |
| | | Quantity = itemBarcodeDetails.Quantity, |
| | | BarcodeFlag = true, |
| | | EpFlag = true, |
| | | WorkType = 1, |
| | | ItemNo = itemBarcodeDetails.ItemNo, |
| | | LotNo = cgddDetails.BatchNumber, |
| | | SuppId = itemBarcodeDetails.SuppId, |
| | | SuppNo = itemBarcodeDetails.SuppNo, |
| | | DepotCode = mesDepost.DepotCode, |
| | | DepotSectionCode = sectionCode, |
| | | ItemSname = itemBarcodeDetails.ItemSname, |
| | | Unit = itemBarcodeDetails.Unit, |
| | | CreateBy = user, |
| | | CreateDate = DateTime.Now, |
| | | LastupdateBy = user, |
| | | LastupdateDate = DateTime.Now, |
| | | Remark = itemBarcodeDetails.Memo, |
| | | Ebeln = itemBarcodeDetails.Mblnr, |
| | | EbelnLineNo = itemBarcodeDetails.Zeile, |
| | | WorkNo = itemBarcodeDetails.WorkNo, |
| | | WorkLine = itemBarcodeDetails.WorkLine, |
| | | CbillNo = itemBarcodeDetails.BillNo, |
| | | UrgentFlag = itemBarcodeDetails.UrgentFlag, |
| | | BoardStyle = itemBarcodeDetails.BoardStyle, |
| | | TaskNo = itemBarcodeDetails.TaskNo, |
| | | EbelnK3id = itemBarcodeDetails.EbelnK3id, |
| | | LineK3id = itemBarcodeDetails.LineK3id, |
| | | ItemId = itemBarcodeDetails.ItemId, |
| | | Ischeck = true, |
| | | CheckDate = inventoryDetails.CheckDate, |
| | | CheckRes = inventoryDetails.CheckRes, |
| | | CheckStates = inventoryDetails.CheckStates, |
| | | ReceiveOrgId = inventory.ReceiveOrgId, |
| | | DepotId = Convert.ToInt64(mesDepost.DepotId.ToString()) |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | |
| | | // æå
¥ mes_inv_business2 表 |
| | | db.Insertable(new MesInvBusiness2 |
| | | { |
| | | Status = 1, |
| | | BillTypeId = billTypeId, |
| | | TransactionCode = transactionNo, |
| | | BusinessType = 1, |
| | | ItemBarcode = itemBarcode, |
| | | ItemNo = itemBarcodeDetails.ItemNo, |
| | | LotNo = itemBarcodeDetails.LotNo, |
| | | EpFlag = true, |
| | | Quantity = itemBarcodeDetails.Quantity, |
| | | FromInvDepotsCode = null, |
| | | FromInvDepotSectionsCode = null, |
| | | ToInvDepotsCode = mesDepost.DepotCode, |
| | | ToInvDepotSectionsCode = sectionCode, |
| | | Description = "éè´å
¥åº", |
| | | CreateBy = user, |
| | | CreateDate = DateTime.Now, |
| | | LastupdateBy = user, |
| | | LastupdateDate = DateTime.Now, |
| | | TaskNo = itemBarcodeDetails.TaskNo, |
| | | BillNo = cBillNo, |
| | | WorkNo = itemBarcodeDetails.WorkNo, |
| | | WorkLine = itemBarcodeDetails.WorkLine, |
| | | SuppId = itemBarcodeDetails.SuppId, |
| | | SuppNo = itemBarcodeDetails.SuppNo, |
| | | EbelnK3id = itemBarcodeDetails.EbelnK3id, |
| | | LineK3id = itemBarcodeDetails.LineK3id, |
| | | ItemId = itemBarcodeDetails.ItemId |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | |
| | | // æå
¥ mes_inv_item_stocks 表 |
| | | } |
| | | |
| | | |
| | | |
| | | db.Insertable(new MesInvItemStocks |
| | | { |
| | | TaskNo = itemBarcodeDetails.TaskNo, |
| | | ItemBarcode = itemBarcode, |
| | | ItemNo = cgddDetails.BatchNumber, |
| | | LotNo = itemBarcodeDetails.LotNo, |
| | | Quantity = itemBarcodeDetails.Quantity, |
| | | DepotsCode = mesDepost.DepotCode, |
| | | DepotSectionsCode = sectionCode, |
| | | CheckDate = inventoryDetails.CheckDate, |
| | | IndepDate = DateTime.Now, |
| | | IqcStatus = inventoryDetails.CheckStates, |
| | | BoardStyle = itemBarcodeDetails.BoardStyle, |
| | | WorkNo = itemBarcodeDetails.WorkNo, |
| | | WorkLine = itemBarcodeDetails.WorkLine, |
| | | SuppId = itemBarcodeDetails.SuppId, |
| | | SuppNo = itemBarcodeDetails.SuppNo, |
| | | EbelnK3id = itemBarcodeDetails.EbelnK3id, |
| | | LineK3id = itemBarcodeDetails.LineK3id, |
| | | ItemId = itemBarcodeDetails.ItemId, |
| | | BillNo = itemBarcodeDetails.BillNo, |
| | | DepotId = Convert.ToInt32(mesDepost.DepotId), |
| | | OwnerId = cgddDetails.DemandOrg, |
| | | OwnerType = owner_type, |
| | | StockOrgId = mesDepost.FSubsidiary, |
| | | IndepUserCode = user |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | |
| | | itemBarcodeDetails.Hbdy ??= 0; |
| | | |
| | | if (itemBarcodeDetails.Hbdy != 1) |
| | | { |
| | | //æ´æ°æ¶æåæç» |
| | | db.Updateable<MesInvItemArnDetail>() |
| | | .SetColumns(d => new MesInvItemArnDetail |
| | | { |
| | | OkRkqty = (int)((d.OkRkqty ?? 0) + cSyQty) |
| | | }) |
| | | .Where(d => d.Guid == itemBarcodeDetails.AboutGuid) |
| | | .ExecuteCommand(); |
| | | |
| | | var first = db |
| | | .Queryable<MesInvItemArnDetail>() |
| | | .Where(b => |
| | | b.Guid == itemBarcodeDetails.AboutGuid) |
| | | .Select(b => new |
| | | { |
| | | TotalQuantity = |
| | | SqlFunc.AggregateSum(b.Quantity), |
| | | TotalOkRkQty = SqlFunc.AggregateSum(b.OkRkqty) |
| | | }) |
| | | .First(); |
| | | |
| | | var TotalQuantity = first.TotalQuantity ?? 0; |
| | | var TotalOkRkQty = first.TotalOkRkQty ?? 0; |
| | | |
| | | if (TotalQuantity == TotalOkRkQty) |
| | | db.Updateable<MesInvItemArnDetail>() |
| | | .SetColumns(s => s.IsdepsIn == true) |
| | | .Where(s => s.Guid == itemBarcodeDetails.AboutGuid) |
| | | .ExecuteCommand(); |
| | | |
| | | |
| | | var totalSummary = db.Queryable<MesInvItemArnDetail>() |
| | | .InnerJoin<MesInvItemArn>((b, a) => a.Guid == b.ParentGuid) |
| | | .Where((b, a) => |
| | | a.BillNo == inventory.BillNo && b.ReturnFlag == 0) |
| | | .Select((b, a) => new |
| | | { |
| | | TotalQuantity = SqlFunc.AggregateSum(b.Quantity), |
| | | TotalOkRkQty = SqlFunc.AggregateSum(b.OkRkqty) |
| | | }) |
| | | .First(); |
| | | |
| | | if ((totalSummary.TotalQuantity ?? 0) == |
| | | (totalSummary.TotalOkRkQty ?? 0)) |
| | | db.Updateable<MesInvItemArn>() |
| | | .SetColumns(it => it.Status == 1) |
| | | .Where(it => it.BillNo == itemBarcodeDetails.BillNo) |
| | | .ExecuteCommand(); |
| | | |
| | | var totalCDetailsQuantity = db.Queryable<MesInvItemInCDetails>() |
| | | .Where(it => it.ItemId == itemBarcodeDetails.ItemId && |
| | | it.WorkNo == itemBarcodeDetails.WorkNo && |
| | | it.ItemInId == cId) |
| | | .Sum(it => it.Quantity); |
| | | |
| | | var detailSummary = db.Queryable<MesInvItemArnDetail>() |
| | | .Where(it => it.Guid == inventoryDetails.Guid) |
| | | .Select(it => new |
| | | { |
| | | TotalComeQty = SqlFunc.AggregateSum(it.Quantity), |
| | | TotalInvQty = SqlFunc.AggregateSum(it.OkRkqty) |
| | | }) |
| | | .First(); |
| | | |
| | | var comeQty = detailSummary.TotalComeQty ?? 0; |
| | | var invQty = detailSummary.TotalInvQty ?? 0; |
| | | var diffQty = comeQty - invQty; |
| | | |
| | | if (detailSummary == null) |
| | | throw new Exception("æ¤æ¡ç æ¾ä¸å°å¯¹åºæ¶è´§åæç»ï¼"); |
| | | |
| | | var mesItems = db.Queryable<MesItems>() |
| | | .Where(s => s.Id == itemBarcodeDetails.ItemId).First(); |
| | | |
| | | //result.Message = |
| | | // $"æ¡ç æ°é {itemBarcodeDetails.Quantity},éè´è®¢å {itemBarcodeDetails.WorkNo} 项次 {itemBarcodeDetails.WorkLine} ç©æ {mesItems.ItemNo} æ¬æ¬¡å
¥åºæ»æ°ï¼{totalCDetailsQuantity} æ»å° {comeQty} å·²å
¥ {invQty} æ¬ {diffQty}"; |
| | | result.Message = $"ç©æ{mesItems.ItemNo}å
¥åºæåæ°é{itemBarcodeDetails.Quantity.ToString()}"; |
| | | |
| | | result.itemDetail = mesItems; |
| | | |
| | | result.ItemInDetails = db.Queryable<MesInvItemInCItems,MesItems>( |
| | | (a, b) => new JoinQueryInfos( |
| | | JoinType.Left, |
| | | a.ItemId == b.ItemId) |
| | | ) |
| | | .Where(a => a.ItemInId == cId && a.ItemId == itemBarcodeDetails.ItemId) |
| | | .Select<dynamic>((a, b) => new |
| | | { |
| | | ItemNo = b.ItemNo, |
| | | ItemName = b.ItemName, |
| | | ItemModel = b.ItemModel, |
| | | FQty = a.Quantity, // ç³è¯·æ°é |
| | | FMaterialId = b.ItemId, |
| | | Id = b.Guid.ToString() |
| | | }) |
| | | .ToList(); |
| | | |
| | | result.ItemBarCDetails = db.Queryable<MesInvItemInCDetails, MesItems>( |
| | | (a, b) => new JoinQueryInfos( |
| | | JoinType.Left, |
| | | a.ItemId == b.ItemId) |
| | | ) |
| | | .Where(a => a.ItemInId == cId && a.ItemId == itemBarcodeDetails.ItemId) |
| | | .Select<dynamic>((a, b) => new |
| | | { |
| | | ItemNo = b.ItemNo, |
| | | ItemName = b.ItemName, |
| | | ItemModel = b.ItemModel, |
| | | FQty = a.Quantity, // ç³è¯·æ°é |
| | | FMaterialId = b.ItemId, |
| | | Id = a.Guid.ToString(), |
| | | kw = a.DepotSectionCode, |
| | | barcode = a.ItemBarcode |
| | | }) |
| | | .ToList(); |
| | | |
| | | |
| | | //result.ItemNo = mesItems.ItemNo; |
| | | result.SumQuantity = Convert.ToDecimal(invQty); |
| | | |
| | | return 1; |
| | | } |
| | | else |
| | | { |
| | | // Step 1: Check if bill needs to be closed (status update) |
| | | var totalSummary = db.Queryable<MesInvItemArnDetail>() |
| | | .LeftJoin<MesInvItemArn>((b, a) => a.Guid == b.ParentGuid) |
| | | .Where((b, a) => |
| | | a.BillNo == inventory.BillNo && b.ReturnFlag == 0) |
| | | .Select((b, a) => new |
| | | { |
| | | TotalQuantity = SqlFunc.AggregateSum(b.Quantity), |
| | | TotalOkRkQty = SqlFunc.AggregateSum(b.OkRkqty) |
| | | }) |
| | | .First(); |
| | | |
| | | if ((totalSummary.TotalQuantity ?? 0) == |
| | | (totalSummary.TotalOkRkQty ?? 0)) |
| | | db.Updateable<MesInvItemArn>() |
| | | .SetColumns(it => it.Status == 1) |
| | | .Where(it => it.BillNo == itemBarcodeDetails.BillNo) |
| | | .ExecuteCommand(); |
| | | |
| | | // Step 2: Calculate total sum from `mes_inv_item_in_c_details` |
| | | var totalCDetailsQuantity = db.Queryable<MesInvItemInCDetails>() |
| | | .Where(it => it.Guid == itemBarcodeDetails.AboutGuid) |
| | | .Sum(it => it.Quantity); |
| | | |
| | | // Step 3: Calculate comeQty and invQty from `mes_inv_item_arn_detail` |
| | | var detailSummary = db.Queryable<MesInvItemArnDetail>() |
| | | .Where(it => it.Guid == itemBarcodeDetails.AboutGuid) |
| | | .Select(it => new |
| | | { |
| | | TotalComeQty = SqlFunc.AggregateSum(it.Quantity), |
| | | TotalInvQty = SqlFunc.AggregateSum(it.OkRkqty) |
| | | }) |
| | | .First(); |
| | | |
| | | if (detailSummary == null) |
| | | throw new Exception("æ¤æ¡ç æ¾ä¸å°å¯¹åºæ¶è´§åæç»ï¼"); |
| | | |
| | | var comeQty = detailSummary.TotalComeQty ?? 0; |
| | | var invQty = detailSummary.TotalInvQty ?? 0; |
| | | var diffQty = comeQty - invQty; |
| | | |
| | | var mesItems = db.Queryable<MesItems>() |
| | | .Where(s => s.Id == itemBarcodeDetails.ItemId).First(); |
| | | |
| | | // Step 5: Combine final result |
| | | result.Message = |
| | | $" æ¡ç æ°é:{itemBarcodeDetails.Quantity},ç©æ {mesItems.ItemNo} æ¬æ¬¡å
¥åºæ»æ°ï¼{totalCDetailsQuantity} æ»å° {comeQty} å·²å
¥ {invQty} æ¬ {diffQty}"; |
| | | |
| | | |
| | | //result.ItemNo = mesItems.ItemNo; |
| | | result.SumQuantity = Convert.ToDecimal(totalCDetailsQuantity); |
| | | } |
| | | |
| | | var mesInvItemInCDetails = |
| | | base.GetSingle(it => it.ItemBarcode == entity.barcode); |
| | | |
| | | if (mesInvItemInCDetails == null) |
| | | throw new Exception("ç©æå
¥åºæ¡ç æç»ä¸åå¨"); // æåºå¼å¸¸ä»¥ä¾åå°å¤ç |
| | | |
| | | // å建 æå
¥æ¥å¿ |
| | | var logService = new LogService(); |
| | | var LogMsg = "ãPDAãéè´å
¥åºãæ¡ç ã" + entity.barcode + "ã å
¥åºåå·ã" + cBillNo + "ã"; |
| | | logService.CreateLog(db, entity.userName, inventory.Guid.ToString(), "MES_INV_ITEM_ARN", LogMsg, inventory.BillNo); |
| | | |
| | | return 1; |
| | | }); |
| | | |
| | | var purchaseInventory = getPurchaseInventory(entity); |
| | | |
| | | |
| | | //result.ItemInDetails = purchaseInventory.ItemInDetails; |
| | | //result.InvItemInCDetails = purchaseInventory.InvItemInCDetails; |
| | | |
| | | return result; |
| | | } |
| | | */ |
| | | public ItemInBaseModel getPurchaseInventory(WarehouseQuery query) |
| | | { |
| | | return new ItemInBaseModel |
| | | { |
| | | //ItemIns = GetInvItemInsList(query).Items[0], |
| | | //ItemInDetails = GetItemInDetails(query.id), |
| | | //InvItemInCDetails = GetInvItemInCDetails(query.id) |
| | | }; |
| | | } |
| | | |
| | | public (List<MesInvItemIns> Items, int TotalCount) GetInvItemInsList( |
| | | WarehouseQuery query) |
| | | { |
| | | var parsedGuid = Guid.Empty; |
| | | if (!string.IsNullOrEmpty(query.id)) |
| | | { |
| | | var isValid = Guid.TryParse(query.id, out parsedGuid); |
| | | if (!isValid) |
| | | throw new ApplicationException("GUID转æ¢é误"); |
| | | } |
| | | |
| | | var totalCount = 0; |
| | | var result = Db.Queryable<MesInvItemIns, MesDepots, MesSupplier>( |
| | | (a, b, c) => |
| | | new JoinQueryInfos(JoinType.Left, |
| | | a.DepotsId == b.DepotId, |
| | | JoinType.Left, a.SuppId == c.Id.ToString())) |
| | | .WhereIF(UtilityHelper.CheckGuid(parsedGuid), |
| | | (a, b, c) => a.Guid == parsedGuid) |
| | | .Select((a, b, c) => new MesInvItemIns |
| | | { |
| | | Guid = a.Guid, |
| | | SuppNo = a.SuppNo, |
| | | InsDate = a.InsDate, |
| | | PaperBillNo = a.PaperBillNo, |
| | | Remark = a.Remark, |
| | | DepotsCode = a.DepotsCode, |
| | | CbillNo = a.CbillNo, |
| | | Status = a.Status, |
| | | BillNo = a.BillNo, |
| | | CreateDate = a.CreateDate, |
| | | CreateBy = a.CreateBy, |
| | | DepotName = b.DepotName, |
| | | SuppName = c.SuppName |
| | | }).ToPageList(query.PageIndex, query.Limit, ref totalCount); |
| | | return (result, totalCount); |
| | | } |
| | | |
| | | public List<MesInvItemInCItems> GetItemInDetails(string? pid) |
| | | { |
| | | //string转guid |
| | | var parsedGuid = Guid.Empty; |
| | | if (string.IsNullOrEmpty(pid)) return []; |
| | | |
| | | var isValid = Guid.TryParse(pid, out parsedGuid); |
| | | if (!isValid) |
| | | throw new ApplicationException("GUID转æ¢é误"); |
| | | |
| | | var result = Db.Queryable<MesInvItemInCDetails, MesItems, MesUnit>( |
| | | (g, c, d) => new JoinQueryInfos( |
| | | JoinType.Left, g.ItemId == c.Id, |
| | | JoinType.Inner, d.Id == Convert.ToDecimal(g.Unit) |
| | | ) |
| | | ).WhereIF(UtilityHelper.CheckGuid(parsedGuid), |
| | | (g, c, d) => g.ItemInId == parsedGuid) |
| | | .Select((g, c, d) => new MesInvItemInCItems |
| | | { |
| | | Guid = g.Guid, |
| | | WorkNo = g.WorkNo, |
| | | ItemNo = c.ItemNo, |
| | | ItemSname = g.ItemSname, |
| | | Quantity = g.Quantity, |
| | | Unit = d.Fname |
| | | }) |
| | | .ToList(); |
| | | |
| | | return result; |
| | | } |
| | | |
| | | public List<MesInvItemInCDetails> GetInvItemInCDetails(string? pid) |
| | | { |
| | | //string转guid |
| | | var parsedGuid = Guid.Empty; |
| | | if (string.IsNullOrEmpty(pid)) return []; |
| | | |
| | | var isValid = Guid.TryParse(pid, out parsedGuid); |
| | | if (!isValid) |
| | | throw new ApplicationException("GUID转æ¢é误"); |
| | | |
| | | var result = Db.Queryable<MesInvItemInCDetails, MesItems, MesUnit>( |
| | | (g, c, d) => new JoinQueryInfos( |
| | | JoinType.Left, |
| | | g.ItemId == c.Id, JoinType.Inner, |
| | | d.Id.ToString() == c.Fpurchaseunitid |
| | | ) |
| | | ).WhereIF(UtilityHelper.CheckGuid(parsedGuid), |
| | | (g, c, d) => g.ItemInId == parsedGuid) |
| | | .Select((g, c, d) => new MesInvItemInCDetails |
| | | { |
| | | Guid = g.Guid, |
| | | ItemName = c.ItemName, |
| | | ItemModel = c.ItemModel, |
| | | ItemUnit = d.Fname, |
| | | DepotSectionCode = g.DepotSectionCode, |
| | | CbillNo = g.CbillNo, |
| | | ItemBarcode = g.ItemBarcode, |
| | | UrgentFlag = g.UrgentFlag, |
| | | ItemNo = c.ItemNo, |
| | | WorkNo = g.WorkNo, |
| | | Quantity = g.Quantity |
| | | }) |
| | | .ToList(); |
| | | |
| | | return result; |
| | | } |
| | | |
| | | |
| | | public MessageCenter MesToErpParam(WarehouseQuery query) |
| | | { |
| | | var erpParameters = ""; |
| | | var title = ""; |
| | | var tableName = "MES_INV_ITEM_INS_" + query.Type; |
| | | if ("A".Equals(query.Type)) |
| | | { |
| | | erpParameters = GetErpParameters(query.billNo); |
| | | title = "éè´å
¥åºå" + query.billNo + "å®¡æ ¸"; |
| | | } |
| | | else if ("B".Equals(query.Type)) |
| | | { |
| | | erpParameters = GetDeApprovePam(query.id); |
| | | title = "éè´å
¥åºå" + query.billNo + "åå®¡æ ¸"; |
| | | } |
| | | |
| | | var ErpUrl = AppsettingsUtility.Settings.ProductionErpUrl; |
| | | |
| | | var newGuid = Guid.NewGuid(); |
| | | var message = new MessageCenter |
| | | { |
| | | Guid = newGuid, |
| | | //Pid = newGuid, |
| | | TableName = tableName, |
| | | Url = ErpUrl, |
| | | Status = 1, |
| | | CreateBy = query.userName, |
| | | Route = query.billNo, |
| | | Title = title, |
| | | PageName = "Warehouse/PurchaseInventory/Add?id=" + query.id + |
| | | "&billNo=" + query.billNo, |
| | | CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | Method = "POST", |
| | | Seq = 1, |
| | | Data = erpParameters, |
| | | IsMessage = 0, |
| | | ContentType = "application/x-www-form-urlencoded" |
| | | }; |
| | | return message; |
| | | } |
| | | |
| | | public MessageCenter SaveMessageCenter(WarehouseQuery query) |
| | | { |
| | | var message = MesToErpParam(query); |
| | | |
| | | var executeReturnIdentity = |
| | | Db.Insertable(message).ExecuteCommand(); |
| | | if (executeReturnIdentity > 0) |
| | | { |
| | | message.Pid = message.Guid; |
| | | return message; |
| | | } |
| | | |
| | | throw new Exception("è·åæ°æ®å¤±è´¥"); |
| | | } |
| | | |
| | | //audit |
| | | public bool audit(WarehouseQuery entity) |
| | | { |
| | | entity.date = DateTime.Now; |
| | | entity.status = 1; |
| | | return Update(entity); |
| | | } |
| | | |
| | | public bool deApprove(WarehouseQuery entity) |
| | | { |
| | | entity.date = null; |
| | | entity.status = 0; |
| | | return Update(entity); |
| | | } |
| | | |
| | | private bool Update(WarehouseQuery entity) |
| | | { |
| | | return Db.Updateable<MesInvItemIns>() |
| | | .SetColumns(x => x.Status == entity.status) |
| | | .SetColumns(x => x.InsDate == entity.date) |
| | | .Where(x => x.BillNo == entity.billNo) |
| | | .IgnoreColumns(true).ExecuteCommand() > 0; |
| | | } |
| | | |
| | | private string GetErpParameters(string? billNo) |
| | | { |
| | | var invItemIns = Db.Queryable<MesInvItemIns>() |
| | | .Single(x => x.BillNo == billNo); |
| | | |
| | | if (invItemIns == null) throw new Exception("å
¥åºåå·ä¸åå¨"); |
| | | |
| | | if (invItemIns.Status == 1) throw new Exception("å
¥åºåå·²å®¡æ ¸ï¼ä¸è½é夿¨é"); |
| | | |
| | | var materials = Db.Queryable<MesInvItemInCItems, MesItems, MesUnit, |
| | | MesInvItemArnDetail>( |
| | | (g, c, d, a) => new JoinQueryInfos( |
| | | JoinType.Left, |
| | | g.ItemId == c.Id, JoinType.Inner, |
| | | d.Id.ToString() == c.Fpurchaseunitid, |
| | | JoinType.Inner, a.Ebeln == g.WorkNo && g.CbillNo == a.CbillNo |
| | | ) |
| | | ).Where((g, c, d, a) => g.BillNo == billNo).Select<Material>( |
| | | (g, c, d, a) => new Material |
| | | { |
| | | FMaterialId = c.ItemNo, |
| | | FRealQty = g.Quantity.ToString(), |
| | | FStockId = g.DepotCode, |
| | | FLot = a.CbillNo, |
| | | FUnitID = d.Fnumber, |
| | | FsrcEntryId = a.Guid.ToString(), |
| | | FMesEntryid = g.Guid.ToString() |
| | | }).ToList(); |
| | | |
| | | |
| | | if (materials == null || materials.Count == 0) |
| | | throw new Exception("æ²¡ææ¾å°ç¸å
³æ°æ®"); // æåºå¼å¸¸ä»¥ä¾åå°å¤ç |
| | | // æé JSON |
| | | |
| | | var jsonEntries = materials.Select(d => new |
| | | { |
| | | d.FMaterialId, |
| | | d.FRealQty, |
| | | d.FStockId, |
| | | d.FLot, |
| | | FUintId = d.FUnitID, |
| | | FSRCENTRYID = d.FsrcEntryId, |
| | | F_MES_ENTRYID = d.FMesEntryid |
| | | }).ToList(); |
| | | |
| | | var fdate = DateTime.Now.ToString("yyyy-MM-dd"); |
| | | |
| | | var jsonString = JsonConvert.SerializeObject(jsonEntries); |
| | | var encodedUrl = "taskname=CGRK&mesid=" + invItemIns.Guid + |
| | | "&optype=create&datajson={\"F_MES_ID\":\"" + |
| | | invItemIns.Guid + "\",\"FDate\":\"" + fdate + |
| | | "\",\"cgrkentry\":" + jsonString + "}"; |
| | | |
| | | return encodedUrl; |
| | | } |
| | | |
| | | |
| | | private string GetDeApprovePam(string? id) |
| | | { |
| | | var encodedUrl = "taskname=CGRK&mesid=" + id + |
| | | "&optype=delete&datajson={}"; |
| | | |
| | | return encodedUrl; |
| | | } |
| | | |
| | | // éªéæ«ç |
| | | public ItemInBaseModel GetReturnBarcodeInfo(WarehouseQuery entity) |
| | | { |
| | | ItemInBaseModel res = new ItemInBaseModel(); |
| | | |
| | | // åæ°éªè¯ |
| | | if (string.IsNullOrEmpty(entity.userName)) throw new ArgumentNullException(nameof(entity.userName), "ç¨æ·åä¸å
许为空"); |
| | | if (string.IsNullOrEmpty(entity.sectionCode)) throw new ArgumentNullException(nameof(entity.sectionCode), "åºä½ç¼å·ä¸å
许为空"); |
| | | if (string.IsNullOrEmpty(entity.returnBarcode)) throw new ArgumentNullException(nameof(entity.returnBarcode), "æ¡ç ä¸å
许为空"); |
| | | |
| | | //try |
| | | //{ |
| | | // æ£æ¥æ¡ç æ¯å¦å·²å
¥åº |
| | | var isInStock = Db.Queryable<MesInvItemInCDetails>() |
| | | .Where(it => it.ItemBarcode == entity.returnBarcode) |
| | | .Any(); |
| | | |
| | | if (isInStock) |
| | | throw new Exception($"该æ¡ç ç©æ[{entity.returnBarcode}]å·²å
¥åºï¼ä¸è½åæ¬¡æ«æï¼"); |
| | | |
| | | // æ£æ¥æ¡ç æ¯å¦å·²æ«æéªé |
| | | var sqlParams = new List<SugarParameter> { new("@barcode", entity.returnBarcode) }; |
| | | var isReturnScanned = Db.Ado.SqlQuery<dynamic>( |
| | | "SELECT 1 FROM MES_INV_ITEM_CGYT_C_DETAILS WHERE ITEM_BARCODE = @barcode", |
| | | sqlParams); |
| | | |
| | | |
| | | if (isReturnScanned.Count > 0) |
| | | throw new Exception($"该æ¡ç ç©æ[{entity.returnBarcode}]å·²æ«æéªéï¼è¯·æ ¸å¯¹ï¼"); |
| | | // 使ç¨åæ°åæ¥è¯¢å¹¶å¿½ç¥å¤§å°åï¼éç¨äºæ¯æçæ°æ®åºï¼ |
| | | var itemBarcode = Db.Queryable<MesInvItemBarcodes>() |
| | | .Where(it => it.ItemBarcode.Trim().ToLower() == entity.returnBarcode.Trim().ToLower()) |
| | | .First() ?? throw new InvalidOperationException($"æªæ¾å°æ¡ç '{entity.returnBarcode}' çå¹é
ä¿¡æ¯"); |
| | | |
| | | // è·åå°è´§æç»IDï¼åè®¾ä»æ¡ç ä¿¡æ¯ä¸å¯ä»¥è·åå°dhmxGuidï¼ |
| | | var dhmxGuid = itemBarcode.AboutGuid; |
| | | |
| | | // æ¥è¯¢æ£éªä¿¡æ¯ï¼å¯¹åºSQLä¸çè§å¾æ¥è¯¢é»è¾ï¼ |
| | | var checkParams = new List<SugarParameter> |
| | | { |
| | | new("@dHdMx", dhmxGuid), |
| | | new("@JYZT", null, true), // è¾åºåæ°ï¼æ£éªç¶æ |
| | | new("@JYJG", null, true), // è¾åºåæ°ï¼æ£éªç»æ |
| | | new("@PDJG", null, true), // è¾åºåæ°ï¼å¤å®ç»æ |
| | | new("@ISRK", null, true), // è¾åºåæ°ï¼æ¯å¦è½å
¥åº |
| | | new("@CLYS", null, true) // è¾åºåæ°ï¼å¤çæè§ |
| | | }; |
| | | |
| | | // æ§è¡æ¥è¯¢è·åæ£éªä¿¡æ¯ |
| | | Db.Ado.ExecuteCommand(@" |
| | | SELECT @JYZT = ISNULL(æ£éªç¶æ, 'æªç¥'), |
| | | @JYJG = ISNULL(æ£éªç»æ, 'æªç¥'), |
| | | @PDJG = ISNULL(å¤å®ç»æ, 'æªç¥'), |
| | | @ISRK = ISNULL(æ¯å¦è½å
¥åº, 0), |
| | | @CLYS = ISNULL(å¤çæè§, 'æ ') |
| | | FROM v_dhmx |
| | | WHERE dhmxGuid = @dHdMx", checkParams); |
| | | |
| | | // è§£æè¾åºåæ° |
| | | var jyzt = checkParams[1].Value?.ToString() ?? "æªç¥"; |
| | | var jyjg = checkParams[2].Value?.ToString() ?? "æªç¥"; |
| | | var pdjg = checkParams[3].Value?.ToString() ?? "æªç¥"; |
| | | var isRk = checkParams[4].Value != DBNull.Value ? Convert.ToInt32(checkParams[4].Value) : 0; |
| | | var clys = checkParams[5].Value?.ToString() ?? "æ "; |
| | | |
| | | // æ£æ¥æ¯å¦æ¥è¯¢å°æ£éªè®°å½ |
| | | if (string.IsNullOrEmpty(jyzt) && string.IsNullOrEmpty(jyjg)) |
| | | throw new Exception($"æªæ¾å°å°è´§æç»id为[{dhmxGuid}]çæ£éªè®°å½"); |
| | | // æ£æ¥æ¯å¦å
许éªéï¼å¼å¸¸ç´æ¥æåºï¼ |
| | | if (isRk != 1) |
| | | throw new Exception($"该æ¡ç 对åºçæ¶æåæ£éªç»æ:[{jyjg}]ï¼å¤å®ç»æ:[{pdjg}]ï¼å¤çæè§:[{clys}]ï¼ä¸è½è¿è¡éªéæä½"); |
| | | |
| | | |
| | | |
| | | |
| | | // å°æ¥è¯¢å°çæ¡ç ä¿¡æ¯èµå¼ç»è¿å模å |
| | | res.itemBarcodeDetails = itemBarcode; |
| | | res.Message = "æ¥è¯¢æå"; |
| | | return res; |
| | | //} |
| | | //catch (Exception ex) |
| | | //{ |
| | | // // è®°å½å¼å¸¸æ¥å¿ï¼å»ºè®®è¡¥å
å
·ä½æ¥å¿è®°å½ä»£ç ï¼ |
| | | // res.Message = $"æä½å¤±è´¥: {ex.Message}"; |
| | | // res.SumQuantity = -1; |
| | | // return res; |
| | | //} |
| | | } |
| | | |
| | | // éªé |
| | | public ItemInBaseModel ConfirmReturn(WarehouseQuery entity) |
| | | { |
| | | ItemInBaseModel res = new ItemInBaseModel(); |
| | | |
| | | // åæ°éªè¯ |
| | | if (string.IsNullOrEmpty(entity.userName)) throw new ArgumentNullException(nameof(entity.userName), "ç¨æ·åä¸å
许为空"); |
| | | if (string.IsNullOrEmpty(entity.sectionCode)) throw new ArgumentNullException(nameof(entity.sectionCode), "åºä½ç¼å·ä¸å
许为空"); |
| | | if (string.IsNullOrEmpty(entity.returnBarcode)) throw new ArgumentNullException(nameof(entity.returnBarcode), "æ¡ç ä¸å
许为空"); |
| | | if (entity.returnQuantity <= 0) throw new ArgumentException("éªéæ°éå¿
须大äº0", nameof(entity.returnQuantity)); |
| | | |
| | | //try |
| | | //{ |
| | | // æ£æ¥æ¡ç æ¯å¦å·²å
¥åº |
| | | var isInStock = Db.Queryable<MesInvItemInCDetails>() |
| | | .Where(it => it.ItemBarcode == entity.returnBarcode) |
| | | .Any(); |
| | | |
| | | if (isInStock) |
| | | throw new Exception($"该æ¡ç ç©æ[{entity.returnBarcode}]å·²å
¥åºï¼ä¸è½åæ¬¡æ«æï¼"); |
| | | |
| | | // æ£æ¥æ¡ç æ¯å¦å·²æ«æéªé |
| | | var sqlParams = new List<SugarParameter> { new("@barcode", entity.returnBarcode) }; |
| | | var isReturnScanned = Db.Ado.SqlQuery<dynamic>( |
| | | "SELECT 1 FROM MES_INV_ITEM_CGYT_C_DETAILS WHERE ITEM_BARCODE = @barcode", |
| | | sqlParams); |
| | | |
| | | // 使ç¨åæ°åæ¥è¯¢å¹¶å¿½ç¥å¤§å°åï¼éç¨äºæ¯æçæ°æ®åºï¼ |
| | | var itemBarcode = Db.Queryable<MesInvItemBarcodes>() |
| | | .Where(it => it.ItemBarcode.Trim().ToLower() == entity.returnBarcode.Trim().ToLower()) |
| | | .First() ?? throw new InvalidOperationException($"æªæ¾å°æ¡ç '{entity.returnBarcode}' çå¹é
ä¿¡æ¯"); |
| | | |
| | | // 夿éªéæ°éæ¯å¦å¤§äºæ¡ç çæ°éï¼å设æ¡ç æ°éåæ®µä¸ºQuantityï¼ |
| | | if (entity.returnQuantity > itemBarcode.Quantity) |
| | | { |
| | | throw new ArgumentException($"éªéæ°éä¸è½å¤§äºæ¡ç çæ°éï¼å½åæ¡ç æ°é为: {itemBarcode.Quantity}", nameof(entity.returnQuantity)); |
| | | } |
| | | // å°æ¥è¯¢å°çæ¡ç ä¿¡æ¯èµå¼ç»è¿å模å |
| | | res.itemBarcodeDetails = itemBarcode; |
| | | |
| | | // è°ç¨åå¨è¿ç¨ prc_pda_bar_cf_before |
| | | string strMsg = ""; |
| | | string intSum = ""; |
| | | string cfBar = ""; |
| | | |
| | | using (var conn = new SqlConnection(DbHelperSQL.strConn)) |
| | | { |
| | | using (var cmd = new SqlCommand("[prc_pda_bar_cf_before]", conn)) |
| | | { |
| | | conn.Open(); |
| | | cmd.CommandType = CommandType.StoredProcedure; |
| | | SqlParameter[] parameters = |
| | | { |
| | | new("@outMsg", SqlDbType.NVarChar, 300), |
| | | new("@outSum", SqlDbType.NVarChar, 300), |
| | | new("@barcode_new", SqlDbType.NVarChar, 300), |
| | | new("@c_user", entity.userName), |
| | | new("@p_old_barcode", entity.returnBarcode), |
| | | new("@p_qty", entity.returnQuantity), |
| | | }; |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | // è°ç¨éªéåå¨è¿ç¨ prc_pda_scan_CGYTï¼ä½¿ç¨æååçæ°æ¡ç |
| | | string ytMsg = ""; |
| | | string ytSum = ""; |
| | | string ytdh = ""; |
| | | |
| | | using (var conn = new SqlConnection(DbHelperSQL.strConn)) |
| | | { |
| | | using (var cmd = new SqlCommand("prc_pda_scan_CGYT", conn)) |
| | | { |
| | | conn.Open(); |
| | | cmd.CommandType = CommandType.StoredProcedure; |
| | | SqlParameter[] ytParameters = |
| | | { |
| | | new("@pi_user", SqlDbType.NVarChar, 100) { Value = entity.userName }, |
| | | new("@pi_barcode", SqlDbType.NVarChar, 100) { Value = cfBar }, // ä½¿ç¨æååçæ°æ¡ç |
| | | new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output }, |
| | | new("@po_outSum", SqlDbType.Int) { Direction = ParameterDirection.Output }, |
| | | new("@po_ygdh", SqlDbType.NVarChar, 200) { Direction = ParameterDirection.Output } |
| | | }; |
| | | |
| | | cmd.Parameters.AddRange(ytParameters); |
| | | cmd.ExecuteNonQuery(); |
| | | |
| | | ytMsg = ytParameters[2].Value.ToString(); |
| | | ytSum = ytParameters[3].Value.ToString(); |
| | | ytdh = ytParameters[4].Value.ToString(); |
| | | |
| | | if (ytSum == "-1") throw new Exception(ytMsg); |
| | | } |
| | | } |
| | | |
| | | // è°ç¨å
¥åºåå¨è¿ç¨ prc_pda_inv_cgrkï¼ä½¿ç¨åå§æ¡ç |
| | | string rkMsg = ""; |
| | | string rkSum = ""; |
| | | |
| | | using (var conn = new SqlConnection(DbHelperSQL.strConn)) |
| | | { |
| | | using (var cmd = new SqlCommand("prc_pda_inv_cgrk", conn)) |
| | | { |
| | | conn.Open(); |
| | | cmd.CommandType = CommandType.StoredProcedure; |
| | | SqlParameter[] rkParameters = |
| | | { |
| | | new("@pi_user", SqlDbType.NVarChar, 100) { Value = entity.userName }, |
| | | new("@pi_barcode", SqlDbType.NVarChar, 100) { Value = entity.returnBarcode }, // 使ç¨åå§æ¡ç |
| | | new("@pi_sectionCode", SqlDbType.NVarChar, 100) { Value = entity.sectionCode }, |
| | | new("@pi_weight", SqlDbType.Decimal) { Value = entity.weight }, |
| | | new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output }, |
| | | new("@po_outSum", SqlDbType.Int) { Direction = ParameterDirection.Output } |
| | | }; |
| | | |
| | | cmd.Parameters.AddRange(rkParameters); |
| | | cmd.ExecuteNonQuery(); |
| | | |
| | | rkMsg = rkParameters[4].Value.ToString(); |
| | | rkSum = rkParameters[5].Value.ToString(); |
| | | |
| | | if (rkSum == "-1") throw new Exception(rkMsg); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | // ä¼åæ¥è¯¢ï¼å»é¤ç©ºæ ¼å¹¶å¿½ç¥å¤§å°åï¼ |
| | | var mesInvItemInCDetails = Db.Queryable<MesInvItemInCDetails>() |
| | | .Where(it => it.ItemBarcode.Trim().ToLower() == entity.returnBarcode.Trim().ToLower()) |
| | | .First() ?? throw new InvalidOperationException($"æªæ¾å°æ¡ç '{entity.returnBarcode}' çå¹é
çå
¥åºä¿¡æ¯"); |
| | | |
| | | // ä»å
¥åºæ¡ç ä¸è·åææçItemInId |
| | | var cId = mesInvItemInCDetails.ItemInId; // å设åå¨ItemInId屿§ |
| | | |
| | | // æ¥è¯¢ç©ææ±æ»æç»ï¼ä½¿ç¨åæ°åæ¥è¯¢é²æ¢SQL注å
¥ï¼ |
| | | var sql = @" |
| | | SELECT |
| | | b.Item_No AS ItemNo, |
| | | b.Item_Name AS ItemName, |
| | | b.Item_Model AS ItemModel, |
| | | a.Quantity AS FQty, |
| | | b.Item_Id AS FMaterialId, |
| | | CONVERT(VARCHAR(36), b.Guid) AS Id |
| | | FROM MES_INV_ITEM_IN_C_ITEMS a |
| | | LEFT JOIN Mes_Items b ON a.Item_Id = b.Item_Id |
| | | WHERE a.Item_In_Id = @cId AND a.Item_Id = @itemId"; |
| | | |
| | | res.ItemInDetails = Db.Ado.SqlQuery<dynamic>(sql, new { cId, itemId = itemBarcode.ItemId }); |
| | | |
| | | // æ¥è¯¢å
¥åºæ¡ç æç»ï¼ä½¿ç¨åæ°åæ¥è¯¢é²æ¢SQL注å
¥ï¼ |
| | | var sql2 = @" |
| | | SELECT |
| | | b.Item_No AS ItemNo, |
| | | b.Item_Name AS ItemName, |
| | | b.Item_Model AS ItemModel, |
| | | a.Quantity AS FQty, |
| | | b.Item_Id AS FMaterialId, |
| | | CONVERT(VARCHAR(36), a.Guid) AS Id, |
| | | a.Depot_Section_Code AS kw, |
| | | a.Item_Barcode AS barcode |
| | | FROM Mes_Inv_Item_In_C_Details a |
| | | LEFT JOIN Mes_Items b ON a.Item_Id = b.Item_Id |
| | | WHERE a.Item_In_Id = @cId AND a.Item_Id = @itemId"; |
| | | |
| | | res.ItemBarCDetails = Db.Ado.SqlQuery<dynamic>(sql2, new { cId, itemId = itemBarcode.ItemId }); |
| | | |
| | | |
| | | //æ¥è¯¢å·²å
¥åºæ»æ° |
| | | var totalCDetailsQuantity = Db.Queryable<MesInvItemInCDetails>() |
| | | .Where(it => it.ItemInId == cId) |
| | | .Sum(it => it.Quantity); |
| | | |
| | | res.SumQuantity = Convert.ToDecimal(totalCDetailsQuantity); |
| | | |
| | | |
| | | res.Message = $"éªéæä½æåï¼æååæ¡ç ï¼{cfBar}ï¼éªéåå·ï¼{ytdh}"; |
| | | // res.SumQuantity = res.ItemBarCDetails?.Count ?? 0; |
| | | res.SumQuantity = Convert.ToDecimal(totalCDetailsQuantity); |
| | | return res; |
| | | //} |
| | | //catch (Exception ex) |
| | | //{ |
| | | // // è®°å½å¼å¸¸æ¥å¿ï¼å»ºè®®è¡¥å
å
·ä½æ¥å¿è®°å½ä»£ç ï¼ |
| | | // res.Message = $"æä½å¤±è´¥: {ex.Message}"; |
| | | // res.SumQuantity = -1; |
| | | // return res; |
| | | //} |
| | | } |
| | | |
| | | } |