啊鑫
8 天以前 0aa54059b26e6641196e9953490dd18616e916e3
service/Wom/WwGdManager.cs
@@ -1,6 +1,5 @@
using System.Data;
using System.Data.SqlClient;
using System.Threading.Tasks.Dataflow;
using Masuit.Tools;
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
@@ -159,17 +158,17 @@
        if (wwgd?.Daa001 == null) throw new Exception("工单号不存在");
        var womdabs = Db
            .Queryable<WwGd, WwGdDetail, MesItems, ProductionOrderSub>(
                (a, b, c, d) =>
                    new JoinQueryInfos(
                        JoinType.Left,
                        a.Id == b.Pid,
                        JoinType.Inner,
                        c.Id == b.Dab003,
                        JoinType.Inner, b.Erpid.ToString() == d.ErpId
                    ))
            .Queryable<WwGd, WwGdDetail, MesItems, ProductionOrderSub>((a, b, c,
                    d) =>
                new JoinQueryInfos(
                    JoinType.Left,
                    a.Id == b.Pid,
                    JoinType.Inner,
                    c.Id == b.Dab003,
                    JoinType.Inner, b.Erpid.ToString() == d.ErpId
                ))
            .Where((a, b, c, d) =>
                a.Daa001 == query.daa001 && d.IssuingMethod == "1")
                a.Daa001 == query.daa001)
            .Select((a, b, c, d) => new WwGdDetail
            {
                Pid = b.Pid,
@@ -285,7 +284,6 @@
        if (c_mes_inv_item_barcodes == null)
            throw new Exception("此条码不属于该退料单,请核对!");
        // if (c_mes_inv_item_barcodes.Memo != "生产退料")
        //     throw new Exception("此条码不是生产退料条码,不可使用生产退料模块!");
@@ -320,12 +318,17 @@
            throw new Exception("条码不属于该申请单明细,无法扫码!");
        //判断货主信息
        var CABerpid = Db.Queryable<WwGdDetail>().Where(womdab => womdab.Id.ToString() == C_MES_ITEM_TBL_DETAIL.Tld013).Select(womdab => womdab.Erpid).First();
        var CABerpid = Db.Queryable<WwGdDetail>()
            .Where(womdab =>
                womdab.Id.ToString() == C_MES_ITEM_TBL_DETAIL.Tld013)
            .Select(womdab => womdab.Erpid).First();
        var WWCAB = Db.Queryable<ProductionOrderSub>().Where(womcab => womcab.ErpId == CABerpid.Value.ToString()).First();
        var WWCAB = Db.Queryable<ProductionOrderSub>()
            .Where(womcab => womcab.ErpId == CABerpid.Value.ToString()).First();
        if ( String.IsNullOrEmpty(WWCAB.Owner)) throw new Exception("用料清单货主信息不存在,无法扫码,请联系管理员!");
        if (string.IsNullOrEmpty(WWCAB.Owner))
            throw new Exception("用料清单货主信息不存在,无法扫码,请联系管理员!");
        //var owner_type = "";
        //if (Db.Queryable<SysOrganization>().Any(x => x.Fid == ownerId))
@@ -420,10 +423,10 @@
            // 检查是否存在于 MES_INV_ITEM_IN_C_ITEMS 表
            var existingCount = db.Queryable<MesInvItemInCItems>()
            .Where(it =>
                it.ItemInId == c_id &&
                                it.ItemId == C_MES_ITEM_TBL_DETAIL.Tld009 &&
                                it.DepotId == c_depot_code.ToString())
                .Where(it =>
                    it.ItemInId == c_id &&
                    it.ItemId == C_MES_ITEM_TBL_DETAIL.Tld009 &&
                    it.DepotId == c_depot_code.ToString())
                .Count();
            if (existingCount == 0)
@@ -459,12 +462,14 @@
                db.Updateable<MesInvItemInCItems>()
                    .SetColumns(it => new MesInvItemInCItems
                    {
                        Quantity = SqlFunc.IsNull(it.Quantity, 0) + c_mes_inv_item_barcodes.Quantity // 确保 Quantity 不为 null
                        Quantity = SqlFunc.IsNull(it.Quantity, 0) +
                                   c_mes_inv_item_barcodes
                                       .Quantity // 确保 Quantity 不为 null
                    })
                .Where(it =>
                       it.ItemInId == c_id &&
                                it.ItemId == C_MES_ITEM_TBL_DETAIL.Tld009 &&
                                it.DepotId == c_depot_code.ToString())
                    .Where(it =>
                        it.ItemInId == c_id &&
                        it.ItemId == C_MES_ITEM_TBL_DETAIL.Tld009 &&
                        it.DepotId == c_depot_code.ToString())
                    //.IgnoreColumns(true) // 保留 IgnoreColumns
                    .ExecuteCommand();
@@ -506,7 +511,7 @@
                ReceiveOrgId = c_mes_depots.FSubsidiary,
                EbelnK3id = c_mes_inv_item_barcodes.EbelnK3id,
                LineK3id = c_mes_inv_item_barcodes.LineK3id,
                Ischeck = true,
                Ischeck = true
            }).IgnoreColumns(true).ExecuteCommand();
            // 插入业务记录
@@ -624,8 +629,8 @@
                    })
                    .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.Tld010 ==
                    //c_mes_inv_item_barcodes.WorkLine)
                    .ExecuteCommand();
            }
            // 作业不良退料 - 更新工单表和退料单明细表
@@ -658,8 +663,8 @@
                    })
                    .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.Tld010 ==
                    //c_mes_inv_item_barcodes.WorkLine)
                    .ExecuteCommand();
            }
@@ -674,9 +679,9 @@
                    .ExecuteCommand();
            // 检查退料单是否所有明细都已完成
            var remainingCount = Db.Queryable<MesItemTbl, MesItemTblDetail>(
                    (a, b) =>
                        new JoinQueryInfos(JoinType.Left, a.Id == b.Tlmid))
            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)
@@ -697,8 +702,10 @@
            // 创建 插入日志
            var logService = new LogService();
            var LogMsg = "[PDA]委外退料。条码【" + query.barcode + "】 退料单号【" + c_bill_no + "】";
            logService.CreateLog(db, query.userName, wwgd.Id.ToString(), "WW_GD", LogMsg, wwgd.Daa001);
            var LogMsg = "[PDA]委外退料。条码【" + query.barcode + "】 退料单号【" +
                         c_bill_no + "】";
            logService.CreateLog(db, query.userName, wwgd.Id.ToString(),
                "WW_GD", LogMsg, wwgd.Daa001);
            return totalResult;
        });
@@ -713,7 +720,7 @@
    #region 委外补料
    /// <summary>
    /// 委外工单补料扫码
    ///     委外工单补料扫码
    ///     扫描条码  prc_rf_pda_scan_zout_barcode3
    /// </summary>
    /// <param name="query">查询参数</param>
@@ -774,7 +781,8 @@
        // 获取补料单明细并校验
        var blDetail = Db.Queryable<MesItemBlDetail>()
            .Where(b =>
                b.Mid == mesItemBl.Id && b.Bld012 == stockBarcode.ItemId && b.Bld007 > b.Bld008)
                b.Mid == mesItemBl.Id && b.Bld012 == stockBarcode.ItemId &&
                b.Bld007 > b.Bld008)
            .First();
        if (blDetail == null)
@@ -842,13 +850,9 @@
            //query.Type = "委外补料";
            var outNoType = "WWBL(委外补料)";
            if (query.Type == "委外补料")
            {
                outNoType = "WWBL(委外补料)";
            }
            else
            {
                outNoType = "WWCL(委外超领)";
            }
            //outNoType = "WWBL(委外补料)";
            // 获取或创建出库单
            var outId = Guid.NewGuid();
@@ -896,7 +900,7 @@
                    OutDate = DateTime.Now,
                    Status = 0,
                    DepotId = stockBarcode.DepotId,
                    THORGID = stockBarcode.StockOrgId,
                    THORGID = stockBarcode.StockOrgId
                    //BbillNo = query.billNo
                }).IgnoreColumns(true).ExecuteCommand();
            }
@@ -904,7 +908,9 @@
            // 检查并更新出库单物料明细
            var itemCount = db.Queryable<MesInvItemOutItems>()
                .Where(i =>
                    i.ItemOutId == outId && i.ItemId == stockBarcode.ItemId && i.ItemOutId == outId && i.DepotId == stockBarcode.DepotsId.ToString())
                    i.ItemOutId == outId && i.ItemId == stockBarcode.ItemId &&
                    i.ItemOutId == outId &&
                    i.DepotId == stockBarcode.DepotsId.ToString())
                .Count();
            if (itemCount > 0)
@@ -913,7 +919,10 @@
                    .SetColumns(i =>
                        i.TlQty == i.TlQty + stockBarcode.Quantity)
                    .Where(i =>
                        i.ItemOutId == outId && i.ItemId == stockBarcode.ItemId && i.ItemOutId == outId && i.DepotId == stockBarcode.DepotsId.ToString())
                        i.ItemOutId == outId &&
                        i.ItemId == stockBarcode.ItemId &&
                        i.ItemOutId == outId &&
                        i.DepotId == stockBarcode.DepotsId.ToString())
                    .ExecuteCommand();
            else
                // 插入新的物料明细记录
@@ -940,7 +949,7 @@
                    PbillNo = query.billNo,
                    ItemId = blDetail.Bld012,
                    DepotId = stockBarcode.DepotId.ToString(),
                    ItemDabid = blDetail.Id,
                    ItemDabid = blDetail.Id
                    //AboutGuid = womdab.Id
                    // Unit = blDetail.Bld009,
                    // DepotId = (int)stockBarcode.DepotsId
@@ -1071,16 +1080,19 @@
            // 创建 插入日志
            var logService = new LogService();
            var LogMsg = "[PDA]"+query.Type + "。条码【" +query.barcode+"】 数量【"+ stockBarcode.Quantity.ToString() + "】 出库单号【"+ outNo +"】";
            logService.CreateLog(db,query.userName,wwgd.Id.ToString(), "WW_GD", LogMsg,wwgd.Daa001);
            var LogMsg = "[PDA]" + query.Type + "。条码【" + query.barcode +
                         "】 数量【" + stockBarcode.Quantity + "】 出库单号【" + outNo +
                         "】";
            logService.CreateLog(db, query.userName, wwgd.Id.ToString(),
                "WW_GD", LogMsg, wwgd.Daa001);
            return 1;
        });
        // 获取最终的待发料明细列表
        var finalPendingList = Db.Queryable<MesItemBl, MesItemBlDetail>(
                (a, b) =>
                    new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
        var finalPendingList = Db
            .Queryable<MesItemBl, MesItemBlDetail>((a, b) =>
                new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
            .Where((a, b) => a.BlNo == query.blNo
                             && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0)
            .Select((a, b) => new MesItemBlDetail