//using Admin.NET.Core.TaskModule.Enum;
|
//using iWareCC.Common.Helper;
|
//using iWareCommon;
|
//using iWareCommon.Common.Globle;
|
//using iWareCommon.Utils;
|
//using iWareModel;
|
//using iWareModel.Entity.WCS;
|
//using iWareSql.DataAccess;
|
//using iWareSql.MyDbContext;
|
//using Newtonsoft.Json;
|
//using System;
|
//using System.Collections.Generic;
|
//using System.Data.Entity;
|
//using System.Linq;
|
//using System.Runtime.Remoting.Contexts;
|
//using System.Threading;
|
|
//namespace iWareCC
|
//{
|
// /// <summary>
|
// /// WCS任务完成线程(立体库)
|
// /// </summary>
|
// public static class LiTiKu_TaskFinishedTask
|
// {
|
// public static void Handler()
|
// {
|
// while (true)
|
// {
|
// Thread.Sleep(2000);//休眠2秒,将休眠写到前面,是为了下面的continue方法执行后不显示错误信息的提示!!!【EditBy shaocx,2022-05-24】
|
// SystemWarningMsg._lbl_Alert_SrmTaskFinish = string.Empty;
|
|
// try
|
// {
|
// if (SystemValue.isAllowRuning_SrmTaskFinish && SystemValue.isStartedModel)
|
// {
|
// using (MyDbContext dbContext = new MyDbContext())
|
// {
|
// var willDoTasks = dbContext.ware_task.Where(x => x.State == 1 && (x.IsDeleted == null || x.IsDeleted == false) && (x.AreaType == null || x.AreaType == (int)AreaTypeEnum.立体库))
|
// .Where(TaskHandler.CommonFilterExpressionForNoFinishAndNoCancel())
|
// .ToList();
|
// var willDoTasks_FlagFinish = willDoTasks.Where(x => x.IsFlagFinish == 1).ToList();//强制完成的
|
// var willDoTasks_Normal = willDoTasks.Where(x => x.IsFlagFinish == null || x.IsFlagFinish == 0).ToList();
|
|
// if (willDoTasks_FlagFinish != null && willDoTasks_FlagFinish.Count > 0)
|
// {
|
// List<string> str = new List<string>();
|
// foreach (var item in willDoTasks_FlagFinish)
|
// {
|
// str.Add(item.TaskNo);
|
// }
|
// var json = JsonConvert.SerializeObject(str);
|
// List<TaskDatailsOutPut> taskDatailsOutPutsList = MyExtendHelper.CreateSimulationWcsData(willDoTasks_FlagFinish);
|
// foreach (var item in taskDatailsOutPutsList)
|
// {
|
// HandleByWcsResult(item, willDoTasks_FlagFinish, dbContext, "LiTiKu_TaskFinishedTask");
|
// }
|
// Log4NetHelper.WriteInfoLog(LogType.SrmTaskFinish, "批量下发WCS任务[成功][注意:这是强制任务完成!!!!],taskOutputs:" + json);
|
// SystemWarningMsg._lbl_Alert_SrmTaskFinish += "WCS任务完成线程,[强制任务完成。。。]:" + SysGloble.SPLIT_STR;
|
// }
|
|
// if (willDoTasks_Normal != null && willDoTasks_Normal.Count > 0)
|
// {
|
// List<string> str = new List<string>();
|
// foreach (var item in willDoTasks_Normal)
|
// {
|
// str.Add(item.TaskNo);
|
// }
|
// var json = JsonConvert.SerializeObject(str);
|
|
// if (FormCC.IsSimulationPLC)
|
// {//如果是模拟
|
// //记录日志
|
// List<TaskDatailsOutPut> taskDatailsOutPutsList = MyExtendHelper.CreateSimulationWcsData(willDoTasks_Normal);
|
// foreach (var item in taskDatailsOutPutsList)
|
// {
|
// HandleByWcsResult(item, willDoTasks_Normal, dbContext, "LiTiKu_TaskFinishedTask");
|
// }
|
// Log4NetHelper.WriteInfoLog(LogType.SrmTaskFinish, "批量下发WCS任务[成功][注意:这是模拟测试!!!!],taskOutputs:" + json);
|
// SystemWarningMsg._lbl_Alert_SrmTaskFinish += "WCS任务完成线程,[模拟完成。。。]:" + SysGloble.SPLIT_STR;
|
// }
|
// else
|
// {
|
// var data = WcsRequestHelper.GetBatchTask(json);
|
// if (data.Data != null && data.Data.Count > 0)
|
// {
|
// foreach (var item in data.Data)
|
// {
|
// HandleByWcsResult(item, willDoTasks_Normal, dbContext, "LiTiKu_TaskFinishedTask");
|
// }
|
// }
|
// else
|
// {
|
// if (data != null && data.Message != null)
|
// {
|
// SystemWarningMsg._lbl_Alert_SrmTaskFinish += "WCS任务完成线程,获取WCS的任务结果:" + data.Message + SysGloble.SPLIT_STR;
|
// }
|
// else
|
// {
|
// SystemWarningMsg._lbl_Alert_SrmTaskFinish += "WCS任务完成线程,获取WCS的任务结果显示没有任务" + SysGloble.SPLIT_STR;
|
// }
|
// }
|
// }
|
// }
|
// }
|
// }
|
// }
|
// catch (Exception ex)
|
// {
|
// SystemWarningMsg._lbl_Alert_SrmTaskFinish += "WCS任务完成线程 出现异常:" + ex.Message + SysGloble.SPLIT_STR;
|
// Log4NetHelper.WriteErrorLog(LogType.SrmTaskFinish, "WCS任务完成线程 出现异常:" + ex.Message, ex);
|
// }
|
|
// }
|
// }
|
|
|
// public static void HandleByWcsResult(TaskDatailsOutPut item, List<ware_task> model, MyDbContext dbContext, string funName)
|
// {
|
// string sql = "";
|
// int IsEmptyContainer = 0;
|
// if (item.TaskState == 2 || item.TaskState == 3)
|
// {
|
// var tasks = model.Where(u => u.TaskNo == item.WmsTaskNo).FirstOrDefault();
|
// if (tasks == null)
|
// {
|
// throw new Exception($"任务数据不存在,任务号:{item.WmsTaskNo}");
|
// }
|
// //tasks.TaskState = 3;
|
// tasks.TaskState = Convert.ToInt32(WareTaskStateEnum.已完成);
|
// tasks.FinishedTime = Convert.ToDateTime(item.FinishTime);
|
// //子任务
|
// //sql = string.Format(@" select * from ware_task_sub where TaskId={0} and TaskState!=3 and IsDeleted=0", tasks.Id);
|
// //var subTask = dbContext.Database.SqlQuery<WareTaskSub>(sql).ToList();
|
// var subTask = dbContext.ware_task_sub.Where(x => x.TaskId == tasks.Id && x.TaskState != 3 && (x.IsDeleted == null || x.IsDeleted == false)).ToList();
|
// //var materialLockeds = new List<ware_material_locked>();
|
|
// switch (tasks.TaskCategory)
|
// {
|
// case 1:
|
// #region 入库任务完成 (托盘和材料关系改成入库完成状态 任务完成 子任务完成 按理来说(在这一步才加库存和容器物料关系 (库存和容器物料关系在下发时已加)))
|
// DoTaskCategory1(subTask, IsEmptyContainer, item, tasks, dbContext, model);
|
// #endregion
|
// break;
|
// case 2:
|
// #region 出库任务完成 减去容器上所有物料库存但是不删除容器和物料关系 删除库位容器关系 库位解锁
|
// DoTaskCategory2(subTask, IsEmptyContainer, item, tasks, dbContext, model);
|
// #endregion
|
// break;
|
// case 3:
|
// #region 移库任务完成
|
// DoTaskCategory3(subTask, IsEmptyContainer, item, tasks, dbContext, model);
|
// #endregion
|
// break;
|
// }
|
// }
|
// }
|
|
|
// /// <summary>
|
// /// 入库任务完成处理
|
// /// </summary>
|
// /// <param name="subTask"></param>
|
// /// <param name="IsEmptyContainer"></param>
|
// /// <param name="item"></param>
|
// /// <param name="tasks"></param>
|
// /// <param name="dbContext"></param>
|
// /// <param name="model"></param>
|
// /// <exception cref="Exception"></exception>
|
// #region
|
// //private static void DoTaskCategory1(List<ware_task_sub> subTask, int IsEmptyContainer, TaskDatailsOutPut item, ware_task tasks, MyDbContext dbContext, List<ware_task> model)
|
// //{
|
// // //List<ware_material_locked> add_ware_Material_Locked_list = new List<ware_material_locked>();
|
// // List<ware_flow_record> add_ware_flow_record_list = new List<ware_flow_record>();
|
|
// // //ware_material_locked add_ware_Material_Locked = null;
|
// // ware_flow_record add_ware_flow_record = null;
|
|
// // #region 入库任务完成 (托盘和材料关系改成入库完成状态 任务完成 子任务完成 按理来说(在这一步才加库存和容器物料关系 (库存和容器物料关系在下发时已加)))
|
// // if (tasks.TaskCategory == 1)// 入库任务完成 托盘和材料关系改成入库完成状态 ---需要加库存 添加容器库位关系
|
// // {
|
// // var cvm = new List<ware_container_vs_material>();
|
|
// // //sql = string.Format(@" select * from ware_orders where OrderStatus!=2 and (OrderType = '1' or OrderType = '5') and IsDeleted=0 and WareContainerCode='{0}' ", tasks.ContainerCode);
|
// // //var orders = dbContext.Database.SqlQuery<WareOrders>(sql).FirstOrDefault();
|
// // var orders = dbContext.ware_orders.Where(x => x.OrderStatus != 2 && (x.OrderType == "1" || x.OrderType == "5") && (x.IsDeleted == null || x.IsDeleted == false) && x.WareContainerCode == tasks.ContainerCode).FirstOrDefault();
|
// // string addSql = string.Empty;
|
// // if (orders != null)//订单件 加库存 改入库单 改容器和材料关系
|
// // {
|
// // //sql = string.Format(@" select * from ware_container_vs_material where WareContainerCode='{0}' and StockStatus != 2 and IsDeleted=0 ", tasks.ContainerCode);
|
// // //cvm = dbContext.Database.SqlQuery<WareContainerVsMaterial>(sql).ToList();
|
// // cvm = dbContext.ware_container_vs_material.Where(x => x.WareContainerCode == tasks.ContainerCode && x.StockStatus != 2 && (x.IsDeleted == null || x.IsDeleted == false)).ToList();
|
// // if (cvm == null || cvm.Count <= 0)
|
// // {
|
// // throw new Exception("订单详情不存在!");
|
// // }
|
|
// // //sql = string.Format(@" select * from ware_orders_details where OrdersId={0} and IsDeleted=0 ", orders.Id);
|
// // //var wareOrderDetails = dbContext.Database.SqlQuery<WareOrderDetails>(sql).ToList();
|
// // var wareOrderDetails = dbContext.ware_orders_details.Where(x => x.OrdersId == orders.Id && (x.IsDeleted == null || x.IsDeleted == false)).ToList();
|
|
// // //List<string> str1 = wareOrderDetails.Select(w => w.WareMaterialCode).Distinct().ToList();
|
// // //foreach (var item1 in str1)
|
// // //{
|
// // // //sql = string.Format(@" select * from ware_material_locked where MaterialCode='{0}' ", item1);
|
// // // //var wareMaterialLocked = dbContext.Database.SqlQuery<WareMaterialLocked>(sql).FirstOrDefault();
|
// // // var wareMaterialLocked = dbContext.ware_material_locked.Where(x => x.MaterialCode == item1).FirstOrDefault();
|
|
// // // int qty = wareOrderDetails.Where(x => x.WareMaterialCode == item1).Sum(x => x.Quantity);
|
// // // if (wareMaterialLocked == null)
|
// // // {
|
// // // //addSql += string.Format(" insert into ware_material_locked values('{0}','{1}',{2},{3},'{4}','{5}','','',null,null,0,0) ", item1
|
// // // // , null, qty, 0, DateTime.Now, "", "cc");
|
|
// // // add_ware_Material_Locked = new ware_material_locked()
|
// // // {
|
// // // Id = Yitter.IdGenerator.YitIdHelper.NextId(),
|
// // // MaterialCode = item1,
|
// // // Quantity = qty,
|
// // // LockedQty = 0,
|
// // // FreeLockedQty = 0,
|
|
// // // CreatedTime = DateTime.Now,
|
// // // IsDeleted = false
|
// // // };
|
// // // add_ware_Material_Locked_list.Add(add_ware_Material_Locked);
|
// // // }
|
// // // else
|
// // // {
|
// // // wareMaterialLocked.Quantity += qty;
|
// // // //addSql += string.Format(" update ware_material_locked set Quantity={0} where id={1} ", wareMaterialLocked.Quantity, wareMaterialLocked.Id);
|
// // // }
|
// // //}
|
// // int RecordType = 0;
|
// // if (model.Where(x => x.TaskNo == item.WmsTaskNo).FirstOrDefault().TaskType == 2)
|
// // {
|
// // RecordType = 5;
|
// // }
|
// // foreach (var item2 in cvm)
|
// // {
|
// // //addSql += string.Format(@"insert into ware_flow_record values({0} ,{1},'{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}' ,'{12}' ,'{13}' ,'{14}' ,'{15}'
|
// // // ,'{16}' ,'{17}' ,'{18}' ,'{19}' ,'{20}' ,'{21}' ,'{22}' ,'{23}' ,'{24}' ,'{25}','{26}','{27}')",
|
// // // Yitter.IdGenerator.YitIdHelper.NextId(), RecordType, "", item2.OrdersNo, item2.PurchaseNo, item2.DeliveryNo, item2.CollectNo, tasks.ToLocationCode,
|
// // // tasks.ContainerCode
|
// // // , "", item2.WareMaterialCode, "", (item2.Quantity - item2.OCCQuantity), "", 1, "", "入库任务", "", 0, 0, DateTime.Now,
|
// // // "", "", "cc", "", "", 0, "");
|
|
// // add_ware_flow_record = new ware_flow_record()
|
// // {
|
// // Id = Yitter.IdGenerator.YitIdHelper.NextId(),
|
// // RecordType = RecordType,
|
// // WareHousingNo = item2.OrdersNo,
|
// // PurchaseNo = item2.PurchaseNo,
|
// // DeliveryNo = item2.DeliveryNo,
|
// // CollectNo = item2.CollectNo,
|
// // WareLocationCode = tasks.ToLocationCode,
|
// // WareContainerCode = item2.WareContainerCode,
|
// // WareMaterialCode = item2.WareMaterialCode,
|
|
// // Quantity = (item2.Quantity - item2.OCCQuantity),
|
// // WareHousStatus = 1,
|
// // WarehousingType = "入库任务",
|
|
// // CreatedTime = DateTime.Now,
|
// // IsDeleted = false
|
|
// // };
|
// // add_ware_flow_record_list.Add(add_ware_flow_record);
|
|
// // ////更新收货区库存 【Editby shaocx,2022-12-24】
|
// // //MyExtendHelper.UpdateSHQYQuantityForZPQYInStore(dbContext, tasks, item2);
|
// // }
|
// // }
|
// // else
|
// // {
|
// // //sql = string.Format(@" select * from ware_container_vs_material where WareContainerCode='{0}' and StockStatus = 2 and IsDeleted=0", tasks.ContainerCode);
|
// // //cvm = dbContext.Database.SqlQuery<WareContainerVsMaterial>(sql).ToList();
|
// // cvm = dbContext.ware_container_vs_material.Where(x => x.WareContainerCode == tasks.ContainerCode && x.StockStatus == 2 && (x.IsDeleted == null || x.IsDeleted == false)).ToList();
|
// // if (cvm != null && cvm.Count > 0)
|
// // {
|
// // //List<string> str1 = cvm.Select(w => w.WareMaterialCode).Distinct().ToList();
|
|
// // //foreach (var item1 in str1)
|
// // //{
|
// // // //sql = string.Format(@" select * from ware_material_locked where MaterialCode='{0}' ", item1);
|
// // // //var wareMaterialLocked = dbContext.Database.SqlQuery<WareMaterialLocked>(sql).FirstOrDefault();
|
// // // var wareMaterialLocked = dbContext.ware_material_locked.Where(x => x.MaterialCode == item1).FirstOrDefault();
|
// // // int qty = cvm.Where(x => x.WareMaterialCode == item1).Sum(x => Convert.ToInt32(x.Quantity));
|
// // // int occqty = cvm.Where(x => x.WareMaterialCode == item1).Sum(x => Convert.ToInt32(x.OCCQuantity));
|
|
// // // wareMaterialLocked.Quantity += (qty - occqty);
|
// // // // addSql += string.Format(" update ware_material_locked set Quantity={0} where id={1} ", wareMaterialLocked.Quantity, wareMaterialLocked.Id);
|
|
|
// // //}
|
// // int RecordType = 1;
|
// // if (model.Where(x => x.TaskNo == item.WmsTaskNo).FirstOrDefault().TaskType == 2)
|
// // {
|
// // RecordType = 5;
|
// // }
|
// // foreach (var item2 in cvm)
|
// // {
|
// // // addSql += string.Format(@"insert into ware_flow_record values({0}
|
// // // ,{1},'{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}' ,'{12}' ,'{13}' ,'{14}' ,'{15}'
|
// // // ,'{16}' ,'{17}' ,'{18}' ,'{19}' ,'{20}' ,'{21}' ,'{22}' ,'{23}' ,'{24}' ,'{25}','{26}','{27}')",
|
// // // Yitter.IdGenerator.YitIdHelper.NextId(), RecordType, "", item2.OrdersNo, item2.PurchaseNo, item2.DeliveryNo, item2.CollectNo, tasks.ToLocationCode, tasks.ContainerCode
|
// // // , "", item2.WareMaterialCode, "", (item2.Quantity - item2.OCCQuantity), "", 1, "", "回库任务", "", 0, 0, DateTime.Now,
|
// // // "", "", "cc", "", "", 0, "");
|
|
// // add_ware_flow_record = new ware_flow_record()
|
// // {
|
// // Id = Yitter.IdGenerator.YitIdHelper.NextId(),
|
// // RecordType = RecordType,
|
// // WareHousingNo = item2.OrdersNo,
|
// // PurchaseNo = item2.PurchaseNo,
|
// // DeliveryNo = item2.DeliveryNo,
|
// // CollectNo = item2.CollectNo,
|
// // WareLocationCode = tasks.ToLocationCode,
|
// // WareContainerCode = item2.WareContainerCode,
|
// // WareMaterialCode = item2.WareMaterialCode,
|
|
// // Quantity = (item2.Quantity - item2.OCCQuantity),
|
// // WareHousStatus = 1,
|
// // WarehousingType = "回库任务",
|
|
// // CreatedTime = DateTime.Now,
|
// // IsDeleted = false
|
|
// // };
|
// // add_ware_flow_record_list.Add(add_ware_flow_record);
|
|
// // ////更新收货区库存 【Editby shaocx,2022-12-24】
|
// // //MyExtendHelper.UpdateSHQYQuantityForZPQYInStore(dbContext, tasks, item2);
|
// // }
|
// // }
|
// // else
|
// // {
|
// // IsEmptyContainer = 1;
|
// // }
|
// // }
|
|
// // //using var transaction = dbContext.Database.BeginTransaction();
|
// // try
|
// // {
|
// // /*
|
// // sql = string.Format(" update ware_task set TaskState=3,UpdatedTime='{1}',DevTaskNo='{2}',FinishedTime='{1}' where Id={0} ", tasks.Id, tasks.FinishedTime, item.DevActNo);
|
// // sql += string.Format(@"INSERT INTO dbo.ware_location_vs_container values
|
// // ({0},'{1}','{2}','{3}','{4}','{5}',{6},{7},'{8}','{9}','{10}','{11}','{12}','{13}','{14}',{15},'{16}') ", Yitter.IdGenerator.YitIdHelper.NextId(),
|
// // "", "", tasks.ToLocationCode, tasks.ContainerCode, "", IsEmptyContainer, 0, "", DateTime.Now, "", "", "cc", "", "", 0, "");//添加库位容器关系
|
|
// // if (subTask != null && subTask.Count > 0)
|
// // {
|
// // sql += string.Format(" update ware_task_sub set TaskState=3,UpdatedTime='{0}' where TaskId={1} and TaskState !=3 ", tasks.FinishedTime, tasks.Id);
|
// // }
|
// // if (orders != null)
|
// // {
|
// // sql += string.Format(" update ware_container_vs_material set StockStatus={0},UpdatedTime='{2}' where WareContainerCode='{1}' and StockStatus != {0} ", 2, tasks.ContainerCode, DateTime.Now);
|
// // sql += string.Format(" update ware_orders set OrderStatus=2,UpdatedTime='{0}' where Id={1} ", DateTime.Now, orders.Id);
|
// // }
|
// // if (!string.IsNullOrWhiteSpace(addSql))
|
// // {
|
// // dbContext.Database.ExecuteSqlCommand(addSql);//添加库存
|
// // Log.Warning($"{funName} (TaskCategory == 1 )执行addSql :" + addSql);
|
// // }
|
|
// // dbContext.Database.ExecuteSqlCommand(sql);
|
// // Log.Warning($"{funName} (TaskCategory == 1 )执行sql :" + sql);
|
// // dbContext.SaveChanges();
|
// // transaction.Commit();
|
// // //*/
|
|
// // #region 最新EF处理
|
// // //1、更新表ware_task的状态为 完成
|
// // UpdateTaskState(item, tasks);
|
// // tasks.DevTaskNo = item.DevActNo;
|
|
// // //2、插入表ware_location_vs_container
|
// // var db_ware_location_vs_container = dbContext.ware_location_vs_container.Where(x => x.WareLocationCode == tasks.ToLocationCode
|
// // && x.WareContainerCode == tasks.ContainerCode && (x.IsDeleted == null || x.IsDeleted == false)).FirstOrDefault();
|
// // if (db_ware_location_vs_container == null)
|
// // {
|
// // ware_location_vs_container ware_Location_Vs_Container = new ware_location_vs_container()
|
// // {
|
// // Id = Yitter.IdGenerator.YitIdHelper.NextId(),
|
// // WareLocationCode = tasks.ToLocationCode,
|
// // WareContainerCode = tasks.ContainerCode,
|
// // IsEmptyContainer = IsEmptyContainer == 1 ? true : false,
|
// // CreatedTime = DateTime.Now,
|
// // UpdatedTime = DateTime.Now,
|
|
// // IsDeleted = false,
|
// // Status = 0,
|
// // TenantId = 0,
|
// // CreatedUserId = 0,
|
// // CreatedUserName = "cc",
|
// // UpdatedUserName = "cc",
|
// // UpdatedUserId = 0,
|
// // DetectionHeight = tasks.DetectionHeight //记录3巷道入库时的检测高度 【Editby shaocx,2023-02-07】
|
// // };
|
// // dbContext.ware_location_vs_container.Add(ware_Location_Vs_Container);
|
// // }
|
// // else
|
// // {
|
// // db_ware_location_vs_container.UpdatedTime = DateTime.Now;
|
// // db_ware_location_vs_container.UpdatedUserName = "cc";
|
// // db_ware_location_vs_container.Status = 0;
|
// // db_ware_location_vs_container.IsEmptyContainer = (IsEmptyContainer == 1 ? true : false);
|
// // db_ware_location_vs_container.DetectionHeight = tasks.DetectionHeight;//记录3巷道入库时的检测高度 【Editby shaocx,2023-02-07】
|
// // }
|
|
|
// // //获取库区对象
|
// // var v_wareLocation = dbContext.v_ware_location.Where(x => x.Code == tasks.ToLocationCode).FirstOrDefault();
|
|
// // if (subTask != null && subTask.Count > 0)
|
// // {
|
// // var updateSubTasks = subTask.Where(x => x.TaskId == tasks.Id && x.TaskState != 3).ToList();
|
// // foreach (var updateSub in updateSubTasks)
|
// // {
|
// // updateSub.TaskState = 3;
|
// // updateSub.UpdatedTime = tasks.FinishedTime;
|
// // }
|
// // // sql += string.Format(" update ware_task_sub set TaskState=3,UpdatedTime='{0}' where TaskId={1} and TaskState !=3 ", tasks.FinishedTime, tasks.Id);
|
// // }
|
// // if (orders != null)
|
// // {
|
// // //sql += string.Format(" update ware_container_vs_material set StockStatus={0},UpdatedTime='{2}' where WareContainerCode='{1}' and StockStatus != {0} ", 2, tasks.ContainerCode, DateTime.Now);
|
// // //sql += string.Format(" update ware_orders set OrderStatus=2,UpdatedTime='{0}' where Id={1} ", DateTime.Now, orders.Id);
|
// // List<ware_container_vs_material> update_ware_Container_Vs_MaterialList = dbContext.ware_container_vs_material.Where(x => x.WareContainerCode == tasks.ContainerCode && x.StockStatus != 2).ToList();
|
// // foreach (var update_ware_Container_Vs_Material in update_ware_Container_Vs_MaterialList)
|
// // {
|
// // update_ware_Container_Vs_Material.StockStatus = 2;
|
// // update_ware_Container_Vs_Material.UpdatedTime = tasks.FinishedTime;
|
|
// // //增加物料库区类型
|
// // update_ware_Container_Vs_Material.MaterialRegionId = v_wareLocation.RegionId;
|
// // update_ware_Container_Vs_Material.MaterialRegionCode = v_wareLocation.RegionCode;
|
// // update_ware_Container_Vs_Material.MaterialRegionName = v_wareLocation.RegionName;
|
// // }
|
// // ware_orders update_order = dbContext.ware_orders.Where(x => x.Id == orders.Id).FirstOrDefault();
|
// // update_order.OrderStatus = 2;
|
// // update_order.UpdatedTime = tasks.FinishedTime;
|
|
|
|
// // }
|
|
// // if (add_ware_flow_record_list != null && add_ware_flow_record_list.Count > 0)
|
// // {
|
// // dbContext.ware_flow_record.AddRange(add_ware_flow_record_list);
|
// // }
|
// // //if (add_ware_Material_Locked_list != null && add_ware_Material_Locked_list.Count > 0)
|
// // //{
|
// // // dbContext.ware_material_locked.AddRange(add_ware_Material_Locked_list);
|
// // //}
|
|
|
|
|
// // //保存数据,提交事务
|
// // dbContext.SaveChanges();
|
// // #endregion
|
|
// // }
|
// // catch (Exception)
|
// // {
|
// // //transaction.Rollback();
|
// // //transaction.Dispose();
|
// // throw;
|
// // }
|
// // }
|
// // #endregion
|
// //}
|
// #endregion
|
// private static void DoTaskCategory1(List<ware_task_sub> subTask, int IsEmptyContainer, TaskDatailsOutPut item, ware_task tasks, MyDbContext dbContext, List<ware_task> model)
|
// {
|
// List<ware_flow_record> add_ware_flow_record_list = new List<ware_flow_record>();
|
|
// ware_flow_record add_ware_flow_record = null;
|
|
// #region 入库任务完成 (托盘和材料关系改成入库完成状态 任务完成 子任务完成 按理来说(在这一步才加库存和容器物料关系 (库存和容器物料关系在下发时已加)))
|
// if (tasks.TaskCategory == 1)// 入库任务完成 托盘和材料关系改成入库完成状态 ---需要加库存 添加容器库位关系
|
// {
|
// var cvm = new List<ware_container_vs_material>();
|
// //查找组盘区域是否存在该容器的库存,有就把组盘区域容器编号更新未当前容器编号
|
// cvm = dbContext.ware_container_vs_material.Where(x => x.RealWareContainerCode == tasks.ContainerCode && (x.IsDeleted == null || x.IsDeleted == false) && x.WareContainerCode == "ZPQY").ToList();
|
// string addSql = string.Empty;
|
// if (cvm != null && cvm.Count > 0)//订单件 加库存 改入库单 改容器和材料关系
|
// {
|
// int RecordType = 0;
|
// if (model.Where(x => x.TaskNo == item.WmsTaskNo).FirstOrDefault().TaskType == 2)
|
// {
|
// RecordType = 5;
|
// }
|
// foreach (var item2 in cvm)
|
// {
|
// add_ware_flow_record = new ware_flow_record()
|
// {
|
// Id = Yitter.IdGenerator.YitIdHelper.NextId(),
|
// RecordType = RecordType,
|
// WareHousingNo = item2.OrdersNo,
|
// PurchaseNo = item2.PurchaseNo,
|
// DeliveryNo = item2.DeliveryNo,
|
// CollectNo = item2.CollectNo,
|
// WareLocationCode = tasks.ToLocationCode,
|
// WareContainerCode = item2.WareContainerCode,
|
// WareMaterialCode = item2.WareMaterialCode,
|
// Quantity = (item2.Quantity - item2.OCCQuantity),
|
// WareHousStatus = 1,
|
// WarehousingType = "入库任务",
|
// CreatedTime = DateTime.Now,
|
// IsDeleted = false
|
// };
|
// add_ware_flow_record_list.Add(add_ware_flow_record);
|
// item2.WareContainerCode = tasks.ContainerCode;
|
// item2.RealWareContainerCode = "";
|
// }
|
// }
|
// else
|
// {
|
// cvm = dbContext.ware_container_vs_material.Where(x => x.WareContainerCode == tasks.ContainerCode && x.StockStatus == 2 && (x.IsDeleted == null || x.IsDeleted == false)).ToList();
|
// if (cvm != null && cvm.Count > 0)
|
// {
|
// int RecordType = 1;
|
// if (model.Where(x => x.TaskNo == item.WmsTaskNo).FirstOrDefault().TaskType == 2)
|
// {
|
// RecordType = 5;
|
// }
|
// foreach (var item2 in cvm)
|
// {
|
// add_ware_flow_record = new ware_flow_record()
|
// {
|
// Id = Yitter.IdGenerator.YitIdHelper.NextId(),
|
// RecordType = RecordType,
|
// WareHousingNo = item2.OrdersNo,
|
// PurchaseNo = item2.PurchaseNo,
|
// DeliveryNo = item2.DeliveryNo,
|
// CollectNo = item2.CollectNo,
|
// WareLocationCode = tasks.ToLocationCode,
|
// WareContainerCode = item2.WareContainerCode,
|
// WareMaterialCode = item2.WareMaterialCode,
|
|
// Quantity = (item2.Quantity - item2.OCCQuantity),
|
// WareHousStatus = 1,
|
// WarehousingType = "回库任务",
|
|
// CreatedTime = DateTime.Now,
|
// IsDeleted = false
|
|
// };
|
// add_ware_flow_record_list.Add(add_ware_flow_record);
|
// }
|
// }
|
// else
|
// {
|
// IsEmptyContainer = 1;
|
// }
|
// cvm = null;
|
// }
|
|
// try
|
// {
|
// #region 最新EF处理
|
// //1、更新表ware_task的状态为 完成
|
// UpdateTaskState(item, tasks);
|
// tasks.DevTaskNo = item.DevActNo;
|
|
// //2、插入表ware_location_vs_container
|
// var db_ware_location_vs_container = dbContext.ware_location_vs_container.Where(x => x.WareLocationCode == tasks.ToLocationCode
|
// && x.WareContainerCode == tasks.ContainerCode && (x.IsDeleted == null || x.IsDeleted == false)).FirstOrDefault();
|
// if (db_ware_location_vs_container == null)
|
// {
|
// ware_location_vs_container ware_Location_Vs_Container = new ware_location_vs_container()
|
// {
|
// Id = Yitter.IdGenerator.YitIdHelper.NextId(),
|
// WareLocationCode = tasks.ToLocationCode,
|
// WareContainerCode = tasks.ContainerCode,
|
// IsEmptyContainer = IsEmptyContainer == 1 ? true : false,
|
// CreatedTime = DateTime.Now,
|
// UpdatedTime = DateTime.Now,
|
|
// IsDeleted = false,
|
// Status = 0,
|
// TenantId = 0,
|
// CreatedUserId = 0,
|
// CreatedUserName = "cc",
|
// UpdatedUserName = "cc",
|
// UpdatedUserId = 0,
|
// DetectionHeight = tasks.DetectionHeight //记录3巷道入库时的检测高度 【Editby shaocx,2023-02-07】
|
// };
|
// dbContext.ware_location_vs_container.Add(ware_Location_Vs_Container);
|
// }
|
// else
|
// {
|
// db_ware_location_vs_container.UpdatedTime = DateTime.Now;
|
// db_ware_location_vs_container.UpdatedUserName = "cc";
|
// db_ware_location_vs_container.Status = 0;
|
// db_ware_location_vs_container.IsEmptyContainer = (IsEmptyContainer == 1 ? true : false);
|
// db_ware_location_vs_container.DetectionHeight = tasks.DetectionHeight;//记录3巷道入库时的检测高度 【Editby shaocx,2023-02-07】
|
// }
|
|
// //获取库区对象
|
// var v_wareLocation = dbContext.v_ware_location.Where(x => x.Code == tasks.ToLocationCode).FirstOrDefault();
|
|
// if (subTask != null && subTask.Count > 0)
|
// {
|
// var updateSubTasks = subTask.Where(x => x.TaskId == tasks.Id && x.TaskState != 3).ToList();
|
// foreach (var updateSub in updateSubTasks)
|
// {
|
// updateSub.TaskState = 3;
|
// updateSub.UpdatedTime = tasks.FinishedTime;
|
// }
|
// }
|
|
// if (add_ware_flow_record_list != null && add_ware_flow_record_list.Count > 0)
|
// {
|
// dbContext.ware_flow_record.AddRange(add_ware_flow_record_list);
|
// }
|
|
// //解锁库位
|
// MyExtendHelper.LockLocation(false, dbContext, tasks.ToLocationCode, "解锁库位,入库任务完成");
|
|
// //保存数据,提交事务
|
// dbContext.SaveChanges();
|
// #endregion
|
|
// }
|
// catch (Exception)
|
// {
|
// throw;
|
// }
|
// }
|
// #endregion
|
// }
|
|
// /// <summary>
|
// /// 出库任务完成处理
|
// /// </summary>
|
// /// <param name="subTask"></param>
|
// /// <param name="IsEmptyContainer"></param>
|
// /// <param name="item"></param>
|
// /// <param name="tasks"></param>
|
// /// <param name="dbContext"></param>
|
// /// <param name="model"></param>
|
// /// <exception cref="Exception"></exception>
|
// private static void DoTaskCategory2(List<ware_task_sub> subTask, int IsEmptyContainer, TaskDatailsOutPut item, ware_task tasks, MyDbContext dbContext, List<ware_task> model)
|
// {
|
// //List<ware_material_locked> add_ware_Material_Locked_list = new List<ware_material_locked>();
|
// List<ware_flow_record> add_ware_flow_record_list = new List<ware_flow_record>();
|
|
|
// ware_flow_record add_ware_flow_record = null;
|
|
// if (tasks.TaskCategory == 2) // 出库任务完成 减去容器上所有物料库存但是不删除容器和物料关系 删除库位容器关系 库位解锁
|
// {
|
// var cvm = dbContext.ware_container_vs_material.Where(x => x.WareContainerCode == tasks.ContainerCode && x.StockStatus == 2 && (x.IsDeleted == null || x.IsDeleted == false)).ToList();
|
|
// var sortingVsContainers = dbContext.ware_sorting_vs_container.Where(x => x.WareContainerCode == tasks.ContainerCode && (x.IsDeleted == null || x.IsDeleted == false) && x.Status == 0).ToList();
|
|
// var lvm = dbContext.ware_location_vs_container.Where(x => x.WareContainerCode == tasks.ContainerCode && x.WareLocationCode == tasks.FromLocationCode && (x.IsDeleted == null || x.IsDeleted == false)).ToList();
|
|
// if (lvm != null && lvm.Count > 0)
|
// {
|
// string addSql = string.Empty;
|
// //List<ware_material_locked> wareMaterialLockeds = new List<ware_material_locked>();
|
// string updSql = string.Empty;
|
|
// if (cvm != null && cvm.Count > 0)
|
// {
|
// List<string> str1 = cvm.Select(w => w.WareMaterialCode).Distinct().ToList();
|
// foreach (var item1 in str1)
|
// {
|
// ////去掉验证库存的验证,不需要验证 【Editby shaocx,2023-02-06】
|
// ////var inventoryQty = InventoryHelper.GetInventoryQtyForOutByMaterialCodeWithNoLockData(item1, dbContext);//查出可用库存 [Editby shaocx,2023-01-04]
|
// ////if (inventoryQty <= 0)
|
// ////{//验证库存
|
// //// throw new Exception($"材料:" + item1 + " 库存不足,实际可用库存:" + inventoryQty);
|
// ////}
|
// //if (tasks.AreaType == (int)AreaTypeEnum.立体库)
|
// //{//只有当是立体库任务时,才会更新 ware_material_locked表 【Editby shaocx,2023-02-06】
|
// // UpdateMaterialLockedForOutStoreFinished(dbContext, item1, cvm, sortingVsContainers);
|
// //}
|
|
// //这段代码放在下面的地方执行了 【Editby shaocx,2023-02-21】
|
// //var update_ware_container_vs_materialList = dbContext.ware_container_vs_material.Where(x => x.WareContainerCode == tasks.ContainerCode).ToList();
|
// //foreach (var update_ware_container_vs_material in update_ware_container_vs_materialList)
|
// //{
|
// // update_ware_container_vs_material.IsLocked = false;
|
// // update_ware_container_vs_material.LockRemark = "cc出库任务完成处理,解锁为false";
|
// // update_ware_container_vs_material.DoLockTime = DateTime.Now;
|
// //}
|
|
// //出库解锁外侧物料容器信息
|
// //注释以下的方法,貌似这个方法不能用啊,内测出库完成,肯定外侧是空的,还解锁什么库位呢 【Editby shaocx,2023-02-02】
|
// //UnlockForSideLocation(dbContext, tasks);
|
|
// }
|
|
// int RecordType = 1;
|
// if (model.Where(x => x.TaskNo == item.WmsTaskNo).FirstOrDefault().TaskType == 2)
|
// {
|
// RecordType = 6;
|
// }
|
// foreach (var item2 in cvm)
|
// {
|
// add_ware_flow_record = new ware_flow_record()
|
// {
|
// Id = Yitter.IdGenerator.YitIdHelper.NextId(),
|
// RecordType = RecordType,
|
// WareHousingNo = item2.OrdersNo,
|
// PurchaseNo = item2.PurchaseNo,
|
// DeliveryNo = item2.DeliveryNo,
|
// CollectNo = item2.CollectNo,
|
// WareLocationCode = tasks.ToLocationCode,
|
// WareContainerCode = item2.WareContainerCode,
|
// WareMaterialCode = item2.WareMaterialCode,
|
|
// Quantity = (item2.Quantity - item2.OCCQuantity),
|
// WareHousStatus = 1,
|
// WarehousingType = "出库任务",
|
|
// CreatedTime = DateTime.Now,
|
// IsDeleted = false
|
|
// };
|
// add_ware_flow_record_list.Add(add_ware_flow_record);
|
// }
|
// }
|
|
// var location = dbContext.ware_location.Where(x => x.Code == tasks.FromLocationCode && (x.IsDeleted == null || x.IsDeleted == false)).FirstOrDefault();
|
// if (location == null)
|
// {
|
// throw new Exception("库位:" + tasks.FromLocationCode + " 不存在");
|
// }
|
|
// #region 最新EF处理
|
// try
|
// {
|
// //1、更新表ware_task的状态为 完成
|
// UpdateTaskState(item, tasks);
|
// tasks.DevTaskNo = item.DevActNo;
|
// tasks.ToLocationCode = item.ToPlace;
|
|
// if (subTask != null && subTask.Count > 0)
|
// {
|
// var updateSubTasks = subTask.Where(x => x.TaskId == tasks.Id && x.TaskState != 3).ToList();
|
// foreach (var updateSub in updateSubTasks)
|
// {
|
// updateSub.TaskState = 3;
|
// updateSub.UpdatedTime = tasks.FinishedTime;
|
// }
|
// }
|
|
|
// if (add_ware_flow_record_list != null && add_ware_flow_record_list.Count > 0)
|
// {
|
// dbContext.ware_flow_record.AddRange(add_ware_flow_record_list);
|
// }
|
// //if (add_ware_Material_Locked_list != null && add_ware_Material_Locked_list.Count > 0)
|
// //{
|
// // dbContext.ware_material_locked.AddRange(add_ware_Material_Locked_list);
|
// //}
|
|
// //解锁库位
|
// MyExtendHelper.LockLocation(false, dbContext, tasks.FromLocationCode, "解锁库位,出库任务完成");
|
|
// //解锁物料
|
// if (tasks.CheckMark != 1)//1是年度盘点
|
// {
|
// var update_ware_container_vs_materialList = dbContext.ware_container_vs_material.Where(x => x.WareContainerCode == tasks.ContainerCode).ToList();
|
// foreach (var update_ware_container_vs_material in update_ware_container_vs_materialList)
|
// {
|
// update_ware_container_vs_material.IsLocked = false;
|
// update_ware_container_vs_material.LockRemark = "cc出库任务完成处理,解锁为false";
|
// update_ware_container_vs_material.DoLockTime = DateTime.Now;
|
// }
|
// }
|
|
|
// //删除库位容器关系
|
|
// var update_ware_location_vs_container_List = dbContext.ware_location_vs_container.Where(x => x.WareContainerCode == tasks.ContainerCode && x.WareLocationCode == tasks.FromLocationCode && (x.IsDeleted == null || x.IsDeleted == false)).ToList();
|
// foreach (var update_ware_location_vs_container in update_ware_location_vs_container_List)
|
// {
|
// //获取库区对象
|
// var v_wareLocation = dbContext.v_ware_location.Where(x => x.Code == update_ware_location_vs_container.WareLocationCode).FirstOrDefault();
|
// if (v_wareLocation.IsVirtual == 1 || (v_wareLocation.isPingKu.HasValue && v_wareLocation.isPingKu.Value == true))
|
// {//平库不需要回库,所以不删除库位容器关系
|
// continue;
|
// }
|
// else
|
// {
|
// //update_ware_location_vs_container.IsDeleted = true;//逻辑删除!这里可能要改为 物理删除!
|
// //改为物理删除 【Editby shaocx,2022-12-22】
|
// dbContext.ware_location_vs_container.Remove(update_ware_location_vs_container);
|
// }
|
// }
|
|
|
// //保存数据,提交事务
|
// dbContext.SaveChanges();
|
// }
|
// catch (Exception ex)
|
// {
|
|
// throw ex;
|
// }
|
|
// #endregion
|
// }
|
// }
|
// }
|
|
// /// <summary>
|
// /// 出库解锁外侧物料容器信息
|
// /// </summary>
|
// /// <param name="dbContext"></param>
|
// /// <param name="tasks"></param>
|
// //private static void UnlockForSideLocation(MyDbContext dbContext, ware_task tasks)
|
// //{
|
// ////出库解锁外侧物料容器信息
|
// //bool? isPingku = false;
|
// //var vFromLocation = MyExtendHelper.GetWareLocationObject(dbContext, tasks.FromLocationCode, false);
|
// //if (vFromLocation != null)
|
// //{
|
// // isPingku = vFromLocation.isPingKu;
|
// //}
|
// //var query_WareLocationCode = string.Empty;
|
// //if (isPingku == null || isPingku == false)
|
// //{//立体库
|
// // var arr = tasks.FromLocationCode.Split('-');
|
// // if (arr.Length >= 4)
|
// // {
|
// // if (arr[2] == "1" || arr[2] == "4")
|
// // {
|
|
// // if (arr[2] == "1")
|
// // {
|
// // query_WareLocationCode = arr[0] + "-" + arr[1] + "-" + 2 + "-" + arr[3];
|
// // }
|
// // else
|
// // {
|
// // query_WareLocationCode = arr[0] + "-" + arr[1] + "-" + 3 + "-" + arr[3];
|
// // }
|
// // }
|
// // }
|
// //}
|
|
// //var task = dbContext.ware_task.Where(x => x.FromLocationCode == query_WareLocationCode || x.ToLocationCode == query_WareLocationCode).FirstOrDefault();
|
// //if (task == null)
|
// //{
|
// // var location_Vs_Container = dbContext.ware_location_vs_container.Where(x => x.WareLocationCode == query_WareLocationCode && (x.IsDeleted == null || x.IsDeleted == false)).FirstOrDefault();
|
// // if (location_Vs_Container != null)
|
// // {
|
// // var wareContainerVsMaterials = dbContext.ware_container_vs_material.Where(x => x.WareContainerCode == location_Vs_Container.WareContainerCode && (x.IsDeleted == null || x.IsDeleted == false) && x.IsLocked == true).ToList();
|
// // if (wareContainerVsMaterials != null && wareContainerVsMaterials.Count > 0)
|
// // {
|
// // foreach (var item2 in wareContainerVsMaterials)
|
// // {
|
// // if (item2.LocationType != 2)
|
// // {//平库 不需要单独锁定这个托盘上的所有物料,因为不涉及到堆垛机动作
|
// // item2.IsLocked = false;
|
// // item2.LockRemark = "cc出库任务完成处理,解锁为false";
|
// // item2.DoLockTime = DateTime.Now;
|
// // }
|
// // }
|
// // }
|
// // }
|
// //}
|
// //}
|
|
|
// /// <summary>
|
// /// 移库任务完成处理
|
// /// </summary>
|
// /// <param name="subTask"></param>
|
// /// <param name="IsEmptyContainer"></param>
|
// /// <param name="item"></param>
|
// /// <param name="tasks"></param>
|
// /// <param name="dbContext"></param>
|
// /// <param name="model"></param>
|
// /// <exception cref="Exception"></exception>
|
// private static void DoTaskCategory3(List<ware_task_sub> subTask, int IsEmptyContainer, TaskDatailsOutPut item, ware_task tasks, MyDbContext dbContext, List<ware_task> model)
|
// {
|
// //List<ware_material_locked> add_ware_Material_Locked_list = new List<ware_material_locked>();
|
// List<ware_flow_record> add_ware_flow_record_list = new List<ware_flow_record>();
|
|
|
// if (tasks.TaskCategory == 3)
|
// {
|
// //移库任务 删原来的库位容器关系 添加新的库位容器关系 解锁原来库位
|
|
// //sql = string.Format(@" select * from ware_location_vs_container where WareContainerCode='{0}' and WareLocationCode='{1}' and IsDeleted=0 ", tasks.ContainerCode, tasks.FromLocationCode);
|
// //var locationVsContainer = dbContext.Database.SqlQuery<WareLocationVsContainer>(sql).FirstOrDefault();
|
// var locationVsContainer = dbContext.ware_location_vs_container.Where(x => x.WareContainerCode == tasks.ContainerCode && x.WareLocationCode == tasks.FromLocationCode && (x.IsDeleted == null || x.IsDeleted == false)).FirstOrDefault();
|
|
// if (locationVsContainer == null)
|
// {
|
// throw new Exception("容器关系不存在");
|
// }
|
|
// if (locationVsContainer.IsEmptyContainer == true)
|
// {
|
// IsEmptyContainer = 1;
|
// }
|
|
// #region 新增表ware_location_vs_container
|
// var db_ware_location_vs_container = dbContext.ware_location_vs_container.Where(x => x.WareLocationCode == tasks.ToLocationCode
|
// && x.WareContainerCode == tasks.ContainerCode && (x.IsDeleted == null || x.IsDeleted == false)).FirstOrDefault();
|
// if (db_ware_location_vs_container == null)
|
// {
|
// ware_location_vs_container wlvc = new ware_location_vs_container()
|
// {
|
// Id = Yitter.IdGenerator.YitIdHelper.NextId(),
|
// WareLocationCode = tasks.ToLocationCode,
|
// WareContainerCode = tasks.ContainerCode,
|
// IsEmptyContainer = IsEmptyContainer == 1 ? true : false,
|
// CreatedTime = DateTime.Now,
|
|
// IsDeleted = false,
|
// Status = 0,
|
// TenantId = 0,
|
// CreatedUserId = 0,
|
// CreatedUserName = "cc",
|
// UpdatedUserId = 0,
|
// DetectionHeight = tasks.DetectionHeight //记录3巷道入库时的检测高度 【Editby shaocx,2023-02-07】
|
// };
|
// dbContext.ware_location_vs_container.Add(wlvc);//增加关联关系
|
// }
|
// else
|
// {
|
// db_ware_location_vs_container.UpdatedTime = DateTime.Now;
|
// db_ware_location_vs_container.UpdatedUserName = "cc";
|
// db_ware_location_vs_container.Status = 0;
|
// db_ware_location_vs_container.IsEmptyContainer = (IsEmptyContainer == 1 ? true : false);
|
// db_ware_location_vs_container.DetectionHeight = tasks.DetectionHeight; //记录3巷道入库时的检测高度 【Editby shaocx,2023-02-07】
|
// }
|
// #endregion
|
|
// //sql = string.Format(@" select * from ware_location where Code='{0}' and IsDeleted=0 ", tasks.FromLocationCode);
|
// //var location = dbContext.Database.SqlQuery<WareLocation>(sql).FirstOrDefault();
|
// var location = dbContext.ware_location.Where(x => x.Code == tasks.FromLocationCode && (x.IsDeleted == null || x.IsDeleted == false)).FirstOrDefault();
|
|
// if (location == null)
|
// {
|
// throw new Exception("库位:" + tasks.FromLocationCode + " 不存在");
|
// }
|
|
// /*
|
// using var transaction = dbContext.Database.BeginTransaction();
|
// try
|
// {
|
// sql = string.Format(" update ware_task set TaskState=3,UpdatedTime='{1}',DevTaskNo='{2}',ToLocationCode='{3}',FinishedTime='{1}' where Id={0} ", tasks.Id, tasks.FinishedTime, item.DevActNo, item.ToPlace);//修改任务表
|
// //sql = string.Format(" update ware_task set TaskState=3,UpdatedTime='{1}',DevTaskNo='{2}' where Id={0} ", tasks.Id, DateTime.UtcNow, item.DevActNo);//修改任务表
|
// if (subTask != null && subTask.Count > 0)
|
// {
|
// sql += string.Format(" update ware_task_sub set TaskState=3,UpdatedTime='{0}' where TaskId={1} and TaskState !=3 ", tasks.FinishedTime, tasks.Id);//修改任务详情
|
// }
|
// sql += string.Format(@" update ware_location set IsLocked=0 where Code='{0}' ", tasks.FromLocationCode);//解锁库位
|
// sql += string.Format(@" update ware_location_vs_container set IsDeleted=1 where WareContainerCode='{0}' and WareLocationCode='{1}' and IsDeleted=0 ", tasks.ContainerCode, tasks.FromLocationCode);//删除库位容器关系
|
|
// dbContext.Database.ExecuteSqlCommand(insertSql);
|
// Log.Warning($"{funName} (TaskCategory == 3 )执行 insertSql :" + insertSql);
|
// dbContext.Database.ExecuteSqlCommand(sql);
|
// Log.Warning($"{funName} (TaskCategory == 3 )执行 sql :" + sql);
|
// dbContext.SaveChanges();
|
// transaction.Commit();
|
// }
|
// catch (Exception)
|
// {
|
// transaction.Rollback();
|
// transaction.Dispose();
|
// throw;
|
// }
|
|
// //*/
|
|
// #region 最新EF处理
|
// try
|
// {
|
// //1、更新表ware_task的状态为 完成
|
// UpdateTaskState(item, tasks);
|
// tasks.DevTaskNo = item.DevActNo;
|
// tasks.ToLocationCode = item.ToPlace;
|
|
|
// if (subTask != null && subTask.Count > 0)
|
// {
|
// var updateSubTasks = subTask.Where(x => x.TaskId == tasks.Id && x.TaskState != 3).ToList();
|
// foreach (var updateSub in updateSubTasks)
|
// {
|
// updateSub.TaskState = 3;
|
// updateSub.UpdatedTime = tasks.FinishedTime;
|
// }
|
// // sql += string.Format(" update ware_task_sub set TaskState=3,UpdatedTime='{0}' where TaskId={1} and TaskState !=3 ", tasks.FinishedTime, tasks.Id);
|
// }
|
|
|
// if (add_ware_flow_record_list != null && add_ware_flow_record_list.Count > 0)
|
// {
|
// dbContext.ware_flow_record.AddRange(add_ware_flow_record_list);
|
// }
|
// //if (add_ware_Material_Locked_list != null && add_ware_Material_Locked_list.Count > 0)
|
// //{
|
// // dbContext.ware_material_locked.AddRange(add_ware_Material_Locked_list);
|
// //}
|
|
// //解锁库位
|
// MyExtendHelper.LockLocation(false, dbContext, tasks.FromLocationCode, "解锁库位,移库任务完成");
|
// MyExtendHelper.LockLocation(false, dbContext, tasks.ToLocationCode, "解锁库位,移库任务完成");
|
|
// //物料解锁 【Editby shaocx,2023-02-21】
|
// var update_ware_container_vs_materialList = dbContext.ware_container_vs_material.Where(x => x.WareContainerCode == tasks.ContainerCode).ToList();
|
// foreach (var update_ware_container_vs_material in update_ware_container_vs_materialList)
|
// {
|
// update_ware_container_vs_material.IsLocked = false;
|
// update_ware_container_vs_material.LockRemark = "cc移库任务完成处理,解锁为false";
|
// update_ware_container_vs_material.DoLockTime = DateTime.Now;
|
// }
|
|
// //删除库位容器关系
|
// var update_ware_location_vs_container_List = dbContext.ware_location_vs_container.Where(x => x.WareContainerCode == tasks.ContainerCode && x.WareLocationCode == tasks.FromLocationCode && (x.IsDeleted == null || x.IsDeleted == false)).ToList();
|
// foreach (var update_ware_location_vs_container in update_ware_location_vs_container_List)
|
// {
|
// //update_ware_location_vs_container.IsDeleted = true;//逻辑删除!这里可能要改为 物理删除!
|
// //改为物理删除 【Editby shaocx,2022-12-22】
|
// dbContext.ware_location_vs_container.Remove(update_ware_location_vs_container);
|
// }
|
|
|
// //保存数据,提交事务
|
// dbContext.SaveChanges();
|
// }
|
// catch (Exception)
|
// {
|
|
// throw;
|
// }
|
|
// #endregion
|
// }
|
|
// }
|
|
// #region 私有公共方法
|
|
// /// <summary>
|
// /// 处理公共的任务状态
|
// /// </summary>
|
// /// <param name="item"></param>
|
// /// <param name="tasks"></param>
|
// private static void UpdateTaskState(TaskDatailsOutPut item, ware_task tasks)
|
// {
|
// //tasks.TaskState = 3;
|
// tasks.TaskState = Convert.ToInt32(WareTaskStateEnum.已完成);
|
// tasks.UpdatedTime = DateTime.Now;
|
// tasks.FinishedTime = Convert.ToDateTime(item.FinishTime);
|
// }
|
|
// ///// <summary>
|
// ///// 出库任务完成后,处理ware_material_locked表数据
|
// ///// </summary>
|
// ///// <param name="dbContext"></param>
|
// ///// <param name="item1"></param>
|
// ///// <param name="cvm"></param>
|
// ///// <param name="sortingVsContainers"></param>
|
// //private static void UpdateMaterialLockedForOutStoreFinished(MyDbContext dbContext, string item1, List<ware_container_vs_material> cvm, List<ware_sorting_vs_container> sortingVsContainers)
|
// //{
|
// // var vml = dbContext.ware_material_locked.Where(x => x.MaterialCode == item1).FirstOrDefault();
|
|
// // int qty = cvm.Where(x => x.WareMaterialCode == item1).Sum(x => Convert.ToInt32(x.Quantity));
|
// // int occqty = cvm.Where(x => x.WareMaterialCode == item1).Sum(x => Convert.ToInt32(x.OCCQuantity));
|
// // vml.Quantity = vml.Quantity - (qty - occqty);
|
// // if (sortingVsContainers != null && sortingVsContainers.Count > 0)
|
// // {
|
// // var svc = sortingVsContainers.Where(x => x.WareMaterialCode == item1).FirstOrDefault();
|
// // if (svc != null)
|
// // {
|
// // var sortingOrderDetail = dbContext.ware_sorting_details.Where(x => x.Id == svc.SortingDetailsId && (x.IsDeleted == null || x.IsDeleted == false)).FirstOrDefault();
|
|
// // var wareOrders = dbContext.ware_orders.Where(x => x.OrderNo == sortingOrderDetail.DeliveryNo && (x.IsDeleted == null || x.IsDeleted == false)).FirstOrDefault();
|
// // //注释 by baotian 20230106 免费件 FreeLockedQty 不再使用
|
// // //if (wareOrders.OrderType == "8")//免费件出库
|
// // //{
|
// // // vml.FreeLockedQty = vml.FreeLockedQty - (Convert.ToInt32(svc.Quantity));//锁定数量减去整个取货数量
|
// // //}
|
// // //else
|
// // if (wareOrders.OrderType == "2") //订单件出库
|
// // {
|
// // vml.LockedQty = vml.LockedQty - (Convert.ToInt32(svc.Quantity));//锁定数量减去整个取货数量
|
|
// // }
|
// // else
|
// // {
|
// // vml.LockedQty = vml.LockedQty - (Convert.ToInt32(svc.Quantity));//锁定数量减去整个取货数量
|
// // }
|
// // vml.LockedQty = vml.LockedQty < 0 ? 0 : vml.LockedQty;
|
// // }
|
// // }
|
// //}
|
|
// #endregion
|
|
// }
|
//}
|