wanshenmean
2025-04-15 97ae26c59fe8c0f967903538e147240f8c1600a5
´úÂë¹ÜÀí/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskCZService.cs
@@ -1,4 +1,5 @@
#region << ç‰ˆ æœ¬ æ³¨ é‡Š >>
/*----------------------------------------------------------------
 * å‘½åç©ºé—´ï¼šWIDESEAWCS_TaskInfoService
 * åˆ›å»ºè€…:胡童庆
@@ -11,13 +12,13 @@
 * ä¿®æ”¹æ—¶é—´ï¼š
 * ç‰ˆæœ¬ï¼šV1.0.1
 * ä¿®æ”¹è¯´æ˜Žï¼š
 *
 *
 *----------------------------------------------------------------*/
#endregion << ç‰ˆ æœ¬ æ³¨ é‡Š >>
using AutoMapper;
using SqlSugar;
using System.Diagnostics.CodeAnalysis;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
using System.Text.Json;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseServices;
@@ -25,15 +26,18 @@
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob.Models;
using WIDESEAWCS_QuartzJob.Service;
namespace WIDESEAWCS_TaskInfoService
{
    public class TaskCZService : ServiceBase<DtCZTask, ITaskCZRepository>, ITaskCZService
    {
        public TaskCZService(ITaskCZRepository BaseDal) : base(BaseDal)
        private readonly ITaskRepository _taskRepository;
        private readonly ITaskCZDetailsRepository _detailsRepository;
        public TaskCZService(ITaskCZRepository BaseDal, ITaskRepository taskRepository, ITaskCZDetailsRepository detailsRepository) : base(BaseDal)
        {
            _taskRepository = taskRepository;
            _detailsRepository = detailsRepository;
        }
        public Task<WebResponseContent> AddTaskCZAsync(CZTaskDto dto)
@@ -75,5 +79,122 @@
            }
            return Task.FromResult(response);
        }
        /// <summary>
        /// å®Œæˆä»»åŠ¡
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public Task<WebResponseContent> FinishTask(CZTaskFinshDto dto)
        {
            WebResponseContent response = new WebResponseContent();
            try
            {
                var czTask = BaseDal.QueryFirst(x => x.TaskTaskID == dto.TaskId);
                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<CZTaskBarCodeDto>(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);
        }
        /// <summary>
        /// è¾“送线回流
        /// </summary>
        /// <param name="saveModel"></param>
        /// <returns></returns>
        public Task<WebResponseContent> EmptyTask(SaveModel saveModel)
        {
            WebResponseContent webResponseContent = new WebResponseContent();
            try
            {
                string Saddress = saveModel.MainData["sourceAddress"].ToString();
                string Taddress = saveModel.MainData["targetAddress"].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.TaskState = (int)TaskInStatusEnum.InNew;
                var isTrue = _taskRepository.UpdateData(task);
                if (isTrue)
                {
                    webResponseContent.OK("任务下发成功!");
                }
            }
            catch (Exception ex)
            {
                webResponseContent.Error(ex.Message);
            }
            return Task.FromResult(webResponseContent);
        }
    }
}
}