分支自 SuZhouGuanHong/TaiYuanTaiZhong

dengjunjie
2024-04-10 639f5a744312de88aa27fbba2e7f27eb52287ed6
代码优化
已修改5个文件
已添加4个文件
216 ■■■■■ 文件已修改
代码管理/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Server/WIDESEA_WMS/ToMes/GetStation.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Server/WIDESEA_WMS/ToMes/agvTransferList.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Server/WIDESEA_WMS/ToMes/shiftingparking.cs 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobTask.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/技术协议/信息化部分.docx 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/技术协议/方案介绍.pptx 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs
@@ -36,7 +36,7 @@
                {
                    if (task.agv_tasktype == "TaskType_EmptyPallet")//空托任务
                    {
                        if (task.agv_fromaddress == "")
                        if (task.agv_fromaddress == "" && DateTime.Now - task.agv_createtime >= TimeSpan.FromMinutes(5))
                        {
                            var Pipeline_client = PLCClient.Clients.FirstOrDefault(t => t.PLCName == "链条机");
                            if (Pipeline_client == null) throw new Exception("链条机调度服务未开启!");
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs
@@ -67,7 +67,18 @@
        /// <param name="task"></param>
        public static void Updateinventory(dt_agvtask task)
        {
            if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString())
            VOLContext context = new VOLContext();
            Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context);
            if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Carry.ToString())
            {
                var inventorys = inventoryRepository.Find(x => x.stationCode == task.agv_fromaddress).ToList();
                foreach (var inventory in inventorys)
                {
                    inventory.stationCode = task.agv_toaddress;
                    inventoryRepository.Update(inventory, true);
                }
            }
            else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString())
            {
                string[] bindSNs = task.bindSN.Split(",");
                int count = 0;
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WMS/ToMes/GetStation.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.EFDbContext;
using WIDESEA_Core.Utilities;
using WIDESEA_Entity.DomainModels;
using WIDESEA_WMS.IRepositories;
using WIDESEA_WMS.Repositories;
namespace WIDESEA_WMS
{
    public partial class ToMesServer
    {
        /// <summary>
        /// é€šè¿‡SN号获取货位
        /// </summary>
        /// <param name="saveModel"></param>
        /// <returns></returns>
        public WebResponseContent GetStation(SaveModel saveModel)
        {
            WebResponseContent content = new WebResponseContent();
            VOLContext context = new VOLContext();
            Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context);
            Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(context);
            Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context);
            try
            {
                string sn = saveModel.MainData["from_address"].ToString();
                dt_inventory inventory = inventoryRepository.Find(x => x.SN.Contains(sn)).FirstOrDefault();
                if (inventory == null)
                {
                    return content.Error($"未找到{sn}库存信息,请核查库存记录!");
                }
                var station = stationinfoRepository.Find(x => x.stationCode == inventory.stationCode).FirstOrDefault();
                if (agvtaskRepository.Find(x => x.agv_fromaddress == station.stationCode || x.agv_toaddress == station.stationCode).Any())
                    return content.Error($"库位{station.stationCode}存在AGV任务,请核实!");
                content.Code = station.stationCode;
                content.OK();
            }
            catch (Exception ex)
            {
            }
            return content;
        }
    }
}
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WMS/ToMes/agvTransferList.cs
@@ -54,8 +54,8 @@
                    return content.Error($"无此车轮{sn}SN号,请核查库存记录!");
                }
                var station = stationinfoRepository.Find(x => x.stationCode == inventory.stationCode).FirstOrDefault();
                if (!station.enable) return content.Error($"库位{station.stationCode}未启用,请核实!");
                if (agvtaskRepository.Find(x => x.agv_fromaddress == station.stationCode).Any())
                //if (!station.enable) return content.Error($"库位{station.stationCode}未启用,请核实!");
                if (agvtaskRepository.Find(x => x.agv_fromaddress == station.stationCode || x.agv_toaddress == station.stationCode).Any())
                    return content.Error($"库位{station.stationCode}存在AGV任务,请核实!");
                List<detail> list = new List<detail>(); //车轮信息
                foreach (var item in station.bindSN.Split(","))
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WMS/ToMes/shiftingparking.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,107 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Comm;
using WIDESEA_Comm.TaskNo;
using WIDESEA_Common;
using WIDESEA_Core.EFDbContext;
using WIDESEA_Core.Utilities;
using WIDESEA_Entity.DomainModels;
using WIDESEA_WMS.IRepositories;
using WIDESEA_WMS.Repositories;
using static FreeSql.Internal.GlobalFilter;
using static System.Collections.Specialized.BitVector32;
namespace WIDESEA_WMS
{
    public partial class ToMesServer
    {
        /// <summary>
        /// åº“内移库
        /// </summary>
        /// <param name="saveModel"></param>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        public WebResponseContent shiftingparking(SaveModel saveModel)
        {
            WebResponseContent content = new WebResponseContent();
            VOLContext context = new VOLContext();
            Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context);
            Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(context);
            Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context);
            try
            {
                string user = saveModel.MainData["creator"].ToString();
                string from_address = saveModel.MainData["from_address"].ToString();
                string to_address = saveModel.MainData["to_address"].ToString();
                var station1 = stationinfoRepository.Find(t => t.stationCode == from_address).FirstOrDefault();
                if (station1 == null) return content.Error("请输入正确的起点地址!");
                var station2 = stationinfoRepository.Find(t => t.stationCode == to_address).FirstOrDefault();
                if (station2 == null) return content.Error("请输入正确的起点地址!");
                if (!station1.tray_type.Contains("Small") && station2.area != "4")
                    throw new Exception($"大托盘只能存放在库区4!");
                if (agvtaskRepository.Find(x => x.agv_fromaddress.Contains(from_address) || x.agv_toaddress.Contains(from_address)).Any())
                    throw new Exception($"起点{from_address}已存在任务!");
                if (agvtaskRepository.Find(x => x.agv_fromaddress.Contains(to_address) || x.agv_toaddress.Contains(to_address)).Any())
                    throw new Exception($"终点{to_address}已存在任务!");
                if (station1.location_state != LocationStateEnum.Stroge.ToString())
                    throw new Exception($"起点{from_address}不是有货!");
                if (station2.location_state != LocationStateEnum.Empty.ToString())
                    throw new Exception($"终点{to_address}不是空货位!");
                if (string.IsNullOrEmpty(station1.stationType))
                    throw new Exception($"起点{from_address}未绑定物料类型!");
                if (station2.area == "1")
                {
                    if (stationinfoRepository.Find(x => x.area == station2.area && x.column == station2.column && x.location_state != LocationStateEnum.Empty.ToString() && x.stationType != station1.stationType).Any())
                        throw new Exception($"终点{to_address}同列存在与起点物料类型不匹配!");
                }
                else
                {
                    if (stationinfoRepository.Find(x => x.area == station2.area && x.line == station2.line && x.location_state != LocationStateEnum.Empty.ToString() && x.stationType != station1.stationType).Any())
                        throw new Exception($"终点{to_address}同行存在与起点物料类型不匹配!");
                }
                var inventory = inventoryRepository.Find(x => x.stationCode == station1.stationCode).FirstOrDefault();
                if (inventory == null) throw new Exception($"起点{from_address}未找到库存信息!");
                dt_agvtask agvtask = new dt_agvtask()
                {
                    agv_fromaddress = station1.stationCode,
                    agv_id = Guid.NewGuid(),
                    agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
                    agv_grade = 1,
                    agv_createtime = DateTime.Now,
                    agv_taskstate = "Create",
                    agv_materielid = station1.stationType,
                    agv_qty = station1.quantity,
                    agv_tasktype = AGVTaskTypeEnum.TaskType_Carry.ToString(),
                    agv_toaddress = station2.stationCode,
                    agv_userid = user,//"系统",
                    jobID = station1.Number,// mes_head.jobID,
                    bindSN = station1.bindSN,
                    agv_worktype = 0, //Convert.ToInt32(mes_head.processCode),
                    agv_materbarcode = inventory.materialCode,
                    agv_Traytype = station1.tray_type,
                    agv_TrayStatus = station1.tray_status
                };
                agvtaskRepository.Add(agvtask, true);
                station1.location_state = LocationStateEnum.OutBusy.ToString();
                stationinfoRepository.Update(station1, true);
                station2.location_state = LocationStateEnum.InBusy.ToString();
                station2.heatNumber = station1.heatNumber;
                station2.Number = station1.Number;
                station2.stationType = station1.stationType;
                stationinfoRepository.Update(station2, true);
                content.OK();
            }
            catch (Exception ex)
            {
                content.Error($"呼叫AGV失败:{ex.Message}");
            }
            return content;
        }
    }
}
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobTask.cs
@@ -12,7 +12,7 @@
        [Invoke(Begin = "2024-01-01 00:00", Interval = 1000 * 5, /*IsEnabled = true,*/ SkipWhileExecuting = true)]
        public void TaskTime()
        {
            AGVServer.SendAgvTask();
            //AGVServer.SendAgvTask();
        }
    }
}
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs
@@ -12,7 +12,9 @@
    public class ToWMSController : ControllerBase
    {
        private static readonly object OutsourceInboundobj = new object();
        private static readonly object agvTransferListbj = new object();
        private static readonly object agvTransferListobj = new object();
        private static readonly object shiftingparkingobj = new object();
        private static readonly object GetStationobj = new object();
        /// <summary>
        /// ç§»åº“(手动,临时)
        /// </summary>
@@ -24,22 +26,49 @@
            return new ToMesServer().AddToFloat3(request);
        }
        /// <summary>
        /// å¤–协移库
        /// ç§»åº“外协
        /// </summary>
        /// <param name="request"></param>
        /// <param name="saveModel"></param>
        /// <returns></returns>
        [HttpPost, Route("agvTransferList")]
        public WebResponseContent agvTransferList([FromBody] SaveModel saveModel)
        {
            lock (agvTransferListbj)
            lock (agvTransferListobj)
            {
                return new ToMesServer().agvTransferList(saveModel);
            }
        }
        /// <summary>
        /// èŽ·å–è´§ä½
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost, Route("GetStation")]
        public WebResponseContent GetStation([FromBody] SaveModel saveModel)
        {
            lock (GetStationobj)
            {
                return new ToMesServer().GetStation(saveModel);
            }
        }
        /// <summary>
        /// åº“内移库
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost, Route("shiftingparking")]
        public WebResponseContent shiftingparking([FromBody] SaveModel saveModel)
        {
            lock (shiftingparkingobj)
            {
                return new ToMesServer().shiftingparking(saveModel);
            }
        }
        /// <summary>
        /// å¤–协出库(检测上料)
        /// </summary>
        /// <param name="request"></param>
ÏîÄ¿×ÊÁÏ/¼¼ÊõЭÒé/ÐÅÏ¢»¯²¿·Ö.docx
Binary files differ
ÏîÄ¿×ÊÁÏ/¼¼ÊõЭÒé/·½°¸½éÉÜ.pptx
Binary files differ