using Admin.NET.Application;
|
using Admin.NET.Core.EnterWareHouseModule;
|
using Admin.NET.Core.EnterWareHouseModule.Enum;
|
using Admin.NET.Core.TaskModule.Enum;
|
using iWareCommon.Utils;
|
using iWareModel;
|
using iWareModel.EnumType.AoSinPublicCommon;
|
using iWareSql.DbOrm;
|
using iWareSql.Orm;
|
using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Data.Entity;
|
using System.Linq;
|
using System.Security.Policy;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
|
namespace iWareCC
|
{
|
public class MoveTaskHandle
|
{
|
public static LogType currentLogType = LogType.MainTaskCompleteHandle;
|
public static string host = ConfigHelper.GetConfigString("WMSHost");
|
public static string confirm = ConfigHelper.GetConfigString("confirm");
|
/// <summary>
|
/// 任务完成后处理单据状态
|
/// </summary>
|
public static void HandlerMainTaskStatus()
|
{
|
List<ware_device_wareing> list = new List<ware_device_wareing>();
|
while (true)
|
{
|
try
|
{
|
using (DbOrm dbOrm = new DbOrm())
|
{
|
DateTime nowDate = DateTime.Now;
|
list = dbOrm.ware_device_wareing.Where(u => u.DeviceCode == "1099" && u.Status == 0 && (DbFunctions.DiffSeconds(u.UpdatedTime,nowDate) > 20 || u.UpdatedTime == null)).ToList();
|
foreach (var item in list)
|
{
|
item.UpdatedTime = nowDate;
|
item.UpdatedUserName = "WMS";
|
item.Status = 1; //状态(0:新建 1:已处理)
|
item.StatusName = "已处理";
|
item.CloseContent = "WMS关闭";
|
item.FinishTime = nowDate;
|
item.OperationRemark = "关闭报警";
|
var msg = "";
|
GetTimeDiffer(item.CreatedTime?.DateTime, nowDate, ref msg);
|
item.DurationTime = msg;
|
}
|
dbOrm.SaveChanges();
|
|
//var list = dbOrm.v_ware_inventory_by_container.AsNoTracking().Where(u => u.WareLocationCode != u.RealLocationCode && u.StockStatus == 2 && !string.IsNullOrEmpty(u.RealLocationCode)).ToList();
|
|
//if (list != null)
|
//{
|
// if (list.Count > 0)
|
// {
|
// string str = list[0].WareContainerCode;
|
// string toLocation = "";
|
// //查看目标库位是不是第2排
|
// //if (list[0].RealLocationCode.Substring(2).StartsWith("02"))
|
// //{
|
// // //查看该1排是否有货
|
// // var arr = list[0].RealLocationCode.Split('-');
|
// // string newstr = arr[0] + "-" + "01" + "-" + arr[2] + "-"+ arr[3];
|
// // var lvc = dbOrm.ware_location_vs_container.AsNoTracking().Where(u => u.WareLocationCode == newstr).FirstOrDefault();
|
// // if (lvc == null)
|
// // {
|
|
|
// // //目标库位修改为1排
|
// // toLocation = newstr;
|
|
// // var container = dbOrm.wms_container.Where(u => u.ContainerCode == str).FirstOrDefault();
|
// // container.RealLocationCode = toLocation;
|
// // }
|
// // else
|
// // {
|
// // toLocation = list[0].RealLocationCode;
|
// // }
|
// //}
|
// //else
|
// //{
|
// // toLocation = list[0].RealLocationCode;
|
// //}
|
// toLocation = list[0].RealLocationCode;
|
// //查看同一个伸位是否有任务
|
// if (toLocation.Substring(2).StartsWith("01"))
|
// {
|
// //查看该1排是否有货
|
// var arr = toLocation.Split('-');
|
// string newstr = arr[0] + "-" + "02" + "-" + arr[2] + "-" + arr[3];
|
// var isExist = dbOrm.ware_task.Any(u => u.ToLocationCode == newstr || u.FromLocationCode == newstr || u.MoveFromLocation == newstr || u.MoveToLocation == newstr);
|
// if (isExist)
|
// {
|
// Thread.Sleep(3000);//休眠2秒
|
// continue;
|
// }
|
// }
|
// if (toLocation.Substring(2).StartsWith("02"))
|
// {
|
// //查看该1排是否有货
|
// var arr = toLocation.Split('-');
|
// string newstr = arr[0] + "-" + "01" + "-" + arr[2] + "-" + arr[3];
|
// var isExist = dbOrm.ware_task.Any(u => u.ToLocationCode == newstr || u.FromLocationCode == newstr || u.MoveFromLocation == newstr || u.MoveToLocation == newstr);
|
// if (isExist)
|
// {
|
// Thread.Sleep(3000);//休眠2秒
|
// continue;
|
// }
|
// }
|
// //创建移库任务,每次只处理一条
|
// var cvm = dbOrm.ware_container_vs_material.Where(u => u.WareContainerCode == str ).FirstOrDefault();
|
// var tasknew = new ware_task
|
// {
|
// //OrderNo = input.OrderNo,
|
// TaskNo = DateTime.Now.ToString("yyyyMMddhhmmssfff"),
|
// //TaskName = wcsTask.TaskName,
|
// //TaskCategory = wcsTask.TaskType,
|
// TaskCategory = (int)TaskCategoryEnum.MoveStock,
|
// TaskDescribe = "",
|
// TaskPriority = 99,
|
// //TaskState = 0,
|
// TaskState = (int)TaskStateEnum.未执行,
|
// //TaskType = wcsTask.TaskType,
|
// FromLocationCode = list[0].WareLocationCode,
|
// ToLocationCode = toLocation,
|
// ContainerCode = list[0].WareContainerCode,
|
// Lane = list[0].Lane,
|
// ContainerType = 0,
|
// };
|
// cvm.StockStatus = (int)StockStatusEnum.移库中;
|
// dbOrm.ware_task.Add(tasknew);
|
// dbOrm.SaveChanges();
|
// }
|
//}
|
}
|
}
|
catch (Exception ex)
|
{
|
Log4NetHelper.WriteErrorLog(currentLogType, "HandlerMainTaskStatus处理库存状态异常" + ex.Message);
|
}
|
Thread.Sleep(5000);//休眠2秒
|
}
|
}
|
|
public static int GetTimeDiffer(DateTime? startTime, DateTime? endTime, ref string msg)
|
{
|
if (startTime == null || endTime == null)
|
{
|
return 0;
|
}
|
TimeSpan ts = ((DateTime)endTime - (DateTime)startTime);
|
msg = "";
|
if (ts.Days != 0)
|
{
|
msg += ts.Days + "天";
|
}
|
if (ts.Hours != 0)
|
{
|
msg += ts.Hours + "小时";
|
}
|
if (ts.Minutes != 0)
|
{
|
msg += ts.Minutes + "分钟";
|
}
|
if (ts.Seconds != 0)
|
{
|
msg += ts.Seconds + "秒";
|
}
|
return (int)ts.TotalSeconds;
|
}
|
}
|
}
|