| | |
| | | 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("当前楼层未查询到该工位信息"); |
| | |
| | | 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 |
| | | { |
| | |
| | | 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 |
| | | { |
| | |
| | | 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 |
| | | { |
| | |
| | | } |
| | | 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 |
| | | } |