appsettings.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
entity/MesItemQt.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
service/Warehouse/MesItemQtManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
service/Warehouse/MesItemQtrkManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
appsettings.json
@@ -9,7 +9,7 @@ "AppSettings": { "TestErpUrl": "http://192.168.1.149:8066/WebService1.asmx/MesToErpinfoTest", "ProductionErpUrl": "http://192.168.1.149:8066/WebService1.asmx/MesToErpinfoTest", "DataBaseConn": "Data Source=192.168.1.146;Initial Catalog=TEST_MES;User ID=sa;Password =qixi123;Encrypt=True;TrustServerCertificate=True;" //"DataBaseConn": "Data Source=192.168.1.146;Initial Catalog=GS_MES;User ID=sa;Password =qixi123;Encrypt=True;TrustServerCertificate=True;" //"DataBaseConn": "Data Source=192.168.1.146;Initial Catalog=TEST_MES;User ID=sa;Password =qixi123;Encrypt=True;TrustServerCertificate=True;" "DataBaseConn": "Data Source=192.168.1.146;Initial Catalog=GS_MES;User ID=sa;Password =qixi123;Encrypt=True;TrustServerCertificate=True;" } } entity/MesItemQt.cs
@@ -1,149 +1,222 @@ using SqlSugar; using System; namespace NewPdaSqlServer.entity; /// <summary> /// 其他出库申请表 - MES_ITEM_QT /// </summary> [SugarTable("MES_ITEM_QT")] public class MesItemQt { /// <summary> /// 默认值: (newid()) /// 主键Guid /// </summary> [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)] public Guid Guid { get; set; } public Guid Guid { get; set; } = Guid.NewGuid(); /// <summary> /// 申请单号 /// 申请单号 /// </summary> [SugarColumn(ColumnName = "qtck")] public string? Qtck { get; set; } public string Qtck { get; set; } /// <summary> /// 申请日期 /// 申请日期 /// </summary> [SugarColumn(ColumnName = "qt001")] public DateTime? Qt001 { get; set; } public DateTime Qt001 { get; set; } = DateTime.Now; /// <summary> /// 审核日期 /// 审核日期 /// </summary> [SugarColumn(ColumnName = "qt002")] public DateTime? Qt002 { get; set; } /// <summary> /// 出库类别 /// 出库类别 /// </summary> [SugarColumn(ColumnName = "qt003")] public string? Qt003 { get; set; } public string Qt003 { get; set; } /// <summary> /// 业务类型 /// 业务类型 /// </summary> [SugarColumn(ColumnName = "qt004")] public string? Qt004 { get; set; } public string Qt004 { get; set; } /// <summary> /// 制单人 /// 制单人 /// </summary> [SugarColumn(ColumnName = "qt005")] public string? Qt005 { get; set; } public string Qt005 { get; set; } /// <summary> /// 生产工单 /// 生产工单 /// </summary> [SugarColumn(ColumnName = "qt006")] public string? Qt006 { get; set; } public string Qt006 { get; set; } /// <summary> /// 发料仓库id /// 发料仓库ID /// </summary> [SugarColumn(ColumnName = "qt008")] public string? Qt008 { get; set; } public string Qt008 { get; set; } /// <summary> /// 申请部门id /// 领用部门ID /// </summary> [SugarColumn(ColumnName = "qt009")] public string? Qt009 { get; set; } public string Qt009 { get; set; } /// <summary> /// 出库原因 /// 出库原因 /// </summary> [SugarColumn(ColumnName = "qt010")] public string? Qt010 { get; set; } public string Qt010 { get; set; } /// <summary> /// 仓库编码 /// 仓库编码 /// </summary> [SugarColumn(ColumnName = "qt011")] public string? Qt011 { get; set; } public string Qt011 { get; set; } /// <summary> /// 部门编码 /// 部门编码 /// </summary> [SugarColumn(ColumnName = "qt012")] public string? Qt012 { get; set; } public string Qt012 { get; set; } /// <summary> /// 数量 /// 领用客户ID /// </summary> [SugarColumn(ColumnName = "qt013")] public int? Qt013 { get; set; } public int Qt013 { get; set; } /// <summary> /// 完结标识 /// 默认值: ((0)) /// 完结标识,默认0 /// </summary> [SugarColumn(ColumnName = "qt014")] public bool? Qt014 { get; set; } public bool Qt014 { get; set; } = false; /// <summary> /// 审核状态 /// 默认值: ((0)) /// 审核状态,默认0 /// </summary> [SugarColumn(ColumnName = "qt015")] public bool? Qt015 { get; set; } public bool Qt015 { get; set; } = false; /// <summary> /// 审核人 /// 审核人 /// </summary> [SugarColumn(ColumnName = "qt016")] public string? Qt016 { get; set; } public string Qt016 { get; set; } /// <summary> /// 任务单号 /// 任务单号 /// </summary> [SugarColumn(ColumnName = "qt017")] public string? Qt017 { get; set; } public string Qt017 { get; set; } /// <summary> /// 客户 /// 货主 /// </summary> [SugarColumn(ColumnName = "qt018")] public string? Qt018 { get; set; } public string Qt018 { get; set; } /// <summary> /// 出库类型 1盘亏 2包材领用 3研发领用 4办公用品领用 5模具材料领用 6低值易耗品领用 7生产配件 8采购退料 9注塑件不良退料 /// 单据类型: /// 1盘亏 2包材领用 3研发领用 4办公用品领用 5模具材料领用 6低值易耗品领用 7生产配件 8采购退料 9注塑件不良退料 /// </summary> [SugarColumn(ColumnName = "qt019")] public string? Qt019 { get; set; } public string Qt019 { get; set; } /// <summary> /// 出库方向(普通,退货) /// 库存方向(普通,退货) /// </summary> [SugarColumn(ColumnName = "qt020")] public string? Qt020 { get; set; } public string Qt020 { get; set; } /// <summary> /// 销售订单号 /// 销售订单号 /// </summary> [SugarColumn(ColumnName = "qt021")] public string? Qt021 { get; set; } public string Qt021 { get; set; } /// <summary> /// 领料人 /// 领料人 /// </summary> [SugarColumn(ColumnName = "qt022")] public string? Qt022 { get; set; } public string Qt022 { get; set; } /// <summary> /// 库存组织 /// </summary> [SugarColumn(ColumnName = "qt023")] public string Qt023 { get; set; } /// <summary> /// 领用组织 /// </summary> [SugarColumn(ColumnName = "qt024")] public string Qt024 { get; set; } /// <summary> /// 货主类型 /// </summary> [SugarColumn(ColumnName = "qt025")] public string Qt025 { get; set; } /// <summary> /// 是否售后审核 /// </summary> [SugarColumn(ColumnName = "qt026")] public bool? Qt026 { get; set; } /// <summary> /// 售后审核时间 /// </summary> [SugarColumn(ColumnName = "qt027")] public DateTime? Qt027 { get; set; } /// <summary> /// 售后审核人 /// </summary> [SugarColumn(ColumnName = "qt028")] public string Qt028 { get; set; } /// <summary> /// 财务审核 /// </summary> [SugarColumn(ColumnName = "qt029")] public bool? Qt029 { get; set; } /// <summary> /// 财务审核时间 /// </summary> [SugarColumn(ColumnName = "qt030")] public DateTime? Qt030 { get; set; } /// <summary> /// 财务审核人 /// </summary> [SugarColumn(ColumnName = "qt031")] public string Qt031 { get; set; } /// <summary> /// 采购审核 /// </summary> [SugarColumn(ColumnName = "qt032")] public bool? Qt032 { get; set; } /// <summary> /// 采购审核时间 /// </summary> [SugarColumn(ColumnName = "qt033")] public DateTime? Qt033 { get; set; } /// <summary> /// 采购审核人 /// </summary> [SugarColumn(ColumnName = "qt034")] public string Qt034 { get; set; } } service/Warehouse/MesItemQtManager.cs
@@ -1,6 +1,7 @@ using NewPdaSqlServer.DB; using NewPdaSqlServer.Dto.service; using NewPdaSqlServer.entity; using NewPdaSqlServer.entity.Base; using NewPdaSqlServer.util; using SqlSugar; @@ -15,12 +16,15 @@ /// <returns>退料单号列表</returns> public List<string> GetPendingQtList() { return Db.Queryable<MesItemQt>() .Where(it => (it.Qt015 ?? false) == true && (it.Qt014 ?? false) == false) .OrderByDescending(it => it.Qtck) .Select(it => it.Qtck) .ToList(); const string sql = @"SELECT qtck FROM MES_ITEM_QT WHERE qt015 = 1 AND qt026 = 1 AND QT029 = 1 AND qt032 = 1 AND QT014 = 0 "; return Db.Ado.SqlQuery<string>(sql); } /// <summary> @@ -28,7 +32,7 @@ /// </summary> /// <param name="query">仓库查询参数,包含用户名和单据号</param> /// <returns>待处理的退料单明细列表</returns> public List<MesItemQtDatall> GetPendingQtList(WarehouseQuery query) public ProductionPickDto GetPendingQtList(WarehouseQuery query) { // 从查询参数中获取用户名和单据号 var c_User = query.userName; @@ -42,41 +46,44 @@ // 如果未找到退料单,抛出异常 if (mesItemQt == null) throw new Exception($"未查询到此其他入库申请单 {p_bill_no}"); // 检查退料单的审核状态(Qt015),未审核则抛出异常 if (mesItemQt.Qt015 == false) throw new Exception($"其他出库申请单 {p_bill_no} 未审核,请确认!"); //// 检查退料单的审核状态(Qt015),未审核则抛出异常 //if (mesItemQt.Qt015 == false) // throw new Exception($"其他出库申请单 {p_bill_no} 未审核,请确认!"); // 检查退料单的完结状态(Qt014),已完结则抛出异常 if (mesItemQt.Qt014 == true) throw new Exception($"其他出库申请单 {p_bill_no} 已完结,请确认!"); // 联表查询获取未完成的明细列表 // 关联表: // - MesItemQt: 退料单主表(a) // - MesItemQtDatall: 退料单明细表(b) // - MesItems: 物料基础信息表(c) var pendingList = Db.Queryable<MesItemQt, MesItemQtDatall, MesItems>( (a, b, c) => new JoinQueryInfos( JoinType.Left, a.Guid == b.QtGuid, // 主表和明细表通过Guid关联 JoinType.Left, b.ItemId == c.Id.ToString())) // 明细表和物料表通过ItemId关联 .Where((a, b, c) => a.Qtck == p_bill_no && // 匹配单据号 (b.Qd007 ?? 0) - (b.Qd008 ?? 0) > 0) // 计划数量减去已完成数量大于0的记录(即未完成的记录) .OrderBy((a, b, c) => c.ItemNo) // 按物料编号排序 .Select((a, b, c) => new MesItemQtDatall { Qd002 = b.Qd002, // 明细行号 Qt011 = a.Qt011, // 退料原因 ItemNo = c.ItemNo, // 物料编号 Qd007 = b.Qd007 ?? 0, // 计划数量 Qd008 = b.Qd008 ?? 0 // 已完成数量 }) .ToList(); var sql = @"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel, ISNULL(A.qd007,0) FQty,ISNULL(A.qd008,0) SQty,ISNULL(A.qd007,0) - ISNULL(A.qd008,0) DSQty FROM MES_ITEM_QT_DATALL A LEFT JOIN MES_ITEM_QT B ON A.qtGuid = B.guid LEFT JOIN MES_ITEMS C ON A.itemId = C.item_id WHERE B.qtck = @billNo AND (qt015 = 1 AND qt026 =1 AND QT029 = 1 AND qt032 = 1)"; return pendingList; var sqlParams = new List<SugarParameter> { new("@billNo", query.billNo) }; var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql, sqlParams); // 检查退料单的完结状态(Qt014),已完结则抛出异常 if (womdabs.Count < 1) throw new Exception($"该其他出库申请单 {p_bill_no} 未全部审核,请确认!"); var DS_list = womdabs.Where(s => s.DSQty > 0).ToList(); var YS_list = womdabs.Where(s => s.SQty > 0).ToList(); var dto = new ProductionPickDto { //daa001 = womdaa.Daa001, //PlanNo = womcaa.Caa020, items = DS_list, Ysitems = YS_list }; return dto; } public (WarehouseQuery form, List<MesItemQtDatall> item, string message) @@ -135,7 +142,7 @@ // 获取其他出库单信息 var mesItemQt = Db.Queryable<MesItemQt>() .Where(it => it.Qtck == p_bill_no) .Where(it => it.Qtck == p_bill_no && it.Qt015 == true && it.Qt026 == true && it.Qt029 == true && it.Qt032 == true) .First(); if (mesItemQt == null) @@ -435,6 +442,11 @@ query.Num = stock.Quantity; query.Fum = null; // 创建 插入日志 var logService = new LogService(); var LogMsg = "【PDA】其他出库。条码【" + query.barcode + "】数量【"+ stock.Quantity.ToString() + "】 出库单号【" + outNo + "】"; logService.CreateLog(db, query.userName, mesItemQt.Guid.ToString(), "MES_ITEM_QT", LogMsg, mesItemQt.Qtck); if (commit < 5) throw new Exception("更新失败"); return commit; service/Warehouse/MesItemQtrkManager.cs
@@ -12,10 +12,17 @@ { public List<string> GetQtckList() { return Db.Queryable<MesItemQtrk>() .Where(x => (x.Qt015 ?? 0) == 1 && (x.Qt014 ?? 0) == 0) .Select(x => x.Qtck) .ToList(); //return Db.Queryable<MesItemQtrk>() // .Where(x => (x.Qt015 ?? 0) == 1 && (x.Qt014 ?? 0) == 0) // .Select(x => x.Qtck) // .ToList(); const string sql = @"SELECT qtck FROM MES_ITEM_QTRK WHERE QT015 = 1 AND QT028 = 1 AND QT032 = 1 AND QT014 = 0 "; return Db.Ado.SqlQuery<string>(sql); } public ProductionPickDto GetQtckDetailList(WarehouseQuery query) @@ -27,11 +34,11 @@ if (mesInvItemOuts == null) throw new Exception("其他入库申请单不存在"); var sql = @"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel, A.qd007 FQty,A.qd008 SQty,A.qd007 - A.qd008 DSQty ISNULL(A.qd007,0) FQty,ISNULL(A.qd008,0) SQty,ISNULL(A.qd007,0) - ISNULL(A.qd008,0) DSQty FROM MES_ITEM_QTRR_DETAIL A LEFT JOIN MES_ITEM_QTRK B ON A.qtrkGuid = B.guid LEFT JOIN MES_ITEMS C ON A.itemId = C.item_id WHERE B.qtck = @billNo"; WHERE B.qtck = @billNo AND QT015 = 1 AND QT028 = 1 AND QT032 = 1 AND QT014 = 0 "; var sqlParams = new List<SugarParameter> { new("@billNo", query.billNo) @@ -39,6 +46,8 @@ var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql, sqlParams); if (womdabs.Count < 1) throw new Exception($"该其他入库申请单 {query.billNo} 未全部审核或已完结,请确认!"); var DS_list = womdabs.Where(s => s.DSQty > 0).ToList(); @@ -458,6 +467,11 @@ .Where(x => x.Qtck == p_bill_no) .ExecuteCommand(); // 创建 插入日志 var logService = new LogService(); var LogMsg = "【PDA】其他入库。条码【" + query.barcode + "】数量【" + barcode.Quantity.ToString() + "】 入库单号【" + billNo + "】"; logService.CreateLog(db, query.userName, qtrk.Guid.ToString(), "MES_ITEM_QTRK", LogMsg, qtrk.Qtck); if (res < 5) throw new Exception("插入或更新失败"); return res;