#region << 版 本 注 释 >> /*---------------------------------------------------------------- * 命名空间:WIDESEAWCS_TaskInfoService * 创建者:胡童庆 * 创建时间:2024/8/2 16:13:36 * 版本:V1.0.0 * 描述: * * ---------------------------------------------------------------- * 修改人: * 修改时间: * 版本:V1.0.1 * 修改说明: * *----------------------------------------------------------------*/ #endregion << 版 本 注 释 >> using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical; using System.Text.Json; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_DTO.TaskInfo; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_TaskInfoService { public class TaskCZService : ServiceBase, ITaskCZService { private readonly ITaskRepository _taskRepository; private readonly ITaskCZDetailsRepository _detailsRepository; public TaskCZService(ITaskCZRepository BaseDal, ITaskRepository taskRepository, ITaskCZDetailsRepository detailsRepository) : base(BaseDal) { _taskRepository = taskRepository; _detailsRepository = detailsRepository; } public Task AddTaskCZAsync(CZTaskDto dto) { var response = new WebResponseContent(); try { var task = BaseDal.QueryFirst(x => (x.TaskTaskID == dto.DTaskId) || (x.TaskEndAddress == dto.InputValue) || (x.TaskType == dto.TaskType)); if (task != null) { response.Error("任务已存在,请勿重复添加!"); } var taskModel = new DtCZTask() { TaskTaskID = dto.DTaskId, TaskType = dto.TaskType, TaskEndAddress = dto.InputValue, TaskStatus = TaskInStatusEnum.InNew.ToString(), CreateDate = DateTime.Now, TaskStartDate = DateTime.Now, TaskEndDate = DateTime.Now.AddDays(1), TaskName = dto.TaskType.ToString(), TaskNumber = dto.Number, TaskExecutor = "CZ", TaskOrderNo = dto.OrderNo, TaskOwner = "KH", TaskProductCode = dto.ProductCode, Creater = "KH" }; var isTrue = BaseDal.AddData(taskModel) > 0; if (isTrue) response.OK("任务添加成功!"); else response.Error("任务添加失败!"); } catch (System.Exception ex) { response.Error(ex.Message); } return Task.FromResult(response); } /// /// 完成任务 /// /// /// public Task FinishTask(CZTaskFinshDto dto) { WebResponseContent response = new WebResponseContent(); try { var czTask = BaseDal.QueryFirst(x => x.TaskTaskID == dto.TaskId && x.TaskStatus == TaskInStatusEnum.InNew.ToString()); if (czTask == null) { response.Error("任务不存在!"); return Task.FromResult(response); } if (dto.Tags.Contains("正极")) { czTask.TaskZJFinishNumber += 1; } else { czTask.TaskFJFinishNumber += 1; } if (czTask.TaskZJFinishNumber == czTask.TaskNumber || czTask.TaskFJFinishNumber == czTask.TaskNumber) { czTask.TaskStatus = TaskInStatusEnum.InFinish.ToString(); czTask.TaskEndDate = DateTime.Now; } else { czTask.TaskStatus = TaskInStatusEnum.Line_InExecuting.ToString(); } var details = new DtCZTaskDetails() { MaterialBarCode = dto.MaterialBarcode, MaterialType = dto.ProductCode, TaskDescription = "创智提交任务完成", TaskEndAddress = czTask.TaskEndAddress, TaskName = czTask.TaskName, TaskType = czTask.TaskType, TaskStatus = czTask.TaskStatus, }; _detailsRepository.AddData(details); //if (dto.FinishNum is < 1 or > 4) // throw new ArgumentException("参数错误!FinishNum 必须为 1-4"); //var detail = dto.FinishNum == 1 // ? new CZTaskBarCodeDto() // : JsonSerializer.Deserialize(czTask.DtCZTaskDetails) ?? new CZTaskBarCodeDto(); //var property = dto.FinishNum switch //{ // 1 => nameof(CZTaskBarCodeDto.BarCode1), // 2 => nameof(CZTaskBarCodeDto.BarCode2), // 3 => nameof(CZTaskBarCodeDto.BarCode3), // 4 => nameof(CZTaskBarCodeDto.BarCode4), // _ => throw new ArgumentOutOfRangeException("参数错误!请检查【FinishNum】!") //}; //typeof(CZTaskBarCodeDto).GetProperty(property)?.SetValue(detail, dto.MaterialBarcode); //czTask.DtCZTaskDetails = JsonSerializer.Serialize(detail); var isTrue = BaseDal.UpdateData(czTask); if (isTrue) { response.OK("任务完成成功!"); } else { response.Error("任务完成失败!"); } } catch (Exception ex) { response.Error(ex.Message); } return Task.FromResult(response); } /// /// 输送线回流 /// /// /// public Task EmptyTask(SaveModel saveModel) { WebResponseContent webResponseContent = new WebResponseContent(); try { string Saddress = saveModel.MainData["sourceAddress"].ToString(); string Taddress = saveModel.MainData["targetAddress"].ToString(); string Exception = saveModel.MainData["Exception"].ToString(); Dt_Task task = _taskRepository.QueryFirst(x => x.SourceAddress == Saddress && x.TaskState == (int)TaskInStatusEnum.InPending && x.TargetAddress == "WaitBind"); if (task == null) { webResponseContent.Error("任务不存在!"); return Task.FromResult(webResponseContent); } task.TargetAddress = Taddress; task.ExceptionMessage = Exception; task.TaskState = (int)TaskInStatusEnum.InNew; var isTrue = _taskRepository.UpdateData(task); if (isTrue) { webResponseContent.OK("任务下发成功!"); } } catch (Exception ex) { webResponseContent.Error(ex.Message); } return Task.FromResult(webResponseContent); } } }