| | |
| | | using NewPdaSqlServer.DB; |
| | | using Masuit.Tools.Models; |
| | | 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 static Microsoft.EntityFrameworkCore.DbLoggerCategory; |
| | | |
| | | namespace NewPdaSqlServer.service.Warehouse; |
| | | |
| | |
| | | { |
| | | //当前类已经继承了 Repository 增、删、查、改的方法 |
| | | |
| | | public PurchaseInventory SaveBarCodes(WarehouseQuery entity) |
| | | public ItemInBaseModel SaveBarCodes(WarehouseQuery entity) |
| | | { |
| | | string functionName = "采购入库", fieldName = null, inFieldVal = null; |
| | | string user = entity.userName, |
| | | sectionCode = entity.sectionCode, |
| | | itemBarcode = entity.barcode; |
| | | string transactionNo = "101"; |
| | | var transactionNo = "101"; |
| | | int? billTypeId = 100, num = 0, num2 = 0; |
| | | int freeze = 0; |
| | | var freeze = 0; |
| | | decimal cSyQty = 0; |
| | | |
| | | if (string.IsNullOrEmpty(sectionCode)) |
| | |
| | | if (itemBarcodeDetails == null) |
| | | throw new Exception("条码不存在,请核对!"); |
| | | |
| | | if (!itemBarcodeDetails.ComeFlg.Value) |
| | | if (string.IsNullOrEmpty(itemBarcodeDetails.Memo) || itemBarcodeDetails.Memo != "采购入库") |
| | | throw new Exception("此条码不属于到货条码,无法用采购入库!"); |
| | | |
| | | var inventory = Db.Queryable<MesInvItemArn>() |
| | | .Where(it => it.BillNo == itemBarcodeDetails.BillNo) |
| | | .Where(it => it.BillNo == itemBarcodeDetails.BillNo && it.Fstatus == true ) |
| | | .First(); |
| | | |
| | | if (inventory == null) |
| | | throw new Exception("此条码找不到对应收货单!"); |
| | | 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.ParentGuid == inventory.Guid |
| | | && it.ItemId == itemBarcodeDetails.ItemId |
| | | && it.EbelnLine == itemBarcodeDetails.WorkLine |
| | | && it.Ebeln == itemBarcodeDetails.WorkNo) |
| | | .Where(it => it.Guid == itemBarcodeDetails.AboutGuid) |
| | | .First(); |
| | | |
| | | var cgddDetails = Db.Queryable<MesRohInData>() |
| | | .Where(it => it.EbelnK3id == inventoryDetails.LineK3id) |
| | | .First(); |
| | | |
| | | 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) |
| | |
| | | MesDepots mesDepost = null; |
| | | |
| | | var checkGuid = UtilityHelper.CheckGuid(depotCode); |
| | | if (checkGuid && depotCode2 != null) |
| | | if (checkGuid && depotCode != null) |
| | | { |
| | | mesDepost = Db.Queryable<MesDepots>() |
| | | .Where(s => s.DepotId.ToString() == depotCode2).First(); |
| | | .Where(s => s.DepotId.ToString() == depotCode).First(); |
| | | |
| | | if (depotCode != mesDepost.Guid) |
| | | throw new Exception("扫描库位与采购入库库位不一致!"); |
| | | // if (depotCode != mesDepost.Guid) |
| | | // throw new Exception("扫描库位与采购入库库位不一致!"); |
| | | } |
| | | else |
| | | { |
| | |
| | | } |
| | | |
| | | |
| | | num = Db.Queryable<MesInvItemInCDetails>() |
| | | .Where(it => it.ItemBarcode == itemBarcode) |
| | | .Count(); |
| | | //num = Db.Queryable<MesInvItemInCDetails>() |
| | | // .Where(it => it.ItemBarcode == itemBarcode) |
| | | // .Count(); |
| | | |
| | | if (num > 0) |
| | | throw new Exception("此条码已扫码入库完成,请核对!"); |
| | | //if (num > 0) |
| | | // throw new Exception("此条码已扫码入库完成,请核对!"); |
| | | |
| | | num = Db.Queryable<MesInvItemStocks>() |
| | | .Where(it => it.ItemBarcode == itemBarcode) |
| | | .Count(); |
| | | //num = Db.Queryable<MesInvItemStocks>() |
| | | // .Where(it => it.ItemBarcode == itemBarcode) |
| | | // .Count(); |
| | | |
| | | if (num > 0) |
| | | throw new Exception("此条码已扫码入库,请核对!"); |
| | | //if (num > 0) |
| | | // throw new Exception("此条码已扫码入库,请核对!"); |
| | | |
| | | 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(); |
| | | 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" // 事务类型与存储过程匹配 |
| | | ); |
| | | |
| | | 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(); |
| | | if (Convert.ToInt32(checkResult.result) < 1) |
| | | throw new Exception($"入库校验失败:{checkResult.strMsg}"); |
| | | |
| | | switch (num) |
| | | { |
| | | case 0 when num2 == 0: |
| | | case > 0 when num2 == 0: |
| | | freeze = 1; |
| | | break; |
| | | case 0 when num2 > 0: |
| | | throw new Exception("入库失败,到货单据有问题!"); |
| | | } |
| | | |
| | | PurchaseInventory result = new PurchaseInventory(); |
| | | |
| | | //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.Date == DateTime.Now.Date |
| | | .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.BillNo == itemBarcodeDetails.BillNo |
| | | && it.DepotsCode == mesDepost.DepotCode) |
| | | && it.CreateBy == entity.userName |
| | | && it.BillTypeId == billTypeId |
| | | && it.DepotsId == mesDepost.DepotId) |
| | | .Select(it => new |
| | | { |
| | | it.Guid, |
| | |
| | | }) |
| | | .First(); |
| | | |
| | | Guid cId = Guid.Empty; |
| | | var cId = Guid.Empty; |
| | | string cBillNo = null; |
| | | |
| | | if (existingRecord != null) |
| | |
| | | else |
| | | { |
| | | cId = Guid.NewGuid(); |
| | | cBillNo = BillNo.GetBillNo("IN(入库单)"); |
| | | cBillNo = BillNo.GetBillNo("CGRK(采购入库)"); |
| | | |
| | | var suppNo = db.Queryable<MesSupplier>() |
| | | .Where(s => s.Id.ToString() == inventory.SuppId).First(); |
| | |
| | | LastupdateBy = user, |
| | | LastupdateDate = DateTime.Now, |
| | | UrgentFlag = itemBarcodeDetails.UrgentFlag.Value |
| | | ? (byte)1 |
| | | : (byte)0, |
| | | ? "1" |
| | | : "0", |
| | | CbillNo = itemBarcodeDetails.BillNo, |
| | | Fstatus = 0, |
| | | Status = 0 |
| | | Status = 0, |
| | | ReceiveOrgId = inventory.ReceiveOrgId, |
| | | InType = "采购入库", |
| | | TaskNo = itemBarcodeDetails.BillNo |
| | | //WorkNo = itemBarcodeDetails.WorkNo |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | } |
| | | |
| | |
| | | IsdepsIn = true |
| | | }) |
| | | .Where(d => d.Guid == detail.Guid) |
| | | .IgnoreColumns(ignoreAllNullColumns: true) |
| | | .IgnoreColumns(true) |
| | | .ExecuteCommand(); |
| | | |
| | | // Check if already inserted |
| | | var count = db.Queryable<MesInvItemInCItems>() |
| | | .Where(t => |
| | | t.ItemInId == cId && |
| | | t.ItemId == detail.ItemId && |
| | | t.WorkNo == detail.WorkNo && |
| | | t.WorkLine == detail.WorkLine) |
| | | .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 |
| | | { |
| | |
| | | DepotCode = mesDepost.DepotCode, |
| | | ItemSname = itemBarcodeDetails.ItemSname, |
| | | Unit = itemBarcodeDetails.Unit, |
| | | Ebeln = detail.WorkNo, |
| | | Ebeln = detail.Ebeln, |
| | | BillNo = cBillNo, |
| | | WorkNo = detail.WorkNo, |
| | | CbillNo = detail.CbillNo, |
| | |
| | | SuppNo = itemBarcodeDetails.SuppNo, |
| | | Remark = itemBarcodeDetails.Memo, |
| | | EbelnK3id = detail.EbelnK3id, |
| | | LineK3id = detail.LineK3id |
| | | 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.WorkNo == detail.WorkNo && |
| | | it.WorkLine == detail.WorkLine) |
| | | .IgnoreColumns(ignoreAllNullColumns: true) |
| | | 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 |
| | |
| | | TaskNo = detail.WorkNo, |
| | | EbelnK3id = detail.EbelnK3id, |
| | | LineK3id = detail.LineK3id, |
| | | ItemId = detail.ItemId |
| | | ItemId = detail.ItemId, |
| | | ReceiveOrgId = inventory.ReceiveOrgId, |
| | | LotNo = cgddDetails.BatchNumber |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | } |
| | | else |
| | |
| | | OkRkqty = (int)((d.OkRkqty ?? 0) + cSyQty) |
| | | }) |
| | | .Where(d => d.Guid == detail.Guid) |
| | | .IgnoreColumns(ignoreAllNullColumns: true) |
| | | .IgnoreColumns(true) |
| | | .ExecuteCommand(); |
| | | |
| | | var count = db.Queryable<MesInvItemInCItems>() |
| | | .Where(t => |
| | | t.ItemInId == cId && |
| | | t.ItemId == detail.ItemId && |
| | | t.WorkNo == detail.WorkNo && |
| | | t.WorkLine == detail.WorkLine) |
| | | .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, |
| | |
| | | Remark = itemBarcodeDetails.Memo, |
| | | EbelnK3id = detail.EbelnK3id, |
| | | LineK3id = detail.LineK3id, |
| | | ItemId = detail.ItemId |
| | | 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.WorkNo == detail.WorkNo && |
| | | it.WorkLine == detail.WorkLine) |
| | | .IgnoreColumns(ignoreAllNullColumns: true) |
| | | it.DepotId == mesDepost.DepotId.ToString() && |
| | | it.EbelnK3id == detail.EbelnK3id && |
| | | it.LineK3id == detail.LineK3id) |
| | | .IgnoreColumns(true) |
| | | .ExecuteCommand(); |
| | | } |
| | | |
| | | db.Insertable(new MesInvItemInCDetails |
| | | { |
| | |
| | | TaskNo = detail.WorkNo, |
| | | EbelnK3id = detail.EbelnK3id, |
| | | LineK3id = detail.LineK3id, |
| | | ItemId = detail.ItemId |
| | | ItemId = detail.ItemId, |
| | | ReceiveOrgId = inventory.ReceiveOrgId, |
| | | LotNo = cgddDetails.BatchNumber |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | |
| | | cSyQty = 0; // Remaining quantity fulfilled |
| | |
| | | BusinessType = 1, |
| | | ItemBarcode = itemBarcode, |
| | | ItemNo = itemBarcodeDetails.ItemNo, |
| | | LotNo = itemBarcodeDetails.LotNo, |
| | | LotNo = cgddDetails.BatchNumber, |
| | | EpFlag = true, |
| | | Quantity = itemBarcodeDetails.Quantity, |
| | | ToInvDepotsCode = mesDepost.DepotCode, |
| | |
| | | } |
| | | 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(t => t.ItemInId == cId && |
| | | t.ItemId == itemBarcodeDetails.ItemId && |
| | | t.WorkNo == itemBarcodeDetails.WorkNo && |
| | | t.WorkLine == itemBarcodeDetails.WorkLine) |
| | | .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 |
| | | { |
| | |
| | | Remark = itemBarcodeDetails.Memo, |
| | | EbelnK3id = itemBarcodeDetails.EbelnK3id, |
| | | LineK3id = itemBarcodeDetails.LineK3id, |
| | | ItemId = itemBarcodeDetails.ItemId |
| | | ItemId = itemBarcodeDetails.ItemId, |
| | | DepotId = mesDepost.DepotId.ToString(), |
| | | itemDabid = itemBarcodeDetails.AboutGuid.ToString() |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | // 存在时更新数量 |
| | | db.Updateable<MesInvItemInCItems>() |
| | | .SetColumns(it => |
| | | it.Quantity == |
| | | it.Quantity + itemBarcodeDetails.Quantity) |
| | | .Where(it => it.ItemInId == cId && |
| | | it.ItemId == itemBarcodeDetails.ItemId && |
| | | it.WorkNo == itemBarcodeDetails.WorkNo && |
| | | it.WorkLine == itemBarcodeDetails.WorkLine) |
| | | .IgnoreColumns(ignoreAllNullColumns: true) |
| | | .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 |
| | |
| | | EpFlag = true, |
| | | WorkType = 1, |
| | | ItemNo = itemBarcodeDetails.ItemNo, |
| | | LotNo = itemBarcodeDetails.LotNo, |
| | | LotNo = cgddDetails.BatchNumber, |
| | | SuppId = itemBarcodeDetails.SuppId, |
| | | SuppNo = itemBarcodeDetails.SuppNo, |
| | | DepotCode = mesDepost.DepotCode, |
| | |
| | | Ischeck = true, |
| | | CheckDate = inventoryDetails.CheckDate, |
| | | CheckRes = inventoryDetails.CheckRes, |
| | | CheckStates = inventoryDetails.CheckStates |
| | | CheckStates = inventoryDetails.CheckStates, |
| | | ReceiveOrgId = inventory.ReceiveOrgId, |
| | | DepotId = Convert.ToInt64(mesDepost.DepotId.ToString()) |
| | | }).IgnoreColumns(true).ExecuteCommand(); |
| | | |
| | | // 插入 mes_inv_business2 表 |
| | |
| | | // 插入 mes_inv_item_stocks 表 |
| | | } |
| | | |
| | | |
| | | |
| | | db.Insertable(new MesInvItemStocks |
| | | { |
| | | TaskNo = itemBarcodeDetails.TaskNo, |
| | | ItemBarcode = itemBarcode, |
| | | ItemNo = itemBarcodeDetails.ItemNo, |
| | | ItemNo = cgddDetails.BatchNumber, |
| | | LotNo = itemBarcodeDetails.LotNo, |
| | | Quantity = itemBarcodeDetails.Quantity, |
| | | DepotsCode = mesDepost.DepotCode, |
| | |
| | | EbelnK3id = itemBarcodeDetails.EbelnK3id, |
| | | LineK3id = itemBarcodeDetails.LineK3id, |
| | | ItemId = itemBarcodeDetails.ItemId, |
| | | BillNo = itemBarcodeDetails.BillNo |
| | | 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 == inventoryDetails.Guid) |
| | | .Where(d => d.Guid == itemBarcodeDetails.AboutGuid) |
| | | .ExecuteCommand(); |
| | | |
| | | var first = db |
| | | .Queryable<MesInvItemArnDetail>() |
| | | .Where(b => |
| | | b.Guid == inventoryDetails.Guid) |
| | | b.Guid == itemBarcodeDetails.AboutGuid) |
| | | .Select(b => new |
| | | { |
| | | TotalQuantity = |
| | |
| | | var TotalOkRkQty = first.TotalOkRkQty ?? 0; |
| | | |
| | | if (TotalQuantity == TotalOkRkQty) |
| | | { |
| | | db.Updateable<MesInvItemArnDetail>() |
| | | .SetColumns(s => s.IsdepsIn == true) |
| | | .Where(s => s.Guid == inventoryDetails.Guid) |
| | | .Where(s => s.Guid == itemBarcodeDetails.AboutGuid) |
| | | .ExecuteCommand(); |
| | | } |
| | | |
| | | |
| | | var totalSummary = db.Queryable<MesInvItemArnDetail>() |
| | |
| | | |
| | | 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.WorkLine == itemBarcodeDetails.WorkLine && |
| | | .Where(it => it.ItemId == itemBarcodeDetails.ItemId && |
| | | it.WorkNo == itemBarcodeDetails.WorkNo && |
| | | it.CbillNo == itemBarcodeDetails.BillNo) |
| | | it.ItemInId == cId) |
| | | .Sum(it => it.Quantity); |
| | | |
| | | var detailSummary = db.Queryable<MesInvItemArnDetail>() |
| | |
| | | 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 = |
| | | // $"条码数量 {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(totalCDetailsQuantity); |
| | | //result.ItemNo = mesItems.ItemNo; |
| | | result.SumQuantity = Convert.ToDecimal(invQty); |
| | | |
| | | return 1; |
| | | } |
| | |
| | | |
| | | 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.CbillNo == itemBarcodeDetails.BillNo && |
| | | it.ItemId == itemBarcodeDetails.ItemId) |
| | | .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.CbillNo == itemBarcodeDetails.BillNo && |
| | | it.ItemId == itemBarcodeDetails.ItemId) |
| | | .Where(it => it.Guid == itemBarcodeDetails.AboutGuid) |
| | | .Select(it => new |
| | | { |
| | | TotalComeQty = SqlFunc.AggregateSum(it.Quantity), |
| | |
| | | .First(); |
| | | |
| | | if (detailSummary == null) |
| | | { |
| | | throw new Exception("此条码找不到对应收货单明细!"); |
| | | } |
| | | |
| | | var comeQty = detailSummary.TotalComeQty ?? 0; |
| | | var invQty = detailSummary.TotalInvQty ?? 0; |
| | |
| | | $" 条码数量:{itemBarcodeDetails.Quantity},物料 {mesItems.ItemNo} 本次入库总数:{totalCDetailsQuantity} 总到 {comeQty} 已入 {invQty} 欠 {diffQty}"; |
| | | |
| | | |
| | | result.ItemNo = mesItems.ItemNo; |
| | | //result.ItemNo = mesItems.ItemNo; |
| | | result.SumQuantity = Convert.ToDecimal(totalCDetailsQuantity); |
| | | } |
| | | |
| | |
| | | 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.ItemIns = purchaseInventory.ItemIns; |
| | | result.ItemInDetails = purchaseInventory.ItemInDetails; |
| | | result.InvItemInCDetails = purchaseInventory.InvItemInCDetails; |
| | | |
| | | //result.ItemInDetails = purchaseInventory.ItemInDetails; |
| | | //result.InvItemInCDetails = purchaseInventory.InvItemInCDetails; |
| | | |
| | | return result; |
| | | } |
| | | |
| | | public PurchaseInventory getPurchaseInventory(WarehouseQuery query) |
| | | public ItemInBaseModel getPurchaseInventory(WarehouseQuery query) |
| | | { |
| | | return new PurchaseInventory |
| | | return new ItemInBaseModel |
| | | { |
| | | ItemIns = GetInvItemInsList(query).Items[0], |
| | | ItemInDetails = GetItemInDetails(query.id), |
| | | InvItemInCDetails = GetInvItemInCDetails(query.id) |
| | | //ItemIns = GetInvItemInsList(query).Items[0], |
| | | //ItemInDetails = GetItemInDetails(query.id), |
| | | //InvItemInCDetails = GetInvItemInCDetails(query.id) |
| | | }; |
| | | } |
| | | |
| | |
| | | WarehouseQuery query) |
| | | { |
| | | var parsedGuid = Guid.Empty; |
| | | if (string.IsNullOrEmpty(query.id)) |
| | | if (!string.IsNullOrEmpty(query.id)) |
| | | { |
| | | return ([], 0); |
| | | var isValid = Guid.TryParse(query.id, out parsedGuid); |
| | | if (!isValid) |
| | | throw new ApplicationException("GUID转换错误"); |
| | | } |
| | | |
| | | bool 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.DepotsCode == b.DepotCode, |
| | | JoinType.Left, a.SuppNo == c.SuppNo)) |
| | | 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 |
| | |
| | | { |
| | | //string转guid |
| | | var parsedGuid = Guid.Empty; |
| | | if (string.IsNullOrEmpty(pid)) |
| | | { |
| | | return ( []); |
| | | } |
| | | if (string.IsNullOrEmpty(pid)) return []; |
| | | |
| | | bool isValid = Guid.TryParse(pid, out parsedGuid); |
| | | var isValid = Guid.TryParse(pid, out parsedGuid); |
| | | if (!isValid) |
| | | throw new ApplicationException("GUID转换错误"); |
| | | |
| | |
| | | ItemNo = c.ItemNo, |
| | | ItemSname = g.ItemSname, |
| | | Quantity = g.Quantity, |
| | | Unit = d.Fname, |
| | | Unit = d.Fname |
| | | }) |
| | | .ToList(); |
| | | |
| | |
| | | { |
| | | //string转guid |
| | | var parsedGuid = Guid.Empty; |
| | | if (string.IsNullOrEmpty(pid)) |
| | | { |
| | | return ( []); |
| | | } |
| | | if (string.IsNullOrEmpty(pid)) return []; |
| | | |
| | | bool isValid = Guid.TryParse(pid, out parsedGuid); |
| | | var isValid = Guid.TryParse(pid, out parsedGuid); |
| | | if (!isValid) |
| | | throw new ApplicationException("GUID转换错误"); |
| | | |
| | |
| | | (g, c, d) => new JoinQueryInfos( |
| | | JoinType.Left, |
| | | g.ItemId == c.Id, JoinType.Inner, |
| | | d.Id == Convert.ToDecimal(c.ItemUnit) |
| | | d.Id.ToString() == c.Fpurchaseunitid |
| | | ) |
| | | ).WhereIF(UtilityHelper.CheckGuid(parsedGuid), |
| | | (g, c, d) => g.ItemInId == parsedGuid) |
| | |
| | | } |
| | | |
| | | var ErpUrl = AppsettingsUtility.Settings.ProductionErpUrl; |
| | | |
| | | var newGuid = Guid.NewGuid(); |
| | | var message = new MessageCenter |
| | | { |
| | | Guid = newGuid, |
| | | //Pid = newGuid, |
| | | TableName = tableName, |
| | | Url = ErpUrl, |
| | | Status = 1, |
| | |
| | | var message = MesToErpParam(query); |
| | | |
| | | var executeReturnIdentity = |
| | | Db.Insertable(message).ExecuteReturnIdentity(); |
| | | Db.Insertable(message).ExecuteCommand(); |
| | | if (executeReturnIdentity > 0) |
| | | { |
| | | // message.Guid = executeReturnIdentity; |
| | | message.Pid = executeReturnIdentity; |
| | | message.Pid = message.Guid; |
| | | return message; |
| | | } |
| | | |
| | |
| | | .SetColumns(x => x.Status == entity.status) |
| | | .SetColumns(x => x.InsDate == entity.date) |
| | | .Where(x => x.BillNo == entity.billNo) |
| | | .IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand() > 0; |
| | | .IgnoreColumns(true).ExecuteCommand() > 0; |
| | | } |
| | | |
| | | private string GetErpParameters(string? billNo) |
| | |
| | | MesInvItemArnDetail>( |
| | | (g, c, d, a) => new JoinQueryInfos( |
| | | JoinType.Left, |
| | | g.ItemNo == c.ItemNo && g.Company == c.Company && |
| | | g.Factory == c.Factory, JoinType.Inner, |
| | | d.Id == Convert.ToDecimal(c.ItemUnit), |
| | | JoinType.Inner, |
| | | a.Ebeln == g.WorkNo && a.WorkLine == g.EbelnLineNo |
| | | && g.CbillNo == a.CbillNo |
| | | 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 |
| | | { |
| | | // FstockId = g.DepotCode, |
| | | // FuintId = d.Fnumber, |
| | | // FsrcEntryId = a.Id, |
| | | // FmesEntryId = g.Id, |
| | | // FmaterialId = a.ItemNo, |
| | | // DepotSectionCode = g.DepotSectionCode, |
| | | // WorkNo = g.WorkNo, |
| | | // Frealqty = g.Quantity |
| | | 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(); |
| | | |
| | | |
| | |
| | | |
| | | var jsonEntries = materials.Select(d => new |
| | | { |
| | | // FMaterialId = d.FmaterialId, |
| | | // FUintId = d.FuintId, |
| | | // FRealQty = d.Frealqty, |
| | | // FStockId = d.FstockId, |
| | | // FSRCENTRYID = d.FsrcEntryId.ToString(), |
| | | // F_MES_ENTRYID = d.FmesEntryId.ToString() |
| | | 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"); |