using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using WIDESEA.Common; using WIDESEA.Core.Enums; using WIDESEA.Core.ManageUser; using WIDESEA.Core.Services; using WIDESEA.Core.Utilities; using WIDESEA.Entity.DomainModels; using WIDESEA.Services.IServices.ToApp; using WIDESEA.Services.Repositories; using WIDESEA.Services.Services; using WIDESEA_Entity.DomainModels; namespace WIDESEA_Services.Services { public partial class ToAPPOperation { /// /// 测量复核 /// /// /// public WebResponseContent MeasureCheckAction(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); try { string containerdtl_id = saveModel.MainData["containerdtl_id"]?.ToString(); string checkResult = saveModel.MainData["checkResult"]?.ToString(); VV_ContainerInfo containerInfo = VV_ContainerInfoRepository.Instance.FindFirst(r => Guid.Parse(containerdtl_id) == r.containerdtl_id); if (null == containerInfo) return content.Error("获取库存信息失败."); Dt_taskinfo task = Dt_taskinfoRepository.Instance.FindFirst(r => r.task_barcode == containerInfo.containerdtl_barcode); if (null == task) return content.Error("未找到测量复核出库的任务."); dt_checkRecord record = dt_checkRecordRepository.Instance.Find(r => r.record_materielNumber == containerInfo.containerdtl_number) .OrderByDescending(r => r.record_createTime).FirstOrDefault(); if (null == record) return content.Error("未找到抽检记录"); if (string.IsNullOrEmpty(checkResult)) return content.Error("请选择抽检结果."); content = Dt_taskinfoRepository.Instance.DbContextBeginTransaction(() => { record.record_result = checkResult; dt_checkRecordRepository.Instance.Update(record, x => x.record_result, true); task.task_state = TaskState.TaskState_Finished.ToString(); CommonFunction.AddWMSTaskToHistory(task); Dt_taskinfo taskinfo = new Dt_taskinfo(); taskinfo.task_id = Guid.NewGuid(); taskinfo.task_type = "合格".Equals(checkResult) ? TaskType.TaskType_CheckBackIn.ToString() : TaskType.TaskType_ErrorCheckBackIn.ToString(); taskinfo.task_state = TaskState.TaskState_Create.ToString(); taskinfo.task_barcode = containerInfo.containerdtl_barcode; taskinfo.task_materielid = containerInfo.materiel_id; //起始货位,就是目的站台 taskinfo.task_fromlocationid = LayerToStation.OutLayerToStation(containerInfo.location_layer); //目的货位 taskinfo.task_tolocationid = containerInfo.location_id; //起始站台 taskinfo.task_beginstation = "20101"; //目的站台 taskinfo.task_endstation = LayerToStation.OutLayerToStation(containerInfo.location_layer); taskinfo.task_grade = 0; taskinfo.task_isunpacked = false; taskinfo.task_creator = UserContext.Current.UserTrueName; taskinfo.task_createtime = DateTime.Now; taskinfo.task_weight = containerInfo.containerdtl_goodsWeight; taskinfo.task_materielType = containerInfo.containerdtl_type; taskinfo.task_sn = containerInfo.containerdtl_number; Dt_taskinfoRepository.Instance.Add(taskinfo, true); content = WCSApi.SendTaskToWCS(new List() { taskinfo }); if (content.Status) content.OK($"测量复核回库任务下发给WCS成功."); else content.Error($"测量复核回库任务下发给WCS失败,原因 => {content.Message}"); return content; }); } catch (Exception ex) { content.Error("测量复核确认失败:" + ex.Message); } Logger.AddLog(LoggerType.Add, saveModel, content, content); return content; } } }