service/Warehouse/MesItemQtrkManager.cs
@@ -54,16 +54,13 @@
        return details;
    }
    public String ScanInDepotsQT(WarehouseQuery query)
    public string ScanInDepotsQT(WarehouseQuery query)
    {
        var sectionCode = query.sectionCode;
        var billNo = query.billNo;
        // 1. 验证库位条码是否为空
        if (string.IsNullOrEmpty(sectionCode))
        {
            throw new Exception("请扫库位条码!");
        }
        if (string.IsNullOrEmpty(sectionCode)) throw new Exception("请扫库位条码!");
        // 2. 查询库位对应的仓库编码
        var depotCode = Db.Queryable<MesDepotSections, MesDepots>(
@@ -74,9 +71,7 @@
            .First();
        if (depotCode == null)
        {
            throw new Exception($"库位编码 {sectionCode} 不存在,请确认!");
        }
        // 3. 查询申请单对应的仓库
        var qtrk = Db.Queryable<MesItemQtrk>()
@@ -84,16 +79,11 @@
            .Select(x => x.Qt011)
            .First();
        if (qtrk == null)
        {
            throw new Exception($"库位编码 {sectionCode} 不存在,请确认!");
        }
        if (qtrk == null) throw new Exception($"库位编码 {sectionCode} 不存在,请确认!");
        // 4. 验证库位是否属于申请仓库
        if (depotCode != qtrk)
        {
            throw new Exception($"扫码库位 {sectionCode} 不属于申请此仓库!");
        }
        // 5. 返回成功信息
        return $"仓库:{qtrk} 库位:{sectionCode}";
@@ -112,9 +102,7 @@
        // 1. 验证库位条码是否为空
        if (string.IsNullOrEmpty(p_section_code))
        {
            throw new Exception("请扫库位条码!");
        }
        // 2. 查询库位对应的仓库编码和仓库ID
        var depotInfo = Db.Queryable<MesDepotSections, MesDepots>(
@@ -125,9 +113,7 @@
            .First();
        if (depotInfo == null)
        {
            throw new Exception($"库位编码 {p_section_code} 不存在,请确认!");
        }
        var c_depot_code = depotInfo.DepotCode;
        var c_depot_id = depotInfo.DepotId;
@@ -136,45 +122,30 @@
        var existsInStock = Db.Queryable<MesInvItemInCDetails>()
            .Any(x => x.ItemBarcode == p_item_barcode);
        if (existsInStock)
        {
            throw new Exception("此条码已扫码入库完成,请核对!");
        }
        if (existsInStock) throw new Exception("此条码已扫码入库完成,请核对!");
        // 4. 查询条码信息
        var barcode = Db.Queryable<MesInvItemBarcodes>()
            .Where(x => x.ItemBarcode == p_item_barcode)
            .First();
        if (barcode == null)
        {
            throw new Exception("条码不存在,请核对!");
        }
        if (barcode == null) throw new Exception("条码不存在,请核对!");
        if (barcode.ComeFlg != 3)
        {
            throw new Exception("条码不是其他入库条码,无法用其他入库!");
        }
        //if (barcode.ComeFlg != 3) throw new Exception("条码不是其他入库条码,无法用其他入库!");
        // 验证条码是否已在库存中
        var stockCount = Db.Queryable<MesInvItemStocks>()
            .Where(x => x.ItemBarcode == p_item_barcode)
            .Count();
        if (stockCount > 0)
        {
            throw new Exception("此条码已扫码入库完成,请核对!");
        }
        if (stockCount > 0) throw new Exception("此条码已扫码入库完成,请核对!");
        // 5. 查询其他入库申请单
        var qtrk = Db.Queryable<MesItemQtrk>()
            .Where(x => x.Qtck == p_bill_no)
            .First();
        if (qtrk == null)
        {
            throw new Exception("其他入库申请单不存在!");
        }
        if (qtrk == null) throw new Exception("其他入库申请单不存在!");
        // 6. 查询申请单明细
        var detail = Db.Queryable<MesItemQtrrDetail>()
@@ -184,15 +155,11 @@
            .First();
        if (detail == null)
        {
            throw new Exception($"其他入库申请单{p_bill_no}无此物料{barcode.ItemNo} 请核对!");
        }
        // 7. 验证数量
        if (barcode.Quantity > (detail.Qd007 ?? 0) - (detail.Qd008 ?? 0))
        {
            throw new Exception("条码数量超过申请数量,请核对!");
        }
        var details = new List<MesItemQtrrDetail>();
@@ -203,11 +170,14 @@
            // 查询是否存在未入库的入库单
            var existingInv = db.Queryable<MesInvItemIns>()
                .Where(x => x.Status == 0
                            && x.InsDate.Value.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd")
                            && x.TransctionNo == transactionNo.ToString()
                            && x.CbillNo == p_bill_no
                            && x.SuppNo == barcode.SuppNo
                            && x.TaskNo == p_bill_no
                            //&& x.CbillNo == p_bill_no
                            && x.BillTypeId == billTypeId
                            && x.DepotsId == Convert.ToInt64(c_depot_id))
                            // && x.DepotsCode == c_depot_code)
                            && x.DepotsId == c_depot_id)
                            //&& x.SuppNo == barcode.SuppNo)
                .First();
            var newId = Guid.Empty;
@@ -216,7 +186,7 @@
            if (existingInv == null)
            {
                newId = Guid.NewGuid();
                billNo = BillNo.GetBillNo("INV_IN_OTHER");
                billNo = BillNo.GetBillNo("QTRK(其他入库单)");
                barcode.UrgentFlag ??= false;
@@ -233,11 +203,15 @@
                    CreateDate = DateTime.Now,
                    LastupdateBy = c_user,
                    LastupdateDate = DateTime.Now,
                    UrgentFlag = barcode.UrgentFlag.Value ? (byte)1 : (byte)0,
                    UrgentFlag = barcode.UrgentFlag.Value ? "1" : "0",
                    CbillNo = p_bill_no,
                    Fstatus = 0,
                    Status = 0,
                    Reason = qtrk.Qt010
                    Reason = qtrk.Qt010,
                    TaskNo = p_bill_no,
                    DepotsId = Convert.ToInt64(c_depot_id) ,
                    InType = "其他入库"
                }).IgnoreColumns(true).ExecuteCommand();
            }
            else
@@ -250,12 +224,12 @@
            var existingItem = db.Queryable<MesInvItemInCItems>()
                .Where(x => x.ItemInId == newId
                            && x.ItemId == barcode.ItemId
                            && x.WorkNo == barcode.WorkNo
                            && x.WorkLine == barcode.WorkLine)
                            && x.DepotId == c_depot_id.ToString()
                             )
                //&& x.DepotCode =
                .First();
            if (existingItem == null)
            {
                // 不存在则新增入库明细
                res += db.Insertable(new MesInvItemInCItems
                {
@@ -280,11 +254,10 @@
                    Remark = barcode.Memo,
                    EbelnK3id = barcode.EbelnK3id,
                    LineK3id = barcode.LineK3id,
                    ItemId = barcode.ItemId
                    ItemId = barcode.ItemId,
                    DepotId = c_depot_id.ToString()
                }).IgnoreColumns(true).ExecuteCommand();
            }
            else
            {
                // 存在则更新数量
                res += db.Updateable<MesInvItemInCItems>()
                    .SetColumns(
@@ -294,7 +267,6 @@
                                && x.WorkNo == barcode.WorkNo
                                && x.WorkLine == barcode.WorkLine)
                    .ExecuteCommand();
            }
            // 插入入库明细记录
@@ -311,7 +283,7 @@
                LotNo = barcode.LotNo,
                SuppId = barcode.SuppId,
                SuppNo = barcode.SuppNo,
                DepotId = c_depot_id,
                DepotId = Convert.ToInt64(c_depot_id),
                DepotCode = c_depot_code,
                DepotSectionCode = p_section_code,
                ItemSname = barcode.ItemSname,
@@ -366,7 +338,7 @@
                SuppNo = barcode.SuppNo,
                EbelnK3id = barcode.EbelnK3id,
                LineK3id = barcode.LineK3id,
                ItemId = barcode.ItemId,
                ItemId = barcode.ItemId
                // SalesOrder = barcode.SalesOrder,
                // IsZy = barcode.IsZy,
                // OuterBarcode = barcode.OuterBarcode
@@ -398,7 +370,7 @@
                EbelnK3id = barcode.EbelnK3id,
                LineK3id = barcode.LineK3id,
                ItemId = barcode.ItemId,
                BillNo = barcode.BillNo,
                BillNo = barcode.BillNo
                // SalesOrder = barcode.SalesOrder,
                // IsZy = barcode.IsZy,
                // Visable = 0,
@@ -414,7 +386,8 @@
            // 更新申请单明细已入库数量
            res += db.Updateable<MesItemQtrrDetail>()
                .SetColumns(x => x.Qd008 == (x.Qd008 ?? 0) + barcode.Quantity)
                .Where(x => x.Guid == barcode.Guid)
                .Where(x => x.QtrkGuid == qtrk.Guid &&
                x.ItemId == barcode.ItemId.ToString())
                .ExecuteCommand();
            // 检查是否完全入库并更新状态
@@ -423,12 +396,10 @@
                .First();
            if ((detail1.Qd007 ?? 0) - (detail1.Qd008 ?? 0) == barcode.Quantity)
            {
                res += db.Updateable<MesItemQtrrDetail>()
                    .SetColumns(x => x.Qd011 == 1)
                    .Where(x => x.Guid == detail1.Guid)
                    .ExecuteCommand();
            }
            details = Db.Queryable<MesItemQtrk, MesItemQtrrDetail, MesItems>(
                    (a, b, c) => new JoinQueryInfos(
@@ -449,17 +420,12 @@
                .ToList();
            if (CollectionUtil.IsNullOrEmpty(details))
            {
                res += db.Updateable<MesItemQtrk>()
                    .SetColumns(s => s.Qt014 == 1)
                    .Where(x => x.Qtck == p_bill_no)
                    .ExecuteCommand();
            }
            if (res < 5)
            {
                throw new Exception("插入或更新失败");
            }
            if (res < 5) throw new Exception("插入或更新失败");
            return res;
        });