From 39c09dede499f7ba23bcd26b17b2199a31bddccc Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周三, 28 8月 2024 11:10:53 +0800
Subject: [PATCH] 出库执行 哟花

---
 iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/Dto/WorkPieceUnLineDto.cs      |   36 ++
 iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/Map/WorkPieceUnLineMapper.cs   |   18 +
 iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceOutboundRecord.cs                       |   65 +++++
 iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/WorkPieceByOP80NewCodeInput.cs         |   17 +
 iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/PdaService.cs                              |   50 ++-
 iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/Dto/WorkPieceUnLineInput.cs    |  113 ++++++++
 iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml                              |  180 +++++++++++++
 iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceProcess.cs                              |    9 
 iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceInfo.cs                                 |   10 
 iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/Dto/WorkPieceUnLineOutput.cs   |   37 ++
 iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs    |    3 
 iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/WorkPieceUnLineService.cs      |  113 ++++++++
 iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceUnLine.cs                               |   56 ++++
 iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/WorkPieceProcessOutput.cs |   10 
 iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/IWorkPieceUnLineService.cs     |   17 +
 15 files changed, 710 insertions(+), 24 deletions(-)

diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/WorkPieceByOP80NewCodeInput.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/WorkPieceByOP80NewCodeInput.cs
index 705825a..568d469 100644
--- a/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/WorkPieceByOP80NewCodeInput.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/WorkPieceByOP80NewCodeInput.cs
@@ -4,6 +4,7 @@
 using System.Text;
 using System.Threading.Tasks;
 using iWare.Wms.Core;
+using iWare.Wms.Core.Enum;
 
 namespace iWare.Wms.Application {
     /// <summary>
@@ -27,7 +28,7 @@
         /// <summary>
         /// 宸ヤ欢鏁版嵁
         /// </summary>
-        public List<WorkPieceInfoOutput> WorkPieceInfoLst { get; set; }
+        public List<OutBoundDetailsInput> WorkPieceInfoLst { get; set; }
         /// <summary>
         /// 瀵嗙爜
         /// </summary>
@@ -35,5 +36,17 @@
 
     }
 
-    
+    /// <summary>
+    /// 鍑哄簱鎵ц杈撳叆鏄庣粏鍙傛暟
+    /// </summary>
+    public class OutBoundDetailsInput
+    {
+        /// <summary>
+        /// 宸ヤ欢OP80鐮�
+        /// </summary>
+        public string OP80NewCode { get; set; }
+      
+    }
+
+
 }
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/PdaService.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/PdaService.cs
index 8d5a7b4..48ddb7f 100644
--- a/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/PdaService.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/PdaService.cs
@@ -32,12 +32,14 @@
         private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
         private readonly IRepository<WorkPieceInfoLog, MasterDbContextLocator> _workPieceInfoLogRep;
         private readonly IRepository<WorkPieceOutbound, MasterDbContextLocator> _workPieceOutboundRep;
+        private readonly IRepository<WorkPieceUnLine, MasterDbContextLocator> _workPieceUnLineRep;
 
         /// <summary>
         /// 璁惧鍩虹淇℃伅鏋勯�犲嚱鏁�
         /// </summary>
         /// <param name="equipmentBaseInfoRep"></param>
         public PdaService(
+            IRepository<WorkPieceUnLine, MasterDbContextLocator> workPieceUnLineRep,
             IRepository<EquipmentBaseInfo, MasterDbContextLocator> equipmentBaseInfoRep,
             IRepository<V_GetEquipmentAlert, MasterDbContextLocator> v_GetEquipmentAlert,
             IRepository<EquipmentCurrentMonitor, MasterDbContextLocator> equipmentCurrentMonitorRep,
@@ -50,6 +52,7 @@
             IRepository<WorkPieceOutbound, MasterDbContextLocator> workPieceOutboundRep
             )
         {
+            _workPieceUnLineRep = workPieceUnLineRep;
             _equipmentBaseInfoRep = equipmentBaseInfoRep;
             _v_GetEquipmentAlertRep = v_GetEquipmentAlert;
             _equipmentCurrentMonitorRep = equipmentCurrentMonitorRep;
@@ -489,39 +492,27 @@
                 throw Oops.Oh("宸ヤ欢鍑哄簱澶辫触锛氭暟鎹笉鑳戒负绌猴紒");
             }
 
-            List<WorkPieceInfoOutput> WorkPieceInfoLst = input.WorkPieceInfoLst;
+            List<OutBoundDetailsInput> WorkPieceInfoLst = input.WorkPieceInfoLst;
 
             var addOutBoundList = new List<WorkPieceOutbound>();
 
-            var queryWorkPieceIDList = WorkPieceInfoLst.Select(x => x.WorkPieceID).ToList();
-            List<WorkPieceOutbound> db_itemModelList = await _workPieceOutboundRep.Where(w => queryWorkPieceIDList.Contains(w.WorkPieceID) && w.IsDeleted == false).ToListAsync();
+            var queryOP80NewCodeList = WorkPieceInfoLst.Select(x => x.OP80NewCode).ToList();
+            List<WorkPieceOutbound> db_itemModelList = await _workPieceOutboundRep.Where(w => queryOP80NewCodeList.Contains(w.OP80NewCode) && w.IsDeleted == false).ToListAsync();
 
-            List<WorkPieceInfo> db_WorkPieceInfoList = await _workPieceInfoRep.Where(w => queryWorkPieceIDList.Contains(w.WorkPieceID) && w.IsDeleted == false).ToListAsync();
+            List<WorkPieceInfo> db_WorkPieceInfoList = await _workPieceInfoRep.Where(w => queryOP80NewCodeList.Contains(w.OP80NewCode) && w.IsDeleted == false).ToListAsync();
 
             foreach (var item in WorkPieceInfoLst)
             {
-                var itemModel = db_itemModelList.FirstOrDefault(w => w.WorkPieceID == item.WorkPieceID);
+                var itemModel = db_itemModelList.FirstOrDefault(w => w.OP80NewCode == item.OP80NewCode);
                 if (itemModel != null)
                 {
                     //itemModel.IsDeleted = true;
                     //itemModel.Remark = itemModel.Remark ?? "" + "浜屾鍙戣揣鑷姩鎾ら攢鍙戣揣";
                     //await _workPieceOutboundRep.UpdateAsync(itemModel);
                     var createitme = itemModel.CreatedTime == null ? "" : (((DateTimeOffset)itemModel.CreatedTime).UtcDateTime.ToString("yyyy-MM-dd HH:mm:ss"));
-                    throw Oops.Oh($"宸ヤ欢{itemModel.WorkPieceID}宸插嚭搴擄紝鍑哄簱鏃堕棿:{createitme}");
+                    throw Oops.Oh($"鎴愬搧鐮亄itemModel.OP80NewCode}宸插嚭搴擄紝鍑哄簱鏃堕棿:{createitme}");
                 }
-                var outBoundLog = new WorkPieceOutbound
-                {
-                    WorkPieceID = item.WorkPieceID,
-                    OP80NewCode = item.OP80NewCode,
-                    WorkPieceOutboundTime = DateTime.Now,
-                    WorkPieceOutboundUserId = CurrentUserInfo.UserId,
-                    WorkPieceOutboundUserName = CurrentUserInfo.Name,
-                    CreatedUserId = CurrentUserInfo.UserId,
-                    CreatedUserName = CurrentUserInfo.Name,
-                };
-                addOutBoundList.Add(outBoundLog);
-
-                var workPiece = db_WorkPieceInfoList.FirstOrDefault(w => w.WorkPieceID == item.WorkPieceID);
+                var workPiece = db_WorkPieceInfoList.FirstOrDefault(w => w.OP80NewCode == item.OP80NewCode);
                 if (workPiece != null)
                 {
                     workPiece.OutPerson = CurrentUserInfo.Name;
@@ -531,6 +522,19 @@
 
                     await _workPieceInfoRep.UpdateAsync(workPiece);
                 }
+                var outBoundLog = new WorkPieceOutbound
+                {
+                    WorkPieceID = workPiece?.WorkPieceID,
+                    OP80NewCode = item.OP80NewCode,
+                    WorkPieceOutboundTime = DateTime.Now,
+                    WorkPieceOutboundUserId = CurrentUserInfo.UserId,
+                    WorkPieceOutboundUserName = CurrentUserInfo.Name,
+                    CreatedUserId = CurrentUserInfo.UserId,
+                    CreatedUserName = CurrentUserInfo.Name,
+                };
+                addOutBoundList.Add(outBoundLog);
+
+
             }
             await _workPieceOutboundRep.InsertAsync(addOutBoundList);
             return "鍑哄簱鎴愬姛";
@@ -553,5 +557,13 @@
             return db_itemModelList.Count().ToString();
         }
 
+
+        #region 鏂扮増 涓嬬嚎銆佸嚭搴撴墽琛�
+
+
+
+
+        #endregion
+
     }
 }
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/WorkPieceProcessOutput.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/WorkPieceProcessOutput.cs
index 9961ca5..20385cb 100644
--- a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/WorkPieceProcessOutput.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/WorkPieceProcessOutput.cs
@@ -27,7 +27,15 @@
     public class WorkPieceProcessOutput
     {
 
-    
+        /// <summary>
+        /// 璐ㄩ噺涓嶅悎鏍煎師鍥犵被鍨嬶紝鏋氫妇QualityNoOkEnum 銆怑ditby shaocx,2024-06-26銆�
+        /// </summary>
+        public int? QualityNoOk { get; set; }
+
+        /// <summary>
+        /// 璐ㄩ噺涓嶅悎鏍煎師鍥� 銆怑ditby shaocx,2024-06-26銆�
+        /// </summary>
+        public string QualityNoOkReason { get; set; }
 
 
         /// <summary>
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs
index deb9131..10079e9 100644
--- a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs
@@ -94,7 +94,8 @@
                      && process.StartTime <= (input.StartTimeEndTime.HasValue ? input.StartTimeEndTime : DateTime.MaxValue)
                                            select new WorkPieceProcessOutput
                                            {
-
+                                               QualityNoOk = process.QualityNoOk,
+                                               QualityNoOkReason = process.QualityNoOkReason,
                                                Id = process.Id,
                                                WorkPieceID = process.WorkPieceID,
                                                EquipmentID = process.EquipmentID,
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/Dto/WorkPieceUnLineDto.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/Dto/WorkPieceUnLineDto.cs
new file mode 100644
index 0000000..7bcbce7
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/Dto/WorkPieceUnLineDto.cs
@@ -0,0 +1,36 @@
+锘縰sing iWare.Wms.Core.Util.LowCode.Dto;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.ComponentModel.DataAnnotations;
+
+namespace iWare.Wms.Application
+{
+    /// <summary>
+    /// 宸ヤ欢鍑哄簱淇℃伅杈撳嚭鍙傛暟
+    /// </summary>
+    public class WorkPieceUnLineDto
+    {
+        /// <summary>
+        /// 宸ヤ欢鍙�
+        /// </summary>
+        public string WorkPieceID { get; set; }
+        
+        /// <summary>
+        /// OP80鎵撶爜
+        /// </summary>
+        public string OP80NewCode { get; set; }
+
+        /// <summary>
+        /// 灏忚溅鐮�
+        /// </summary>
+        [Comment("灏忚溅鐮�")]
+        [MaxLength(32)]
+        public string CarNo { get; set; }
+
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+    }
+}
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/Dto/WorkPieceUnLineInput.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/Dto/WorkPieceUnLineInput.cs
new file mode 100644
index 0000000..2033196
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/Dto/WorkPieceUnLineInput.cs
@@ -0,0 +1,113 @@
+锘縰sing iWare.Wms.Core;
+using iWare.Wms.Core.Service;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+
+namespace iWare.Wms.Application
+{    
+    
+    /// <summary>
+    /// 宸ヤ欢鍑哄簱淇℃伅鏌ヨ鍙傛暟
+    /// </summary>
+    public class WorkPieceUnLineSearch : PageInputBase
+    {
+        /// <summary>
+        /// 宸ヤ欢鍙�
+        /// </summary>
+        public virtual string WorkPieceID { get; set; }
+        
+        /// <summary>
+        /// OP80鎵撶爜
+        /// </summary>
+        public virtual string OP80NewCode { get; set; }
+
+        /// <summary>
+        /// 宸ヤ欢鍑哄簱寮�濮嬫椂闂�
+        /// </summary>
+        public virtual DateTime? StartTimeBeginTime { get; set; }
+
+        /// <summary>
+        /// 宸ヤ欢鍑哄簱缁撴潫鏃堕棿
+        /// </summary>
+        public virtual DateTime? StartTimeEndTime { get; set; }
+
+        /// <summary>
+        /// 灏忚溅鐮�
+        /// </summary>
+        [Comment("灏忚溅鐮�")]
+        [MaxLength(32)]
+        public string CarNo { get; set; }
+
+        /// <summary>
+        /// 鍑哄簱浜哄悕绉�
+        /// </summary>
+        public virtual string WorkPieceUnLineUserName { get; set; }
+
+    }
+
+    /// <summary>
+    /// 宸ヤ欢鍑哄簱淇℃伅杈撳叆鍙傛暟
+    /// </summary>
+    public class WorkPieceUnLineInput
+    {
+        /// <summary>
+        /// 宸ヤ欢鍙�
+        /// </summary>
+        public virtual string WorkPieceID { get; set; }
+        
+        /// <summary>
+        /// OP80鎵撶爜
+        /// </summary>
+        public virtual string OP80NewCode { get; set; }
+
+        /// <summary>
+        /// 灏忚溅鐮�
+        /// </summary>
+        [Comment("灏忚溅鐮�")]
+        [MaxLength(32)]
+        public virtual string CarNo { get; set; }
+
+    }
+
+    public class AddWorkPieceUnLineInput : WorkPieceUnLineInput
+    {
+        /// <summary>
+        /// 宸ヤ欢鍙�
+        /// </summary>
+        [Required(ErrorMessage = "宸ヤ欢鍙蜂笉鑳戒负绌�")]
+        public override string WorkPieceID { get; set; }
+        
+        /// <summary>
+        /// OP80鎵撶爜
+        /// </summary>
+        [Required(ErrorMessage = "OP80鎵撶爜涓嶈兘涓虹┖")]
+        public override string OP80NewCode { get; set; }
+
+        /// <summary>
+        /// 灏忚溅鐮�
+        /// </summary>
+        [Comment("灏忚溅鐮�")]
+        [MaxLength(32)]
+        public override string CarNo { get; set; }
+
+    }
+
+    public class DeleteWorkPieceUnLineInput : BaseId
+    {
+    }
+
+    public class UpdateWorkPieceUnLineInput : WorkPieceUnLineInput
+    {
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    public class QueryeWorkPieceUnLineInput : BaseId
+    {
+
+    }
+}
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/Dto/WorkPieceUnLineOutput.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/Dto/WorkPieceUnLineOutput.cs
new file mode 100644
index 0000000..11c5bf3
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/Dto/WorkPieceUnLineOutput.cs
@@ -0,0 +1,37 @@
+锘縰sing iWare.Wms.Core.Util.LowCode.Dto;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.ComponentModel.DataAnnotations;
+
+namespace iWare.Wms.Application
+{
+    /// <summary>
+    /// 宸ヤ欢鍑哄簱淇℃伅杈撳嚭鍙傛暟
+    /// </summary>
+    public class WorkPieceUnLineOutput
+    {
+        /// <summary>
+        /// 宸ヤ欢鍙�
+        /// </summary>
+        public string WorkPieceID { get; set; }
+        
+        /// <summary>
+        /// OP80鎵撶爜
+        /// </summary>
+        public string OP80NewCode { get; set; }
+
+        /// <summary>
+        /// 灏忚溅鐮�
+        /// </summary>
+        [Comment("灏忚溅鐮�")]
+        [MaxLength(32)]
+        public string CarNo { get; set; }
+
+        
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        
+    }
+}
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/IWorkPieceUnLineService.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/IWorkPieceUnLineService.cs
new file mode 100644
index 0000000..6d3f805
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/IWorkPieceUnLineService.cs
@@ -0,0 +1,17 @@
+锘縰sing iWare.Wms.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace iWare.Wms.Application
+{
+    public interface IWorkPieceUnLineService
+    {
+        //Task Add(AddWorkPieceUnLineInput input);
+        //Task Delete(DeleteWorkPieceUnLineInput input);
+        //Task<WorkPieceUnLineOutput> Get([FromQuery] QueryeWorkPieceUnLineInput input);
+        //Task<List<WorkPieceUnLineOutput>> List([FromQuery] WorkPieceUnLineInput input);
+        //Task<PageResult<WorkPieceUnLineOutput>> Page([FromQuery] WorkPieceUnLineSearch input);
+        //Task Update(UpdateWorkPieceUnLineInput input);
+    }
+}
\ No newline at end of file
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/Map/WorkPieceUnLineMapper.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/Map/WorkPieceUnLineMapper.cs
new file mode 100644
index 0000000..16f8570
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/Map/WorkPieceUnLineMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using iWare.Wms.Core;
+
+namespace iWare.Wms.Application
+{
+    public class WorkPieceUnLineMapper : IRegister
+    {
+        public void Register(TypeAdapterConfig config)
+        {
+            config.ForType<AddWorkPieceUnLineInput, WorkPieceUnLine>()
+            ;
+            config.ForType<UpdateWorkPieceUnLineInput, WorkPieceUnLine>()
+            ;
+            config.ForType<WorkPieceUnLine, WorkPieceUnLineOutput>()
+            ;
+        }
+    }
+}
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/WorkPieceUnLineService.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/WorkPieceUnLineService.cs
new file mode 100644
index 0000000..dc880c8
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceUnLine/WorkPieceUnLineService.cs
@@ -0,0 +1,113 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.Extras.iWare.Wms.Util.LowCode.Front.Code;
+using Furion.FriendlyException;
+using iWare.Wms.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+
+namespace iWare.Wms.Application
+{
+    /// <summary>
+    /// 宸ヤ欢鍑哄簱涓嬬嚎淇℃伅鏈嶅姟
+    /// </summary>
+    //[Route("api")]
+    [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WorkPieceUnLine", Order = 100)]
+    [Route("api/[Controller]")]
+    [DisableOpLog]
+    public class WorkPieceUnLineService : IWorkPieceUnLineService, IDynamicApiController, ITransient
+    {
+        private readonly IRepository<WorkPieceUnLine, MasterDbContextLocator> _WorkPieceUnLineRep;
+        private readonly IRepository<WorkPieceInfo, MasterDbContextLocator> _workPieceInfoRep;
+
+        public WorkPieceUnLineService(
+            IRepository<WorkPieceInfo, MasterDbContextLocator> workPieceInfoRep,
+            IRepository<WorkPieceUnLine, MasterDbContextLocator> WorkPieceUnLineRep
+        )
+        {
+            _workPieceInfoRep = workPieceInfoRep;
+            _WorkPieceUnLineRep = WorkPieceUnLineRep;
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ宸ヤ欢鍑哄簱涓嬬嚎淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("page")]
+        public async Task<PageResult<WorkPieceUnLineOutput>> Page([FromQuery] WorkPieceUnLineSearch input)
+        {
+            var WorkPieceUnLines = await _WorkPieceUnLineRep.DetachedEntities
+                                     .Where(!string.IsNullOrEmpty(input.WorkPieceID), u => u.WorkPieceID.Contains(input.WorkPieceID))
+                                     .Where(!string.IsNullOrEmpty(input.OP80NewCode), u => u.OP80NewCode.Contains(input.OP80NewCode))
+                                     .Where(!string.IsNullOrEmpty(input.StartTimeBeginTime.ToString()), u => u.CreatedTime >= input.StartTimeBeginTime)
+                                     .Where(!string.IsNullOrEmpty(input.StartTimeEndTime.ToString()), u => u.CreatedTime <= input.StartTimeEndTime)
+                                     .OrderBy(PageInputOrder.OrderBuilder<WorkPieceUnLineSearch>(input))
+                                     .ProjectToType<WorkPieceUnLineOutput>()
+                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return WorkPieceUnLines;
+        }
+
+       
+        /// <summary>
+        /// 鑾峰彇宸ヤ欢鍑哄簱涓嬬嚎淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("detail")]
+        public async Task<WorkPieceUnLineOutput> Get([FromQuery] QueryeWorkPieceUnLineInput input)
+        {
+            return (await _WorkPieceUnLineRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WorkPieceUnLineOutput>();
+        }
+
+        /// <summary>
+        /// 鑾峰彇宸ヤ欢鍑哄簱涓嬬嚎淇℃伅鍒楄〃
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("list")]
+        public async Task<List<WorkPieceUnLineOutput>> List([FromQuery] WorkPieceUnLineInput input)
+        {
+            return await _WorkPieceUnLineRep.DetachedEntities.ProjectToType<WorkPieceUnLineOutput>().ToListAsync();
+        }
+
+        /// <summary>
+        /// 鎾ら攢宸ヤ欢鍑哄簱涓嬬嚎淇℃伅
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("revoke")]
+        [UnitOfWork]
+        public async Task Revoke(List<DeleteWorkPieceUnLineInput> input)
+        {
+            foreach (var item in input)
+            {
+                var WorkPieceUnLine = await _WorkPieceUnLineRep.FirstOrDefaultAsync(u => u.Id == item.Id);
+                if (WorkPieceUnLine == null)
+                {
+                    throw Oops.Oh("宸ヤ欢鍑哄簱涓嬬嚎淇℃伅涓嶅瓨鍦�");
+                }
+                WorkPieceUnLine.IsDeleted = true;
+                WorkPieceUnLine.Remark = WorkPieceUnLine.Remark ?? "" + "鎾ら攢鍙戣揣";
+                await _WorkPieceUnLineRep.UpdateAsync(WorkPieceUnLine);
+
+                var workPiece = await _workPieceInfoRep.FirstOrDefaultAsync(u => u.WorkPieceID == WorkPieceUnLine.WorkPieceID);
+                if (workPiece != null)
+                {
+                    workPiece.OutPerson = CurrentUserInfo.Name;
+                    workPiece.OutRemark = "鎾ら攢宸ヤ欢鍑哄簱涓嬬嚎";
+                    workPiece.OutTime = DateTime.Now;
+                    workPiece.IsOut = false;
+
+                    await _workPieceInfoRep.UpdateAsync(workPiece);
+                }
+            }
+
+        }
+
+    }
+}
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml b/iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml
index 06e4f2b..eab78d6 100644
--- a/iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml
+++ b/iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml
@@ -296,7 +296,7 @@
             璁惧鍩虹淇℃伅绠$悊鏈嶅姟
             </summary>
         </member>
-        <member name="M:iWare.Wms.Application.Service.Pda.PdaService.#ctor(Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.EquipmentBaseInfo,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.V_GetEquipmentAlert,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.EquipmentCurrentMonitor,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceProcess,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceInfo,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceInfo,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceInfoLog,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceOutbound,Furion.DatabaseAccessor.MasterDbContextLocator})">
+        <member name="M:iWare.Wms.Application.Service.Pda.PdaService.#ctor(Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceUnLine,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.EquipmentBaseInfo,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.V_GetEquipmentAlert,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.EquipmentCurrentMonitor,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceProcess,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceInfo,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceInfo,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceInfoLog,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceOutbound,Furion.DatabaseAccessor.MasterDbContextLocator})">
             <summary>
             璁惧鍩虹淇℃伅鏋勯�犲嚱鏁�
             </summary>
@@ -5106,6 +5106,16 @@
         <member name="P:iWare.Wms.Application.OutBoundInput.Password">
             <summary>
             瀵嗙爜
+            </summary>
+        </member>
+        <member name="T:iWare.Wms.Application.OutBoundDetailsInput">
+            <summary>
+            鍑哄簱鎵ц杈撳叆鏄庣粏鍙傛暟
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.OutBoundDetailsInput.OP80NewCode">
+            <summary>
+            宸ヤ欢OP80鐮�
             </summary>
         </member>
         <member name="T:iWare.Wms.Application.ProductionPlanInfoDto">
@@ -15258,6 +15268,16 @@
             宸ヤ欢鍔犲伐杩芥函杈撳嚭鍙傛暟
             </summary>
         </member>
+        <member name="P:iWare.Wms.Application.WorkPieceProcessOutput.QualityNoOk">
+            <summary>
+            璐ㄩ噺涓嶅悎鏍煎師鍥犵被鍨嬶紝鏋氫妇QualityNoOkEnum 銆怑ditby shaocx,2024-06-26銆�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceProcessOutput.QualityNoOkReason">
+            <summary>
+            璐ㄩ噺涓嶅悎鏍煎師鍥� 銆怑ditby shaocx,2024-06-26銆�
+            </summary>
+        </member>
         <member name="P:iWare.Wms.Application.WorkPieceProcessOutput.WorkPieceID">
             <summary>
             宸ヤ欢鍙�
@@ -15753,6 +15773,164 @@
             <param name="input"></param>
             <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
         </member>
+        <member name="T:iWare.Wms.Application.WorkPieceUnLineDto">
+            <summary>
+            宸ヤ欢鍑哄簱淇℃伅杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineDto.WorkPieceID">
+            <summary>
+            宸ヤ欢鍙�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineDto.OP80NewCode">
+            <summary>
+            OP80鎵撶爜
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineDto.CarNo">
+            <summary>
+            灏忚溅鐮�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineDto.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:iWare.Wms.Application.WorkPieceUnLineSearch">
+            <summary>
+            宸ヤ欢鍑哄簱淇℃伅鏌ヨ鍙傛暟
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineSearch.WorkPieceID">
+            <summary>
+            宸ヤ欢鍙�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineSearch.OP80NewCode">
+            <summary>
+            OP80鎵撶爜
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineSearch.StartTimeBeginTime">
+            <summary>
+            宸ヤ欢鍑哄簱寮�濮嬫椂闂�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineSearch.StartTimeEndTime">
+            <summary>
+            宸ヤ欢鍑哄簱缁撴潫鏃堕棿
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineSearch.CarNo">
+            <summary>
+            灏忚溅鐮�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineSearch.WorkPieceUnLineUserName">
+            <summary>
+            鍑哄簱浜哄悕绉�
+            </summary>
+        </member>
+        <member name="T:iWare.Wms.Application.WorkPieceUnLineInput">
+            <summary>
+            宸ヤ欢鍑哄簱淇℃伅杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineInput.WorkPieceID">
+            <summary>
+            宸ヤ欢鍙�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineInput.OP80NewCode">
+            <summary>
+            OP80鎵撶爜
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineInput.CarNo">
+            <summary>
+            灏忚溅鐮�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.AddWorkPieceUnLineInput.WorkPieceID">
+            <summary>
+            宸ヤ欢鍙�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.AddWorkPieceUnLineInput.OP80NewCode">
+            <summary>
+            OP80鎵撶爜
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.AddWorkPieceUnLineInput.CarNo">
+            <summary>
+            灏忚溅鐮�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.UpdateWorkPieceUnLineInput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:iWare.Wms.Application.WorkPieceUnLineOutput">
+            <summary>
+            宸ヤ欢鍑哄簱淇℃伅杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineOutput.WorkPieceID">
+            <summary>
+            宸ヤ欢鍙�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineOutput.OP80NewCode">
+            <summary>
+            OP80鎵撶爜
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineOutput.CarNo">
+            <summary>
+            灏忚溅鐮�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceUnLineOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="T:iWare.Wms.Application.WorkPieceUnLineService">
+            <summary>
+            宸ヤ欢鍑哄簱涓嬬嚎淇℃伅鏈嶅姟
+            </summary>
+        </member>
+        <member name="M:iWare.Wms.Application.WorkPieceUnLineService.Page(iWare.Wms.Application.WorkPieceUnLineSearch)">
+            <summary>
+            鍒嗛〉鏌ヨ宸ヤ欢鍑哄簱涓嬬嚎淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:iWare.Wms.Application.WorkPieceUnLineService.Get(iWare.Wms.Application.QueryeWorkPieceUnLineInput)">
+            <summary>
+            鑾峰彇宸ヤ欢鍑哄簱涓嬬嚎淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:iWare.Wms.Application.WorkPieceUnLineService.List(iWare.Wms.Application.WorkPieceUnLineInput)">
+            <summary>
+            鑾峰彇宸ヤ欢鍑哄簱涓嬬嚎淇℃伅鍒楄〃
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:iWare.Wms.Application.WorkPieceUnLineService.Revoke(System.Collections.Generic.List{iWare.Wms.Application.DeleteWorkPieceUnLineInput})">
+            <summary>
+            鎾ら攢宸ヤ欢鍑哄簱涓嬬嚎淇℃伅
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
         <member name="T:iWare.Wms.Application.YieldAnalysisDto">
             <summary>
             浜х嚎浜ч噺缁熻杈撳嚭鍙傛暟
diff --git a/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceInfo.cs b/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceInfo.cs
index d34e15a..60d148a 100644
--- a/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceInfo.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceInfo.cs
@@ -14,6 +14,16 @@
     public class WorkPieceInfo : DEntityBase
     {
         /// <summary>
+        /// 璐ㄩ噺涓嶅悎鏍煎師鍥犵被鍨嬶紝鏋氫妇QualityNoOkEnum 銆怑ditby shaocx,2024-06-26銆�
+        /// </summary>
+        public int? QualityNoOk { get; set; }
+
+        /// <summary>
+        /// 璐ㄩ噺涓嶅悎鏍煎師鍥� 銆怑ditby shaocx,2024-06-26銆�
+        /// </summary>
+        public string QualityNoOkReason { get; set; }
+
+        /// <summary>
         /// 宸ヤ欢鍙�
         /// </summary>
         [Comment("宸ヤ欢鍙�")]
diff --git a/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceOutboundRecord.cs b/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceOutboundRecord.cs
new file mode 100644
index 0000000..d4aaca1
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceOutboundRecord.cs
@@ -0,0 +1,65 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+/*
+* @author : http://www.chiner.com.cn
+* @date : 2024-1-9
+* @desc : 宸ヤ欢鍑哄簱璁板綍琛�
+*/
+namespace iWare.Wms.Core
+{
+    /// <summary>
+    /// 宸ヤ欢鍑哄簱璁板綍琛�
+    /// </summary>
+    [Table("WorkPieceOutboundRecord")]
+    [Comment("宸ヤ欢鍑哄簱璁板綍琛�")]
+    public class WorkPieceOutboundRecord : DEntityBase
+    {
+
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷 (涓嬬嚎銆佹挙閿�涓嬬嚎銆佸嚭搴撱�佹挙閿�鍑哄簱)
+        /// </summary>
+        [Comment("鎿嶄綔绫诲瀷")]
+        [MaxLength(500)]
+        public string OperationType { get; set; }
+
+
+        /// <summary>
+        /// 鎴愬搧鐮�
+        /// </summary>
+        [Comment("鎴愬搧鐮�")]
+        [Required]
+        [MaxLength(255)]
+        public string OP80NewCode { get; set; }
+
+
+
+        /// <summary>
+        /// 宸ヤ欢鍙�
+        /// </summary>
+        [Comment("宸ヤ欢鍙�")]
+        [MaxLength(32)]
+        public string WorkPieceID { get; set; }
+
+
+        /// <summary>
+        /// 灏忚溅鐮�
+        /// </summary>
+        [Comment("灏忚溅鐮�")]
+        [MaxLength(32)]
+        public string CarNo { get; set; }
+
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [Comment("澶囨敞")]
+        [MaxLength(500)]
+        public string Remark { get; set; }
+    }
+}
diff --git a/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceProcess.cs b/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceProcess.cs
index eda16eb..db4a95a 100644
--- a/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceProcess.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceProcess.cs
@@ -21,6 +21,15 @@
     [Comment("宸ヤ欢鍔犲伐灞ュ巻琛�")]
     public class WorkPieceProcess : DEntityBase
     {
+        /// <summary>
+        /// 璐ㄩ噺涓嶅悎鏍煎師鍥犵被鍨嬶紝鏋氫妇QualityNoOkEnum 銆怑ditby shaocx,2024-06-26銆�
+        /// </summary>
+        public int? QualityNoOk { get; set; }
+
+        /// <summary>
+        /// 璐ㄩ噺涓嶅悎鏍煎師鍥� 銆怑ditby shaocx,2024-06-26銆�
+        /// </summary>
+        public string QualityNoOkReason { get; set; }
 
         /// <summary>
         /// 宸ヤ欢鍙�
diff --git a/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceUnLine.cs b/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceUnLine.cs
new file mode 100644
index 0000000..d258d07
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceUnLine.cs
@@ -0,0 +1,56 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+/*
+* @author : http://www.chiner.com.cn
+* @date : 2024-1-9
+* @desc : 宸ヤ欢鍑哄簱琛�
+*/
+namespace iWare.Wms.Core
+{
+    /// <summary>
+    /// 宸ヤ欢涓嬬嚎琛�
+    /// </summary>
+    [Table("WorkPieceUnLine")]
+    [Comment("宸ヤ欢涓嬬嚎琛�")]
+    public class WorkPieceUnLine : DEntityBase
+    {
+
+        /// <summary>
+        /// 鎴愬搧鐮�
+        /// </summary>
+        [Comment("鎴愬搧鐮�")]
+        [Required]
+        [MaxLength(255)]
+        public string OP80NewCode { get; set; }
+
+        /// <summary>
+        /// 宸ヤ欢鍙�
+        /// </summary>
+        [Comment("宸ヤ欢鍙�")]
+        [MaxLength(32)]
+        public string WorkPieceID { get; set; }
+
+      
+
+        /// <summary>
+        /// 灏忚溅鐮�
+        /// </summary>
+        [Comment("灏忚溅鐮�")]
+        [MaxLength(32)]
+        public string CarNo { get; set; }
+
+        
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [Comment("澶囨敞")]
+        [MaxLength(500)]
+        public string Remark { get; set; }
+    }
+}

--
Gitblit v1.9.3