zjh
2025-08-02 661e24b717604dfc5c0f1c6385931943c2a9192e
代码提交
已修改4个文件
已添加16个文件
3002 ■■■■■ 文件已修改
StandardPda/MES.Service/DB/OracleSQLHelper.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Dto/service/AsnInfo.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Dto/service/MesItemQtDto.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Dto/service/MesItemQtFrom.cs 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Dto/service/MesItemQtList.cs 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Dto/service/MesItemQtRKDto.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Dto/service/MesItemQtRKFrom.cs 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Dto/service/MesItemQtRKList.cs 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Dto/service/MesMiddleBox.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Dto/service/MesPalletBinding.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Modes/MesItemQt.cs 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Modes/MesItemQtDatall.cs 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Modes/MesItemQtrk.cs 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/Modes/MesItemQtrrDetail.cs 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/service/Warehouse/MesItemQtManager.cs 430 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/service/Warehouse/MesItemQtrkManager.cs 424 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/service/Warehouse/WomdaaManager.cs 281 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MESApplication/Controllers/Warehouse/MesItemQtController.cs 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MESApplication/Controllers/Warehouse/MesItemQtrkController.cs 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MESApplication/Controllers/Warehouse/womdaaController.cs 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StandardPda/MES.Service/DB/OracleSQLHelper.cs
@@ -228,4 +228,23 @@
    //     }
    //     return result;
    // }
    // æ‰“开连接并开启事务
    public (OracleConnection, OracleTransaction) BeginTransaction()
    {
        var connection = new OracleConnection(_connectionString);
        connection.Open();
        var transaction = connection.BeginTransaction();
        return (connection, transaction);
    }
    // å…³é—­è¿žæŽ¥ï¼ˆæäº¤æˆ–回滚后用)
    public void CloseConnection(OracleConnection connection)
    {
        if (connection != null && connection.State != ConnectionState.Closed)
        {
            connection.Close();
            connection.Dispose();
        }
    }
}
StandardPda/MES.Service/Dto/service/AsnInfo.cs
@@ -19,6 +19,44 @@
        /// </summary>
        public string snState { get; set; }
        /// <summary>
        /// äº§æµ‹ç™»é™†å·
        /// </summary>
        public string loginId { get; set; }
        /// <summary>
        /// å¤±è´¥é¡¹ç›®
        /// </summary>
        public List<CcFailItems> failItems { get; set; }
    }
    /// <summary>
    /// äº§æµ‹SN失败项明细表
    /// </summary>
    public class CcFailItems
    {
        /// <summary>
        /// ä¸è‰¯é—®é¢˜
        /// </summary>
        public string DefectIssue { get; set; }
        /// <summary>
        /// åˆæ­¥åŽŸå› 
        /// </summary>
        public string RootCause { get; set; }
        /// <summary>
        /// ç»´ä¿®æ–¹æ¡ˆ/方法
        /// </summary>
        public string RepairMethod { get; set; }
        /// <summary>
        /// ä¸è‰¯ç‰©æ–™å¤„理
        /// </summary>
        public string MaterialHandling { get; set; }
    }
}
StandardPda/MES.Service/Dto/service/MesItemQtDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
namespace MES.Service.Dto.service
{
    public class MesItemQtDto
    {
        public MesItemQtFrom from { get; set; }
        public List<MesItemQtList> items { get; set; }
    }
}
StandardPda/MES.Service/Dto/service/MesItemQtFrom.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,193 @@
namespace MES.Service.Dto.service
{
    public class MesItemQtFrom
    {
        public string Type { get; set; }
        /// <summary>
        /// ç”³è¯·å•号
        /// </summary>
        public string ApplyNumber { get; set; }
        /// <summary>
        /// ç”³è¯·æ—¥æœŸ
        /// </summary>
        public DateTime? ApplyDate { get; set; }
        /// <summary>
        /// å®¡æ ¸æ—¥æœŸ
        /// </summary>
        public DateTime? AuditDate { get; set; }
        /// <summary>
        /// å•据类型
        /// </summary>
        public string DocumentType { get; set; }
        /// <summary>
        /// ä¸šåŠ¡ç±»åž‹
        /// </summary>
        public string BusinessType { get; set; }
        /// <summary>
        /// åˆ¶å•人
        /// </summary>
        public string CreatedBy { get; set; }
        /// <summary>
        /// ç”Ÿäº§å·¥å•
        /// </summary>
        public string WorkOrder { get; set; }
        /// <summary>
        /// å‘料仓库
        /// </summary>
        public string FromWarehouse { get; set; }
        /// <summary>
        /// ç”³è¯·éƒ¨é—¨
        /// </summary>
        public string ApplyDept { get; set; }
        /// <summary>
        /// å‡ºåº“类型
        /// </summary>
        public string StockOutType { get; set; }
        /// <summary>
        /// ä»“库编码
        /// </summary>
        public string WarehouseCode { get; set; }
        /// <summary>
        /// éƒ¨é—¨ç¼–码
        /// </summary>
        public string DeptCode { get; set; }
        /// <summary>
        /// å‡ºåº“数量
        /// </summary>
        public decimal Quantity { get; set; }
        /// <summary>
        /// å®¡æ ¸äºº
        /// </summary>
        public string Auditor { get; set; }
        /// <summary>
        /// ä»»åŠ¡å•å·
        /// </summary>
        public string TaskNumber { get; set; }
        /// <summary>
        /// ä¾›åº”商编码
        /// </summary>
        public string SupplierCode { get; set; }
        /// <summary>
        /// å‡ºåº“方向(退货,普通)
        /// </summary>
        public string Direction { get; set; }
        /// <summary>
        /// è´§ä¸»ç±»åž‹
        /// </summary>
        public string OwnerType { get; set; }
        /// <summary>
        /// å‡ºåº“原因
        /// </summary>
        public string Reason { get; set; }
        /// <summary>
        /// å®¢æˆ·ç¼–码
        /// </summary>
        public string CustomerCode { get; set; }
        /// <summary>
        /// é¢†æ–™äºº
        /// </summary>
        public string Receiver { get; set; }
        /// <summary>
        /// éƒ¨é—¨
        /// </summary>
        public string Department { get; set; }
        /// <summary>
        /// åº“管员
        /// </summary>
        public string StockKeeper { get; set; }
        /// <summary>
        /// æ¥æºç±»åˆ«
        /// </summary>
        public string SourceType { get; set; }
        /// <summary>
        /// æ¥æºå•据
        /// </summary>
        public string SourceDocument { get; set; }
        /// <summary>
        /// ç”Ÿäº§ç›¸å…³
        /// </summary>
        public string ProductionRelated { get; set; }
        /// <summary>
        /// ç”Ÿäº§çº¿æ—¥è®¡åˆ’
        /// </summary>
        public string ProductionLine { get; set; }
        /// <summary>
        /// ç”Ÿäº§æ´»åЍ
        /// </summary>
        public string ProductionActivity { get; set; }
        /// <summary>
        /// äº§æˆå“
        /// </summary>
        public string FinishedGoods { get; set; }
        /// <summary>
        /// é€†å‘登账
        /// </summary>
        public string ReversePosting { get; set; }
        /// <summary>
        /// è®°è´¦æœŸé—´
        /// </summary>
        public string AccountingPeriod { get; set; }
        /// <summary>
        /// å‘˜å·¥
        /// </summary>
        public string Employee { get; set; }
        /// <summary>
        /// å‡é€€æ–™
        /// </summary>
        public string FalseReturn { get; set; }
        /// <summary>
        /// é¡¹ç›®
        /// </summary>
        public string ProjectCode { get; set; }
        /// <summary>
        /// ä»»åŠ¡
        /// </summary>
        public string TaskCode { get; set; }
        /// <summary>
        /// çŠ¶æ€
        /// </summary>
        public string Status { get; set; }
        /// <summary>
        /// è´§ä¸»ç»„织
        /// </summary>
        public string OwnerOrganization { get; set; }
    }
}
StandardPda/MES.Service/Dto/service/MesItemQtList.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,99 @@
namespace MES.Service.Dto.service
{
    public class MesItemQtList
    {
        /// <summary>
        /// ç‰©æ–™ç¼–号
        /// </summary>
        public string ItemId { get; set; }
        /// <summary>
        /// è®¡åˆ’数量
        /// </summary>
        public decimal PlannedQuantity { get; set; }
        /// <summary>
        /// ç”³è¯·æ•°é‡
        /// </summary>
        public decimal AppliedQuantity { get; set; }
        /// <summary>
        /// å¤‡æ³¨è¯´æ˜Ž
        /// </summary>
        public string Remark { get; set; }
        /// <summary>
        /// è¡Œå·(物料顺序)
        /// </summary>
        public int? LineNumber { get; set; }
        /// <summary>
        /// ç”Ÿäº§ç›¸å…³
        /// </summary>
        public string ProductionRelated { get; set; }
        /// <summary>
        /// å­˜å‚¨ç±»åž‹
        /// </summary>
        public string StorageType { get; set; }
        /// <summary>
        /// è´§ä¸»ç»„织
        /// </summary>
        public string OwnerOrganization { get; set; }
        /// <summary>
        /// å­˜å‚¨åœ°ç‚¹
        /// </summary>
        public string StorageLocation { get; set; }
        /// <summary>
        /// ä¾›åº”商编码
        /// </summary>
        public string SupplierCode { get; set; }
        /// <summary>
        /// å®¢æˆ·ç¼–码
        /// </summary>
        public string CustomerCode { get; set; }
        /// <summary>
        /// å…³è”项目编码
        /// </summary>
        public string ProjectCode { get; set; }
        /// <summary>
        /// å…³è”任务编码
        /// </summary>
        public string TaskCode { get; set; }
        /// <summary>
        /// ç”Ÿäº§è®¢å•号
        /// </summary>
        public string ProductionOrder { get; set; }
        /// <summary>
        /// ç”Ÿäº§çº¿æ—¥è®¡åˆ’编号
        /// </summary>
        public string DailyPlan { get; set; }
        /// <summary>
        /// ç”Ÿäº§æ´»åЍ
        /// </summary>
        public string ProductionActivity { get; set; }
        /// <summary>
        /// äº§æˆå“ç¼–码
        /// </summary>
        public string FinishedProduct { get; set; }
        /// <summary>
        /// é¢†æ–™ç”¨é€”
        /// </summary>
        public string PickingUsage { get; set; }
    }
}
StandardPda/MES.Service/Dto/service/MesItemQtRKDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
namespace MES.Service.Dto.service
{
    public class MesItemQtRKDto
    {
        public MesItemQtRKFrom from { get; set; }
        public List<MesItemQtRKList> items { get; set; }
    }
}
StandardPda/MES.Service/Dto/service/MesItemQtRKFrom.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,188 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MES.Service.Dto.service
{
    public class MesItemQtRKFrom
    {
        public string Type { get; set; }
        /// <summary>
        /// ç”³è¯·å•号
        /// </summary>
        public string ApplyNumber { get; set; }
        /// <summary>
        /// ç”³è¯·æ—¥æœŸ
        /// </summary>
        public DateTime? ApplyDate { get; set; }
        /// <summary>
        /// å®¡æ ¸æ—¥æœŸ
        /// </summary>
        public DateTime? AuditDate { get; set; }
        /// <summary>
        /// å•据类型
        /// </summary>
        public string DocumentType { get; set; }
        /// <summary>
        /// å…¥åº“类型
        /// </summary>
        public string StockInType { get; set; }
        /// <summary>
        /// åˆ¶å•人
        /// </summary>
        public string CreatedBy { get; set; }
        /// <summary>
        /// ç”Ÿäº§å·¥å•
        /// </summary>
        public string WorkOrder { get; set; }
        /// <summary>
        /// å‘料仓库
        /// </summary>
        public string FromWarehouse { get; set; }
        /// <summary>
        /// ç”³è¯·éƒ¨é—¨
        /// </summary>
        public string ApplyDept { get; set; }
        /// <summary>
        /// å…¥åº“原因
        /// </summary>
        public string Reason { get; set; }
        /// <summary>
        /// ä»“库编码
        /// </summary>
        public string WarehouseCode { get; set; }
        /// <summary>
        /// éƒ¨é—¨ç¼–码
        /// </summary>
        public string DeptCode { get; set; }
        /// <summary>
        /// å®¡æ ¸äºº
        /// </summary>
        public string Auditor { get; set; }
        /// <summary>
        /// ä»»åŠ¡å•å·
        /// </summary>
        public string TaskNumber { get; set; }
        /// <summary>
        /// ä¾›åº”商编码
        /// </summary>
        public string SupplierCode { get; set; }
        /// <summary>
        /// å…¥åº“方向(退货,普通)
        /// </summary>
        public string Direction { get; set; }
        /// <summary>
        /// è´§ä¸»ç±»åž‹(组织、供应商、客户)
        /// </summary>
        public string OwnerType { get; set; }
        /// <summary>
        /// å®¢æˆ·
        /// </summary>
        public string CustomerCode { get; set; }
        /// <summary>
        /// å…¥åº“人
        /// </summary>
        public string Receiver { get; set; }
        /// <summary>
        /// éƒ¨é—¨
        /// </summary>
        public string Department { get; set; }
        /// <summary>
        /// åº“管员
        /// </summary>
        public string StockKeeper { get; set; }
        /// <summary>
        /// æ¥æºç±»åˆ«
        /// </summary>
        public string SourceType { get; set; }
        /// <summary>
        /// æ¥æºå•据
        /// </summary>
        public string SourceDocument { get; set; }
        /// <summary>
        /// ç”Ÿäº§ç›¸å…³
        /// </summary>
        public string ProductionRelated { get; set; }
        /// <summary>
        /// ç”Ÿäº§çº¿æ—¥è®¡åˆ’
        /// </summary>
        public string ProductionLine { get; set; }
        /// <summary>
        /// ç”Ÿäº§æ´»åЍ
        /// </summary>
        public string ProductionActivity { get; set; }
        /// <summary>
        /// äº§æˆå“
        /// </summary>
        public string FinishedGoods { get; set; }
        /// <summary>
        /// é€†å‘登账
        /// </summary>
        public string ReversePosting { get; set; }
        /// <summary>
        /// è®°è´¦æœŸé—´
        /// </summary>
        public string AccountingPeriod { get; set; }
        /// <summary>
        /// å‘˜å·¥
        /// </summary>
        public string Employee { get; set; }
        /// <summary>
        /// å‡é€€æ–™
        /// </summary>
        public string FalseReturn { get; set; }
        /// <summary>
        /// é¡¹ç›®
        /// </summary>
        public string ProjectCode { get; set; }
        /// <summary>
        /// ä»»åŠ¡
        /// </summary>
        public string TaskCode { get; set; }
        /// <summary>
        /// çŠ¶æ€
        /// </summary>
        public string Status { get; set; }
        /// <summary>
        /// è´§ä¸»ç»„织
        /// </summary>
        public string OwnerOrganization { get; set; }
    }
}
StandardPda/MES.Service/Dto/service/MesItemQtRKList.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,103 @@
namespace MES.Service.Dto.service
{
    public class MesItemQtRKList
    {
        /// <summary>
        /// ç‰©æ–™ç¼–号
        /// </summary>
        public string ItemId { get; set; }
        /// <summary>
        /// è®¡åˆ’数量
        /// </summary>
        public decimal PlannedQuantity { get; set; }
        /// <summary>
        /// ç”³è¯·æ•°é‡
        /// </summary>
        public decimal AppliedQuantity { get; set; }
        /// <summary>
        /// å·²å…¥åº“数量(默认值:0)
        /// </summary>
        public decimal ReceivedQuantity { get; set; } = 0;
        /// <summary>
        /// å¤‡æ³¨è¯´æ˜Ž
        /// </summary>
        public string Remark { get; set; }
        /// <summary>
        /// è¡Œå·(物料顺序)
        /// </summary>
        public int? LineNumber { get; set; }
        /// <summary>
        /// ç”Ÿäº§ç›¸å…³
        /// </summary>
        public string ProductionRelated { get; set; }
        /// <summary>
        /// å­˜å‚¨ç±»åž‹
        /// </summary>
        public string StorageType { get; set; }
        /// <summary>
        /// è´§ä¸»ç»„织
        /// </summary>
        public string OwnerOrganization { get; set; }
        /// <summary>
        /// å­˜å‚¨åœ°ç‚¹
        /// </summary>
        public string StorageLocation { get; set; }
        /// <summary>
        /// ä¾›åº”商编码
        /// </summary>
        public string SupplierCode { get; set; }
        /// <summary>
        /// å®¢æˆ·ç¼–码
        /// </summary>
        public string CustomerCode { get; set; }
        /// <summary>
        /// å…³è”项目编码
        /// </summary>
        public string ProjectCode { get; set; }
        /// <summary>
        /// å…³è”任务编码
        /// </summary>
        public string TaskCode { get; set; }
        /// <summary>
        /// ç”Ÿäº§è®¢å•号
        /// </summary>
        public string ProductionOrder { get; set; }
        /// <summary>
        /// ç”Ÿäº§çº¿æ—¥è®¡åˆ’编号
        /// </summary>
        public string DailyPlan { get; set; }
        /// <summary>
        /// ç”Ÿäº§æ´»åЍ
        /// </summary>
        public string ProductionActivity { get; set; }
        /// <summary>
        /// äº§æˆå“ç¼–码
        /// </summary>
        public string FinishedProduct { get; set; }
    }
}
StandardPda/MES.Service/Dto/service/MesMiddleBox.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
namespace MES.Service.Dto.service
{
    /// <summary>
    /// ä¸­ç®±ç è¡¨
    /// </summary>
    public class MesMiddleBox
    {
        /// <summary>
        /// ç±»åž‹ï¼ˆæ“ä½œï¼šA绑定,F解绑)
        /// </summary>
        public string type { get; set; }
        /// <summary>
        /// ä¸­ç®±ç 
        /// </summary>
        public string MediumBoxCode { get; set; }
        /// <summary>
        /// ç™»å½•号
        /// </summary>
        public string LoginId { get; set; }
        /// <summary>
        /// sn列表
        /// </summary>
       public List<snList> SnList { get; set; }
        public class snList
        {
            /// <summary>
            /// SN号
            /// </summary>
            public string SnNo { get; set; }
            /// <summary>
            /// å·¥å•单号
            /// </summary>
            public string TicketNo { get; set; }
        }
    }
}
StandardPda/MES.Service/Dto/service/MesPalletBinding.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
namespace MES.Service.Dto.service
{
    /// <summary>
    /// æ ˆæ¿ç»‘定表
    /// </summary>
    public class MesPalletBinding
    {
        /// <summary>
        /// æ“ä½œï¼šA绑定,F解绑
        /// </summary>
        public string Type { get; set; }
        /// <summary>
        /// æ ˆæ¿ç 
        /// </summary>
        public string StackCode { get; set; }
        /// <summary>
        /// ç™»å½•号
        /// </summary>
        public string LoginId { get; set; }
        /// <summary>
        /// sn列表
        /// </summary>
        public List<snList1> SnList { get; set; }
        public class snList1
        {
            /// <summary>
            /// SN号
            /// </summary>
            public string SnNo { get; set; }
            /// <summary>
            /// å·¥å•单号
            /// </summary>
            public string TicketNo { get; set; }
            /// <summary>
            /// ä¸­ç®±ç 
            /// </summary>
            public string MediumBoxCode { get; set; }
        }
    }
}
StandardPda/MES.Service/Modes/MesItemQt.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,171 @@
using SqlSugar;
using System;
using System.ComponentModel;
namespace MES.Service.Modes
{
    [SugarTable("MES_ITEM_QT")]
    public class MesItemQt
    {
        [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
        [Description("ID")]
        public decimal Id { get; set; }
        [SugarColumn(ColumnName = "QTCK" )]
        [Description("申请单号")]
        public string Qtck { get; set; }
        [SugarColumn(ColumnName = "QT001")]
        [Description("申请日期")]
        public DateTime? Qt001 { get; set; }
        [SugarColumn(ColumnName = "QT002")]
        [Description("审核日期")]
        public DateTime? Qt002 { get; set; }
        [SugarColumn(ColumnName = "QT003")]
        [Description("单据类型")]
        public string Qt003 { get; set; }
        [SugarColumn(ColumnName = "QT004")]
        [Description("业务类型")]
        public string Qt004 { get; set; }
        [SugarColumn(ColumnName = "QT005")]
        [Description("制单人")]
        public string Qt005 { get; set; }
        [SugarColumn(ColumnName = "QT006")]
        [Description("生产工单")]
        public string Qt006 { get; set; }
        [SugarColumn(ColumnName = "QT008")]
        [Description("发料仓库")]
        public string Qt008 { get; set; }
        [SugarColumn(ColumnName = "QT009")]
        [Description("申请部门")]
        public string Qt009 { get; set; }
        [SugarColumn(ColumnName = "QT010")]
        [Description("出库类型")]
        public string Qt010 { get; set; }
        [SugarColumn(ColumnName = "QT011")]
        [Description("仓库编码")]
        public string Qt011 { get; set; }
        [SugarColumn(ColumnName = "QT012")]
        [Description("部门编码")]
        public string Qt012 { get; set; }
        [SugarColumn(ColumnName = "QT013")]
        [Description("数量")]
        public decimal? Qt013 { get; set; }
        [SugarColumn(ColumnName = "QT014", DefaultValue = "0")]
        [Description("完结标识")]
        public decimal Qt014 { get; set; } = 0;
        [SugarColumn(ColumnName = "QT015", DefaultValue = "0")]
        [Description("审核状态")]
        public decimal Qt015 { get; set; } = 0;
        [SugarColumn(ColumnName = "QT016")]
        [Description("审核人")]
        public string Qt016 { get; set; }
        [SugarColumn(ColumnName = "QT017")]
        [Description("任务单号")]
        public string Qt017 { get; set; }
        [SugarColumn(ColumnName = "QT018")]
        [Description("供应商编码")]
        public string Qt018 { get; set; }
        [SugarColumn(ColumnName = "QT019")]
        [Description("出库方向(退货,普通)")]
        public string Qt019 { get; set; }
        [SugarColumn(ColumnName = "QT020")]
        [Description("货主类型")]
        public string Qt020 { get; set; }
        [SugarColumn(ColumnName = "CUSTOMER_CODE")]
        [Description("客户")]
        public string CustomerCode { get; set; }
        [SugarColumn(ColumnName = "REMARK")]
        [Description("出库原因")]
        public string Remark { get; set; }
        [SugarColumn(ColumnName = "QT021")]
        [Description("客户编码")]
        public string Qt021 { get; set; }
        [SugarColumn(ColumnName = "DEPARTMENT")]
        [Description("部门")]
        public string Department { get; set; }
        [SugarColumn(ColumnName = "STOCK_KEEPER")]
        [Description("库管员")]
        public string StockKeeper { get; set; }
        [SugarColumn(ColumnName = "SOURCE_TYPE")]
        [Description("来源类别")]
        public string SourceType { get; set; }
        [SugarColumn(ColumnName = "SOURCE_DOCUMENT")]
        [Description("来源单据")]
        public string SourceDocument { get; set; }
        [SugarColumn(ColumnName = "PRODUCTION_RELATED")]
        [Description("生产相关")]
        public string ProductionRelated { get; set; }
        [SugarColumn(ColumnName = "PRODUCTION_LINE")]
        [Description("生产线日计划")]
        public string ProductionLine { get; set; }
        [SugarColumn(ColumnName = "PRODUCTION_ACTIVITY")]
        [Description("生产活动")]
        public string ProductionActivity { get; set; }
        [SugarColumn(ColumnName = "FINISHED_GOODS")]
        [Description("产成品")]
        public string FinishedGoods { get; set; }
        [SugarColumn(ColumnName = "REVERSE_POSTING")]
        [Description("逆向登账")]
        public string ReversePosting { get; set; }
        [SugarColumn(ColumnName = "ACCOUNTING_PERIOD")]
        [Description("记账期间")]
        public string AccountingPeriod { get; set; }
        [SugarColumn(ColumnName = "EMPLOYEE")]
        [Description("员工")]
        public string Employee { get; set; }
        [SugarColumn(ColumnName = "FALSE_RETURN")]
        [Description("假退料")]
        public string FalseReturn { get; set; }
        [SugarColumn(ColumnName = "PROJECT_CODE")]
        [Description("项目")]
        public string ProjectCode { get; set; }
        [SugarColumn(ColumnName = "TASK_CODE")]
        [Description("任务")]
        public string TaskCode { get; set; }
        [SugarColumn(ColumnName = "STATUS")]
        [Description("状态")]
        public string Status { get; set; }
        [SugarColumn(ColumnName = "OWNER_ORGANIZATION")]
        [Description("货主组织")]
        public string OwnerOrganization { get; set; }
        [SugarColumn(ColumnName = "RECEIVER")]
        [Description("出库人")]
        public string Receiver { get; set; }
    }
}
StandardPda/MES.Service/Modes/MesItemQtDatall.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,122 @@
using SqlSugar;
using System.ComponentModel;
namespace MES.Service.Modes
{
    [SugarTable("MES_ITEM_QT_DATALL")]
    public class MesItemQtDatall
    {
        [SugarColumn(ColumnName = "ID", IsPrimaryKey = true, OracleSequenceName = "SEQ_QTCKD")]
        [Description("ID")]
        public decimal Id { get; set; }
        [SugarColumn(ColumnName = "MID")]
        [Description("MID")]
        public decimal Mid { get; set; }
        [SugarColumn(ColumnName = "QD001")]
        [Description("工单号")]
        public string Qd001 { get; set; }
        [SugarColumn(ColumnName = "QD002")]
        [Description("物料编号")]
        public string Qd002 { get; set; }
        [SugarColumn(ColumnName = "QD003")]
        [Description("物料名称")]
        public string Qd003 { get; set; }
        [SugarColumn(ColumnName = "QD004")]
        [Description("规格型号")]
        public string Qd004 { get; set; }
        [SugarColumn(ColumnName = "QD005")]
        [Description("颜色")]
        public string Qd005 { get; set; }
        [SugarColumn(ColumnName = "QD006")]
        [Description("计划数量")]
        public decimal? Qd006 { get; set; }
        [SugarColumn(ColumnName = "QD007")]
        [Description("申请数量")]
        public decimal? Qd007 { get; set; }
        [SugarColumn(ColumnName = "QD008", DefaultValue = "0")]
        [Description("已领数量")]
        public decimal Qd008 { get; set; } = 0;
        [SugarColumn(ColumnName = "QD009")]
        [Description("单位")]
        public string Qd009 { get; set; }
        [SugarColumn(ColumnName = "QD010")]
        [Description("备注")]
        public string Qd010 { get; set; }
        [SugarColumn(ColumnName = "QD011", DefaultValue = "0")]
        [Description("完结标识")]
        public decimal Qd011 { get; set; } = 0;
        [SugarColumn(ColumnName = "QD012")]
        [Description("物料内码")]
        public decimal? Qd012 { get; set; }
        /* æ–°å¢žå­—段 */
        [SugarColumn(ColumnName = "LINE_NUMBER")]
        [Description("行号(物料顺序)")]
        public int? LineNumber { get; set; }
        [SugarColumn(ColumnName = "PRODUCTION_RELATED")]
        [Description("生产相关")]
        public string ProductionRelated { get; set; }
        [SugarColumn(ColumnName = "STORAGE_TYPE")]
        [Description("存储类型")]
        public string StorageType { get; set; }
        [SugarColumn(ColumnName = "OWNER_ORGANIZATION")]
        [Description("货主组织")]
        public string OwnerOrganization { get; set; }
        [SugarColumn(ColumnName = "STORAGE_LOCATION")]
        [Description("存储地点")]
        public string StorageLocation { get; set; }
        [SugarColumn(ColumnName = "SUPPLIER_CODE")]
        [Description("供应商编码")]
        public string SupplierCode { get; set; }
        [SugarColumn(ColumnName = "CUSTOMER_CODE")]
        [Description("客户编码")]
        public string CustomerCode { get; set; }
        [SugarColumn(ColumnName = "PROJECT_CODE")]
        [Description("关联项目编码")]
        public string ProjectCode { get; set; }
        [SugarColumn(ColumnName = "TASK_CODE")]
        [Description("关联任务编码")]
        public string TaskCode { get; set; }
        [SugarColumn(ColumnName = "PRODUCTION_ORDER")]
        [Description("生产订单号")]
        public string ProductionOrder { get; set; }
        [SugarColumn(ColumnName = "DAILY_PLAN")]
        [Description("生产线日计划编号")]
        public string DailyPlan { get; set; }
        [SugarColumn(ColumnName = "PRODUCTION_ACTIVITY")]
        [Description("生产活动")]
        public string ProductionActivity { get; set; }
        [SugarColumn(ColumnName = "FINISHED_PRODUCT")]
        [Description("产成品编码")]
        public string FinishedProduct { get; set; }
        [SugarColumn(ColumnName = "PICKING_USAGE")]
        [Description("领料用途")]
        public string PickingUsage { get; set; }
    }
}
StandardPda/MES.Service/Modes/MesItemQtrk.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,162 @@
using SqlSugar;
using System;
using System.ComponentModel;
namespace MES.Service.Modes;
    [SugarTable("MES_ITEM_QTRK")]
    public class MesItemQtrk
    {
        [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
        [Description("ID")]
        public decimal Id { get; set; }
        [SugarColumn(ColumnName = "QTCK")]
        [Description("申请单号")]
        public string Qtck { get; set; }
        [SugarColumn(ColumnName = "QT001")]
        [Description("申请日期")]
        public DateTime? Qt001 { get; set; }
        [SugarColumn(ColumnName = "QT002")]
        [Description("审核日期")]
        public DateTime? Qt002 { get; set; }
        [SugarColumn(ColumnName = "QT003")]
        [Description("单据类型")]
        public string Qt003 { get; set; }
        [SugarColumn(ColumnName = "QT004")]
        [Description("入库类型")]
        public string Qt004 { get; set; }
        [SugarColumn(ColumnName = "QT005")]
        [Description("制单人")]
        public string Qt005 { get; set; }
        [SugarColumn(ColumnName = "QT006")]
        [Description("生产工单")]
        public string Qt006 { get; set; }
        [SugarColumn(ColumnName = "QT008")]
        [Description("发料仓库")]
        public string Qt008 { get; set; }
        [SugarColumn(ColumnName = "QT009")]
        [Description("申请部门")]
        public string Qt009 { get; set; }
        [SugarColumn(ColumnName = "QT010", Length = 300)]
        [Description("入库原因")]
        public string Qt010 { get; set; }
        [SugarColumn(ColumnName = "QT011")]
        [Description("仓库编码")]
        public string Qt011 { get; set; }
        [SugarColumn(ColumnName = "QT012")]
        [Description("部门编码")]
        public string Qt012 { get; set; }
        [SugarColumn(ColumnName = "QT014", DefaultValue = "0")]
        [Description("完结标识")]
        public decimal Qt014 { get; set; } = 0;
        [SugarColumn(ColumnName = "QT015", DefaultValue = "0")]
        [Description("审核状态")]
        public decimal Qt015 { get; set; } = 0;
        [SugarColumn(ColumnName = "QT016")]
        [Description("审核人")]
        public string Qt016 { get; set; }
        [SugarColumn(ColumnName = "QT017")]
        [Description("任务单号")]
        public string Qt017 { get; set; }
        [SugarColumn(ColumnName = "QT018", Length = 50)]
        [Description("供应商编码")]
        public string Qt018 { get; set; }
        [SugarColumn(ColumnName = "QT019", Length = 50)]
        [Description("入库方向(退货,普通)")]
        public string Qt019 { get; set; }
        [SugarColumn(ColumnName = "QT020", Length = 50)]
        [Description("货主类型")]
        public string Qt020 { get; set; }
    [SugarColumn(ColumnName = "CUSTOMER_CODE")]
    [Description("客户")]
    public string CustomerCode { get; set; }
    [SugarColumn(ColumnName = "RECEIVER")]
    [Description("入库人")]
    public string Receiver { get; set; }
    [SugarColumn(ColumnName = "DEPARTMENT")]
    [Description("部门")]
    public string Department { get; set; }
    [SugarColumn(ColumnName = "STOCK_KEEPER")]
    [Description("库管员")]
    public string StockKeeper { get; set; }
    [SugarColumn(ColumnName = "SOURCE_TYPE")]
    [Description("来源类别")]
    public string SourceType { get; set; }
    [SugarColumn(ColumnName = "SOURCE_DOCUMENT")]
    [Description("来源单据")]
    public string SourceDocument { get; set; }
    [SugarColumn(ColumnName = "PRODUCTION_RELATED")]
    [Description("生产相关")]
    public string ProductionRelated { get; set; }
    [SugarColumn(ColumnName = "PRODUCTION_LINE")]
    [Description("生产线日计划")]
    public string ProductionLine { get; set; }
    [SugarColumn(ColumnName = "PRODUCTION_ACTIVITY")]
    [Description("生产活动")]
    public string ProductionActivity { get; set; }
    [SugarColumn(ColumnName = "FINISHED_GOODS")]
    [Description("产成品")]
    public string FinishedGoods { get; set; }
    [SugarColumn(ColumnName = "REVERSE_POSTING")]
    [Description("逆向登账")]
    public string ReversePosting { get; set; }
    [SugarColumn(ColumnName = "ACCOUNTING_PERIOD")]
    [Description("记账期间")]
    public string AccountingPeriod { get; set; }
    [SugarColumn(ColumnName = "EMPLOYEE")]
    [Description("员工")]
    public string Employee { get; set; }
    [SugarColumn(ColumnName = "FALSE_RETURN")]
    [Description("假退料")]
    public string FalseReturn { get; set; }
    [SugarColumn(ColumnName = "PROJECT_CODE")]
    [Description("项目")]
    public string ProjectCode { get; set; }
    [SugarColumn(ColumnName = "TASK_CODE")]
    [Description("任务")]
    public string TaskCode { get; set; }
    [SugarColumn(ColumnName = "STATUS")]
    [Description("状态")]
    public string Status { get; set; }
    [SugarColumn(ColumnName = "OWNER_ORGANIZATION")]
    [Description("货主组织")]
    public string OwnerOrganization { get; set; }
}
StandardPda/MES.Service/Modes/MesItemQtrrDetail.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,118 @@
using SqlSugar;
using System.ComponentModel;
namespace MES.Service.Modes;
[SugarTable("MES_ITEM_QTRR_DETAIL")]
    public class MesItemQtrrDetail
    {
        [SugarColumn(ColumnName = "ID", IsPrimaryKey = true, OracleSequenceName = "SEQ_QTRKD")]
        [Description("ID")]
        public decimal Id { get; set; }
        [SugarColumn(ColumnName = "MID")]
        [Description("MID")]
        public decimal Mid { get; set; }
        [SugarColumn(ColumnName = "QD001")]
        [Description("工单号")]
        public string Qd001 { get; set; }
        [SugarColumn(ColumnName = "QD002")]
        [Description("物料编号")]
        public string Qd002 { get; set; }
        [SugarColumn(ColumnName = "QD003")]
        [Description("物料名称")]
        public string Qd003 { get; set; }
        [SugarColumn(ColumnName = "QD004")]
        [Description("规格型号")]
        public string Qd004 { get; set; }
        [SugarColumn(ColumnName = "QD005")]
        [Description("颜色")]
        public string Qd005 { get; set; }
        [SugarColumn(ColumnName = "QD006")]
        [Description("计划数量")]
        public decimal? Qd006 { get; set; }
        [SugarColumn(ColumnName = "QD007")]
        [Description("申请数量")]
        public decimal? Qd007 { get; set; }
        [SugarColumn(ColumnName = "QD008", DefaultValue = "0")]
        [Description("已入数量")]
        public decimal Qd008 { get; set; } = 0;
        [SugarColumn(ColumnName = "QD009", Length = 30)]
        [Description("单位")]
        public string Qd009 { get; set; }
        [SugarColumn(ColumnName = "QD010", Length = 500)]
        [Description("备注")]
        public string Qd010 { get; set; }
        [SugarColumn(ColumnName = "QD011", DefaultValue = "0")]
        [Description("完结标识")]
        public decimal Qd011 { get; set; } = 0;
        [SugarColumn(ColumnName = "QD012")]
        [Description("物料内码")]
        public decimal? Qd012 { get; set; }
    /* æ–°å¢žå­—段 */
    [SugarColumn(ColumnName = "LINE_NUMBER")]
    [Description("行号(物料顺序)")]
    public int? LineNumber { get; set; }
    [SugarColumn(ColumnName = "PRODUCTION_RELATED")]
    [Description("生产相关")]
    public string ProductionRelated { get; set; }
    [SugarColumn(ColumnName = "STORAGE_TYPE")]
    [Description("存储类型")]
    public string StorageType { get; set; }
    [SugarColumn(ColumnName = "OWNER_ORGANIZATION")]
    [Description("货主组织")]
    public string OwnerOrganization { get; set; }
    [SugarColumn(ColumnName = "STORAGE_LOCATION")]
    [Description("存储地点")]
    public string StorageLocation { get; set; }
    [SugarColumn(ColumnName = "SUPPLIER_CODE")]
    [Description("供应商编码")]
    public string SupplierCode { get; set; }
    [SugarColumn(ColumnName = "CUSTOMER_CODE")]
    [Description("客户编码")]
    public string CustomerCode { get; set; }
    [SugarColumn(ColumnName = "PROJECT_CODE")]
    [Description("关联项目编码")]
    public string ProjectCode { get; set; }
    [SugarColumn(ColumnName = "TASK_CODE")]
    [Description("关联任务编码")]
    public string TaskCode { get; set; }
    [SugarColumn(ColumnName = "PRODUCTION_ORDER")]
    [Description("生产订单号")]
    public string ProductionOrder { get; set; }
    [SugarColumn(ColumnName = "DAILY_PLAN")]
    [Description("生产线日计划编号")]
    public string DailyPlan { get; set; }
    [SugarColumn(ColumnName = "PRODUCTION_ACTIVITY")]
    [Description("生产活动")]
    public string ProductionActivity { get; set; }
    [SugarColumn(ColumnName = "FINISHED_PRODUCT")]
    [Description("产成品编码")]
    public string FinishedProduct { get; set; }
}
StandardPda/MES.Service/service/Warehouse/MesItemQtManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,430 @@
using MES.Service.DB;
using MES.Service.Dto.service;
using MES.Service.Modes;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MES.Service.service.Warehouse
{
    public class MesItemQtManager:Repository<MesItemQt>
    {
        public bool MiscellaneousIssues(MesItemQtDto mesItemQtDto)
        {
            var itemQtFrom = mesItemQtDto.from;
            var itemQtLists = mesItemQtDto.items;
            // æ ¹æ®AsnNo和MesNo对明细进行分组
            //var groupedItems = itemOutLists
            //    .GroupBy(item => new { item.AsnNo, item.MesNo, item.SqNo })
            //    .ToList();
            bool result = true;
            //foreach (var group in itemQtRKLists)
            //{
            //if (group.Key.AsnNo == null)
            //{
            //    throw new NotImplementedException("AsnNo不能为空");
            //}
            //if (group.Key.MesNo == null)
            //{
            //    throw new NotImplementedException("入库单单号不能为空");
            //}
            //if (group.Key.SqNo == null)
            //{
            //    throw new NotImplementedException("退货申请单行号不能为空");
            //}
            // åˆ›å»ºä¸€ä¸ªä¸´æ—¶çš„itemOutFrom对象,使用分组的Key作为主要属性
            //var tempItemOutFrom = new ItemOutFrom
            //{
            //    AsnNo = group.Key.AsnNo,
            //    MesNo = group.Key.MesNo,
            //    SqNo = group.Key.SqNo,
            //    // ç»§æ‰¿åŽŸå§‹itemOutFrom的其他属性
            //    RtnNo = itemOutFrom.RtnNo,
            //    Type = itemOutFrom.Type,
            //    CreateBy = itemOutFrom.CreateBy,
            //    FMRMODE = itemOutFrom.FMRMODE,
            //    DepotId = itemOutFrom.DepotId,
            //    SupperId = itemOutFrom.SupperId
            //};
            // æ ¹æ®Type执行不同的逻辑
            switch (itemQtFrom.Type)
            {
                case "1":
                    {
                        var mesInvItemOuts = Db.Queryable<MesItemQt>()
                            .Where(s => s.Qtck == itemQtFrom.ApplyNumber
                            )
                            .Count();
                        if (mesInvItemOuts > 0)
                        {
                            throw new NotImplementedException(
                                itemQtFrom.ApplyNumber +
                                "的杂发申请单已经存在");
                        }
                        // ä¸ºå½“前分组保存数据
                        var groupResult = Save(itemQtFrom, itemQtLists);
                        if (!groupResult)
                        {
                            result = false;
                        }
                        break;
                    }
                case "4":
                    var removeResult = Remove(itemQtFrom);
                    if (!removeResult)
                    {
                        result = false;
                    }
                    break;
                default:
                    result = false;
                    break;
            }
            //}
            return result;
        }
        private bool Save(MesItemQtFrom from, List<MesItemQtList> items)
        {
            //var mesInvItemIns = Db.Queryable<MesInvItemIns>()
            //    .Where(s => s.BillTypeId == 100
            //                && s.TransctionNo == "101"
            //                && s.BillNo == from.MesNo
            //    ).First();
            //if (mesInvItemIns == null)
            //{
            //    throw new NotImplementedException("采购入库不存在");
            //}
            string SuppNo = "";
            if (from.SupplierCode != "" && from.SupplierCode != null)
            {
                var mesLinkU9 = Db.Queryable<MesLinkU9>()
              .Where(s => s.TableType == "MES_SUPPLIER"
                          && s.U9Id == from.SupplierCode).First();
                if (mesLinkU9 == null)
                {
                    throw new NotImplementedException("供应商ID不存在或未同步于U9");
                }
                var mesSupplier = Db.Queryable<MesSupplier>()
                    .Where(s => s.Id == Decimal.Parse(mesLinkU9.MesId))
                    .First();
                if (mesSupplier == null)
                {
                    throw new NotImplementedException("[" + from.SupplierCode +
                                                      "]供应商不存在,请同步给MES");
                }
                SuppNo = mesSupplier.SuppNo;
            }
            var mesDepots = Db.Queryable<MesDepots>()
                .Where(s => s.DepotId == Decimal.Parse(from.FromWarehouse)).First();
            if (mesDepots == null)
            {
                throw new NotImplementedException("[" + from.FromWarehouse +
                                                  "]仓库不存在,请同步给MES");
            }
            var sysDepartment = Db.Queryable<SysDepartment>()
              .Where(s => s.Departmentid == Decimal.Parse(from.ApplyDept)).First();
            if (sysDepartment == null)
            {
                throw new NotImplementedException("[" + from.ApplyDept +
                                                  "]部门不存在,请同步给MES");
            }
            var nextSequenceValue =
                Db.Ado.SqlQuery<decimal>("SELECT SEQ_QTCK.NEXTVAL FROM DUAL")
                    .First();
            // var billCode =
            //     Db.Ado.SqlQuery<string>(
            //             "SELECT GETBILLCODE1('1000', '1000', 'TLSQ') FROM DUAL")
            //         .First();
            //var billCode = from.RtnNo;
            // åˆ›å»ºæ‚发申请单记录
            var MesItemQtrk = new MesItemQt
            {
                Id = nextSequenceValue,
                Qtck = from.ApplyNumber,
                Qt001 = from.Equals(null) ? DateTime.Now : from.ApplyDate,
                Qt002 = from.Equals(null) ? DateTime.Now : from.AuditDate,
                Qt003 = from.DocumentType,
                Qt004 = from.StockOutType,
                Qt005 = from.CreatedBy,
                Qt006 = from.WorkOrder,
                Qt009 = sysDepartment.Departmentname,
                Qt012 = sysDepartment.Departmentcode,
                Qt010 = from.Reason,
                Qt011 = mesDepots.DepotCode,
                Qt008 = mesDepots.DepotName,
                Qt015 = 1,
                Qt016 = from.Auditor,
                Qt017 = from.TaskNumber,
                Qt018 = SuppNo,
                Qt019 = from.Direction,
                Qt020 = from.OwnerType,
                CustomerCode = from.CustomerCode,
                Receiver = from.Receiver,
                Department = from.Department,
                StockKeeper = from.StockKeeper,
                SourceType = from.SourceType,
                SourceDocument = from.SourceDocument,
                ProductionRelated = from.ProductionRelated,
                ProductionLine = from.ProductionLine,
                ProductionActivity = from.ProductionActivity,
                FinishedGoods = from.FinishedGoods,
                ReversePosting = from.ReversePosting,
                AccountingPeriod = from.AccountingPeriod,
                Employee = from.Employee,
                FalseReturn = from.FalseReturn,
                ProjectCode = from.ProjectCode,
                TaskCode = from.TaskCode,
                Status = from.Status,
                OwnerOrganization = from.OwnerOrganization
            };
            // åˆ›å»ºæ‚发申请单行记录
            var mesItemQtDetail = new List<MesItemQtDatall>();
            foreach (var ItemQtRKList in items)
            {
                // æ£€æŸ¥å¿…要字段是否为空
                //if (string.IsNullOrEmpty(itemOutList.SrcDocNo))
                //{
                //    throw new NotImplementedException("采购订单号不能为空");
                //}
                //var mesRohInData = Db.Queryable<MesRohInData>()
                //    .Where(s => s.BillNo == itemOutList.SrcDocNo
                //                && s.OrderLineId == itemOutList.SrcDocLineNo)
                //    .First();
                //if (mesRohInData == null)
                //{
                //    throw new NotImplementedException("采购订单不存在");
                //}
                //var deliveryDetail = Db.Queryable<DeliveryDetail>()
                //    .Where(a => a.Zzasn == from.AsnNo
                //                && Int32.Parse(a.ZzitemId) ==
                //                Int32.Parse(itemOutList.AsnLineNo))
                //    .Count();
                //if (deliveryDetail <= 0)
                //{
                //    throw new NotImplementedException("[" + from.AsnNo + "]的明细行[" +
                //                                      itemOutList.AsnLineNo +
                //                                      "]不存在");
                //}
                var itemIdLinkU9 = Db.Queryable<MesLinkU9>()
                    .Where(s => s.TableType == "MES_ITEMS"
                                && s.U9Id == ItemQtRKList.ItemId).First();
                if (itemIdLinkU9 == null)
                {
                    throw new NotImplementedException("物料ID不存在或未同步于U9");
                }
                var mesItems = Db.Queryable<MesItems>()
                    .Where(s => s.Id == Decimal.Parse(itemIdLinkU9.MesId))
                    .First();
                if (mesItems == null)
                {
                    throw new NotImplementedException("[" + ItemQtRKList.ItemId +
                                                      "]物料不存在,请同步给MES");
                }
                var mesDepot = "";
                if (ItemQtRKList.StorageLocation != null && ItemQtRKList.StorageLocation != null)
                {
                    mesDepots = Db.Queryable<MesDepots>()
                   .Where(s => s.DepotId == Decimal.Parse(ItemQtRKList.StorageLocation)).First();
                    if (mesDepots == null)
                    {
                        throw new NotImplementedException("[" + ItemQtRKList.StorageLocation +
                                                          "]仓库不存在,请同步给MES");
                    }
                    mesDepot = mesDepots.DepotCode;
                }
                string supplierCode = "";
                if (ItemQtRKList.SupplierCode != null && ItemQtRKList.SupplierCode != "")
                {
                    var mesLinkU9 = Db.Queryable<MesLinkU9>()
   .Where(s => s.TableType == "MES_SUPPLIER"
               && s.U9Id == ItemQtRKList.SupplierCode).First();
                    if (mesLinkU9 == null)
                    {
                        throw new NotImplementedException("[" + ItemQtRKList.SupplierCode +
                                                          "]供应商不存在,请同步给MES");
                    }
                    var mesSupplier = Db.Queryable<MesSupplier>()
        .Where(s => s.Id == Decimal.Parse(mesLinkU9.MesId))
        .First();
                    if (mesSupplier == null)
                    {
                        throw new NotImplementedException("[" + ItemQtRKList.SupplierCode +
                                                          "]供应商不存在,请同步给MES");
                    }
                    supplierCode = mesSupplier.SuppNo;
                }
                //var mesInvItemInCItems = Db.Queryable<MesInvItemInCItems>()
                //    .Where(s => s.ItemInId == mesInvItemIns.Id
                //                && s.ItemNo == mesItems.ItemNo
                //                && s.Ebeln == itemOutList.SrcDocNo
                //                && s.EbelnLineNo ==
                //                Decimal.Parse(itemOutList.SrcDocLineNo)
                //                && s.SuppNo == mesSupplier.SuppNo
                //                && Convert.ToInt32(s.ZzitemId) ==
                //                Convert.ToInt32(itemOutList.AsnLineNo)).First();
                //if (mesInvItemInCItems == null)
                //{
                //    throw new NotImplementedException("没有对应的入库明细");
                //}
                // ç¡®ä¿CbillNo不为空
                if (ItemQtRKList.AppliedQuantity <= 0 || ItemQtRKList.AppliedQuantity == null)
                {
                    throw new NotImplementedException("申请数量不能为0或NULL值!");
                }
                mesItemQtDetail.Add(new MesItemQtDatall
                {
                    Mid = nextSequenceValue,
                    Qd002 = mesItems.ItemNo,
                    Qd003 = mesItems.ItemName,
                    Qd004 = mesItems.ItemModel,
                    Qd005 = mesItems.ColorName,
                    Qd006 = ItemQtRKList.PlannedQuantity,
                    Qd007 = ItemQtRKList.AppliedQuantity,
                    Qd008 = 0, // å·²å…¥æ•°é‡é»˜è®¤ä¸º0
                    Qd009 = mesItems.ItemUnit,
                    Qd010 = ItemQtRKList.Remark,
                    Qd012 = mesItems.Id, // ç‰©æ–™å†…码
                    LineNumber = ItemQtRKList.LineNumber,
                    ProductionRelated = ItemQtRKList.ProductionRelated,
                    StorageType = ItemQtRKList.StorageType,
                    OwnerOrganization = ItemQtRKList.OwnerOrganization,
                    StorageLocation = mesDepot,
                    SupplierCode = supplierCode,
                    CustomerCode = ItemQtRKList.CustomerCode,
                    ProjectCode = ItemQtRKList.ProjectCode,
                    TaskCode = ItemQtRKList.TaskCode,
                    ProductionOrder = ItemQtRKList.ProductionOrder,
                    DailyPlan = ItemQtRKList.DailyPlan,
                    ProductionActivity = ItemQtRKList.ProductionActivity,
                    FinishedProduct = ItemQtRKList.FinishedProduct,
                    PickingUsage= ItemQtRKList.PickingUsage
                });
            }
            var outItemCommand = Db.Insertable(mesItemQtDetail)
                .PageSize(1).IgnoreColumnsNull().ExecuteCommand();
            if (outItemCommand <= 0)
            {
                throw new Exception("创建杂发单子表失败");
            }
            // æ’入采购退料单记录
            var insertResult = Db.Insertable(MesItemQtrk).IgnoreColumns(true)
                .ExecuteCommand();
            if (insertResult <= 0)
            {
                throw new Exception("创建杂发单失败");
            }
            return outItemCommand + insertResult >= 2;
        }
        private bool Remove(MesItemQtFrom from)
        {
            // æŸ¥æ‰¾è¦åˆ é™¤çš„æ‚发单
            var mesItemQtrk = Db.Queryable<MesItemQt>()
                .Where(s => s.Qtck == from.ApplyNumber
                           ).ToList();
            if (mesItemQtrk == null || mesItemQtrk.Count == 0)
            {
                throw new NotImplementedException("找不到对应的杂发单: " + from.ApplyNumber);
            }
            // æ£€æŸ¥æ˜¯å¦æœ‰å·²å®¡æ ¸çš„单据,如果存在已审核(Status=1)则不允许删除
            //if (mesInvItemOuts.Any(item => item.Status == 1))
            //{
            //    throw new NotImplementedException("存在已审核的采购退料单,不允许删除");
            //}
            // åˆ é™¤æ‰€æœ‰ç›¸å…³å•据
            foreach (var itemRK in mesItemQtrk)
            {
                // æŸ¥æ‰¾è¦åˆ é™¤çš„æ‚发单明细
                var mesInvItemOutItems = Db.Queryable<MesItemQtDatall>()
                    .Where(s => s.Mid == itemRK.Id)
                    .ToList();
                if (mesInvItemOutItems == null || mesInvItemOutItems.Count == 0)
                {
                    throw new NotImplementedException(
                        $"找不到杂发单[{from.ApplyNumber}]对应的明细");
                }
                // åˆ é™¤æ‚发单明细
                var deleteItemsResult = Db.Deleteable<MesItemQtDatall>()
                    .Where(s => s.Mid == itemRK.Id)
                    .ExecuteCommand();
                if (deleteItemsResult <= 0)
                {
                    throw new Exception($"找不到杂发单[ {from.ApplyNumber}]明细,删除失败");
                }
                // åˆ é™¤æ‚发单
                var deleteResult = Db.Deleteable<MesItemQt>()
                    .Where(s => s.Id == itemRK.Id)
                    .ExecuteCommand();
                if (deleteResult <= 0)
                {
                    throw new Exception($"删除杂发单[{from.ApplyNumber}]失败");
                }
            }
            return true;
        }
    }
}
StandardPda/MES.Service/service/Warehouse/MesItemQtrkManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,424 @@
using Masuit.Tools;
using MES.Service.DB;
using MES.Service.Dto.service;
using MES.Service.Modes;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MES.Service.service.Warehouse
{
    public class MesItemQtrkManager : Repository<MesItemQtrk>
    {
        public bool MiscellaneousReceipts(MesItemQtRKDto mesItemQtRKDto)
        {
            var itemQtRKFrom = mesItemQtRKDto.from;
            var itemQtRKLists = mesItemQtRKDto.items;
            // æ ¹æ®AsnNo和MesNo对明细进行分组
            //var groupedItems = itemOutLists
            //    .GroupBy(item => new { item.AsnNo, item.MesNo, item.SqNo })
            //    .ToList();
            bool result = true;
            //foreach (var group in itemQtRKLists)
            //{
                //if (group.Key.AsnNo == null)
                //{
                //    throw new NotImplementedException("AsnNo不能为空");
                //}
                //if (group.Key.MesNo == null)
                //{
                //    throw new NotImplementedException("入库单单号不能为空");
                //}
                //if (group.Key.SqNo == null)
                //{
                //    throw new NotImplementedException("退货申请单行号不能为空");
                //}
                // åˆ›å»ºä¸€ä¸ªä¸´æ—¶çš„itemOutFrom对象,使用分组的Key作为主要属性
                //var tempItemOutFrom = new ItemOutFrom
                //{
                //    AsnNo = group.Key.AsnNo,
                //    MesNo = group.Key.MesNo,
                //    SqNo = group.Key.SqNo,
                //    // ç»§æ‰¿åŽŸå§‹itemOutFrom的其他属性
                //    RtnNo = itemOutFrom.RtnNo,
                //    Type = itemOutFrom.Type,
                //    CreateBy = itemOutFrom.CreateBy,
                //    FMRMODE = itemOutFrom.FMRMODE,
                //    DepotId = itemOutFrom.DepotId,
                //    SupperId = itemOutFrom.SupperId
                //};
                // æ ¹æ®Type执行不同的逻辑
                switch (itemQtRKFrom.Type)
                {
                    case "1":
                        {
                            var mesInvItemOuts = Db.Queryable<MesItemQtrk>()
                                .Where(s => s.Qtck == itemQtRKFrom.ApplyNumber
                                )
                                .Count();
                            if (mesInvItemOuts > 0)
                            {
                                throw new NotImplementedException(
                                    itemQtRKFrom.ApplyNumber +
                                    "的杂收申请单已经存在");
                            }
                            // ä¸ºå½“前分组保存数据
                            var groupResult = Save(itemQtRKFrom, itemQtRKLists);
                            if (!groupResult)
                            {
                                result = false;
                            }
                            break;
                        }
                    case "4":
                        var removeResult = Remove(itemQtRKFrom);
                        if (!removeResult)
                        {
                            result = false;
                        }
                        break;
                    default:
                        result = false;
                        break;
                }
            //}
            return result;
        }
        private bool Save(MesItemQtRKFrom from, List<MesItemQtRKList> items)
        {
            //var mesInvItemIns = Db.Queryable<MesInvItemIns>()
            //    .Where(s => s.BillTypeId == 100
            //                && s.TransctionNo == "101"
            //                && s.BillNo == from.MesNo
            //    ).First();
            //if (mesInvItemIns == null)
            //{
            //    throw new NotImplementedException("采购入库不存在");
            //}
            string SuppNo = "";
            if (from.SupplierCode!="" && from.SupplierCode!=null)
            {
                var mesLinkU9 = Db.Queryable<MesLinkU9>()
              .Where(s => s.TableType == "MES_SUPPLIER"
                          && s.U9Id == from.SupplierCode).First();
                if (mesLinkU9 == null)
                {
                    throw new NotImplementedException("供应商ID不存在或未同步于U9");
                }
                var mesSupplier = Db.Queryable<MesSupplier>()
                    .Where(s => s.Id == Decimal.Parse(mesLinkU9.MesId))
                    .First();
                if (mesSupplier == null)
                {
                    throw new NotImplementedException("[" + from.SupplierCode +
                                                      "]供应商不存在,请同步给MES");
                }
                SuppNo= mesSupplier.SuppNo;
            }
            var mesDepots = Db.Queryable<MesDepots>()
                .Where(s => s.DepotId == Decimal.Parse(from.FromWarehouse)).First();
            if (mesDepots == null)
            {
                throw new NotImplementedException("[" + from.FromWarehouse +
                                                  "]仓库不存在,请同步给MES");
            }
            var sysDepartment = Db.Queryable<SysDepartment>()
              .Where(s => s.Departmentid == Decimal.Parse(from.ApplyDept)).First();
            if (sysDepartment == null)
            {
                throw new NotImplementedException("[" + from.ApplyDept +
                                                  "]部门不存在,请同步给MES");
            }
            var nextSequenceValue =
                Db.Ado.SqlQuery<decimal>("SELECT SEQ_QTRK.NEXTVAL FROM DUAL")
                    .First();
            // var billCode =
            //     Db.Ado.SqlQuery<string>(
            //             "SELECT GETBILLCODE1('1000', '1000', 'TLSQ') FROM DUAL")
            //         .First();
            //var billCode = from.RtnNo;
            // åˆ›å»ºæ‚收申请单记录
            var MesItemQtrk = new MesItemQtrk
            {
                Id = nextSequenceValue,
                Qtck= from.ApplyNumber,
                Qt001= from.Equals(null) ? DateTime.Now : from.ApplyDate,
                Qt002= from.Equals(null) ? DateTime.Now : from.AuditDate,
                Qt003= from.DocumentType,
                Qt004= from.StockInType,
                Qt005= from.CreatedBy,
                Qt006= from.WorkOrder,
                Qt009= sysDepartment.Departmentname,
                Qt012 = sysDepartment.Departmentcode,
                Qt010 = from.Reason,
                Qt011= mesDepots.DepotCode,
                Qt008 = mesDepots.DepotName,
                Qt015= 1,
                Qt016= from.Auditor,
                Qt017= from.TaskNumber,
                Qt018= SuppNo,
                Qt019= from.Direction,
                Qt020= from.OwnerType,
                CustomerCode= from.CustomerCode,
                Receiver= from.Receiver,
                Department = from.Department,
                StockKeeper=from.StockKeeper,
                SourceType = from.SourceType,
                SourceDocument = from.SourceDocument,
                ProductionRelated = from.ProductionRelated,
                ProductionLine = from.ProductionLine,
                ProductionActivity = from.ProductionActivity,
                FinishedGoods = from.FinishedGoods,
                ReversePosting = from.ReversePosting,
                AccountingPeriod= from.AccountingPeriod,
                Employee= from.Employee,
                FalseReturn = from.FalseReturn,
                ProjectCode = from.ProjectCode,
                TaskCode = from.TaskCode,
                Status=from.Status,
                OwnerOrganization= from.OwnerOrganization
            };
            // åˆ›å»ºæ‚收申请单行记录
            var mesItemQtrrDetail = new List<MesItemQtrrDetail>();
            foreach (var ItemQtRKList in items)
            {
                // æ£€æŸ¥å¿…要字段是否为空
                //if (string.IsNullOrEmpty(itemOutList.SrcDocNo))
                //{
                //    throw new NotImplementedException("采购订单号不能为空");
                //}
                //var mesRohInData = Db.Queryable<MesRohInData>()
                //    .Where(s => s.BillNo == itemOutList.SrcDocNo
                //                && s.OrderLineId == itemOutList.SrcDocLineNo)
                //    .First();
                //if (mesRohInData == null)
                //{
                //    throw new NotImplementedException("采购订单不存在");
                //}
                //var deliveryDetail = Db.Queryable<DeliveryDetail>()
                //    .Where(a => a.Zzasn == from.AsnNo
                //                && Int32.Parse(a.ZzitemId) ==
                //                Int32.Parse(itemOutList.AsnLineNo))
                //    .Count();
                //if (deliveryDetail <= 0)
                //{
                //    throw new NotImplementedException("[" + from.AsnNo + "]的明细行[" +
                //                                      itemOutList.AsnLineNo +
                //                                      "]不存在");
                //}
                var itemIdLinkU9 = Db.Queryable<MesLinkU9>()
                    .Where(s => s.TableType == "MES_ITEMS"
                                && s.U9Id == ItemQtRKList.ItemId).First();
                if (itemIdLinkU9 == null)
                {
                    throw new NotImplementedException("物料ID不存在或未同步于U9");
                }
                var mesItems = Db.Queryable<MesItems>()
                    .Where(s => s.Id == Decimal.Parse(itemIdLinkU9.MesId))
                    .First();
                if (mesItems == null)
                {
                    throw new NotImplementedException("[" + ItemQtRKList.ItemId +
                                                      "]物料不存在,请同步给MES");
                }
                var mesDepot = "";
                if (ItemQtRKList.StorageLocation != null && ItemQtRKList.StorageLocation!=null)
                {
                     mesDepots = Db.Queryable<MesDepots>()
                    .Where(s => s.DepotId == Decimal.Parse(ItemQtRKList.StorageLocation)).First();
                    if (mesDepots == null)
                    {
                        throw new NotImplementedException("[" + ItemQtRKList.StorageLocation +
                                                          "]仓库不存在,请同步给MES");
                    }
                    mesDepot = mesDepots.DepotCode;
                }
                string supplierCode = "";
                if (ItemQtRKList.SupplierCode!=null && ItemQtRKList.SupplierCode != "")
                {
                    var mesLinkU9 = Db.Queryable<MesLinkU9>()
   .Where(s => s.TableType == "MES_SUPPLIER"
               && s.U9Id == ItemQtRKList.SupplierCode).First();
                    var mesSupplier = Db.Queryable<MesSupplier>()
        .Where(s => s.Id == Decimal.Parse(mesLinkU9.MesId))
        .First();
                    if (mesSupplier == null)
                    {
                        throw new NotImplementedException("[" + ItemQtRKList.SupplierCode +
                                                          "]供应商不存在,请同步给MES");
                    }
                    supplierCode = mesSupplier.SuppNo;
                }
                //var mesInvItemInCItems = Db.Queryable<MesInvItemInCItems>()
                //    .Where(s => s.ItemInId == mesInvItemIns.Id
                //                && s.ItemNo == mesItems.ItemNo
                //                && s.Ebeln == itemOutList.SrcDocNo
                //                && s.EbelnLineNo ==
                //                Decimal.Parse(itemOutList.SrcDocLineNo)
                //                && s.SuppNo == mesSupplier.SuppNo
                //                && Convert.ToInt32(s.ZzitemId) ==
                //                Convert.ToInt32(itemOutList.AsnLineNo)).First();
                //if (mesInvItemInCItems == null)
                //{
                //    throw new NotImplementedException("没有对应的入库明细");
                //}
                // ç¡®ä¿CbillNo不为空
                if (ItemQtRKList.AppliedQuantity<=0 || ItemQtRKList.AppliedQuantity==null)
                {
                    throw new NotImplementedException("申请数量不能为0或NULL值!");
                }
                mesItemQtrrDetail.Add(new MesItemQtrrDetail
                {
                    Mid = nextSequenceValue,
                    Qd002= mesItems.ItemNo,
                    Qd003= mesItems.ItemName,
                    Qd004= mesItems.ItemModel,
                    Qd005= mesItems.ColorName,
                    Qd006= ItemQtRKList.PlannedQuantity,
                    Qd007= ItemQtRKList.AppliedQuantity,
                    Qd008=0, // å·²å…¥æ•°é‡é»˜è®¤ä¸º0
                    Qd009= mesItems.ItemUnit,
                    Qd010= ItemQtRKList.Remark,
                    Qd012= mesItems.Id, // ç‰©æ–™å†…码
                    LineNumber= ItemQtRKList.LineNumber,
                    ProductionRelated= ItemQtRKList.ProductionRelated,
                    StorageType= ItemQtRKList.StorageType,
                    OwnerOrganization = ItemQtRKList.OwnerOrganization,
                    StorageLocation= mesDepot,
                    SupplierCode= supplierCode,
                    CustomerCode = ItemQtRKList.CustomerCode,
                    ProjectCode = ItemQtRKList.ProjectCode,
                    TaskCode = ItemQtRKList.TaskCode,
                    ProductionOrder = ItemQtRKList.ProductionOrder,
                    DailyPlan = ItemQtRKList.DailyPlan,
                    ProductionActivity = ItemQtRKList.ProductionActivity,
                    FinishedProduct = ItemQtRKList.FinishedProduct
                });
            }
            var outItemCommand = Db.Insertable(mesItemQtrrDetail)
                .PageSize(1).IgnoreColumnsNull().ExecuteCommand();
            if (outItemCommand <= 0)
            {
                throw new Exception("创建杂收单子表失败");
            }
            // æ’入采购退料单记录
            var insertResult = Db.Insertable(MesItemQtrk).IgnoreColumns(true)
                .ExecuteCommand();
            if (insertResult <= 0)
            {
                throw new Exception("创建杂收单失败");
            }
            return outItemCommand + insertResult >= 2;
        }
        private bool Remove(MesItemQtRKFrom from)
        {
            // æŸ¥æ‰¾è¦åˆ é™¤çš„æ‚收单
            var mesItemQtrk = Db.Queryable<MesItemQtrk>()
                .Where(s => s.Qtck == from.ApplyNumber
                           ).ToList();
            if (mesItemQtrk == null || mesItemQtrk.Count == 0)
            {
                throw new NotImplementedException("找不到对应的杂收单: " + from.ApplyNumber);
            }
            // æ£€æŸ¥æ˜¯å¦æœ‰å·²å®¡æ ¸çš„单据,如果存在已审核(Status=1)则不允许删除
            //if (mesInvItemOuts.Any(item => item.Status == 1))
            //{
            //    throw new NotImplementedException("存在已审核的采购退料单,不允许删除");
            //}
            // åˆ é™¤æ‰€æœ‰ç›¸å…³å•据
            foreach (var itemRK in mesItemQtrk)
            {
                // æŸ¥æ‰¾è¦åˆ é™¤çš„æ‚收单明细
                var mesInvItemOutItems = Db.Queryable<MesItemQtrrDetail>()
                    .Where(s => s.Mid == itemRK.Id)
                    .ToList();
                if (mesInvItemOutItems == null || mesInvItemOutItems.Count == 0)
                {
                    throw new NotImplementedException(
                        $"找不到杂收单[{from.ApplyNumber}]对应的明细");
                }
                // åˆ é™¤æ‚收单明细
                var deleteItemsResult = Db.Deleteable<MesItemQtrrDetail>()
                    .Where(s => s.Mid == itemRK.Id)
                    .ExecuteCommand();
                if (deleteItemsResult <= 0)
                {
                    throw new Exception($"找不到杂收单[ {from.ApplyNumber}]明细,删除失败");
                }
                // åˆ é™¤æ‚收单
                var deleteResult = Db.Deleteable<MesItemQtrk>()
                    .Where(s => s.Id == itemRK.Id)
                    .ExecuteCommand();
                if (deleteResult <= 0)
                {
                    throw new Exception($"删除杂收单[{from.ApplyNumber}]失败");
                }
            }
            return true;
        }
    }
}
StandardPda/MES.Service/service/Warehouse/WomdaaManager.cs
@@ -2,12 +2,13 @@
using MES.Service.DB;
using MES.Service.Dto.service;
using MES.Service.Modes;
using MES.Service.service.BasicData;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
namespace MES.Service.service.Warehouse
{
@@ -22,11 +23,11 @@
        {
            OracleSQLHelper SQLHelper = new();
            //查工单信息
            var sql1 = @"select DAA001 tickeNo,s.ITEM_NO itemNo,s.ITEM_NAME itemName,s.ITEM_MODEL itemModel,DAA008 plannedNum from MESLINE_LIKE_CCLOGIN A
                        join MES_LINE b on A.LINEID=b.ID
                        left join WOMDAA C on C.DAA015=B.LINE_NO
                        left join mes_items s on s.id = C.daa002
                        where LOGINID='" + id + "' and DAA018='已开工'  order by DAA016 asc";
            //var sql1 = @"select DAA001 tickeNo,s.ITEM_NO itemNo,s.ITEM_NAME itemName,s.ITEM_MODEL itemModel,DAA008 plannedNum from MESLINE_LIKE_CCLOGIN A
            //            join MES_LINE b on A.LINEID=b.ID
            //            left join WOMDAA C on C.DAA015=B.LINE_NO
            //            left join mes_items s on s.id = C.daa002
            //            where LOGINID='" + id + "' and DAA018='已开工'  order by DAA016 asc";
            //改为按站位号反查产线,再通过产线查出工单信息
            //var sql1 = @"select DAA001 tickeNo,s.ITEM_NO itemNo,s.ITEM_NAME itemName,s.ITEM_MODEL itemModel,DAA008 plannedNum from MESLINE_LIKE_CCLOGIN A
@@ -34,8 +35,16 @@
            //            join MES_LINE b on A.LINEID=b.ID
            //            left join WOMDAA C on C.DAA015=B.LINE_NO
            //            left join mes_items s on s.id = C.daa002
            //           where WORKSNO='" + id+ "' and DAA018='已开工'  order by DAA016 asc";
            //           where WORKSNO='" + id + "' and DAA018='已开工'  order by DAA016 asc";
            //取直接关联线体的产测登录号数据,去取获取工单
            var sql1 = "select DAA001 tickeNo,s.ITEM_NO itemNo,s.ITEM_NAME itemName,s.ITEM_MODEL itemModel,DAA008 plannedNum from " +
                "MESLINE_LIKE_CCLOGIN_WORKS A1" +
                "                        join MES_LINE b on A1.LOGINID=b.ID" +
                "                        left join WOMDAA C on C.DAA015=B.LINE_NO" +
                "                        left join mes_items s on s.id = C.daa002" +
                "                       where WORKSNO='" + id + "' and DAA018='已开工'  order by DAA016 asc";
            return SQLHelper.ExecuteQuery(sql1);
        }
@@ -45,19 +54,265 @@
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        //public bool AddAsnInfo(AsnInfo asnInfo)
        //{
        //    OracleSQLHelper SQLHelper = new();
        //    //记录产测过站信息
        //    var sql1 = @"INSERT  INTO MES_SN_STATUS_DETAILS (ID,TICKET_NO,SN_NO,WORKSTATION_NO,SN_STATE,LOGIN_ID) VALUES (SEQ_MES_SN_STATUS_DETAILS_ID.NEXTVAL,'" + asnInfo.tickeNo+ "','"+ asnInfo.snNo+ "','"+ asnInfo.workstationNo+ "','"+ asnInfo.snState+ "','"+asnInfo.loginId+"')";
        //    bool result = true;
        //    int i= SQLHelper.ExecuteNonQuery(sql1);
        //    //主表信息插入成功,继续插入项目
        //    if (i > 0) {
        //        //判断项目是否为空,为空不插入
        //        if (asnInfo.failItems.Count>0)
        //        {
        //            //插入逻辑
        //        }
        //        else
        //        {
        //            result = true;
        //        }
        //    } else { result = false; }
        //    return result;
        //}
        public bool AddAsnInfo(AsnInfo asnInfo)
        {
            OracleSQLHelper SQLHelper = new();
            //记录产测过站信息
            var sql1 = @"INSERT  INTO MES_SN_STATUS_DETAILS (ID,TICKET_NO,SN_NO,WORKSTATION_NO,SN_STATE) VALUES (SEQ_MES_SN_STATUS_DETAILS_ID.NEXTVAL,'"+ asnInfo.tickeNo+ "','"+ asnInfo.snNo+ "','"+ asnInfo.workstationNo+ "','"+ asnInfo.snState+ "')";
            var sqlHelper = new OracleSQLHelper();
            bool result = true;
            int i= SQLHelper.ExecuteNonQuery(sql1);
            if (i > 0) {result = true;} else { result = false; }
            //
            var (connection, transaction) = sqlHelper.BeginTransaction();
            try
            {
                // ä¸»è¡¨æ’å…¥
                var sql1 = $@"INSERT INTO MES_SN_STATUS_DETAILS
                     (ID, TICKET_NO, SN_NO, WORKSTATION_NO, SN_STATE, LOGIN_ID)
                     VALUES (SEQ_MES_SN_STATUS_DETAILS_ID.NEXTVAL,
                             '{asnInfo.tickeNo}',
                             '{asnInfo.snNo}',
                             '{asnInfo.workstationNo}',
                             '{asnInfo.snState}',
                             '{asnInfo.loginId}')";
                int i = sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, sql1);
                if (i > 0 && asnInfo.failItems?.Count > 0)
                {
                    foreach (var item in asnInfo.failItems)
                    {
                        var sql2 = $@"INSERT INTO CC_FAIL_ITEMS
                             (ID, MID, DEFECT_ISSUE, ROOT_CAUSE, REPAIR_METHOD, MATERIAL_HANDLING, CREATE_DATE, CREATED_BY)
                             VALUES (SEQ_CC_FAIL_ITEMS.NEXTVAL,
                                     SEQ_MES_SN_STATUS_DETAILS_ID.CURRVAL,
                                     '{item.DefectIssue}',
                                     '{item.RootCause}',
                                     '{item.RepairMethod}',
                                     '{item.MaterialHandling}',
                                     SYSDATE,
                                     '{asnInfo.loginId}')";
                        sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, sql2);
                    }
                }
                // å…¨éƒ¨æˆåŠŸæäº¤
                transaction.Commit();
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                result = false;
                throw; // å»ºè®®è®°å½•日志
            }
            finally
            {
                sqlHelper.CloseConnection(connection);
            }
            return result;
        }
        /// <summary>
        /// è®¾ç½®ä¸­ç®±ç 
        /// </summary>
        /// <param name="mesMiddleBox"></param>
        /// <returns></returns>
        public string[] SetMediumBoxCode(MesMiddleBox mesMiddleBox)
        {
            var sqlHelper = new OracleSQLHelper();
            string[] msg= new string[2];
            msg[0] = "true";
            //
            var (connection, transaction) = sqlHelper.BeginTransaction();
            try
            {
                if (mesMiddleBox.type.ToUpper() =="A") {
                    if (mesMiddleBox.SnList.Count > 0)
                    {
                        string sql1 = "select count(*) count  from MES_MIDDLE_BOX where MEDIUMBOXCODE='"+ mesMiddleBox.MediumBoxCode + "'";
                        DataTable data= sqlHelper.ExecuteQuery(sql1);
                        if (data.Rows[0]["COUNT"].ToString() != "0") {
                            msg[0] = "false";
                            msg[1] = "该中箱码已经绑定SN数据,如需再次绑定请先解绑!中箱码:" + mesMiddleBox.MediumBoxCode;
                            transaction.Rollback();
                            return msg;
                        }
                        foreach (var item in mesMiddleBox.SnList)
                        {
                            var sql2 = $@"INSERT INTO MES_MIDDLE_BOX
                                    (
                                        ID,
                                        MEDIUMBOXCODE,
                                        LOGIN_ID,
                                        SN_NO,
                                        TICKET_NO,
                                        CREATE_DATE,
                                        CREATED_BY
                                    )
                                    VALUES
                                    (
                                        SEQ_MES_MIDDLE_BOX_ID.NEXTVAL, -- åºåˆ—生成主键
                                        '{mesMiddleBox.MediumBoxCode.ToString()}',                 -- ä¸­ç®±ç 
                                        '{mesMiddleBox.LoginId}',                       -- ç™»å½•号
                                        '{item.SnNo}',                          -- SN号
                                        '{item.TicketNo}',                      -- å·¥å•单号
                                        SYSDATE,                         -- åˆ›å»ºæ—¶é—´
                                        '{mesMiddleBox.LoginId}'                       -- åˆ›å»ºäºº
                                    )
                                    ";
                            sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, sql2);
                        }
                    }
                    else
                    {
                        msg[0] = "false";
                    }
                } else if(mesMiddleBox.type.ToUpper() == "F") {
                    //解绑,根据中箱码全部删除
                    var sql2 = $@"delete MES_MIDDLE_BOX where MEDIUMBOXCODE='{mesMiddleBox.MediumBoxCode}'";
                    sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, sql2);
                }
                else
                {
                    msg[1] = "SN明细为空,请确认!";
                    msg[0] = "false";
                }
                // å…¨éƒ¨æˆåŠŸæäº¤
                transaction.Commit();
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                msg[0] = "false";
                msg[1] = ex.Message;
                throw; // å»ºè®®è®°å½•日志
            }
            finally
            {
                sqlHelper.CloseConnection(connection);
            }
            return msg;
        }
        public string[] SetStackCode(MesPalletBinding mesPalletBinding)
        {
            var sqlHelper = new OracleSQLHelper();
            string[] msg = new string[2];
            msg[0] = "true";
            //
            var (connection, transaction) = sqlHelper.BeginTransaction();
            try
            {
                //绑定
                if (mesPalletBinding.Type.ToUpper() == "A") {
                    if (mesPalletBinding.SnList.Count > 0)
                    {
                        string sql1 = "select count(*) count  from MES_PALLET_BINDING where STACKCODE='" + mesPalletBinding.StackCode + "'";
                        DataTable data = sqlHelper.ExecuteQuery(sql1);
                        if (data.Rows[0]["COUNT"].ToString() != "0")
                        {
                            msg[0] = "false";
                            msg[1] = "该栈板码已经绑定SN数据,如需再次绑定请先解绑!栈板码:" + mesPalletBinding.StackCode;
                            transaction.Rollback();
                            return msg;
                        }
                        foreach (var item in mesPalletBinding.SnList)
                        {
                            var sql2 = $@"INSERT INTO MES_PALLET_BINDING
                            (
                                ID,
                                STACKCODE,
                                LOGIN_ID,
                                SN_NO,
                                TICKET_NO,
                                MEDIUMBOXCODE,
                                CREATE_DATE,
                                CREATED_BY
                            )
                            VALUES
                            (
                                SEQ_MES_PALLET_BINDING_ID.NEXTVAL, -- åºåˆ—生成主键
                                '{mesPalletBinding.StackCode}',                        -- æ ˆæ¿ç 
                                '{mesPalletBinding.LoginId}',                          -- ç™»å½•号
                                '{item.SnNo}',                             -- SN号
                                '{item.TicketNo}',                         -- å·¥å•单号
                                '{item.MediumBoxCode}',                     -- ä¸­ç®±ç 
                                SYSDATE,                            -- åˆ›å»ºæ—¶é—´
                                '{mesPalletBinding.LoginId}'                          -- åˆ›å»ºäºº
                            )
                                    ";
                            sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, sql2);
                        }
                    }
                    else
                    {
                        msg[1] = "SN明细为空,请确认!";
                        msg[0] = "false";
                    }
                }
                //解绑
                else if(mesPalletBinding.Type.ToUpper() == "F")
                {
                    //解绑,根据中箱码全部删除
                    var sql2 = $@"delete MES_PALLET_BINDING where STACKCODE='" + mesPalletBinding.StackCode + "'";
                    sqlHelper.ExecuteNonQueryWithTransaction(connection, transaction, sql2);
                }
                // å…¨éƒ¨æˆåŠŸæäº¤
                transaction.Commit();
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                msg[0] = "false";
                msg[1] = ex.Message;
                throw; // å»ºè®®è®°å½•日志
            }
            finally
            {
                sqlHelper.CloseConnection(connection);
            }
            return msg;
        }
    }
}
StandardPda/MESApplication/Controllers/Warehouse/MesItemQtController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,216 @@
using MES.Service.Dto.service;
using MES.Service.Modes;
using MES.Service.service;
using MES.Service.service.BasicData;
using MES.Service.service.Warehouse;
using MES.Service.util;
using Microsoft.AspNetCore.Mvc;
using System.Dynamic;
// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
namespace MESApplication.Controllers.Warehouse
{
    [Route("api/[controller]")]
    [ApiController]
    public class MesItemQtController : ControllerBase
    {
        private readonly MesItemQtManager m = new();
        private readonly MessageCenterManager _manager = new();
        private readonly string METHOD = "POST";
        private readonly string TableName = "MesItemQt";
        private readonly string URL = "http://localhost:10054/api/MesItemQt/";
        /// <summary>
        ///     å…¶ä»–出库申请单(杂发)
        /// </summary>
        /// <returns></returns>
        [HttpPost("MiscellaneousIssues")]
        public ResponseResult MiscellaneousIssues(MesItemQtDto oItemOut)
        {
            var entity = new MessageCenter();
            entity.TableName = TableName;
            entity.Url = URL + "MiscellaneousIssues";
            entity.Method = METHOD;
            entity.Data = Newtonsoft.Json.JsonConvert.SerializeObject(oItemOut);
            entity.Status = 1;
            entity.CreateBy = "PL017";
            try
            {
                dynamic resultInfos = new ExpandoObject();
                var result = m.MiscellaneousIssues(oItemOut);
                resultInfos.tbBillList = result;
                entity.Result = 0;
                if (result) entity.Result = 1;
                entity.DealWith = 1;
                _manager.save(entity);
                return new ResponseResult
                {
                    status = 0,
                    message = "OK",
                    data = resultInfos
                };
            }
            catch (Exception ex)
            {
                entity.Result = 0;
                entity.DealWith = 0;
                entity.ResultData = ex.Message;
                _manager.save(entity);
                return ResponseResult.ResponseError(ex);
            }
        }
        /// <summary>
        ///     èŽ·å–æ‰€æœ‰
        /// </summary>
        /// <returns></returns>
        [HttpPost("GetList")]
        public ResponseResult GetList()
        {
            try
            {
                dynamic resultInfos = new ExpandoObject();
                resultInfos.tbBillList = m.GetList();
                return new ResponseResult
                {
                    status = 0,
                    message = "OK",
                    data = resultInfos
                };
            }
            catch (Exception ex)
            {
                return ResponseResult.ResponseError(ex);
            }
        }
        /// <summary>
        ///     æ ¹æ®ä¸»é”®èŽ·å–
        /// </summary>
        /// <returns></returns>
        [HttpPost("GetById")]
        public ResponseResult GetById(int id)
        {
            try
            {
                dynamic resultInfos = new ExpandoObject();
                resultInfos.tbBillList = m.GetById(id);
                return new ResponseResult
                {
                    status = 0,
                    message = "OK",
                    data = resultInfos
                };
            }
            catch (Exception ex)
            {
                return ResponseResult.ResponseError(ex);
            }
        }
        /// <summary>
        ///     æ ¹æ®ä¸»é”®åˆ é™¤
        /// </summary>
        /// <returns></returns>
        [HttpPost("DeleteByIds")]
        public ResponseResult DeleteByIds([FromBody] object[] ids)
        {
            try
            {
                dynamic resultInfos = new ExpandoObject();
                resultInfos.tbBillList = m.DeleteByIds(ids);
                return new ResponseResult
                {
                    status = 0,
                    message = "OK",
                    data = resultInfos
                };
            }
            catch (Exception ex)
            {
                return ResponseResult.ResponseError(ex);
            }
        }
        /// <summary>
        ///     æ·»åŠ 
        /// </summary>
        /// <returns></returns>
        [HttpPost("Insert")]
        public ResponseResult Add([FromBody] MesItemQt data)
        {
            try
            {
                dynamic resultInfos = new ExpandoObject();
                resultInfos.tbBillList = m.Insert(data);
                return new ResponseResult
                {
                    status = 0,
                    message = "OK",
                    data = resultInfos
                };
            }
            catch (Exception ex)
            {
                return ResponseResult.ResponseError(ex);
            }
        }
        /// <summary>
        ///     æ·»åŠ è¿”å›žè‡ªå¢ž
        /// </summary>
        /// <returns></returns>
        [HttpPost("InsertReturnIdentity")]
        public ResponseResult InsertReturnIdentity([FromBody] MesItemQt data)
        {
            try
            {
                dynamic resultInfos = new ExpandoObject();
                resultInfos.tbBillList = m.InsertReturnIdentity(data);
                return new ResponseResult
                {
                    status = 0,
                    message = "OK",
                    data = resultInfos
                };
            }
            catch (Exception ex)
            {
                return ResponseResult.ResponseError(ex);
            }
        }
        /// <summary>
        ///     ä¿®æ”¹
        /// </summary>
        /// <returns></returns>
        [HttpPost("Update")]
        public ResponseResult Update([FromBody] MesItemQt data)
        {
            try
            {
                dynamic resultInfos = new ExpandoObject();
                resultInfos.tbBillList = m.Update(data);
                return new ResponseResult
                {
                    status = 0,
                    message = "OK",
                    data = resultInfos
                };
            }
            catch (Exception ex)
            {
                return ResponseResult.ResponseError(ex);
            }
        }
    }
}
StandardPda/MESApplication/Controllers/Warehouse/MesItemQtrkController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,214 @@
using MES.Service.Dto.service;
using MES.Service.Modes;
using MES.Service.service;
using MES.Service.service.Warehouse;
using MES.Service.util;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Dynamic;
namespace MESApplication.Controllers.Warehouse
{
    [Route("api/[controller]")]
    [ApiController]
       public class MesItemQtrkController : ControllerBase
    {
        private readonly MesItemQtrkManager m = new();
        private readonly MessageCenterManager _manager = new();
        private readonly string METHOD = "POST";
        private readonly string TableName = "MesItemQtrk";
        private readonly string URL = "http://localhost:10054/api/MesItemQtrk/";
        /// <summary>
        ///     å…¶ä»–入库申请单(杂收)
        /// </summary>
        /// <returns></returns>
        [HttpPost("MiscellaneousReceipts")]
        public ResponseResult MiscellaneousReceipts(MesItemQtRKDto mesItemQtRKDto)
        {
            var entity = new MessageCenter();
            entity.TableName = TableName;
            entity.Url = URL + "MiscellaneousReceipts";
            entity.Method = METHOD;
            entity.Data = Newtonsoft.Json.JsonConvert.SerializeObject(mesItemQtRKDto);
            entity.Status = 1;
            entity.CreateBy = "PL017";
            try
            {
                dynamic resultInfos = new ExpandoObject();
                var result = m.MiscellaneousReceipts(mesItemQtRKDto);
                resultInfos.tbBillList = result;
                entity.Result = 0;
                if (result) entity.Result = 1;
                entity.DealWith = 1;
                _manager.save(entity);
                return new ResponseResult
                {
                    status = 0,
                    message = "OK",
                    data = resultInfos
                };
            }
            catch (Exception ex)
            {
                entity.Result = 0;
                entity.DealWith = 0;
                entity.ResultData = ex.Message;
                _manager.save(entity);
                return ResponseResult.ResponseError(ex);
            }
        }
        /// <summary>
        ///     èŽ·å–æ‰€æœ‰
        /// </summary>
        /// <returns></returns>
        [HttpPost("GetList")]
        public ResponseResult GetList()
        {
            try
            {
                dynamic resultInfos = new ExpandoObject();
                resultInfos.tbBillList = m.GetList();
                return new ResponseResult
                {
                    status = 0,
                    message = "OK",
                    data = resultInfos
                };
            }
            catch (Exception ex)
            {
                return ResponseResult.ResponseError(ex);
            }
        }
        /// <summary>
        ///     æ ¹æ®ä¸»é”®èŽ·å–
        /// </summary>
        /// <returns></returns>
        [HttpPost("GetById")]
        public ResponseResult GetById(int id)
        {
            try
            {
                dynamic resultInfos = new ExpandoObject();
                resultInfos.tbBillList = m.GetById(id);
                return new ResponseResult
                {
                    status = 0,
                    message = "OK",
                    data = resultInfos
                };
            }
            catch (Exception ex)
            {
                return ResponseResult.ResponseError(ex);
            }
        }
        /// <summary>
        ///     æ ¹æ®ä¸»é”®åˆ é™¤
        /// </summary>
        /// <returns></returns>
        [HttpPost("DeleteByIds")]
        public ResponseResult DeleteByIds([FromBody] object[] ids)
        {
            try
            {
                dynamic resultInfos = new ExpandoObject();
                resultInfos.tbBillList = m.DeleteByIds(ids);
                return new ResponseResult
                {
                    status = 0,
                    message = "OK",
                    data = resultInfos
                };
            }
            catch (Exception ex)
            {
                return ResponseResult.ResponseError(ex);
            }
        }
        /// <summary>
        ///     æ·»åŠ 
        /// </summary>
        /// <returns></returns>
        [HttpPost("Insert")]
        public ResponseResult Add([FromBody] MesItemQtrk data)
        {
            try
            {
                dynamic resultInfos = new ExpandoObject();
                resultInfos.tbBillList = m.Insert(data);
                return new ResponseResult
                {
                    status = 0,
                    message = "OK",
                    data = resultInfos
                };
            }
            catch (Exception ex)
            {
                return ResponseResult.ResponseError(ex);
            }
        }
        /// <summary>
        ///     æ·»åŠ è¿”å›žè‡ªå¢ž
        /// </summary>
        /// <returns></returns>
        [HttpPost("InsertReturnIdentity")]
        public ResponseResult InsertReturnIdentity([FromBody] MesItemQtrk data)
        {
            try
            {
                dynamic resultInfos = new ExpandoObject();
                resultInfos.tbBillList = m.InsertReturnIdentity(data);
                return new ResponseResult
                {
                    status = 0,
                    message = "OK",
                    data = resultInfos
                };
            }
            catch (Exception ex)
            {
                return ResponseResult.ResponseError(ex);
            }
        }
        /// <summary>
        ///     ä¿®æ”¹
        /// </summary>
        /// <returns></returns>
        [HttpPost("Update")]
        public ResponseResult Update([FromBody] MesItemQtrk data)
        {
            try
            {
                dynamic resultInfos = new ExpandoObject();
                resultInfos.tbBillList = m.Update(data);
                return new ResponseResult
                {
                    status = 0,
                    message = "OK",
                    data = resultInfos
                };
            }
            catch (Exception ex)
            {
                return ResponseResult.ResponseError(ex);
            }
        }
    }
}
StandardPda/MESApplication/Controllers/Warehouse/womdaaController.cs
@@ -1,4 +1,5 @@
using MES.Service.Dto.service;
using AngleSharp.Text;
using MES.Service.Dto.service;
using MES.Service.Modes;
using MES.Service.service;
using MES.Service.service.Warehouse;
@@ -111,6 +112,116 @@
            }
        }
        /// <summary>
        ///设置中箱码
        /// </summary>
        /// <returns></returns>
        [HttpPost("SetMediumBoxCode")]
        public ResponseResult SetMediumBoxCode(MesMiddleBox MesMiddleBox)
        {
            var entity = new MessageCenter();
            entity.TableName = TableName;
            entity.Url = URL + "SetMediumBoxCode";
            entity.Method = METHOD;
            entity.Data = Newtonsoft.Json.JsonConvert.SerializeObject(MesMiddleBox);
            entity.Status = 1;
            entity.CreateBy = "PL017";
            try
            {
                dynamic resultInfos = new ExpandoObject();
                var result = m.SetMediumBoxCode(MesMiddleBox);
                resultInfos.tbBillList = result;
                entity.Result = 0;
                if (result[0].ToBoolean()) entity.Result = 1;
                entity.DealWith = 1;
                _manager.save(entity);
                if (result[0].ToBoolean())
                {
                    return new ResponseResult
                    {
                        status = 0,
                        message = "OK",
                        data = resultInfos
                    };
                }
                else {
                    return new ResponseResult
                    {
                        status = 1,
                        message = result[1],
                        data = resultInfos
                    };
                }
            }
            catch (Exception ex)
            {
                entity.Result = 0;
                entity.DealWith = 0;
                entity.ResultData = ex.Message;
                _manager.save(entity);
                return ResponseResult.ResponseError(ex);
            }
        }
        /// <summary>
        ///设置栈板码
        /// </summary>
        /// <returns></returns>
        [HttpPost("SetStackCode")]
        public ResponseResult SetStackCode(MesPalletBinding mesPalletBinding)
        {
            var entity = new MessageCenter();
            entity.TableName = TableName;
            entity.Url = URL + "SetStackCode";
            entity.Method = METHOD;
            entity.Data = Newtonsoft.Json.JsonConvert.SerializeObject(mesPalletBinding);
            entity.Status = 1;
            entity.CreateBy = "PL017";
            try
            {
                dynamic resultInfos = new ExpandoObject();
                var result = m.SetStackCode(mesPalletBinding);
                resultInfos.tbBillList = result;
                entity.Result = 0;
                if (result[0].ToBoolean()) entity.Result = 1;
                entity.DealWith = 1;
                _manager.save(entity);
                if (result[0].ToBoolean())
                {
                    return new ResponseResult
                    {
                        status = 0,
                        message = "OK",
                        data = resultInfos
                    };
                }
                else
                {
                    return new ResponseResult
                    {
                        status = 1,
                        message = result[1],
                        data = resultInfos
                    };
                }
            }
            catch (Exception ex)
            {
                entity.Result = 0;
                entity.DealWith = 0;
                entity.ResultData = ex.Message;
                _manager.save(entity);
                return ResponseResult.ResponseError(ex);
            }
        }
    }
}