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;
}
}
}