111
啊鑫
2024-12-23 8685c8e96eeeaa262044f0fdc7827e645f5e22a0
service/Warehouse/MesItemTblManager.cs
@@ -52,9 +52,7 @@
    public WarehouseQuery SctlScanDepots(WarehouseQuery query)
    {
        if (query.DepotCode.IsNullOrEmpty())
        {
            throw new NullReferenceException("请扫库位条码");
        }
        var warehouseQuery = Db.Queryable<MesDepotSections, MesDepots>((a, b) =>
                new JoinQueryInfos(JoinType.Inner, a.DepotGuid == b.Guid))
@@ -63,13 +61,11 @@
            {
                DepotSectionName = a.DepotSectionName,
                DepotName = b.DepotName,
                DepotCode = b.DepotCode,
                DepotCode = b.DepotCode
            }).First();
        if (warehouseQuery == null)
        {
            throw new Exception("库位编码" + query.DepotCode + " 不存在,请确认!");
        }
        return warehouseQuery;
    }
@@ -84,10 +80,7 @@
        var p_bill_type_id = 100;
        var p_transction_no = 104;
        if (p_section_code.IsNullOrEmpty())
        {
            throw new Exception("请扫库位条码!");
        }
        if (p_section_code.IsNullOrEmpty()) throw new Exception("请扫库位条码!");
        var c_depot_code = Db.Queryable<MesDepotSections, MesDepots>((a, b) =>
                new JoinQueryInfos(JoinType.Inner, a.DepotGuid == b.Guid))
@@ -95,25 +88,19 @@
            .Select((a, b) => b.DepotId).First();
        if (!c_depot_code.HasValue)
        {
            throw new Exception("库位编码" + p_section_code + " 不存在,请确认!");
        }
        var mesDepotSections = Db.Queryable<MesDepotSections>()
            .Where(a => a.DepotSectionCode == p_section_code).First();
        if (mesDepotSections == null)
        {
            throw new Exception("库位编码" + p_section_code + " 不存在,请确认!");
        }
        var c_mes_depots = Db.Queryable<MesDepots>()
            .Where(b => b.Guid == mesDepotSections.DepotGuid).First();
        if (c_mes_depots == null)
        {
            throw new Exception("库位编码" + p_section_code + " 不存在,请确认!");
        }
        var c_num = Db.Queryable<MesInvItemIns, MesInvItemInCDetails>((a, b) =>
                new JoinQueryInfos(JoinType.Inner, a.Guid == b.ItemInId))
@@ -122,45 +109,29 @@
                             a.TransctionNo == p_transction_no.ToString())
            .Count();
        if (c_num > 0)
        {
            throw new Exception("此条码已扫入库,勿重复扫描!");
        }
        if (c_num > 0) throw new Exception("此条码已扫入库,勿重复扫描!");
        c_num = Db.Queryable<MesInvItemStocks>()
            .Where(t => t.ItemBarcode == p_item_barcode).Count();
        if (c_num > 0)
        {
            throw new Exception("此条码已扫入库,勿重复扫描!");
        }
        if (c_num > 0) throw new Exception("此条码已扫入库,勿重复扫描!");
        var c_mes_inv_item_barcodes = Db.Queryable<MesInvItemBarcodes>()
            .Where(t => t.ItemBarcode == p_item_barcode).First();
        if (c_mes_inv_item_barcodes == null)
        {
            throw new Exception("此条码不属于该退料单,请核对!");
        }
        if (c_mes_inv_item_barcodes.Memo != "生产退料")
        {
            throw new Exception("此条码不是生产退料条码,不可使用生产退料模块!");
        }
        var C_MES_ITEM_TBL = Db.Queryable<MesItemTbl>()
            .Where(a => a.BillNo == c_mes_inv_item_barcodes.BillNo
                        && (a.Tbl013 ?? 0) == 1).First();
        if (C_MES_ITEM_TBL == null)
        {
            throw new Exception("申请单已撤回,无法扫码!");
        }
        if (C_MES_ITEM_TBL == null) throw new Exception("申请单已撤回,无法扫码!");
        if (C_MES_ITEM_TBL.Tbl020 == 1)
        {
            throw new Exception("扫码完成,申请单已完结!");
        }
        if (C_MES_ITEM_TBL.Tbl020 == 1) throw new Exception("扫码完成,申请单已完结!");
        var C_MES_ITEM_TBL_DETAIL = Db.Queryable<MesItemTblDetail>()
            .Where(a => a.Tlmid == C_MES_ITEM_TBL.Id
@@ -168,9 +139,7 @@
            .First();
        if (C_MES_ITEM_TBL_DETAIL == null)
        {
            throw new Exception("条码不属于该申请单明细,无法扫码!");
        }
        var c_quantity = c_mes_inv_item_barcodes.Quantity;
@@ -223,10 +192,7 @@
            }
            var hbdy = c_mes_inv_item_barcodes.Hbdy ?? 0;
            if (hbdy == 1)
            {
                throw new Exception("不支持合并打印的条码:" + p_item_barcode);
            }
            if (hbdy == 1) throw new Exception("不支持合并打印的条码:" + p_item_barcode);
            totalResult += db.Insertable(new MesInvItemInCDetails
            {
@@ -321,46 +287,58 @@
            {
                // 良品退料 - 更新工单表(WOMDAB)相关数量
                if (C_MES_ITEM_TBL.Tbl005 == "良品退料")
                {
                    totalResult += Db.Updateable<Womdab>()
                        .SetColumns(it => new Womdab
                        {
                            Dab007 = it.Dab007 - c_mes_inv_item_barcodes.Quantity,  // 减少工单数量
                            Dab022 = (it.Dab022 ?? 0) + c_mes_inv_item_barcodes.Quantity,  // 增加退料数量
                            LpTl = (it.LpTl ?? 0) + (int)c_mes_inv_item_barcodes.Quantity,  // 增加良品退料数量
                            Dab020 = (it.Dab020 ?? 0) - c_mes_inv_item_barcodes.Quantity  // 减少已发料数量
                        })
                        .Where(it => it.Dab001 == c_mes_inv_item_barcodes.WorkNo
                            && it.Dab002 == c_mes_inv_item_barcodes.WorkLine
                            && it.Dab003 == c_mes_inv_item_barcodes.ItemId.ToString())
                        .ExecuteCommand();
                }
                // 来料不良退料 - 更新工单表(WOMDAB)相关数量
                else if (C_MES_ITEM_TBL.Tbl005 == "来料不良退料")
                {
                    totalResult += Db.Updateable<Womdab>()
                        .SetColumns(it => new Womdab
                        {
                            Dab007 = it.Dab007 - c_mes_inv_item_barcodes.Quantity,  // 减少工单数量
                            Dab022 = (it.Dab022 ?? 0) + c_mes_inv_item_barcodes.Quantity,  // 增加退料数量
                            LlBl = (it.LlBl ?? 0) + (int)c_mes_inv_item_barcodes.Quantity,  // 增加来料不良数量
                            Dab020 = (it.Dab020 ?? 0) - c_mes_inv_item_barcodes.Quantity  // 减少已发料数量
                            Dab007 = it.Dab007 -
                                     c_mes_inv_item_barcodes.Quantity, // 减少工单数量
                            Dab022 = (it.Dab022 ?? 0) +
                                     c_mes_inv_item_barcodes.Quantity, // 增加退料数量
                            LpTl = (it.LpTl ?? 0) +
                                   (int)c_mes_inv_item_barcodes
                                       .Quantity, // 增加良品退料数量
                            Dab020 = (it.Dab020 ?? 0) -
                                     c_mes_inv_item_barcodes.Quantity // 减少已发料数量
                        })
                        .Where(it => it.Dab001 == c_mes_inv_item_barcodes.WorkNo
                            && it.Dab002 == c_mes_inv_item_barcodes.WorkLine
                            && it.Dab003 == c_mes_inv_item_barcodes.ItemId.ToString())
                                     && it.Dab002 == c_mes_inv_item_barcodes
                                         .WorkLine
                                     && it.Dab003 == c_mes_inv_item_barcodes
                                         .ItemId.ToString())
                        .ExecuteCommand();
                }
                // 来料不良退料 - 更新工单表(WOMDAB)相关数量
                else if (C_MES_ITEM_TBL.Tbl005 == "来料不良退料")
                    totalResult += Db.Updateable<Womdab>()
                        .SetColumns(it => new Womdab
                        {
                            Dab007 = it.Dab007 -
                                     c_mes_inv_item_barcodes.Quantity, // 减少工单数量
                            Dab022 = (it.Dab022 ?? 0) +
                                     c_mes_inv_item_barcodes.Quantity, // 增加退料数量
                            LlBl = (it.LlBl ?? 0) +
                                   (int)c_mes_inv_item_barcodes
                                       .Quantity, // 增加来料不良数量
                            Dab020 = (it.Dab020 ?? 0) -
                                     c_mes_inv_item_barcodes.Quantity // 减少已发料数量
                        })
                        .Where(it => it.Dab001 == c_mes_inv_item_barcodes.WorkNo
                                     && it.Dab002 == c_mes_inv_item_barcodes
                                         .WorkLine
                                     && it.Dab003 == c_mes_inv_item_barcodes
                                         .ItemId.ToString())
                        .ExecuteCommand();
                // 更新退料单明细表已退数量
                totalResult += Db.Updateable<MesItemTblDetail>()
                    .SetColumns(it => new MesItemTblDetail
                    {
                        Tld006 = (it.Tld006 ?? 0) + (int)c_mes_inv_item_barcodes.Quantity  // 增加已退数量
                        Tld006 = (it.Tld006 ?? 0) +
                                 (int)c_mes_inv_item_barcodes.Quantity // 增加已退数量
                    })
                    .Where(it => it.Tlmid == C_MES_ITEM_TBL.Id
                        && it.Tld009 == c_mes_inv_item_barcodes.ItemId
                        && it.Tld010 == c_mes_inv_item_barcodes.WorkLine)
                                 && it.Tld009 == c_mes_inv_item_barcodes.ItemId
                                 && it.Tld010 ==
                                 c_mes_inv_item_barcodes.WorkLine)
                    .ExecuteCommand();
            }
            // 作业不良退料 - 更新工单表和退料单明细表
@@ -369,59 +347,66 @@
                totalResult += Db.Updateable<Womdab>()
                    .SetColumns(it => new Womdab
                    {
                        Dab022 = (it.Dab022 ?? 0) + c_mes_inv_item_barcodes.Quantity,  // 增加退料数量
                        ZyBl = (it.ZyBl ?? 0) + (int)c_mes_inv_item_barcodes.Quantity,  // 增加作业不良数量
                        Dab020 = (it.Dab020 ?? 0) - c_mes_inv_item_barcodes.Quantity  // 减少已发料数量
                        Dab022 = (it.Dab022 ?? 0) +
                                 c_mes_inv_item_barcodes.Quantity, // 增加退料数量
                        ZyBl = (it.ZyBl ?? 0) +
                               (int)c_mes_inv_item_barcodes
                                   .Quantity, // 增加作业不良数量
                        Dab020 = (it.Dab020 ?? 0) -
                                 c_mes_inv_item_barcodes.Quantity // 减少已发料数量
                    })
                    .Where(it => it.Dab001 == c_mes_inv_item_barcodes.WorkNo
                        && it.Dab002 == c_mes_inv_item_barcodes.WorkLine
                        && it.Dab003 == c_mes_inv_item_barcodes.ItemId.ToString())
                                 && it.Dab002 ==
                                 c_mes_inv_item_barcodes.WorkLine
                                 && it.Dab003 == c_mes_inv_item_barcodes.ItemId
                                     .ToString())
                    .ExecuteCommand();
                // 更新退料单明细表已退数量
                totalResult += Db.Updateable<MesItemTblDetail>()
                    .SetColumns(it => new MesItemTblDetail
                    {
                        Tld006 = (it.Tld006 ?? 0) + (int)c_mes_inv_item_barcodes.Quantity  // 增加已退数量
                        Tld006 = (it.Tld006 ?? 0) +
                                 (int)c_mes_inv_item_barcodes.Quantity // 增加已退数量
                    })
                    .Where(it => it.Tlmid == C_MES_ITEM_TBL.Id
                        && it.Tld009 == c_mes_inv_item_barcodes.ItemId
                        && it.Tld010 == c_mes_inv_item_barcodes.WorkLine)
                                 && it.Tld009 == c_mes_inv_item_barcodes.ItemId
                                 && it.Tld010 ==
                                 c_mes_inv_item_barcodes.WorkLine)
                    .ExecuteCommand();
            }
            // 如果待退数量等于本次退料数量,则更新明细完成状态
            if ((C_MES_ITEM_TBL_DETAIL.Tld005 ?? 0) - (C_MES_ITEM_TBL_DETAIL.Tld006 ?? 0) == c_mes_inv_item_barcodes.Quantity)
            {
            if ((C_MES_ITEM_TBL_DETAIL.Tld005 ?? 0) -
                (C_MES_ITEM_TBL_DETAIL.Tld006 ?? 0) ==
                c_mes_inv_item_barcodes.Quantity)
                totalResult += Db.Updateable<MesItemTblDetail>()
                    .SetColumns(it => new MesItemTblDetail { Tld008 = 1 })  // 设置完成标志
                    .SetColumns(it => new MesItemTblDetail
                        { Tld008 = 1 }) // 设置完成标志
                    .Where(it => it.Tlid == C_MES_ITEM_TBL_DETAIL.Tlid)
                    .ExecuteCommand();
            }
            // 检查退料单是否所有明细都已完成
            var remainingCount = Db.Queryable<MesItemTbl, MesItemTblDetail>((a, b) =>
                new JoinQueryInfos(JoinType.Left, a.Id == b.Tlmid))
                .Where((a, b) => a.BillNo == p_bill_no && (b.Tld005 ?? 0) - (b.Tld006 ?? 0) > 0)
            var remainingCount = Db.Queryable<MesItemTbl, MesItemTblDetail>(
                    (a, b) =>
                        new JoinQueryInfos(JoinType.Left, a.Id == b.Tlmid))
                .Where((a, b) =>
                    a.BillNo == p_bill_no &&
                    (b.Tld005 ?? 0) - (b.Tld006 ?? 0) > 0)
                .Count();
            // 如果所有明细都已完成,则更新退料单状态为已完成
            if (remainingCount < 1)
            {
                totalResult += Db.Updateable<MesItemTbl>()
                    .SetColumns(it => it.Tbl020 == 1 )  // 设置完成标志
                    .SetColumns(it => it.Tbl020 == 1) // 设置完成标志
                    .Where(it => it.BillNo == p_bill_no)
                    .ExecuteCommand();
            }
            if (totalResult < 3)
            {
                throw new Exception("插入失败");
            }
            if (totalResult < 3) throw new Exception("插入失败");
            return totalResult;
        });
        // 设置返回结果
        // c_result = $"001[,{c_mes_inv_item_barcodes.ItemNo},{c_quantity},扫码成功!,参考库位@物料@待退数量{c_in_field_valT}";