From 120e7a933c675b5587db9db17bb202075cacee00 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周五, 30 8月 2024 09:33:55 +0800
Subject: [PATCH] 1

---
 iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceOutbound/Dto/WorkPieceOutboundOutput.cs |   49 ++++
 iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceOutBound.cs                               |   59 ++++
 iWara.SCADA.Code/iWare.Wms.Core/Enum/WMS/OutboundOperationType.cs                               |   35 ++
 iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/UnLineRoolbackInput.cs                   |   31 ++
 iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/UnLineInput.cs                           |   45 +++
 iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/PdaService.cs                                |  304 +++++++++++++++++++++++++
 iWara.SCADA.Code/iWare.Wms.Core/Enum/WMS/PieceUnLineStage.cs                                    |   23 +
 iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml                                |  103 ++++++++
 iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/OutStoreInput.cs                         |   27 ++
 iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceInfo.cs                                   |   37 +++
 10 files changed, 707 insertions(+), 6 deletions(-)

diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/OutStoreInput.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/OutStoreInput.cs
new file mode 100644
index 0000000..eb87583
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/OutStoreInput.cs
@@ -0,0 +1,27 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using iWare.Wms.Core;
+using iWare.Wms.Core.Enum;
+
+namespace iWare.Wms.Application
+{
+
+
+    /// <summary>
+    /// 鍑哄簱鎵ц杈撳叆鍙傛暟
+    /// </summary>
+    public class OutStoreInput
+    {
+
+        /// <summary>
+        /// 灏忚溅鐮�
+        /// </summary>
+        public string CarNo { get; set; }
+
+    }
+    
+
+}
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/UnLineInput.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/UnLineInput.cs
new file mode 100644
index 0000000..32f1949
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/UnLineInput.cs
@@ -0,0 +1,45 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using iWare.Wms.Core;
+using iWare.Wms.Core.Enum;
+
+namespace iWare.Wms.Application
+{
+
+
+    /// <summary>
+    /// 涓嬬嚎鎵ц杈撳叆鍙傛暟
+    /// </summary>
+    public class UnLineInput
+    {
+
+        /// <summary>
+        /// 宸ヤ欢鏁版嵁
+        /// </summary>
+        public List<UnBoundDetailsInput> WorkPieceInfoLst { get; set; }
+
+
+        /// <summary>
+        /// 灏忚溅鐮�
+        /// </summary>
+        public string CarNo { get; set; }
+
+    }
+
+    /// <summary>
+    /// 涓嬬嚎鎵ц杈撳叆鏄庣粏鍙傛暟
+    /// </summary>
+    public class UnBoundDetailsInput
+    {
+        /// <summary>
+        /// 宸ヤ欢OP80鐮�
+        /// </summary>
+        public string OP80NewCode { get; set; }
+
+    }
+
+
+}
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/UnLineRoolbackInput.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/UnLineRoolbackInput.cs
new file mode 100644
index 0000000..e090a9f
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/UnLineRoolbackInput.cs
@@ -0,0 +1,31 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using iWare.Wms.Core;
+using iWare.Wms.Core.Enum;
+
+namespace iWare.Wms.Application
+{
+
+
+    /// <summary>
+    /// 涓嬬嚎鎾ゅ洖鎵ц杈撳叆鍙傛暟
+    /// </summary>
+    public class UnLineRoolbackInput
+    {
+        /// <summary>
+        /// 鏍囪 1锛氫笅绾挎挙鍥�  2锛氬嚭搴撴挙鍥�
+        /// </summary>
+        public int Flag { get; set; }
+
+        /// <summary>
+        /// 宸ヤ欢鏁版嵁
+        /// </summary>
+        public List<UnBoundDetailsInput> WorkPieceInfoLst { 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 48ddb7f..b7f4f72 100644
--- a/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/PdaService.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/PdaService.cs
@@ -32,6 +32,7 @@
         private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
         private readonly IRepository<WorkPieceInfoLog, MasterDbContextLocator> _workPieceInfoLogRep;
         private readonly IRepository<WorkPieceOutbound, MasterDbContextLocator> _workPieceOutboundRep;
+        private readonly IRepository<WorkPieceOutboundRecord, MasterDbContextLocator> _workPieceOutboundRecordRep;
         private readonly IRepository<WorkPieceUnLine, MasterDbContextLocator> _workPieceUnLineRep;
 
         /// <summary>
@@ -39,6 +40,7 @@
         /// </summary>
         /// <param name="equipmentBaseInfoRep"></param>
         public PdaService(
+            IRepository<WorkPieceOutboundRecord, MasterDbContextLocator> workPieceOutboundRecordRep,
             IRepository<WorkPieceUnLine, MasterDbContextLocator> workPieceUnLineRep,
             IRepository<EquipmentBaseInfo, MasterDbContextLocator> equipmentBaseInfoRep,
             IRepository<V_GetEquipmentAlert, MasterDbContextLocator> v_GetEquipmentAlert,
@@ -52,6 +54,7 @@
             IRepository<WorkPieceOutbound, MasterDbContextLocator> workPieceOutboundRep
             )
         {
+            _workPieceOutboundRecordRep = workPieceOutboundRecordRep;
             _workPieceUnLineRep = workPieceUnLineRep;
             _equipmentBaseInfoRep = equipmentBaseInfoRep;
             _v_GetEquipmentAlertRep = v_GetEquipmentAlert;
@@ -560,7 +563,308 @@
 
         #region 鏂扮増 涓嬬嚎銆佸嚭搴撴墽琛�
 
+        /// <summary>
+        /// 涓嬬嚎鎵ц
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("unLineWorkPiece")]
+        [DisableOpLog]
+        [UnitOfWork]
+        public async Task<string> unLineWorkPiece([FromBody] UnLineInput input)
+        {
+            if (input.WorkPieceInfoLst.Count < 1)
+            {
+                throw Oops.Oh("鏁版嵁涓嶈兘涓虹┖锛�");
+            }
+            if (input.CarNo == null || input.CarNo.Equals(""))
+            {
+                throw Oops.Oh("灏忚溅鐮佸繀椤昏緭鍏ワ紒");
+            }
 
+            List<UnBoundDetailsInput> WorkPieceInfoLst = input.WorkPieceInfoLst;
+
+            var addOutBoundList = new List<WorkPieceOutbound>();
+            var addOutBoundLogList = new List<WorkPieceOutboundRecord>();
+
+            var queryOP80NewCodeList = WorkPieceInfoLst.Select(x => x.OP80NewCode).ToList();
+            List<WorkPieceOutbound> db_WorkPieceOutboundList = await _workPieceOutboundRep.Where(w => queryOP80NewCodeList.Contains(w.OP80NewCode) && 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_WorkPieceOutboundList.FirstOrDefault(w => w.OP80NewCode == item.OP80NewCode);
+                if (itemModel != null)
+                {
+                    if (itemModel.UnLineStage == PieceUnLineStage.宸插嚭搴�)
+                    {
+                        var createitme = itemModel.WorkPieceOutboundTime == null ? "" : (((DateTimeOffset)itemModel.WorkPieceOutboundTime).UtcDateTime.ToString("yyyy-MM-dd HH:mm:ss"));
+                        throw Oops.Oh($"鎴愬搧鐮亄itemModel.OP80NewCode}宸插嚭搴擄紝鍑哄簱鏃堕棿:{createitme}");
+                    }
+                    if (itemModel.UnLineStage == PieceUnLineStage.宸蹭笅绾�)
+                    {
+                        var createitme = itemModel.WorkPieceUnLineTime == null ? "" : (((DateTimeOffset)itemModel.WorkPieceUnLineTime).UtcDateTime.ToString("yyyy-MM-dd HH:mm:ss"));
+                        throw Oops.Oh($"鎴愬搧鐮亄itemModel.OP80NewCode}宸蹭笅绾匡紝涓嬬嚎鏃堕棿:{createitme}");
+                    }
+                }
+                var workPiece = db_WorkPieceInfoList.FirstOrDefault(w => w.OP80NewCode == item.OP80NewCode);
+                if (workPiece != null)
+                {
+
+                    workPiece.OutRemark = "宸ヤ欢涓嬬嚎";
+                    workPiece.UnLineStage = PieceUnLineStage.宸蹭笅绾�;
+                    workPiece.UnLineStageName = PieceUnLineStage.宸蹭笅绾�.ToString();
+                    workPiece.WorkPieceUnLineTime = DateTime.Now;
+                    workPiece.WorkPieceUnLineUserId = CurrentUserInfo.UserId;
+                    workPiece.WorkPieceUnLineUserName = CurrentUserInfo.Name;
+
+                    await _workPieceInfoRep.UpdateAsync(workPiece);
+                }
+                var outBound = new WorkPieceOutbound
+                {
+                    WorkPieceID = workPiece?.WorkPieceID,
+                    OP80NewCode = item.OP80NewCode,
+                    WorkPieceOutboundTime = DateTime.Now,
+                    WorkPieceOutboundUserId = CurrentUserInfo.UserId,
+                    WorkPieceOutboundUserName = CurrentUserInfo.Name,
+                    CreatedUserId = CurrentUserInfo.UserId,
+                    CreatedUserName = CurrentUserInfo.Name,
+
+                    UnLineStage = PieceUnLineStage.宸蹭笅绾�,
+                    UnLineStageName = PieceUnLineStage.宸蹭笅绾�.ToString(),
+                    WorkPieceUnLineTime = DateTime.Now,
+                    WorkPieceUnLineUserId = CurrentUserInfo.UserId,
+                    WorkPieceUnLineUserName = CurrentUserInfo.Name,
+                    CarNo = input.CarNo,
+                    Remark = "宸ヤ欢涓嬬嚎",
+
+                };
+                addOutBoundList.Add(outBound);
+
+                var outBoundLog = new WorkPieceOutboundRecord
+                {
+                    OperationType = OutboundOperationType.涓嬬嚎.ToString(),
+                    WorkPieceID = workPiece?.WorkPieceID,
+                    OP80NewCode = item.OP80NewCode,
+
+                    CreatedUserId = CurrentUserInfo.UserId,
+                    CreatedUserName = CurrentUserInfo.Name,
+
+
+                    CarNo = input.CarNo,
+                    Remark = "宸ヤ欢涓嬬嚎",
+
+                };
+                addOutBoundLogList.Add(outBoundLog);
+
+
+
+            }
+            await _workPieceOutboundRep.InsertAsync(addOutBoundList);
+            await _workPieceOutboundRecordRep.InsertAsync(addOutBoundLogList);
+
+            return "涓嬬嚎鎴愬姛";
+        }
+
+       
+
+
+        /// <summary>
+        /// 鍑哄簱鎵ц
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("outStoreWorkPiece")]
+        [DisableOpLog]
+        [UnitOfWork]
+        public async Task<string> outStoreWorkPiece([FromBody] OutStoreInput input)
+        {
+            if (input.CarNo == null || input.CarNo.Equals(""))
+            {
+                throw Oops.Oh("灏忚溅鐮佸繀椤昏緭鍏ワ紒");
+            }
+
+
+            var updateOutBoundList = new List<WorkPieceOutbound>();
+            var addOutBoundLogList = new List<WorkPieceOutboundRecord>();
+
+            List<WorkPieceOutbound> db_WorkPieceOutboundList = await _workPieceOutboundRep.Where(w =>
+            w.CarNo == input.CarNo
+            && w.UnLineStage == PieceUnLineStage.宸蹭笅绾�
+            && w.IsDeleted == false).ToListAsync();
+
+            var queryOP80NewCodeList = db_WorkPieceOutboundList.Select(x => x.OP80NewCode).ToList();
+
+            List<WorkPieceInfo> db_WorkPieceInfoList = await _workPieceInfoRep.Where(w => queryOP80NewCodeList.Contains(w.OP80NewCode) && w.IsDeleted == false).ToListAsync();
+
+            foreach (var item in db_WorkPieceOutboundList)
+            {
+                var itemModel = db_WorkPieceOutboundList.FirstOrDefault(w => w.OP80NewCode == item.OP80NewCode);
+                if (itemModel != null)
+                {
+                    if (itemModel.UnLineStage == PieceUnLineStage.宸插嚭搴�)
+                    {
+                        var createitme = itemModel.WorkPieceOutboundTime == null ? "" : (((DateTimeOffset)itemModel.WorkPieceOutboundTime).UtcDateTime.ToString("yyyy-MM-dd HH:mm:ss"));
+                        throw Oops.Oh($"鎴愬搧鐮亄itemModel.OP80NewCode}宸插嚭搴擄紝鍑哄簱鏃堕棿:{createitme}");
+                    }
+                }
+                else
+                {
+                    throw Oops.Oh($"鎴愬搧鐮亄itemModel.OP80NewCode}娌℃湁涓嬬嚎鏁版嵁");
+                }
+                var workPiece = db_WorkPieceInfoList.FirstOrDefault(w => w.OP80NewCode == item.OP80NewCode);
+                if (workPiece != null)
+                {
+
+                    workPiece.OutRemark = "宸ヤ欢鍑哄簱";
+                    workPiece.UnLineStage = PieceUnLineStage.宸插嚭搴�;
+                    workPiece.UnLineStageName = PieceUnLineStage.宸插嚭搴�.ToString();
+                    workPiece.OutTime = DateTime.Now;
+                    workPiece.OutPerson = CurrentUserInfo.Name;
+
+                    await _workPieceInfoRep.UpdateAsync(workPiece);
+                }
+
+                item.UnLineStage = PieceUnLineStage.宸插嚭搴�;
+                item.UnLineStageName = PieceUnLineStage.宸插嚭搴�.ToString();
+                item.WorkPieceUnLineTime = DateTime.Now;
+                item.WorkPieceUnLineUserId = CurrentUserInfo.UserId;
+                item.WorkPieceUnLineUserName = CurrentUserInfo.Name;
+                updateOutBoundList.Add(item);
+
+                var outBoundLog = new WorkPieceOutboundRecord
+                {
+                    OperationType = OutboundOperationType.鍑哄簱.ToString(),
+                    WorkPieceID = workPiece?.WorkPieceID,
+                    OP80NewCode = item.OP80NewCode,
+
+                    CreatedUserId = CurrentUserInfo.UserId,
+                    CreatedUserName = CurrentUserInfo.Name,
+
+
+                    CarNo = input.CarNo,
+                    Remark = "宸ヤ欢鍑哄簱",
+
+                };
+                addOutBoundLogList.Add(outBoundLog);
+
+
+
+            }
+            await _workPieceOutboundRep.UpdateAsync(updateOutBoundList);
+            await _workPieceOutboundRecordRep.InsertAsync(addOutBoundLogList);
+
+            return "鍑哄簱鎴愬姛";
+        }
+
+
+        /// <summary>
+        /// 涓嬬嚎鎾ゅ洖/鍑哄簱鎾ゅ洖
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost("unLineWorkPieceRollback")]
+        [DisableOpLog]
+        [UnitOfWork]
+        public async Task<string> unLineWorkPieceRollback([FromBody] UnLineRoolbackInput input)
+        {
+            if (input.WorkPieceInfoLst.Count < 1)
+            {
+                throw Oops.Oh("鏁版嵁涓嶈兘涓虹┖锛�");
+            }
+            if (!(input.Flag == 1 || input.Flag == 2))
+            {
+                throw Oops.Oh("鏍囪涓嶆纭紒");
+            }
+            var remark = "宸ヤ欢涓嬬嚎鎾ゅ洖";
+            if (input.Flag == 2)
+            {
+                remark = "宸ヤ欢鍑哄簱鎾ゅ洖";
+            }
+
+            List<UnBoundDetailsInput> WorkPieceInfoLst = input.WorkPieceInfoLst;
+
+            var removeOutBoundList = new List<WorkPieceOutbound>();
+            var addOutBoundLogList = new List<WorkPieceOutboundRecord>();
+
+            var queryOP80NewCodeList = WorkPieceInfoLst.Select(x => x.OP80NewCode).ToList();
+            List<WorkPieceOutbound> db_WorkPieceOutboundList = await _workPieceOutboundRep.Where(w => queryOP80NewCodeList.Contains(w.OP80NewCode) && 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_WorkPieceOutboundList.FirstOrDefault(w => w.OP80NewCode == item.OP80NewCode);
+                if (itemModel != null)
+                {
+                    if (input.Flag == 1 && itemModel.UnLineStage == PieceUnLineStage.宸插嚭搴�)
+                    {
+                        var createitme = itemModel.WorkPieceOutboundTime == null ? "" : (((DateTimeOffset)itemModel.WorkPieceOutboundTime).UtcDateTime.ToString("yyyy-MM-dd HH:mm:ss"));
+                        throw Oops.Oh($"鎴愬搧鐮亄itemModel.OP80NewCode}宸插嚭搴擄紝鍑哄簱鏃堕棿:{createitme}");
+                    }
+                    if (input.Flag == 2 && itemModel.UnLineStage == PieceUnLineStage.宸蹭笅绾�)
+                    {
+                        var createitme = itemModel.WorkPieceUnLineTime == null ? "" : (((DateTimeOffset)itemModel.WorkPieceUnLineTime).UtcDateTime.ToString("yyyy-MM-dd HH:mm:ss"));
+                        throw Oops.Oh($"鎴愬搧鐮亄itemModel.OP80NewCode}宸蹭笅绾匡紝涓嬬嚎鏃堕棿:{createitme}");
+                    }
+                }
+                else
+                {
+                    throw Oops.Oh($"鎴愬搧鐮亄itemModel.OP80NewCode}娌℃湁涓嬬嚎鍑哄簱鏁版嵁");
+                }
+                var workPiece = db_WorkPieceInfoList.FirstOrDefault(w => w.OP80NewCode == item.OP80NewCode);
+                if (workPiece != null)
+                {
+                    workPiece.OutRemark = remark;
+
+                    if (input.Flag == 1)
+                    {
+                        workPiece.UnLineStage = null;
+                        workPiece.UnLineStageName = "";
+                        workPiece.WorkPieceUnLineTime = null;
+                        workPiece.WorkPieceUnLineUserId = null;
+                        workPiece.WorkPieceUnLineUserName = "";
+                    }
+                    else
+                    {
+                        workPiece.UnLineStage = PieceUnLineStage.宸蹭笅绾�;
+                        workPiece.UnLineStageName = PieceUnLineStage.宸蹭笅绾�.ToString();
+                        workPiece.WorkPieceUnLineTime = DateTime.Now;
+                        workPiece.WorkPieceUnLineUserId = CurrentUserInfo.UserId;
+                        workPiece.WorkPieceUnLineUserName = CurrentUserInfo.Name;
+                    }
+
+
+                    await _workPieceInfoRep.UpdateAsync(workPiece);
+                }
+
+
+                removeOutBoundList.Add(itemModel);
+
+                var outBoundLog = new WorkPieceOutboundRecord
+                {
+                    OperationType = input.Flag == 1 ? OutboundOperationType.鎾ら攢涓嬬嚎.ToString() : OutboundOperationType.鎾ら攢鍑哄簱.ToString(),
+                    WorkPieceID = workPiece?.WorkPieceID,
+                    OP80NewCode = item.OP80NewCode,
+
+                    CreatedUserId = CurrentUserInfo.UserId,
+                    CreatedUserName = CurrentUserInfo.Name,
+
+                    CarNo = itemModel.CarNo,
+                    Remark = remark,
+
+                };
+                addOutBoundLogList.Add(outBoundLog);
+
+
+
+            }
+            await _workPieceOutboundRep.DeleteAsync(removeOutBoundList);
+            await _workPieceOutboundRecordRep.InsertAsync(addOutBoundLogList);
+
+            return "鎿嶄綔鎴愬姛";
+        }
 
 
         #endregion
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceOutbound/Dto/WorkPieceOutboundOutput.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceOutbound/Dto/WorkPieceOutboundOutput.cs
index 1db715a..78f202f 100644
--- a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceOutbound/Dto/WorkPieceOutboundOutput.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceOutbound/Dto/WorkPieceOutboundOutput.cs
@@ -1,5 +1,8 @@
 锘縰sing iWare.Wms.Core.Util.LowCode.Dto;
 using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using iWare.Wms.Core;
 
 namespace iWare.Wms.Application
 {
@@ -8,6 +11,52 @@
     /// </summary>
     public class WorkPieceOutboundOutput
     {
+
+        /// <summary>
+        /// 灏忚溅鐮�
+        /// </summary>
+        [Comment("灏忚溅鐮�")]
+        [MaxLength(32)]
+        public string CarNo { get; set; }
+
+        /// <summary>
+        /// 闃舵
+        /// </summary>
+        [Comment("闃舵")]
+        public PieceUnLineStage? UnLineStage { get; set; }
+
+        /// <summary>
+        /// 闃舵鍚嶇О
+        /// </summary>
+        [Comment("闃舵鍚嶇О")]
+        public String UnLineStageName { get; set; }
+
+
+
+        #region 涓嬬嚎
+
+        /// <summary>
+        /// 涓嬬嚎鏃堕棿
+        /// </summary>
+        [Comment("涓嬬嚎鏃堕棿")]
+        public DateTime? WorkPieceUnLineTime { get; set; }
+
+
+        /// <summary>
+        /// 涓嬬嚎浜篒d
+        /// </summary>
+        [Comment("涓嬬嚎浜篒d")]
+        public long? WorkPieceUnLineUserId { get; set; }
+
+        /// <summary>
+        /// 涓嬬嚎浜哄悕绉�
+        /// </summary>
+        [Comment("涓嬬嚎浜哄悕绉�")]
+        [MaxLength(32)]
+        public string WorkPieceUnLineUserName { get; set; }
+
+        #endregion
+
         /// <summary>
         /// 宸ヤ欢鍙�
         /// </summary>
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 ce2aa13..8b285a1 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.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})">
+        <member name="M:iWare.Wms.Application.Service.Pda.PdaService.#ctor(Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceOutboundRecord,Furion.DatabaseAccessor.MasterDbContextLocator},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>
@@ -365,6 +365,27 @@
         <member name="M:iWare.Wms.Application.Service.Pda.PdaService.GetOutBoundWorkPieceInfoCount">
             <summary>
             鍑哄簱缁熻
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:iWare.Wms.Application.Service.Pda.PdaService.unLineWorkPiece(iWare.Wms.Application.UnLineInput)">
+            <summary>
+            涓嬬嚎鎵ц
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:iWare.Wms.Application.Service.Pda.PdaService.outStoreWorkPiece(iWare.Wms.Application.OutStoreInput)">
+            <summary>
+            鍑哄簱鎵ц
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:iWare.Wms.Application.Service.Pda.PdaService.unLineWorkPieceRollback(iWare.Wms.Application.UnLineRoolbackInput)">
+            <summary>
+            涓嬬嚎鎾ゅ洖/鍑哄簱鎾ゅ洖
             </summary>
             <param name="input"></param>
             <returns></returns>
@@ -5082,6 +5103,56 @@
             </summary>
             <param name="input"></param>
             <returns></returns>
+        </member>
+        <member name="T:iWare.Wms.Application.OutStoreInput">
+            <summary>
+            鍑哄簱鎵ц杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.OutStoreInput.CarNo">
+            <summary>
+            灏忚溅鐮�
+            </summary>
+        </member>
+        <member name="T:iWare.Wms.Application.UnLineInput">
+            <summary>
+            涓嬬嚎鎵ц杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.UnLineInput.WorkPieceInfoLst">
+            <summary>
+            宸ヤ欢鏁版嵁
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.UnLineInput.CarNo">
+            <summary>
+            灏忚溅鐮�
+            </summary>
+        </member>
+        <member name="T:iWare.Wms.Application.UnBoundDetailsInput">
+            <summary>
+            涓嬬嚎鎵ц杈撳叆鏄庣粏鍙傛暟
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.UnBoundDetailsInput.OP80NewCode">
+            <summary>
+            宸ヤ欢OP80鐮�
+            </summary>
+        </member>
+        <member name="T:iWare.Wms.Application.UnLineRoolbackInput">
+            <summary>
+            涓嬬嚎鎾ゅ洖鎵ц杈撳叆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.UnLineRoolbackInput.Flag">
+            <summary>
+            鏍囪 1锛氫笅绾挎挙鍥�  2锛氬嚭搴撴挙鍥�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.UnLineRoolbackInput.WorkPieceInfoLst">
+            <summary>
+            宸ヤ欢鏁版嵁
+            </summary>
         </member>
         <member name="T:iWare.Wms.Application.WorkPieceByOP80NewCodeInputSearch">
             <summary>
@@ -14964,6 +15035,36 @@
             宸ヤ欢鍑哄簱淇℃伅杈撳嚭鍙傛暟
             </summary>
         </member>
+        <member name="P:iWare.Wms.Application.WorkPieceOutboundOutput.CarNo">
+            <summary>
+            灏忚溅鐮�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceOutboundOutput.UnLineStage">
+            <summary>
+            闃舵
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceOutboundOutput.UnLineStageName">
+            <summary>
+            闃舵鍚嶇О
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceOutboundOutput.WorkPieceUnLineTime">
+            <summary>
+            涓嬬嚎鏃堕棿
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceOutboundOutput.WorkPieceUnLineUserId">
+            <summary>
+            涓嬬嚎浜篒d
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceOutboundOutput.WorkPieceUnLineUserName">
+            <summary>
+            涓嬬嚎浜哄悕绉�
+            </summary>
+        </member>
         <member name="P:iWare.Wms.Application.WorkPieceOutboundOutput.WorkPieceID">
             <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 60d148a..2f51e3d 100644
--- a/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceInfo.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceInfo.cs
@@ -243,6 +243,43 @@
         public DateTime? CompleteTime { get; set; }
 
 
+
+        /// <summary>
+        /// 涓嬬嚎闃舵
+        /// </summary>
+        [Comment("涓嬬嚎闃舵")]
+        public PieceUnLineStage? UnLineStage { get; set; }
+
+        /// <summary>
+        /// 涓嬬嚎闃舵鍚嶇О
+        /// </summary>
+        [Comment("涓嬬嚎闃舵鍚嶇О")]
+        public String UnLineStageName { get; set; }
+
+        #region 涓嬬嚎
+
+        /// <summary>
+        /// 涓嬬嚎鏃堕棿
+        /// </summary>
+        [Comment("涓嬬嚎鏃堕棿")]
+        public DateTime? WorkPieceUnLineTime { get; set; }
+
+
+        /// <summary>
+        /// 涓嬬嚎浜篒d
+        /// </summary>
+        [Comment("涓嬬嚎浜篒d")]
+        public long? WorkPieceUnLineUserId { get; set; }
+
+        /// <summary>
+        /// 涓嬬嚎浜哄悕绉�
+        /// </summary>
+        [Comment("涓嬬嚎浜哄悕绉�")]
+        [MaxLength(32)]
+        public string WorkPieceUnLineUserName { get; set; }
+
+        #endregion
+
         #region 鍑哄簱鐩稿叧
 
         /// <summary>
diff --git a/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceOutBound.cs b/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceOutBound.cs
index 93d6434..082ea9b 100644
--- a/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceOutBound.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceOutBound.cs
@@ -20,19 +20,65 @@
     [Comment("宸ヤ欢鍑哄簱琛�")]
     public class WorkPieceOutbound : DEntityBase
     {
+
+        /// <summary>
+        /// 宸ヤ欢OP80鎵撶殑鐮�-鍞竴绱㈠紩
+        /// </summary>
+        [Comment("OP80鎵撶爜")]
+        [Required]
+        [MaxLength(255)]
+        public string OP80NewCode { get; set; }
+
+        /// <summary>
+        /// 灏忚溅鐮�
+        /// </summary>
+        [Comment("灏忚溅鐮�")]
+        [MaxLength(32)]
+        public string CarNo { get; set; }
+
+        /// <summary>
+        /// 闃舵
+        /// </summary>
+        [Comment("闃舵")]
+        public PieceUnLineStage? UnLineStage { get; set; }
+
+        /// <summary>
+        /// 闃舵鍚嶇О
+        /// </summary>
+        [Comment("闃舵鍚嶇О")]
+        public String UnLineStageName { get; set; }
+
         /// <summary>
         /// 宸ヤ欢鍙�
         /// </summary>
         [Comment("宸ヤ欢鍙�")]
         public string WorkPieceID { get; set; }
 
+        #region 涓嬬嚎
+
         /// <summary>
-        /// 宸ヤ欢OP80鎵撶殑鐮�
+        /// 涓嬬嚎鏃堕棿
         /// </summary>
-        [Comment("OP80鎵撶爜")]
-        [Required]
-        [MaxLength(255)]
-        public string OP80NewCode { get; set; }
+        [Comment("涓嬬嚎鏃堕棿")]
+        public DateTime? WorkPieceUnLineTime { get; set; }
+
+
+        /// <summary>
+        /// 涓嬬嚎浜篒d
+        /// </summary>
+        [Comment("涓嬬嚎浜篒d")]
+        public long? WorkPieceUnLineUserId { get; set; }
+
+        /// <summary>
+        /// 涓嬬嚎浜哄悕绉�
+        /// </summary>
+        [Comment("涓嬬嚎浜哄悕绉�")]
+        [MaxLength(32)]
+        public string WorkPieceUnLineUserName { get; set; }
+
+        #endregion
+
+        #region 鍑哄簱
 
         /// <summary>
         /// 鍑哄簱鏃堕棿
@@ -53,6 +99,9 @@
         [Comment("鍑哄簱浜哄悕绉�")]
         [MaxLength(32)]
         public string WorkPieceOutboundUserName { get; set; }
+
+        #endregion
+
         /// <summary>
         /// 澶囨敞
         /// </summary>
diff --git a/iWara.SCADA.Code/iWare.Wms.Core/Enum/WMS/OutboundOperationType.cs b/iWara.SCADA.Code/iWare.Wms.Core/Enum/WMS/OutboundOperationType.cs
new file mode 100644
index 0000000..ba5f7e0
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Core/Enum/WMS/OutboundOperationType.cs
@@ -0,0 +1,35 @@
+锘縰sing System.ComponentModel;
+
+namespace iWare.Wms.Core
+{
+    /// <summary>
+    /// 鎿嶄綔绫诲瀷
+    /// </summary>
+    public enum OutboundOperationType
+    {
+        /// <summary>
+        /// 涓嬬嚎
+        /// </summary>
+        [Description("涓嬬嚎")]
+        涓嬬嚎 = 1,
+
+        /// <summary>
+        /// 鎾ら攢涓嬬嚎
+        /// </summary>
+        [Description("鎾ら攢涓嬬嚎")]
+        鎾ら攢涓嬬嚎 = 2,
+
+        /// <summary>
+        /// 鍑哄簱
+        /// </summary>
+        [Description("鍑哄簱")]
+        鍑哄簱 = 3,
+
+        /// <summary>
+        /// 鎾ら攢鍑哄簱
+        /// </summary>
+        [Description("鎾ら攢鍑哄簱")]
+        鎾ら攢鍑哄簱 = 4,
+
+    }
+}
\ No newline at end of file
diff --git a/iWara.SCADA.Code/iWare.Wms.Core/Enum/WMS/PieceUnLineStage.cs b/iWara.SCADA.Code/iWare.Wms.Core/Enum/WMS/PieceUnLineStage.cs
new file mode 100644
index 0000000..7eecc76
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Core/Enum/WMS/PieceUnLineStage.cs
@@ -0,0 +1,23 @@
+锘縰sing System.ComponentModel;
+
+namespace iWare.Wms.Core
+{
+    /// <summary>
+    /// 宸ヤ欢闃舵
+    /// </summary>
+    public enum PieceUnLineStage
+    {
+        /// <summary>
+        /// 宸蹭笅绾�
+        /// </summary>
+        [Description("宸蹭笅绾�")]
+        宸蹭笅绾� = 1,
+
+        /// <summary>
+        /// 宸插嚭搴�
+        /// </summary>
+        [Description("宸插嚭搴�")]
+        宸插嚭搴� = 2
+
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3