schangxiang@126.com
2024-08-28 39c09dede499f7ba23bcd26b17b2199a31bddccc
iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/PdaService.cs
@@ -9,6 +9,7 @@
using Furion.DynamicApiController;
using System.Text;
using iWare.Wms.Core.Enum;
using Microsoft.AspNetCore.Authorization;
namespace iWare.Wms.Application.Service.Pda
{
@@ -31,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,
@@ -49,6 +52,7 @@
            IRepository<WorkPieceOutbound, MasterDbContextLocator> workPieceOutboundRep
            )
        {
            _workPieceUnLineRep = workPieceUnLineRep;
            _equipmentBaseInfoRep = equipmentBaseInfoRep;
            _v_GetEquipmentAlertRep = v_GetEquipmentAlert;
            _equipmentCurrentMonitorRep = equipmentCurrentMonitorRep;
@@ -414,6 +418,7 @@
        /// <returns></returns>
        [HttpGet("getWorkPieceByOP80NewCode")]
        [DisableOpLog]
        [AllowAnonymous]
        public async Task<WorkPieceInfoOutput> getWorkPieceByOP80NewCode([FromQuery] WorkPieceByOP80NewCodeInputSearch input)
        {
@@ -487,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;
@@ -529,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 "出库成功";
@@ -551,5 +557,13 @@
            return db_itemModelList.Count().ToString();
        }
        #region 新版 下线、出库执行
        #endregion
    }
}