IPC-610
2025-01-15 b4083a6b047fc9e0964133c87227213c5154e37a
Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
@@ -182,38 +182,34 @@
    public async Task WriteInfo(WcsDeviceUpInfo input)
    {
        WcsPlc modPlc;
        string DbNum = "";// DB块
        string DbNum = "DB91";// DB块
        
        if (string.IsNullOrWhiteSpace(input.LocatNo))//如果工位为空
        {
            throw Oops.Bah("工位不能为空");
        }
        var plcList = await _wcsPlcRep.Context.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.IsDelete == false).ToListAsync();
        var plcList = await _wcsPlcRep.Context.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine).ToListAsync();
        switch (input.Layer)
        {
            case "1":
                modPlc = plcList.FirstOrDefault(m=>m.Text == "1层托盘输送线");
                if (modPlc == null)
                    throw Oops.Bah($"未查询到{input.Layer}楼层PLC信息");
                DbNum = "";
                //DbNum = "";
                break;
            case "2":
                modPlc = plcList.FirstOrDefault(m => m.Text == "2层托盘输送线");
                if (modPlc == null)
                    throw Oops.Bah($"未查询到{input.Layer}楼层PLC信息");
                DbNum = "DB91";
                //DbNum = "DB91";
                break;
            case "3":
                modPlc = plcList.FirstOrDefault(m => m.Text == "3层托盘输送线");
                if (modPlc == null)
                    throw Oops.Bah($"未查询到{input.Layer}楼层PLC信息");
                DbNum = "";
                //DbNum = "";
                break;
            default:
                throw Oops.Bah("楼层信息错误");
        }
        if (modPlc == null)
            throw Oops.Bah($"未查询到{input.Layer}楼层PLC信息");
       
        var device = await _wcsDeviceRep.Context.Queryable<WcsDevice>().FirstAsync(s => s.PlcId == modPlc.Id && s.StationNum == input.LocatNo && s.IsDelete == false && s.DeviceType == DeviceTypeEnum.Show);
        var device = await _wcsDeviceRep.Context.Queryable<WcsDevice>().FirstAsync(s => s.PlcId == modPlc.Id && s.StationNum == input.LocatNo && s.DeviceType == DeviceTypeEnum.Show);
        if (device == null) 
        {
            throw Oops.Bah("当前楼层未查询到该工位信息");
@@ -403,11 +399,11 @@
            case "fanzhuansheng":
                if (input.FuncName == "true")
                {
                    modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "51.7", "true");
                    modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "59.0", "true");
                }
                else if (input.FuncName == "false")
                {
                    modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "51.7", "false");
                    modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "59.0", "false");
                }
                else
                {
@@ -417,11 +413,11 @@
            case "fanzhuanjiang":
                if (input.FuncName == "true")
                {
                    modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "52.0", "true");
                    modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "59.1", "true");
                }
                else if (input.FuncName == "false")
                {
                    modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "52.0", "false");
                    modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "59.1", "false");
                }
                else
                {
@@ -1237,7 +1233,7 @@
    public async Task<dynamic> WcsPackPlcList()
    {
        return await _wcsDeviceRep.Context.Queryable<WcsPlc>()
                .Where(w => w.Type == PLCTypeEnum.RobotPalletizer || w.Type == PLCTypeEnum.StackingRobot)
                .Where(w => w.Type == PLCTypeEnum.RobotPalletizer /*|| w.Type == PLCTypeEnum.StackingRobot*/)
                .OrderByDescending(o => o.Type)
                .Select(u => new
                {
@@ -1301,5 +1297,60 @@
        }
        return list;
    }
    /// <summary>
    /// 获取设备对应工位列表
    /// </summary>
    /// <param name="entry"></param>
    /// <returns></returns>
    [HttpGet]
    [ApiDescriptionSettings(Name = "WcsStackingRobotList")]
    [DisplayName("获取设备对应工位列表")]
    public async Task<List<WcsDeviceTaskOrderDto>> WcsStackingRobotList()
    {
        //var list = await _wcsDeviceRep.AsQueryable()
        //                            .LeftJoin<WcsPlc>((a, b) => a.PlcId == b.Id)
        //                            .Where((a, b) => a.DeviceType == DeviceTypeEnum.Business)
        //                            .Select<WcsDeviceOutput>((a, b) => new WcsDeviceOutput() { Type = b.Type }, true)
        //                            .ToListAsync();
        var list = await _wcsDeviceRep.Context.Queryable<WcsCheckTask>()
                .LeftJoin<WcsDevice>((task, device) => device.StationNum == task.Port)
                .InnerJoin<WcsPlc>((task, device, plc) => device.PlcId == plc.Id)
                .Where((task, device, plc) => task.Id <= 3)
                .OrderBy((task, device, plc) => device.CreateTime)
                .Select((task, device, plc) => new WcsDeviceTaskOrderDto()
                {
                    Id = device.Id,
                    TaskId = task.Id,
                    Text = task.Id.ToString() + "号出库分拣线",
                    TaskNo = task.TaskNo,
                    OrderNo = task.OrderNo,
                    LotNo = task.LotNo,
                    SkuNo = task.SkuNo,
                    SkuName = task.SkuName,
                    LineNo = task.LineNo,
                    Status = task.Status,
                    PZNo = task.PZNo,
                    Qty = task.Qty,
                    PlcId = device.PlcId,
                    Type = plc.Type
                })
                .ToListAsync();
        bool connStatus = false;
        //获取设备的状态
        var modPlc = await _wcsDeviceRep.Context.Queryable<WcsPlc>().FirstAsync(s => s.Id == list[0].PlcId);
        PLCUtil modUtil = new PLCUtil(modPlc);
        if (modUtil.Connected)
        {
            connStatus = true;
        }
        foreach (var item in list)
        {
            item.PlcStatus = connStatus;
        }
        return list;
    }
    #endregion
}