zhaowc
2025-02-14 379bdd05d0b7ede3a161115b7a6fedfef104a37a
小车入库前等待
13个文件已修改
304 ■■■■ 已修改文件
Wms/Model/InterFaceModel/HttpModel.cs 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/DataServer/StockServer.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/LogServer/TaskServer.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IDataServer/IStockServer.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/ILogServer/ITaskServer.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/DownApiController.cs 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/PdaCrController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/UpApiController.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/appsettings.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/InterFaceModel/HttpModel.cs
@@ -110,6 +110,15 @@
        public int StatusCode { get; set; }
        public string Msg { get; set; }
    }
    /// <summary>
    /// 接收wcs可放信号model
    /// </summary>
    public class PutModel
    {
         public string TaskNo { get; set; }
    }
    /// <summary>
    /// Wms专用 下发指令Dto
    /// </summary>
@@ -1090,7 +1099,68 @@
        /// </summary>
        public int MinLevelCount { get; set; }
    }
    #endregion
    #region 数字孪生
    public class DigitalTwinModel
    {
        ///// <summary>
        ///// 库区
        ///// </summary>
        //public string WareHouse { get; set; }
        ///// <summary>
        ///// 存储区域
        ///// </summary>
        //public string AreaNo { get; set; }
        ///// <summary>
        ///// 物料类型
        ///// </summary>
        //public string Skytype { get; set; }
        /// <summary>
        /// 请求来源
        /// </summary>
        public string Origin { get; set; }
    }
    public class ReLocateData
    {
        /// <summary>
        /// 库位
        /// </summary>
        public string LocatNo { get; set; }
        /// <summary>
        /// 托盘号
        /// </summary>
        public string PalletNo { get; set; }
        /// <summary>
        /// 物料名称
        /// </summary>
        public string SkuName { get; set; }
        /// <summary>
        /// 规格
        /// </summary>
        public string Stadard { get; set; }
        /// <summary>
        /// 批次
        /// </summary>
        public string LotNo { get; set; }
        /// <summary>
        /// 质量状态
        /// </summary>
        public string InspectStatus { get; set; }
        /// <summary>
        /// 库存数量
        /// </summary>
        public string Qty { get; set; }
        /// <summary>
        /// 有效期
        /// </summary>
        public string Warranty { get; set; }
    }
    #endregion
}
Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -355,18 +355,18 @@
                            continue;
                        }
                    }
                    if (model.Type != "7")
                    {
                        if (!TypeLot.Contains(model.Type))
                        {
                            if (detailModel.LotNo.Length != 12 && detailModel.LotNo.Length != 11 && detailModel.LotNo.Length != 10)
                            {
                                strMessage = "-1:进厂编号位数长度有误;";
                                continue;
                            }
                        }
                    //if (model.Type != "7")
                    //{
                    //    if (!TypeLot.Contains(model.Type))
                    //    {
                    //        if (detailModel.LotNo.Length != 12 && detailModel.LotNo.Length != 11 && detailModel.LotNo.Length != 10)
                    //        {
                    //            strMessage = "-1:进厂编号位数长度有误;";
                    //            continue;
                    //        }
                    //    }
                        
                    }
                    //}
                    
                    if (model.Type == "1" && string.IsNullOrWhiteSpace(detailModel.SupplierLot)) //采购到货单原厂批号(供货批次)不能为空
                    {
Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs
@@ -579,10 +579,10 @@
                {
                    throw new Exception("未查询到单据明细信息");
                }
                if (asnList.LotNo.Length != 10 && asnList.LotNo.Length != 11 && asnList.LotNo.Length != 12)
                {
                    throw new Exception("单据进厂编号位数长度错误");
                }
                //if (asnList.LotNo.Length != 10 && asnList.LotNo.Length != 11 && asnList.LotNo.Length != 12)
                //{
                //    throw new Exception("单据进厂编号位数长度错误");
                //}
                var asn = Db.Queryable<BllArrivalNotice>().First(m => m.ASNNo == asnList.ASNNo && m.IsDel == "0");
                if (asn == null)
                {
Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
@@ -890,7 +890,7 @@
        /// <param name="palletNo"></param>
        /// <param name="areaNo"></param>
        /// <param name="ruku"></param>
        public void AgvTransport(string palletNo, string areaNo, string ruku, int userId, string url)
        public void AgvTransport(string palletNo, string areaNo, string ruku, int userId, string url, string wcsurl)
        {
            if (string.IsNullOrEmpty(palletNo))
            {
@@ -907,7 +907,7 @@
            try
            {
                string EndLocat = string.Empty,OrderTy = "";//目标位置
                var tasktype = "D00";  //小车任务类型,默认为点到点任务
                var log = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && (w.Status == "0" || w.Status == "1"));
                if (log != null)
@@ -969,6 +969,24 @@
                //开启事务
                Db.BeginTran();
                //请求WCS入库口放货确认
                try
                {
                    var res = HttpHelper.DoPost(wcsurl, EndLocat, "请求WCS入库口是否可放货", "WCS");
                    //////解析返回数据
                    var ret = JsonConvert.DeserializeObject<WcsModel>(res);
                    if (ret.StatusCode == -1)
                    {
                        throw new Exception(EndLocat + "入库口已有其他任务占用,请选择其他入库口");
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                //添加出库任务
                var taskNo = new Common().GetMaxNo("TK");
                var exTask = new LogTask
@@ -1017,7 +1035,7 @@
                #region 呼叫小车代码
                var endlono = EndLocat;
                var tasktype = "D00";  //默认为点到点任务
                //根据目的地址库区获取小车任务类型
                switch (storageLocatEnd.AreaNo)
                {
@@ -1028,6 +1046,10 @@
                        tasktype = "D01";  // 拆托任务(目的地址为拣货区)
                        break;
                }
                if (OrderTy == "0")
                {
                    tasktype = "RK0"; //入库任务
                }
                //缓存库位转换     3楼原辅料Y003_001,Y003_002,Y003_003  1楼Y138_001到Y138_021外包缓存区   1楼Y128_001到Y128_015内包缓存区
                if (storageLocatEnd.AreaNo == "B12")
Wms/WMS.BLL/DataServer/StockServer.cs
@@ -5,6 +5,7 @@
using System.Runtime.Intrinsics.X86;
using System.Security.Claims;
using System.Text;
using Model.InterFaceModel;
using Model.ModelDto;
using Model.ModelDto.DataDto;
using Model.ModelDto.SysDto;
@@ -1024,7 +1025,7 @@
        }
        #endregion
        #region AGV小车任务完成
        #region AGV小车任务完成更新库存
        /// <summary>
        /// AGV入库完成
@@ -1174,5 +1175,46 @@
            }
        }
        #endregion
        #region 数字孪生系统获取库存信息
        /// <summary>
        /// 反馈数字孪生系统库存信息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public List<ReLocateData> GetLocateList()
        {
            try
            {
                List<ReLocateData> list = new List<ReLocateData>();
                //库存信息
                var stockDetailsList = Db.Queryable<StockDetailDto>().ToList();
                if (stockDetailsList.Count == 0)
                {
                    return list;
                }
                for (int i = 0; i < stockDetailsList.Count; i++)
                {
                    list[i].LocatNo = stockDetailsList[i].LocatNo;                  //库位
                    list[i].PalletNo = stockDetailsList[i].PalletNo;                //托盘号
                    list[i].SkuName = stockDetailsList[i].SkuName;                  //物料名称
                    list[i].Stadard = stockDetailsList[i].Standard;                  //规格
                    list[i].LotNo = stockDetailsList[i].LotNo;                      //批次
                    list[i].InspectStatus = stockDetailsList[i].InspectStatus;      //质量状态
                    list[i].Qty = stockDetailsList[i].Qty.ToString();                           //库存数量
                    list[i].Warranty = stockDetailsList[i].ExpirationTime.ToString();           //有效期   ??过期时间,是否要更改
                }
                return list;
            }
            catch (Exception ex)
            {
                throw new Exception("AGV返回入库完成信号处理错误,错误信息:" + ex);
            }
        }
        #endregion
    }
}
Wms/WMS.BLL/LogServer/TaskServer.cs
@@ -3,9 +3,12 @@
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using Model.InterFaceModel;
using Model.ModelDto.BllSoDto;
using Model.ModelDto.LogDto;
using Newtonsoft.Json;
using SqlSugar;
using Utility.Tools;
using WMS.DAL; 
using WMS.Entity.Context;
using WMS.Entity.LogEntity;
@@ -158,5 +161,28 @@
                throw new Exception(e.Message);
            }
        }
        /// <summary>
        /// AGV入库放货请求下发至WCS
        /// </summary>
        /// <param name="port"></param> 入库口
        /// <param name="url"></param>  请求地址
        /// <returns></returns>
        public string  GetWcsPuttype(string port,string url)
        {
            try
            {
                var res = HttpHelper.DoPost(url, port, "请求WCS"+ port+"入库口放货", "WCS");
                //////解析返回数据
                var ret = JsonConvert.DeserializeObject<WcsModel>(res);
                return ret.Msg.ToString();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}
Wms/WMS.IBLL/IDataServer/IStockServer.cs
@@ -1,4 +1,5 @@
using Model.ModelDto.DataDto;
using Model.InterFaceModel;
using Model.ModelDto.DataDto;
using System;
using System.Collections.Generic;
using System.Text;
@@ -143,5 +144,12 @@
        /// <returns></returns>
        public void MoveFinish(string TaskCode);
        #endregion
        /// <summary>
        /// 反馈数字孪生库存信息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        List<ReLocateData> GetLocateList();
    }
}
Wms/WMS.IBLL/ILogServer/ITaskServer.cs
@@ -52,5 +52,7 @@
        /// <param name="taskNo">任务号</param>
        /// <returns>0 入库任务 1 出库任务  2移库任务</returns>
        public string GetTaskType(string taskNo);
        public string GetWcsPuttype(string port,string url);
    }
}
Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs
@@ -130,7 +130,7 @@
        /// <param name="palletNo"></param>
        /// <param name="areaNo"></param>
        /// <param name="ruku"></param>
        void AgvTransport(string palletNo, string areaNo, string ruku, int userId,string url);
        void AgvTransport(string palletNo, string areaNo, string ruku, int userId,string url,string wcsurl);
        /// <summary>
        ///  agv转运呼叫小车取货
        /// </summary>
Wms/Wms/Controllers/DownApiController.cs
@@ -751,6 +751,10 @@
        }
        #endregion
        #region AGV
        /// <summary>
@@ -774,7 +778,7 @@
                var time1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                //测试接口用
                var orderType = _taskSvc.GetTaskOrderType(model.TaskCode,"0");// 判断单据类型入出移
                var orderType = _taskSvc.GetTaskOrderType(model.TaskCode, "0");// 判断单据类型入出移
                var taskType = _taskSvc.GetTaskType(model.TaskCode);//根据任务号获取任务类型
                switch (orderType)
@@ -783,13 +787,19 @@
                        if (model.TaskTyp == "mid") //AGV到达入库口,请求放货
                        {
                            //下发WCS放货请求
                            var ret = _taskSvc.GetWcsPuttype(model.CurrentCallCode,_config.WcsHost + _config.MesBeiLiaoUrl);
                            if (ret.Contains("-1"))
                            {
                                logStr = $@".\log\WCS\任务反馈" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
                                LogFile.SaveLogToFile($"放货请求WCS失败,反馈执行通知:( {model.CurrentCallCode} ),", logStr);
                                return Ok(new OutCommanAgvDto { Code = "1", Message = "失败", ReqCode = model.ReqCode });
                            }
                        }
                        else if (model.TaskTyp == "end")//AGV放货到入库口完成
                        {
                            _stockSvc.ArriveFinish(model.TaskCode);
                        }
                        break;
                    case "1"://出库任务执行
@@ -811,20 +821,46 @@
            }
            catch (Exception ex)
            {
                return Ok(new WcsModel
                return Ok(new OutCommanAgvDto
                {
                    StatusCode = -1,
                    Msg = ex.Message
                    Code = "1",
                    Message = ex.Message
                });
            }
        }
        /// <summary>
        ///  任务继续执行接口
        ///  调用AGV任务模板continueTask,WCS调用接口返回该工位可放信号
        /// </summary>
        /// <param name="model">入库口信息</param>
        /// <returns></returns>
        public IActionResult AgcontinueTask(PutModel model)
        {
            try
            {
                //记录log
                var logStr = $@".\log\WCS\任务反馈" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
                var jsonData = JsonConvert.SerializeObject(model);
                LogFile.SaveLogToFile($"WCS任务反馈执行通知:( {jsonData} ),", logStr);
                //下发AGV入库任务
                var taskType = _taskSvc.GetTaskType(model.TaskNo);
                return Ok(new OutCommanAgvDto { Code = "0", Message = "成功"});
            }
            catch (Exception)
            {
                throw;
            }
        }
        #endregion
        #endregion
        #region PDA
Wms/Wms/Controllers/PdaCrController.cs
@@ -363,7 +363,7 @@
                }
                var uId = int.Parse(userId);
                _pdaCrSvc.AgvTransport(model.PalletNo, model.AreaNo, model.Ruku, uId, _config.AgvHost + _config.GenAgvSchedulingTask);
                _pdaCrSvc.AgvTransport(model.PalletNo, model.AreaNo, model.Ruku, uId, _config.AgvHost + _config.GenAgvSchedulingTask,_config.WcsHost + _config.BoxHost);
                return Ok(new { data = "", code = 0, msg = "成功" });
            }
Wms/Wms/Controllers/UpApiController.cs
@@ -14,6 +14,9 @@
using Model.ModelVm.BllCheckVm;
using Microsoft.Extensions.Logging;
using WMS.IBLL.IPdaServer;
using WMS.IBLL.IDataServer;
using Model.ModelDto.DataDto;
using System.Collections.Generic;
namespace Wms.Controllers
{
@@ -30,13 +33,15 @@
        private readonly IArrivalNoticeServer _arrivalNoticeSvc;
        private readonly IStockCheckServer _stockCheckSvc;//盘点单Svc 
        private readonly IPdaCrServer _daCrSvc;//PDA
        public UpApiController(IOptions<ApiUrlConfig> setting,IExportNoticeServer exNoticeSvc,IArrivalNoticeServer arrivalNoticeServer,IStockCheckServer stockCheckSvc,IPdaCrServer daCrSvc)
        private readonly IStockServer _stock; //库存
        public UpApiController(IOptions<ApiUrlConfig> setting,IExportNoticeServer exNoticeSvc,IArrivalNoticeServer arrivalNoticeServer,IStockCheckServer stockCheckSvc,IPdaCrServer daCrSvc,IStockServer stock)
        {
            _config = setting.Value;
            _exNoticeSvc = exNoticeSvc;
            _arrivalNoticeSvc = arrivalNoticeServer;
            _stockCheckSvc = stockCheckSvc;
            _daCrSvc = daCrSvc;
            _stock = stock;
        }
        #endregion
@@ -425,6 +430,29 @@
        //包装信息接口
        /// <summary>
        /// 数字孪生系统库存质量状态反馈
        /// </summary>
        /// <returns></returns>
        public IActionResult ReLocateData(DigitalTwinModel model)
        {
            //记录log
            var logStr = "";
            logStr = $@".\log\数字孪生\库位信息及质量状态反馈" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            var jsonData = JsonConvert.SerializeObject(model);
            LogFile.SaveLogToFile($"库位信息及质量状态反馈:( {jsonData} ),", logStr);
            //获取库存信息
            List<ReLocateData> stocks = _stock.GetLocateList();
            if (stocks.Count == 0)
            {
                var data = new HttpReturnModel { Success = "0", Message = "当前无库存" };
                return Ok(data);
            }
            return Ok(stocks);
        }
        #endregion
    }
Wms/Wms/appsettings.json
@@ -11,8 +11,8 @@
    //"ConnectionString": "Server=47.95.120.93;Database=WMS_JC09;User ID=sa;password=boxline!@#; Integrated Security=True;",
    //"ConnectionString": "Server=47.95.120.53;Database=WMS_JC09;User ID=sa;Password=boxline!@#;Integrated Security=False;",
    //"ConnectionString": "Server=192.168.62.106;Database=WMS_JC24;User ID=sa;Password=sql2019;Integrated Security=False;",
    "ConnectionString": "Server=192.168.62.200;Database=WMS_JC24;User ID=sa;Password=sql2019;Integrated Security=False;"
   // "ConnectionString": "Server=10.18.99.10;Database=WMS_JC24;User ID=sa;Password=sql2024;Integrated Security=False;"
    //"ConnectionString": "Server=192.168.62.200;Database=WMS_JC24;User ID=sa;Password=sql2019;Integrated Security=False;"
    "ConnectionString": "Server=10.18.99.10;Database=WMS_JC24;User ID=sa;Password=sql2024;Integrated Security=False;"
    //"ConnectionString": "Server=.;Database=WMS_JC24;User ID=sa;Password=sql2022;Integrated Security=False;"
    //"ConnectionString": "Data Source=DESKTOP-0EJDG95\\MSSQLSERVER1;Initial Catalog=WMS_V01;Integrated Security=True;"
  },