Merge branch 'master' of http://115.159.85.185:8098/r/ZhuHaiChuangZhi/GanFengLiYeNew
¶Ô±ÈÐÂÎļþ |
| | |
| | | #region << ç æ¬ 注 é >> |
| | | /*---------------------------------------------------------------- |
| | | * å½å空é´ï¼WIDESEAWCS_ITaskInfoRepository |
| | | * å建è
ï¼è¡ç«¥åº |
| | | * å建æ¶é´ï¼2024/8/2 16:13:36 |
| | | * çæ¬ï¼V1.0.0 |
| | | * æè¿°ï¼ |
| | | * |
| | | * ---------------------------------------------------------------- |
| | | * ä¿®æ¹äººï¼ |
| | | * ä¿®æ¹æ¶é´ï¼ |
| | | * çæ¬ï¼V1.0.1 |
| | | * ä¿®æ¹è¯´æï¼ |
| | | * |
| | | *----------------------------------------------------------------*/ |
| | | #endregion << ç æ¬ 注 é >> |
| | | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_Core.BaseRepository; |
| | | using WIDESEAWCS_Model.Models; |
| | | |
| | | namespace WIDESEAWCS_ITaskInfoRepository |
| | | { |
| | | public interface ITaskCZDetailsRepository : IRepository<DtCZTaskDetails> |
| | | { |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_Core.DB.Models; |
| | | |
| | | namespace WIDESEAWCS_Model.Models |
| | | { |
| | | [SugarTable(nameof(DtCZTaskDetails), "ä»»å¡ä¿¡æ¯")] |
| | | public class DtCZTaskDetails : BaseEntity |
| | | { |
| | | /// <summary> |
| | | /// 主é®ID |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] |
| | | public int Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡åç§° |
| | | /// </summary> |
| | | [SugarColumn(Length = 50, IsNullable = true)] |
| | | public string TaskName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡ç±»å |
| | | /// </summary> |
| | | [SugarColumn(Length = 50, IsNullable = true)] |
| | | public string TaskType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡ç¶æ |
| | | /// </summary> |
| | | [SugarColumn(Length = 50, IsNullable = true)] |
| | | public string TaskStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡æè¿° |
| | | /// </summary> |
| | | [SugarColumn(Length = 255, IsNullable = true)] |
| | | public string TaskDescription { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡ç»ç¹å°å |
| | | /// </summary> |
| | | [SugarColumn(Length = 50, IsNullable = true)] |
| | | public string TaskEndAddress { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç±»å |
| | | /// </summary> |
| | | [SugarColumn(Length = 50, IsNullable = true)] |
| | | public string MaterialType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©ææ¡ç |
| | | /// </summary> |
| | | [SugarColumn(Length = 100, IsNullable = true)] |
| | | public string MaterialBarCode { get; set; } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | #region << ç æ¬ 注 é >> |
| | | /*---------------------------------------------------------------- |
| | | * å½å空é´ï¼WIDESEAWCS_TaskInfoRepository |
| | | * å建è
ï¼è¡ç«¥åº |
| | | * å建æ¶é´ï¼2024/8/2 16:13:36 |
| | | * çæ¬ï¼V1.0.0 |
| | | * æè¿°ï¼ |
| | | * |
| | | * ---------------------------------------------------------------- |
| | | * ä¿®æ¹äººï¼ |
| | | * ä¿®æ¹æ¶é´ï¼ |
| | | * çæ¬ï¼V1.0.1 |
| | | * ä¿®æ¹è¯´æï¼ |
| | | * |
| | | *----------------------------------------------------------------*/ |
| | | #endregion << ç æ¬ 注 é >> |
| | | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_Core.BaseRepository; |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | | using WIDESEAWCS_Model.Models; |
| | | |
| | | namespace WIDESEAWCS_TaskInfoRepository |
| | | { |
| | | public class TaskCZDetailsRepository : RepositoryBase<DtCZTaskDetails>, ITaskCZDetailsRepository |
| | | { |
| | | public TaskCZDetailsRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) |
| | | { |
| | | } |
| | | } |
| | | } |
| | |
| | | public class TaskCZService : ServiceBase<DtCZTask, ITaskCZRepository>, ITaskCZService |
| | | { |
| | | private readonly ITaskRepository _taskRepository; |
| | | private readonly ITaskCZDetailsRepository _detailsRepository; |
| | | |
| | | public TaskCZService(ITaskCZRepository BaseDal, ITaskRepository taskRepository) : base(BaseDal) |
| | | public TaskCZService(ITaskCZRepository BaseDal, ITaskRepository taskRepository, ITaskCZDetailsRepository detailsRepository) : base(BaseDal) |
| | | { |
| | | _taskRepository = taskRepository; |
| | | _detailsRepository = detailsRepository; |
| | | } |
| | | |
| | | public Task<WebResponseContent> AddTaskCZAsync(CZTaskDto dto) |
| | |
| | | czTask.TaskStatus = TaskInStatusEnum.Line_InExecuting.ToString(); |
| | | } |
| | | |
| | | |
| | | 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 |
| | | var details = new DtCZTaskDetails() |
| | | { |
| | | 1 => nameof(CZTaskBarCodeDto.BarCode1), |
| | | 2 => nameof(CZTaskBarCodeDto.BarCode2), |
| | | 3 => nameof(CZTaskBarCodeDto.BarCode3), |
| | | 4 => nameof(CZTaskBarCodeDto.BarCode4), |
| | | _ => throw new ArgumentOutOfRangeException("åæ°é误ï¼è¯·æ£æ¥ãFinishNumãï¼") |
| | | MaterialBarCode = dto.MaterialBarcode, |
| | | MaterialType = dto.ProductCode, |
| | | TaskDescription = "åæºæäº¤ä»»å¡å®æ", |
| | | TaskEndAddress = czTask.TaskEndAddress, |
| | | TaskName = czTask.TaskName, |
| | | TaskType = czTask.TaskType, |
| | | TaskStatus = czTask.TaskStatus, |
| | | }; |
| | | _detailsRepository.AddData(details); |
| | | |
| | | typeof(CZTaskBarCodeDto).GetProperty(property)?.SetValue(detail, dto.MaterialBarcode); |
| | | //if (dto.FinishNum is < 1 or > 4) |
| | | // throw new ArgumentException("åæ°é误ï¼FinishNum å¿
须为 1-4"); |
| | | |
| | | czTask.DtCZTaskDetails = JsonSerializer.Serialize(detail); |
| | | //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) |
| | |
| | | { |
| | | private readonly ITaskRepository _taskRepository; |
| | | private readonly ITaskCZRepository _taskCZRepository; |
| | | private readonly ITaskCZDetailsRepository _detailsRepository; |
| | | |
| | | public CommonAGVJob(ITaskRepository taskRepository, ITaskCZRepository taskCZRepository) |
| | | public CommonAGVJob(ITaskRepository taskRepository, ITaskCZRepository taskCZRepository, ITaskCZDetailsRepository detailsRepository) |
| | | { |
| | | _taskRepository = taskRepository; |
| | | _taskCZRepository = taskCZRepository; |
| | | _detailsRepository = detailsRepository; |
| | | } |
| | | |
| | | public void Dispose() |
| | |
| | | { |
| | | AGV agv = (AGV)context.JobDetail.JobDataMap.Get("JobParams"); |
| | | SendTaskAGV.SendAGVTask(agv, _taskRepository); |
| | | UpdateTaskAGV.UpdateTask(agv, _taskRepository, _taskCZRepository); |
| | | UpdateTaskAGV.UpdateTask(agv, _taskRepository, _taskCZRepository, _detailsRepository); |
| | | |
| | | return Task.CompletedTask; |
| | | } |
| | |
| | | using Newtonsoft.Json; |
| | | using WIDESEAWCS_Common.AGVEnum; |
| | | using WIDESEAWCS_Common.AGVEnum; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_DTO.TaskInfo; |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | //agvtask_HtyRepository.AddTaskHistory(agvTask, OperateType.Finished.ToString()); |
| | | _taskRepository.DeleteData(agvTask); |
| | | plcClient.Communicator.Write(taskFbInteractive2, 1); |
| | |
| | | } |
| | | } |
| | | |
| | | public static void UpdateTask(AGV plcClient, ITaskRepository taskRepository, ITaskCZRepository _taskCZRepository) |
| | | public static void UpdateTask(AGV plcClient, ITaskRepository taskRepository, ITaskCZRepository _taskCZRepository, ITaskCZDetailsRepository _detailsRepository) |
| | | { |
| | | // 使ç¨Interlocked.Exchangeä¿è¯å䏿¶é´åªæä¸ä¸ªçº¿ç¨å¯ä»¥æ§è¡ä»»å¡æ´æ° |
| | | if (Interlocked.Exchange(ref _readUpdateAGVTaskSignalso, 1) == 0) |
| | |
| | | { |
| | | // æåæºè¿çç®± |
| | | // TODO: è°ç¨åæºæ¥å£è·å宿´æ¡ç |
| | | var czTask = _taskCZRepository.QueryFirst(x => x.Id == agvTask.WMSId); |
| | | CZTaskBarCodeDto barCodeDto = JsonConvert.DeserializeObject<CZTaskBarCodeDto>(czTask.DtCZTaskDetails); |
| | | var materials = Enumerable.Range(0, 2) |
| | | .Select(i => new BakingClass |
| | | { |
| | | MaterialType = czTask.TaskProductCode, |
| | | BarCode = GetBarCodeByIndex(barCodeDto, i, hasDesc: !string.IsNullOrEmpty(czTask.TaskDesc)) |
| | | }) |
| | | .ToList(); |
| | | //var czTask = _taskCZRepository.QueryFirst(x => x.Id == agvTask.WMSId); |
| | | //CZTaskBarCodeDto barCodeDto = JsonConvert.DeserializeObject<CZTaskBarCodeDto>(czTask.DtCZTaskDetails); |
| | | //var materials = Enumerable.Range(0, 2) |
| | | // .Select(i => new BakingClass |
| | | // { |
| | | // MaterialType = czTask.TaskProductCode, |
| | | // BarCode = GetBarCodeByIndex(barCodeDto, i, hasDesc: !string.IsNullOrEmpty(czTask.TaskDesc)) |
| | | // }) |
| | | // .ToList(); |
| | | |
| | | var details = _detailsRepository.QueryData(x => x.TaskEndAddress == agvTask.TargetAddress && x.TaskName == agvTask.Roadway).OrderBy(x => x.CreateDate).ToList(); |
| | | |
| | | if (details.Count >= 2) |
| | | { |
| | | details = details.Take(2).ToList(); |
| | | } |
| | | |
| | | var materials = details.Select(x => new BakingClass |
| | | { |
| | | MaterialType = x.MaterialType, |
| | | BarCode = x.MaterialBarCode, |
| | | }).ToList(); |
| | | |
| | | MESback WMSbackresult = MESAPIInvoke.BakingFeedingBinding(agvTask.TargetAddress, materials); |
| | | if (WMSbackresult.Code > 0) { new Exception(WMSbackresult.Message); return; } |
| | | else |
| | | { |
| | | if (!string.IsNullOrEmpty(czTask.TaskDesc)) |
| | | { |
| | | czTask.TaskDesc = "ä»»å¡å®æä¸¤æ¬¡æ¬¡"; |
| | | _taskCZRepository.DeleteData(czTask); |
| | | } |
| | | else |
| | | { |
| | | czTask.TaskDesc = "ä»»å¡å®æä¸æ¬¡"; |
| | | _taskCZRepository.UpdateData(czTask); |
| | | } |
| | | // å é¤detailsæ°æ® |
| | | _detailsRepository.DeleteData(details); |
| | | } |
| | | } |
| | | } |