Admin.NET/WCS.Application/Entity/WcsPlc.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Admin.NET/WCS.Application/Hub/PlcDeviceHub.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Admin.NET/WCS.Application/PLC/PLCTaskAction.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Admin.NET/WCS.Application/PLC/PLCUtil.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Admin.NET/WCS.Application/Service/WcsPlc/Dto/WcsPlcDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Admin.NET/WCS.Application/Service/WcsPlc/Dto/WcsPlcInput.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Admin.NET/WCS.Application/Service/WcsPlc/Dto/WcsPlcOutput.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Admin.NET/WCS.Application/Service/WcsPlc/WcsPlcService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Web/src/views/wcs/wcsPlc/component/editDialog.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Web/src/views/wcs/wcsPlc/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Admin.NET/WCS.Application/Entity/WcsPlc.cs
@@ -49,6 +49,12 @@ public string? Text { get; set; } /// <summary> /// 是否启用 /// </summary> [SugarColumn(ColumnName = "Enable", ColumnDescription = "是否启用")] public YesNoEnum Enable { get; set; } /// <summary> /// 是否连接 /// </summary> [SugarColumn(IsIgnore = true)] Admin.NET/WCS.Application/Hub/PlcDeviceHub.cs
@@ -71,7 +71,7 @@ // 用于保存每个设备的初始状态 var initialStates = new Dictionary<long, WcsDeviceOutput>(); var listPlc = _db.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.StackingMachine || s.Type == PLCTypeEnum.ConveyorLine).ToList(); var listPlc = _db.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.StackingMachine || s.Type == PLCTypeEnum.ConveyorLine).Where(s => s.Enable == YesNoEnum.Y).ToList(); var listPlcId = listPlc.Select(s => s.Id).ToList(); var listPlcDevice = _db.Queryable<WcsDevice>().Where(s => s.DeviceType == DeviceTypeEnum.Business && listPlcId.Contains(s.PlcId)).Select<WcsDeviceOutput>().ToList(); var listPlcDeviceId = listPlcDevice.Select(s => s.Id).ToList(); @@ -142,7 +142,6 @@ { (result, var palletNo) = modConn.GetPlcDBValue(modPositionPalletNo.PosType, modDevice.DbNumber, modPositionPalletNo.PlcPos, modPositionPalletNo.StringLength); modDevice.PalletNo = Convert.ToString(palletNo); Console.WriteLine(modDevice.DbNumber + "." + modPositionPalletNo.PlcPos + "----------"); } if (modPlc.Type == PLCTypeEnum.ConveyorLine) { @@ -204,7 +203,7 @@ if (initialStates.TryGetValue(modDevice.Id, out var initialState)) { if (modDevice.Status != initialState.Status || modDevice.Plc != initialState.Plc || (!modDevice.Plc.IsNullOrEmpty() && modDevice.Plc != initialState.Plc) || modDevice.Wcs != initialState.Wcs || modDevice.TaskNo != initialState.TaskNo || modDevice.TaskType != initialState.TaskType || Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
@@ -60,7 +60,10 @@ public static void Init() { cts.Cancel(); listPlc = _db.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.StackingMachine || s.Type == PLCTypeEnum.ConveyorLine || s.Type == PLCTypeEnum.BoxConveyorLine).ToList(); listPlc = _db.Queryable<WcsPlc>() .Where(s => s.Type == PLCTypeEnum.StackingMachine || s.Type == PLCTypeEnum.ConveyorLine || s.Type == PLCTypeEnum.BoxConveyorLine) .Where(s => s.Enable == YesNoEnum.Y) .ToList(); listPlcDevice = _db.Queryable<WcsDevice>().ToList(); listPlcPosition = _db.Queryable<WcsPosition>().ToList(); listAlarmInfo = _db.Queryable<WcsAlarmInfo>().ToList(); Admin.NET/WCS.Application/PLC/PLCUtil.cs
@@ -223,7 +223,7 @@ address = DbNumber + "." + Pos; else address = DbNumber + Pos; return this.SetPlcDBValue(PosType, address, Pos, Value); return this.SetPlcDBValue(PosType, address, Value); } /// <summary> /// 写入PLC值 Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
@@ -351,39 +351,51 @@ var listPosition = await _wcsDeviceRep.Context.Queryable<WcsPosition>().Where(s => s.DeviceId == modDevice.Id).ToListAsync(); var result = new IoTClient.Result(); //任务号 if (!modDevice.TaskNo.IsNullOrEmpty()) if (modDevice.TaskNo != null) { var modPositionTask = listPosition.FirstOrDefault(s => s.Text == "任务号"); if (modPositionTask != null) result = modUtil.SetPlcDBValue(modPositionTask.PosType, modDbDevice.DbNumber + "." + modPositionTask.PlcPos, modDevice.TaskNo); result = modUtil.SetPlcDBValue(modPositionTask.PosType, modDbDevice.DbNumber, modPositionTask.PlcPos, modDevice.TaskNo); } //任务类型 if (!modDevice.TaskType.IsNullOrEmpty()) if (modDevice.TaskType != null) { var modPositionTaskType = listPosition.FirstOrDefault(s => s.Text == "任务类型"); if (modPositionTaskType != null) result = modUtil.SetPlcDBValue(modPositionTaskType.PosType, modDbDevice.DbNumber + "." + modPositionTaskType.PlcPos, ((int)modDevice.TaskType).ToString()); result = modUtil.SetPlcDBValue(modPositionTaskType.PosType, modDbDevice.DbNumber, modPositionTaskType.PlcPos, ((int)modDevice.TaskType).ToString()); } //起始工位 if (!modDevice.StartLocatNo.IsNullOrEmpty()) if (modDevice.StartLocatNo != null) { var modPositionStartLocatNo = listPosition.FirstOrDefault(s => s.Text == "起始工位"); if (modPositionStartLocatNo != null) result = modUtil.SetPlcDBValue(modPositionStartLocatNo.PosType, modDbDevice.DbNumber + "." + modPositionStartLocatNo.PlcPos, modDevice.StartLocatNo.ToString()); result = modUtil.SetPlcDBValue(modPositionStartLocatNo.PosType, modDbDevice.DbNumber, modPositionStartLocatNo.PlcPos, modDevice.StartLocatNo.ToString()); } //目的工位 if (!modDevice.EndLocatNo.IsNullOrEmpty()) if (modDevice.EndLocatNo != null) { var modPositionEndLocatNo = listPosition.FirstOrDefault(s => s.Text == "目的工位"); if (modPositionEndLocatNo != null) result = modUtil.SetPlcDBValue(modPositionEndLocatNo.PosType, modDbDevice.DbNumber + "." + modPositionEndLocatNo.PlcPos, modDevice.EndLocatNo.ToString()); result = modUtil.SetPlcDBValue(modPositionEndLocatNo.PosType, modDbDevice.DbNumber, modPositionEndLocatNo.PlcPos, modDevice.EndLocatNo.ToString()); } //托盘码 if (!modDevice.PalletNo.IsNullOrEmpty()) if (modDevice.PalletNo != null) { var modPositionPalletNo = listPosition.FirstOrDefault(s => s.Text == "托盘码"); if (modPositionPalletNo != null) result = modUtil.SetPlcDBValue(modPositionPalletNo.PosType, modDbDevice.DbNumber + "." + modPositionPalletNo.PlcPos, modDevice.PalletNo.ToString()); result = modUtil.SetPlcDBValue(modPositionPalletNo.PosType, modDbDevice.DbNumber, modPositionPalletNo.PlcPos, modDevice.PalletNo.ToString()); } if (modDevice.Plc != null) { var modPositionPLC = listPosition.FirstOrDefault(s => s.Text == "PLC流程字"); if (modPositionPLC != null) result = modUtil.SetPlcDBValue(modPositionPLC.PosType, modDbDevice.DbNumber, modPositionPLC.PlcPos, modDevice.Plc); } if (modDevice.Wcs != null) { var modPositionWCS = listPosition.FirstOrDefault(s => s.Text == "WCS流程字"); if (modPositionWCS != null) result = modUtil.SetPlcDBValue(modPositionWCS.PosType, modDbDevice.DbNumber, modPositionWCS.PlcPos, modDevice.Wcs); } if (modPlc.Type == PLCTypeEnum.ConveyorLine) { @@ -392,42 +404,42 @@ { var modPositionReleaseRow = listPosition.FirstOrDefault(s => s.Text == "放货排"); if (modPositionReleaseRow != null) modUtil.SetPlcDBValue(modPositionReleaseRow.PosType, modDbDevice.DbNumber + "." + modPositionReleaseRow.PlcPos, modDevice.ReleaseRow.ToString()); modUtil.SetPlcDBValue(modPositionReleaseRow.PosType, modDbDevice.DbNumber, modPositionReleaseRow.PlcPos, modDevice.ReleaseRow.ToString()); } //放货列 if (modDevice.ReleaseCol != null) { var modPositionReleaseCol = listPosition.FirstOrDefault(s => s.Text == "放货列"); if (modPositionReleaseCol != null) modUtil.SetPlcDBValue(modPositionReleaseCol.PosType, modDbDevice.DbNumber + "." + modPositionReleaseCol.PlcPos, modDevice.ReleaseCol.ToString()); modUtil.SetPlcDBValue(modPositionReleaseCol.PosType, modDbDevice.DbNumber, modPositionReleaseCol.PlcPos, modDevice.ReleaseCol.ToString()); } //放货层 if (modDevice.ReleaseStorey != null) { var modPositionReleaseStorey = listPosition.FirstOrDefault(s => s.Text == "放货层"); if (modPositionReleaseStorey != null) modUtil.SetPlcDBValue(modPositionReleaseStorey.PosType, modDbDevice.DbNumber + "." + modPositionReleaseStorey.PlcPos, modDevice.ReleaseStorey.ToString()); modUtil.SetPlcDBValue(modPositionReleaseStorey.PosType, modDbDevice.DbNumber, modPositionReleaseStorey.PlcPos, modDevice.ReleaseStorey.ToString()); } //取货排 if (modDevice.PickRow != null) { var modPositionPickRow = listPosition.FirstOrDefault(s => s.Text == "取货排"); if (modPositionPickRow != null) modUtil.SetPlcDBValue(modPositionPickRow.PosType, modDbDevice.DbNumber + "." + modPositionPickRow.PlcPos, modDevice.PickRow.ToString()); modUtil.SetPlcDBValue(modPositionPickRow.PosType, modDbDevice.DbNumber, modPositionPickRow.PlcPos, modDevice.PickRow.ToString()); } //取货列 if (modDevice.PickCol != null) { var modPositionPickCol = listPosition.FirstOrDefault(s => s.Text == "取货列"); if (modPositionPickCol != null) modUtil.SetPlcDBValue(modPositionPickCol.PosType, modDbDevice.DbNumber + "." + modPositionPickCol.PlcPos, modDevice.PickCol.ToString()); modUtil.SetPlcDBValue(modPositionPickCol.PosType, modDbDevice.DbNumber, modPositionPickCol.PlcPos, modDevice.PickCol.ToString()); } //取货层 if (modDevice.PickStorey != null) { var modPositionPickStorey = listPosition.FirstOrDefault(s => s.Text == "取货层"); if (modPositionPickStorey != null) modUtil.SetPlcDBValue(modPositionPickStorey.PosType, modDbDevice.DbNumber + "." + modPositionPickStorey.PlcPos, modDevice.PickStorey.ToString()); modUtil.SetPlcDBValue(modPositionPickStorey.PosType, modDbDevice.DbNumber, modPositionPickStorey.PlcPos, modDevice.PickStorey.ToString()); } } modUtil.Close(); Admin.NET/WCS.Application/Service/WcsPlc/Dto/WcsPlcDto.cs
@@ -41,4 +41,8 @@ /// </summary> public string? Text { get; set; } /// <summary> /// 是否启用 /// </summary> public YesNoEnum Enable { get; set; } } Admin.NET/WCS.Application/Service/WcsPlc/Dto/WcsPlcInput.cs
@@ -36,6 +36,10 @@ /// </summary> public virtual string? Text { get; set; } /// <summary> /// 是否启用 /// </summary> public virtual YesNoEnum Enable { get; set; } } /// <summary> @@ -63,6 +67,10 @@ /// </summary> public PLCTypeEnum? Type { get; set; } /// <summary> /// 是否启用 /// </summary> public YesNoEnum? Enable { get; set; } } /// <summary> @@ -88,6 +96,11 @@ [Required(ErrorMessage = "设备类型不能为空")] public override PLCTypeEnum Type { get; set; } /// <summary> /// 是否启用 /// </summary> [Required(ErrorMessage = "是否启用不能为空")] public override YesNoEnum Enable { get; set; } } /// <summary> Admin.NET/WCS.Application/Service/WcsPlc/Dto/WcsPlcOutput.cs
@@ -42,6 +42,11 @@ public string? Text { get; set; } /// <summary> /// 是否启用 /// </summary> public YesNoEnum Enable { get; set; } /// <summary> /// 创建时间 /// </summary> public DateTime? CreateTime { get; set; } Admin.NET/WCS.Application/Service/WcsPlc/WcsPlcService.cs
@@ -30,11 +30,12 @@ input.SearchKey = input.SearchKey?.Trim(); var query = _wcsPlcRep.AsQueryable() .WhereIF(!string.IsNullOrEmpty(input.SearchKey), u => u.IP.Contains(input.SearchKey) u.IP.Contains(input.SearchKey) && u.Text.Contains(input.SearchKey) ) .WhereIF(input.PLCType.HasValue, u => u.PLCType == input.PLCType) .WhereIF(!string.IsNullOrWhiteSpace(input.IP), u => u.IP.Contains(input.IP.Trim())) .WhereIF(input.Type.HasValue, u => u.Type == input.Type) .WhereIF(input.Enable.HasValue, u => u.Enable == input.Enable) .Select<WcsPlcOutput>(); return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize); } Web/src/views/wcs/wcsPlc/component/editDialog.vue
@@ -68,6 +68,18 @@ </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="是否启用" prop="enable"> <el-select clearable v-model="ruleForm.enable" placeholder="请选择是否启用"> <el-option v-for="(item, index) in dl('YesNoEnum')" :key="index" :value="Number(item.value)" :label="`${item.name} (${item.code}) [${item.value}]`"></el-option> </el-select> </el-form-item> </el-col> </el-row> </el-form> <template #footer> Web/src/views/wcs/wcsPlc/index.vue
@@ -35,6 +35,14 @@ </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI"> <el-form-item label="是否启用"> <el-select clearable="" v-model="queryParams.enable" placeholder="请选择是否启用"> <el-option v-for="(item, index) in dl('YesNoEnum')" :key="index" :value="item.value" :label="`${item.name} (${item.code}) [${item.value}] `" /> </el-select> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10"> <el-form-item> <el-button-group style="display: flex; align-items: center;"> @@ -74,6 +82,12 @@ </el-table-column> <el-table-column prop="wareHouseNo" label="仓库号" show-overflow-tooltip="" /> <el-table-column prop="text" label="描述" show-overflow-tooltip="" /> <el-table-column prop="enable" label="是否启用" show-overflow-tooltip=""> <template #default="scope"> <el-tag :type="dv('YesNoEnum', scope.row.enable)?.tagType"> {{ dv('YesNoEnum', scope.row.enable)?.name }}</el-tag> </template> </el-table-column> <el-table-column label="修改记录" width="80" align="center" show-overflow-tooltip> <template #default="scope"> <ModifyRecord :data="scope.row" />