陈勇
2026-04-06 9de6c7c6d835ba5161d64114d154bfc7676244a1
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/pullLock.cs
@@ -11,7 +11,10 @@
using WIDESEA_Common.MES.Request;
using WIDESEA_Core;
using WIDESEA_Core.Const;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_DTO.WMS;
using WIDESEA_Model.Models;
using WIDESEAWCS_BasicInfoService;
using WIDESEAWCS_Model.Models;
@@ -28,33 +31,128 @@
            try
            {
                if (string.IsNullOrEmpty(jsondata.ToString())) throw new Exception("请求参数为空");
                Console.WriteLine(jsondata);
                var result = JsonConvert.DeserializeObject<List<pullLockInfo>>(jsondata.ToString());
                var result = JsonConvert.DeserializeObject<pullLockInfo>(jsondata.ToString());
                foreach (var item in result.data)
                foreach (var item in result)
                {
                    var assemblyOrderInfo = _assemblyOrderInfoRepository.QueryFirst(x => x.workOrderNo == item.workOrderNo && x.orderType == item.workOrderType);
                    if (assemblyOrderInfo == null) throw new Exception($"拉动锁车失败:未知总装工单号{item.workOrderNo}");
                    //Dt_PalletStockInfo carinfo = null;
                    VV_StockInfo OutStock = new VV_StockInfo();
                    //Dt_CarBodyInfo carbodyinfo = null;
                    if (!string.IsNullOrEmpty(item.pvi))
                    {
                        var carInfo = _palletStockInfoRepository.QueryFirst(x => x.PVI == item.pvi && x.pbMaterial == item.pbMaterial);
                        if (carInfo == null)
                        OutStock = _VVStockInfoRepository.QueryFirst(x => x.PVI == item.pvi && x.StockStatus == 0 && x.LockOrder == 0 && x.StayStatus == 0 && x.CarType == (int)BodyType.PaintedBody);
                        if (OutStock == null)
                        {
                            throw new Exception("未知车身");
                            throw new Exception($"未找到指定PVI车身信息{item.pvi}");
                        }
                    }
                    else
                    {
                        OutStock = _VVStockInfoRepository.QueryData(x => x.pbMaterial == item.pbMaterial && x.StockStatus == 0 && x.LockOrder == 0 && x.StayStatus == 0 && x.workOrderType == item.workOrderType && x.CarType == (int)BodyType.PaintedBody).OrderBy(x => x.biwInPassTime).First();
                    }
                    if (OutStock == null)
                    {
                        throw new Exception("未匹配到车身,拉动锁定失败");
                    }
                    var stockInfo = _palletStockInfoRepository.QueryFirst(x => x.CarBodyInfo.PVI == OutStock.PVI);
                    var carinfo = _palletStockInfoRepository.QueryData(x => x.pbMaterial == item.pbMaterial).OrderBy(x => x.CreateDate);
                    var carBody = _carBodyRepository.QueryFirst(x => x.PVI == OutStock.PVI);
                    var lockInfo = _MESLockInfoRepository.QueryData().OrderByDescending(x => x.sequenceNo).FirstOrDefault();
                    int serial = 1;
                    if (lockInfo != null)
                    {
                        serial = lockInfo.sequenceNo + 1;
                    }
                    Dt_MESLockInfo mESLockInfo = new Dt_MESLockInfo
                    {
                        carBodyID = stockInfo.carBodyID,
                        CarBodyInfo = carBody,
                        CreateDate = DateTime.Now,
                        Creater = "System",
                        LockStatue = 0,
                        sequenceNo = serial,
                        TCLine = OutStock.RoadwayNo
                    };
                    #region ä»»åŠ¡ä¸‹å‘
                    //Dt_Task task = new Dt_Task()
                    //{
                    //    CreateDate = DateTime.Now,
                    //    Creater = "System",
                    //    CurrentAddress = carinfo.LocationCode,
                    //    Grade = 5,
                    //    PalletCode = carinfo.PalletCode,
                    //    PVI = item.pvi,
                    //    Roadway = carinfo.RoadwayNo,
                    //    SourceAddress = carinfo.LocationCode,
                    //    TaskNum = _taskRepository.GetTaskNo().Result,
                    //    TaskType = (int)TaskOutboundTypeEnum.Outbound,
                    //    TaskState = (int)TaskOutStatusEnum.OutNew,
                    //    TargetAddress = ""
                    //};
                    //WMSTaskDTO taskDTO = new WMSTaskDTO()
                    //{
                    //    Grade = task.Grade.Value,
                    //    PalletCode = task.PalletCode,
                    //    SourceAddress = task.SourceAddress,
                    //    TargetAddress = task.TargetAddress,
                    //    RoadWay = task.Roadway,
                    //    TaskState = task.TaskState.Value,
                    //    TaskType = task.TaskType,
                    //    TaskNum = task.TaskNum.Value
                    //};
                    //var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                    //var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.WCSIPAddress)?.ConfigValue;
                    //var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.ReceiveTask)?.ConfigValue;
                    //if (wmsBase == null || ipAddress == null)
                    //{
                    //    throw new InvalidOperationException("WMS IP æœªé…ç½®");
                    //}
                    //var wmsIpAddress = wmsBase + ipAddress;
                    #endregion
                    _unitOfWorkManage.BeginTran();
                    //var WCSresult = HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result;
                    //content = JsonConvert.DeserializeObject<WebResponseContent>(WCSresult);
                    //if (content != null && content.Status)
                    //{
                    stockInfo.StockStatus = 0;
                    stockInfo.LockOrder = 1;
                    //carBody.BodyStatus = 1;
                    assemblyOrderInfo.pvi = carBody.PVI;
                    carBody.assemblyWorrkNo = item.workOrderNo;
                    _MESLockInfoRepository.AddData(mESLockInfo);
                    _assemblyOrderInfoRepository.UpdateData(assemblyOrderInfo);
                    //_taskRepository.AddData(task);
                    _palletStockInfoRepository.UpdateData(stockInfo);
                    _carBodyRepository.UpdateData(carBody);
                    _unitOfWorkManage.CommitTran();
                    //}
                    LogFactory.GetLog("MES拉动锁车").Info(true, $"\r\r--------------------------------------");
                    LogFactory.GetLog("MES拉动锁车").Info(true, jsondata.ToJsonString());
                    LockResult lockResult = new LockResult { result = "1", lockPvi = carBody.PVI };
                    content.OK(data: lockResult);
                }
                LogFactory.GetLog("MES拉动锁车").Info(true, $"\r\r--------------------------------------");
                LogFactory.GetLog("MES拉动锁车").Info(true, jsondata.ToJsonString());
                return content;
            }
            catch (Exception ex)
            {
                return content.Error(ex.Message);
                LogFactory.GetLog("MES拉动锁车").Info(true, $"锁车失败:{ex.Message};请求参数{jsondata.ToJsonString()}; ");
                _unitOfWorkManage.RollbackTran();
                content.result = "2";
                LockResult result = new LockResult { result = "2", lockPvi = "" };
                content.Error(ex.Message, result);
            }
            return content;
        }
    }
}