1
schangxiang@126.com
2024-08-30 120e7a933c675b5587db9db17bb202075cacee00
1
已添加5个文件
已修改5个文件
713 ■■■■■ 文件已修改
iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/OutStoreInput.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/UnLineInput.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/UnLineRoolbackInput.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/PdaService.cs 304 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceOutbound/Dto/WorkPieceOutboundOutput.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceInfo.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/WorkPieceOutBound.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iWara.SCADA.Code/iWare.Wms.Core/Enum/WMS/OutboundOperationType.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iWara.SCADA.Code/iWare.Wms.Core/Enum/WMS/PieceUnLineStage.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/OutStoreInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
using 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; }
    }
}
iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/UnLineInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
using 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; }
    }
}
iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/Dto/UnLineRoolbackInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
using 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; }
    }
}
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
iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceOutbound/Dto/WorkPieceOutboundOutput.cs
@@ -1,5 +1,8 @@
using 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>
        /// ä¸‹çº¿äººId
        /// </summary>
        [Comment("下线人Id")]
        public long? WorkPieceUnLineUserId { get; set; }
        /// <summary>
        /// ä¸‹çº¿äººåç§°
        /// </summary>
        [Comment("下线人名称")]
        [MaxLength(32)]
        public string WorkPieceUnLineUserName { get; set; }
        #endregion
        /// <summary>
        /// å·¥ä»¶å·
        /// </summary>
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>
            ä¸‹çº¿äººId
            </summary>
        </member>
        <member name="P:iWare.Wms.Application.WorkPieceOutboundOutput.WorkPieceUnLineUserName">
            <summary>
            ä¸‹çº¿äººåç§°
            </summary>
        </member>
        <member name="P:iWare.Wms.Application.WorkPieceOutboundOutput.WorkPieceID">
            <summary>
            å·¥ä»¶å·
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>
        /// ä¸‹çº¿äººId
        /// </summary>
        [Comment("下线人Id")]
        public long? WorkPieceUnLineUserId { get; set; }
        /// <summary>
        /// ä¸‹çº¿äººåç§°
        /// </summary>
        [Comment("下线人名称")]
        [MaxLength(32)]
        public string WorkPieceUnLineUserName { get; set; }
        #endregion
        #region å‡ºåº“相关
        /// <summary>
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>
        /// ä¸‹çº¿äººId
        /// </summary>
        [Comment("下线人Id")]
        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>
iWara.SCADA.Code/iWare.Wms.Core/Enum/WMS/OutboundOperationType.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
using 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,
    }
}
iWara.SCADA.Code/iWare.Wms.Core/Enum/WMS/PieceUnLineStage.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
using System.ComponentModel;
namespace iWare.Wms.Core
{
    /// <summary>
    /// å·¥ä»¶é˜¶æ®µ
    /// </summary>
    public enum PieceUnLineStage
    {
        /// <summary>
        /// å·²ä¸‹çº¿
        /// </summary>
        [Description("已下线")]
        å·²ä¸‹çº¿ = 1,
        /// <summary>
        /// å·²å‡ºåº“
        /// </summary>
        [Description("已出库")]
        å·²å‡ºåº“ = 2
    }
}