1
啊鑫
2024-12-31 e2988c27cb7e250d8834e3097b4821c7dbff6b64
1
已修改1个文件
66 ■■■■ 文件已修改
service/Warehouse/MesItemTblManager.cs 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesItemTblManager.cs
@@ -7,21 +7,34 @@
namespace NewPdaSqlServer.service.Warehouse;
/// <summary>
/// MES物料表管理类
/// </summary>
public class MesItemTblManager : Repository<MesItemTbl>
{
    /// <summary>
    /// 获取生产退料单号列表
    /// </summary>
    /// <returns>退料单号列表</returns>
    public List<string> GetSCTLBillNo()
    {
        var list = Db.Queryable<MesItemTbl>()
            .Where(s => (s.Tbl013 ?? 0) == 1
                        && (s.Tbl020 ?? 0) == 0)
            .Where(s => (s.Tbl013 ?? 0) == 1  // 审核通过
                        && (s.Tbl020 ?? 0) == 0)  // 未完成
            .Select(s => s.BillNo).ToList();
        return list;
    }
    /// <summary>
    /// 根据单号获取MES物料表明细
    /// </summary>
    /// <param name="query">仓库查询参数</param>
    /// <returns>物料明细列表</returns>
    public List<MesItemTblDetail> GetMesItemTblDetailByBillNo(
        WarehouseQuery query)
    {
        // 关联查询物料表、物料明细表和物料基础信息表
        var mesItemTblDetails = Db
            .Queryable<MesItemTbl, MesItemTblDetail, MesItems>(
                (a, b, c) => new JoinQueryInfos(
@@ -35,25 +48,32 @@
                BillNo = a.BillNo,
                Tlid = b.Tlid,
                Tlmid = b.Tlmid,
                Tld005 = b.Tld005 ?? 0,
                Tld006 = b.Tld006 ?? 0,
                Tld005 = b.Tld005 ?? 0,  // 待退数量
                Tld006 = b.Tld006 ?? 0,  // 已退数量
                Tld009 = b.Tld009,
                ItemNo = c.ItemNo,
                ItemName = c.ItemName,
                ItemModel = c.ItemModel
                ItemNo = c.ItemNo,        // 物料编号
                ItemName = c.ItemName,    // 物料名称
                ItemModel = c.ItemModel   // 物料型号
            }).ToList();
        // 筛选出待退数量大于已退数量的记录
        var itemTblDetails = mesItemTblDetails
            .Where(s => (s.Tld005 ?? 0) - (s.Tld006 ?? 0) > 0).ToList();
        return itemTblDetails;
    }
    /// <summary>
    /// 生产退料扫描库位
    /// </summary>
    /// <param name="query">仓库查询参数</param>
    /// <returns>库位信息</returns>
    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))
            .Where((a, b) => a.DepotSectionCode == query.DepotCode)
@@ -70,18 +90,25 @@
        return warehouseQuery;
    }
    /// <summary>
    /// 生产退料扫描条码
    /// </summary>
    /// <param name="query">仓库查询参数</param>
    /// <returns>处理结果</returns>
    public WarehouseQuery SctlScanBarcode(WarehouseQuery query)
    {
        var p_item_barcode = query.barcode;
        var p_bill_no = query.billNo;
        var p_section_code = query.DepotCode;
        var c_user = query.userName;
        var p_item_barcode = query.barcode;      // 物料条码
        var p_bill_no = query.billNo;            // 单据号
        var p_section_code = query.DepotCode;     // 库位编码
        var c_user = query.userName;              // 用户名
        var p_bill_type_id = 100;
        var p_transction_no = 104;
        var p_bill_type_id = 100;                // 单据类型ID
        var p_transction_no = 104;               // 交易编号
        // 验证库位条码
        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))
            .Where((a, b) => a.DepotSectionCode == p_section_code)
@@ -90,18 +117,21 @@
        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))
            .Where((a, b) => b.ItemBarcode == p_item_barcode
@@ -116,6 +146,7 @@
        if (c_num > 0) throw new Exception("此条码已扫入库,勿重复扫描!");
        // 获取条码信息
        var c_mes_inv_item_barcodes = Db.Queryable<MesInvItemBarcodes>()
            .Where(t => t.ItemBarcode == p_item_barcode).First();
@@ -125,6 +156,7 @@
        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();
@@ -133,6 +165,7 @@
        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
                        && a.Tld010 == c_mes_inv_item_barcodes.WorkLine)
@@ -146,8 +179,10 @@
        var c_bill_no = "";
        var c_id = Guid.Empty;
        // 使用事务处理数据更新
        UseTransaction(db =>
        {
            // 查询入库单
            var mesInvItemIns = db.Queryable<MesInvItemIns>()
                .Where(d =>
                    d.Status == 0 && d.TransctionNo ==
@@ -159,6 +194,7 @@
            var totalResult = 0;
            // 如果入库单不存在则创建新的入库单
            if (mesInvItemIns == null)
            {
                c_bill_no = BillNo.GetBillNo("IN(入库单)");
@@ -191,9 +227,11 @@
                c_bill_no = mesInvItemIns.BillNo;
            }
            // 检查是否为合并打印条码
            var hbdy = c_mes_inv_item_barcodes.Hbdy ?? 0;
            if (hbdy == 1) throw new Exception("不支持合并打印的条码:" + p_item_barcode);
            // 插入入库单明细
            totalResult += db.Insertable(new MesInvItemInCDetails
            {
                Guid = Guid.NewGuid(),
@@ -230,6 +268,7 @@
                RbillNo = C_MES_ITEM_TBL.Tbl002
            }).IgnoreColumns(true).ExecuteCommand();
            // 插入业务记录
            totalResult += db.Insertable(new MesInvBusiness2
            {
                Guid = Guid.NewGuid(),
@@ -259,6 +298,7 @@
                ItemId = c_mes_inv_item_barcodes.ItemId
            }).IgnoreColumns(true).ExecuteCommand();
            // 插入库存记录
            totalResult += db.Insertable(new MesInvItemStocks
            {
                Guid = Guid.NewGuid(),