qinchulong
2025-03-03 aeaab43f0a625382eaa85144b20d15eb00862a4c
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/GZJ/GZJJob.cs
@@ -15,6 +15,7 @@
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common.LocationEnum;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Communicator;
using WIDESEAWCS_Core.BaseRepository;
@@ -43,6 +44,8 @@
        private readonly IRepository<dt_outstockinfo> _outStockRepository;
        private readonly IRepository<dt_batchInfo> _batchInfoRepository;
        private readonly IRepository<Dt_StockInfo> _StockInfoRepository;
        private readonly IRepository<Dt_LocationInfo> _LocationInfoRepository;
        private readonly IUnitOfWorkManage _unitOfWorkManage;
        WebSocketServer _webSocketServer;
        public GZJJob(ITaskService taskService, WebSocketServer webSocketServer, Idt_ErrormsginfoService errormsginfoService,
@@ -53,7 +56,9 @@
            IRepository<dt_outstockinfo> outStockRepository,
            IRepository<dt_storagemode> storagemodeRepository,
            IRepository<dt_batchInfo> batchInfoRepository,
            IRepository<Dt_StockInfo> StockInfoRepository)
            IRepository<Dt_StockInfo> StockInfoRepository,
            IRepository<Dt_LocationInfo> LocationInfoRepository,
            IUnitOfWorkManage unitOfWorkManage)
        {
            _taskService = taskService;//注入
            _webSocketServer = webSocketServer;
@@ -65,6 +70,8 @@
            _outStockRepository = outStockRepository;
            _batchInfoRepository = batchInfoRepository;
            _StockInfoRepository = StockInfoRepository;
            _LocationInfoRepository = LocationInfoRepository;
            _unitOfWorkManage = unitOfWorkManage;
        }
        public Task Execute(IJobExecutionContext context)
@@ -155,16 +162,16 @@
                try
                {
                    #region ç”Ÿæˆå‡ºåº“任务
                    if (!OHTJob.oHTReadData.R_ZXJ_isWork)
                    {
                        throw new Exception($"整形机投入使用信号为false");
                    }
                    var isout = _outStockRepository.QueryFirst(v => v.Id == 1);
                    if (isout.isout != 1)
                    {
                        throw new Exception($"当前系统设置为不出库模式");
                    }
                    if (!OHTJob.oHTReadData.R_ZXJ_isWork)
                    {
                        throw new Exception($"整形机投入使用信号为false");
                    }
                    if (!OHTJob.oHTReadData.R_ZXJ_TCMode || OHTJob.oHTReadData.R_HC_isReadyWork)
                    if (!OHTJob.oHTReadData.R_ZXJ_TCMode || !OHTJob.oHTReadData.R_HC_isReadyWork)
                    {
                        throw new Exception($"整形机不属于天车上料模式或天车放板信号为false");
                    }
@@ -177,11 +184,30 @@
                    //查询当前需要出库的批次号,以及出库物料类型
                    var batch = _batchInfoRepository.QueryFirst(v => v.Id == 1);
                    //查询库存物料库存信息
                    var stocks = _StockInfoRepository.QueryData(v => v.Remark == batch.materType && v.BatchNo == batch.OutBatch).OrderBy(v => v.CreateDate).ToList();
                    var stocks = _StockInfoRepository.QueryData(v => v.Remark == batch.materType && v.BatchNo == batch.OutBatch && v.StockStatus==0)
                        .OrderBy(v => v.CreateDate).ToList();
                    if (stocks.Count <= 0)
                    {
                        throw new Exception($"当前库存中没有【{batch.materType}】(0自产 1外购)且批次为【{batch.OutBatch}】的物料");
                    }
                    //查询货位
                    var locaOne=_LocationInfoRepository.QueryFirst(v=>v.LocationCode== stocks[0].LocationCode);
                    //查询相邻的货位
                    Dt_LocationInfo locaTow = new Dt_LocationInfo();
                    if (locaOne.Depth==1)
                    {
                        locaTow = _LocationInfoRepository.QueryFirst(v => v.Row == locaOne.Row &&v.Column== locaOne.Column && v.Depth==2);
                    }
                    else
                    {
                        locaTow = _LocationInfoRepository.QueryFirst(v => v.Row == locaOne.Row && v.Column == locaOne.Column && v.Depth == 1);
                    }
                    locaOne.LocationStatus = (int)LocationStatusEnum.Lock;
                    locaTow.LocationStatus = (int)LocationStatusEnum.Lock;
                    //查询相邻的库存
                    var BBstock = _StockInfoRepository.QueryFirst(v=>v.LocationCode== locaTow.LocationCode);
                    BBstock.StockStatus = 1;
                    stocks[0].StockStatus = 1;
                    //查询终点站台信息
                    var station = _dt_stationInfoRepository.QueryFirst(v => v.msg == "整形机放料位");
                    //开始创建任务
@@ -190,14 +216,26 @@
                    outtask.TaskType = (int)TaskOutboundTypeEnum.Outbound;
                    outtask.TaskState = (int)TaskOutStatusEnum.OutNew;
                    outtask.SourceAddress = stocks[0].LocationCode;
                    outtask.TargetAddress = station.Row + "-" + station.Column + "-1"; ;
                    outtask.TargetAddress = station.Row + "-" + station.Column + "-1";
                    outtask.NextAddress = locaTow.LocationCode;
                    outtask.Grade = 1;
                    outtask.WMSId = 3;
                    outtask.Remark = batch.materType;
                    outtask.PalletCode = "text";
                    outtask.CurrentAddress = "text";
                    _unitOfWorkManage.BeginTran();
                    _LocationInfoRepository.UpdateData(locaOne);
                    _LocationInfoRepository.UpdateData(locaTow);
                    _StockInfoRepository.UpdateData(BBstock);
                    _dt_taskRepositiry.AddData(outtask);
                    _StockInfoRepository.UpdateData(stocks[0]);
                    _unitOfWorkManage.CommitTran();
                    #endregion
                }
                catch (Exception ex)
                {
                    _unitOfWorkManage.RollbackTran();
                    _ErrormsginfoService.UpdateErrorMsg(ex.Message, 3);
                }
            }