public Result StartManufactureTask([FromQuery] int tId) { var sql = "SELECT * FROM manufacture_plan_task WHERE Id = @tId AND MarkedDelete = 0;"; var task = ServerConfig.ApiDb.Query <ManufacturePlanTask>(sql, new { tId }).FirstOrDefault(); if (task == null) { return(Result.GenError <Result>(Error.ManufactureTaskItemNotExist)); } if (task.State != ManufacturePlanTaskState.Stop) { return(Result.GenError <Result>(Error.ManufactureTaskStateError)); } var plan = ServerConfig.ApiDb.Query <ManufacturePlan>("SELECT * FROM `manufacture_plan` WHERE `Id` = @PlanId;", new { task.PlanId }).FirstOrDefault(); //sql = // "SELECT COUNT(1) FROM `manufacture_plan_task` WHERE PlanId = @PlanId AND Relation = @Order AND MarkedDelete = 0"; //var cnt = ServerConfig.ApiDb.Query<int>(sql, new { task.PlanId, task.Order }).FirstOrDefault(); //if (cnt > 0) //{ // return Result.GenError<Result>(Error.ManufacturePlaneTaskStopHaveRelation); //} var changes = new List <ManufactureLog>(); var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; task.State = ManufacturePlanTaskState.Wait; if (task.IsCheck) { sql = "SELECT * FROM manufacture_plan_task WHERE PlanId = @PlanId AND `Order` = @Relation"; var preTask = ServerConfig.ApiDb.Query <ManufacturePlanTask>(sql, new { task.PlanId, task.Relation }).FirstOrDefault(); if (preTask != null && preTask.State == ManufacturePlanTaskState.Done) { task.State = ManufacturePlanTaskState.WaitCheck; } } var change = new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = task.PlanId, IsAssign = true, TaskId = task.OldId != 0 ? plan?.TaskId ?? 0 : 0, ItemId = task.Id, Type = ManufactureLogType.StopTask, }; changes.Add(change); ServerConfig.ApiDb.Execute("UPDATE manufacture_plan_task SET `MarkedDateTime`= NOW(), `State` = @State WHERE `Id` = @Id;", task); ManufactureLog.AddLog(changes); return(Result.GenError <Result>(Error.Success)); }
public Result AddManufactureTask([FromBody] ManufacturePlanTask task) { var plan = ServerConfig.ApiDb.Query <ManufacturePlan>("SELECT * FROM `manufacture_plan` WHERE `Id` = @PlanId AND MarkedDelete = 0;", new { task.PlanId }).FirstOrDefault(); if (plan == null) { return(Result.GenError <Result>(Error.ManufacturePlanNotExist)); } if (plan.State == ManufacturePlanState.Wait) { return(Result.GenError <Result>(Error.ManufacturePlaneNotAssign)); } if (task.Item.IsNullOrEmpty()) { return(Result.GenError <Result>(Error.ManufactureTaskItemNotEmpty)); } //if (task.Order <= 0) //{ // return Result.GenError<Result>(Error.ManufactureTaskItemOrderError); //} var changes = new List <ManufactureLog>(); var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; var totalOrder = task.TotalOrder; var manufacturePlanTasks = ServerConfig.ApiDb.Query <ManufacturePlanTask>("SELECT * FROM `manufacture_plan_task` WHERE PlanId = @PlanId AND MarkedDelete = 0 ORDER BY `Order`;", new { task.PlanId }); var planChange = new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = plan.Id, IsAssign = true, Type = ManufactureLogType.PlanUpdateItem, ParsingWay = 1, }; var now = DateTime.Now; task.CreateUserId = createUserId; task.Desc = task.Desc ?? ""; task.State = ManufacturePlanTaskState.Wait; if (!manufacturePlanTasks.Any()) { task.Order = 1; task.MarkedDateTime = now; if (task.Relation != 0) { return(Result.GenError <Result>(Error.ManufactureTaskItemRelationError)); } if (task.IsCheck && task.Relation == 0) { return(Result.GenError <Result>(Error.ManufactureCheckItemNoRelation)); } ServerConfig.ApiDb.Execute( "UPDATE manufacture_plan_task SET `MarkedDateTime`= NOW(), `TotalOrder` = `TotalOrder` + 1 WHERE `TotalOrder` > @totalOrder;", new { totalOrder }); task.TotalOrder++; task.Id = ServerConfig.ApiDb.Query <int>( "INSERT INTO manufacture_plan_task(`CreateUserId`, `MarkedDateTime`, `TotalOrder`, `PlanId`, `Order`, `Person`, `ModuleId`, `IsCheck`, `CheckId`, `Item`, `EstimatedHour`, `EstimatedMin`, `Score`, `Relation`) " + "VALUES (@CreateUserId, @MarkedDateTime, @TotalOrder, @PlanId, @Order, @Person, @ModuleId, @IsCheck, @CheckId, @Item, @EstimatedHour, @EstimatedMin, @Score, @Relation)" + ";SELECT LAST_INSERT_ID();", task).FirstOrDefault(); planChange.ParamList.Add(new ManufactureLogItem { Type = ManufactureLogType.AddPlanTaskFormat, Field = task.Order.ToString() }); changes.Add(planChange); changes.Add(new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = plan.Id, IsAssign = true, ItemId = task.Id, Type = ManufactureLogType.TaskCreate }); } else { if (task.Relation != 0 && manufacturePlanTasks.All(x => x.Order != task.Relation)) { return(Result.GenError <Result>(Error.ManufactureTaskItemRelationError)); } if (task.IsCheck && task.Relation == 0) { return(Result.GenError <Result>(Error.ManufactureCheckItemNoRelation)); } var pre = manufacturePlanTasks.LastOrDefault(x => x.TotalOrder == totalOrder); var insertIndex = pre?.Order ?? 0; task.Order = insertIndex + 1; foreach (var manufacturePlanTask in manufacturePlanTasks.Where(x => x.TotalOrder > totalOrder)) { manufacturePlanTask.MarkedDateTime = now; var oldManufacturePlanTask = (ManufacturePlanTask)manufacturePlanTask.Clone(); manufacturePlanTask.Order++; if (manufacturePlanTask.Relation > insertIndex) { manufacturePlanTask.Relation++; } if (oldManufacturePlanTask.HaveChange(manufacturePlanTask, out var change)) { change.Time = markedDateTime; change.Account = createUserId; change.PlanId = manufacturePlanTask.PlanId; change.TaskId = manufacturePlanTask.TaskId; change.ItemId = manufacturePlanTask.Id; planChange.ParamList.Add(new ManufactureLogItem { Type = ManufactureLogType.UpdatePlanTaskFormat, Field = oldManufacturePlanTask.Order.ToString(), Items = change.ParamList.Select(y => { y.Type = ManufactureLogType.UpdatePlanTaskItemFormat; return(y); }) }); changes.Add(change); } } planChange.ParamList.Add(new ManufactureLogItem { Type = ManufactureLogType.AddPlanTaskFormat, Field = task.Order.ToString() }); changes.Add(planChange); ServerConfig.ApiDb.Execute( "UPDATE manufacture_plan_task SET `MarkedDateTime`= NOW(), `TotalOrder` = `TotalOrder` + 1 WHERE `TotalOrder` > @totalOrder AND MarkedDelete = 0;", new { totalOrder }); ServerConfig.ApiDb.Execute( "UPDATE manufacture_plan_task SET `MarkedDateTime`= NOW(), `Order` = @Order, `Relation` = @Relation WHERE `Id` = @Id;", manufacturePlanTasks); var relationTask = manufacturePlanTasks.FirstOrDefault(x => x.Order == task.Relation); if (relationTask != null && relationTask.State == ManufacturePlanTaskState.Done && task.IsCheck) { task.State = ManufacturePlanTaskState.WaitCheck; } task.TotalOrder++; task.MarkedDateTime = markedDateTime; task.Id = ServerConfig.ApiDb.Query <int>("INSERT INTO manufacture_plan_task (`CreateUserId`, `MarkedDateTime`, `TotalOrder`, `PlanId`, `Order`, `Person`, `ModuleId`, `IsCheck`, `CheckId`, `Item`, `EstimatedHour`, `EstimatedMin`, `Score`, `Relation`, `State`) " + "VALUES (@CreateUserId, @MarkedDateTime, @TotalOrder, @PlanId, @Order, @Person, @ModuleId, @IsCheck, @CheckId, @Item, @EstimatedHour, @EstimatedMin, @Score, @Relation, @State);SELECT LAST_INSERT_ID();", task).FirstOrDefault(); changes.Add(new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = plan.Id, IsAssign = true, ItemId = task.Id, Type = ManufactureLogType.TaskCreate }); ServerConfig.ApiDb.Execute("UPDATE manufacture_plan_item SET `Order` = `Order` + 1 WHERE `PlanId` = @Id AND MarkedDelete = 0 AND `State` = @State;", new { plan.Id, State = ManufacturePlanItemState.WaitAssign }); } ManufactureLog.AddLog(changes); return(Result.GenError <Result>(Error.Success)); }
public Result DeleteManufacturePlan([FromQuery] int tId) { var sql = "SELECT * FROM manufacture_plan_task WHERE Id = @tId AND MarkedDelete = 0;"; var task = ServerConfig.ApiDb.Query <ManufacturePlanTask>(sql, new { tId }).FirstOrDefault(); if (task == null) { return(Result.GenError <Result>(Error.ManufactureTaskItemNotExist)); } var plan = ServerConfig.ApiDb.Query <ManufacturePlan>("SELECT * FROM `manufacture_plan` WHERE `Id` = @PlanId;", new { task.PlanId }).FirstOrDefault(); sql = "SELECT COUNT(1) FROM `manufacture_plan_task` WHERE PlanId = @PlanId AND Relation = @Order AND MarkedDelete = 0"; var cnt = ServerConfig.ApiDb.Query <int>(sql, new { task.PlanId, task.Order }).FirstOrDefault(); if (cnt > 0) { return(Result.GenError <Result>(Error.ManufacturePlaneTaskDeleteHaveRelation)); } var manufacturePlanTasks = ServerConfig.ApiDb.Query <ManufacturePlanTask>("SELECT * FROM `manufacture_plan_task` WHERE PlanId = @PlanId AND MarkedDelete = 0 ORDER BY `Order`;", new { task.PlanId }); var changes = new List <ManufactureLog>(); var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; task = manufacturePlanTasks.First(x => x.Id == tId); task.MarkedDelete = true; var planChange = new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = task.PlanId, IsAssign = true, Type = ManufactureLogType.PlanUpdateItem, ParsingWay = 1, }; var pre = manufacturePlanTasks.LastOrDefault(x => x.TotalOrder < task.TotalOrder); var insertIndex = task?.Order ?? 0; //task.Order = insertIndex + 1; foreach (var manufacturePlanTask in manufacturePlanTasks.Where(x => x.TotalOrder > task.TotalOrder)) { var oldManufacturePlanTask = (ManufacturePlanTask)manufacturePlanTask.Clone(); manufacturePlanTask.Order--; if (manufacturePlanTask.Relation > task.Order) { manufacturePlanTask.Relation--; } if (oldManufacturePlanTask.HaveChange(manufacturePlanTask, out var change)) { planChange.ParamList.Add(new ManufactureLogItem { Type = ManufactureLogType.UpdatePlanTaskFormat, Field = task.Order.ToString(), Items = change.ParamList.Select(y => { y.Type = ManufactureLogType.UpdatePlanTaskItemFormat; return(y); }) }); changes.Add(change); } } planChange.ParamList.Add(new ManufactureLogItem { Type = ManufactureLogType.DeletePlanTaskFormat, Field = task.Order.ToString() }); changes.Add(planChange); ServerConfig.ApiDb.Execute( "UPDATE manufacture_plan_task SET `MarkedDelete` = @MarkedDelete, `MarkedDateTime`= NOW(), `Order` = @Order, `Relation` = @Relation WHERE `Id` = @Id;", manufacturePlanTasks); ServerConfig.ApiDb.Execute( "UPDATE manufacture_plan_task SET `MarkedDateTime`= NOW(), `TotalOrder` = `TotalOrder` - 1 WHERE `TotalOrder` > @totalOrder;", new { task.TotalOrder }); changes.Add(new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = task.PlanId, TaskId = task.OldId != 0 ? plan?.TaskId ?? 0 : 0, IsAssign = true, ItemId = task.Id, Type = ManufactureLogType.TaskDelete }); if (plan != null) { ServerConfig.ApiDb.Execute( "UPDATE manufacture_plan_item SET `Order` = `Order` - 1 WHERE `PlanId` = @Id AND MarkedDelete = 0 AND `State` = @State;", new { plan.Id, State = ManufacturePlanItemState.WaitAssign }); } ManufactureLog.AddLog(changes); return(Result.GenError <Result>(Error.Success)); }
public Result PutManufacturePlanTask([FromBody] ManufacturePlanTask task) { if (task.Id == 0) { return(Result.GenError <Result>(Error.ManufactureTaskNotExist)); } var oldTask = ServerConfig.ApiDb.Query <ManufacturePlanTask>( "SELECT a.*, IFNULL(b.Name, '') Processor FROM `manufacture_plan_task` a " + "LEFT JOIN (SELECT a.*, b.Name FROM `manufacture_processor` a JOIN `accounts` b ON a.ProcessorId = b.Id WHERE a.MarkedDelete = 0) b ON a.Person = b.Id WHERE a.Id = @Id AND a.MarkedDelete = 0;;", new { task.PlanId, task.Id }).FirstOrDefault(); if (oldTask == null) { return(Result.GenError <Result>(Error.ManufactureTaskItemNotExist)); } var changes = new List <ManufactureLog>(); task.TotalOrder = oldTask.TotalOrder; task.PlanId = oldTask.PlanId; task.TaskId = oldTask.TaskId; task.Order = oldTask.Order; task.OldId = oldTask.OldId; task.Person = task.Person == 0 ? oldTask.Person : task.Person; task.ModuleId = oldTask.ModuleId; task.IsCheck = oldTask.IsCheck; task.CheckId = oldTask.CheckId; task.Relation = oldTask.Relation; task.FirstStartTime = oldTask.FirstStartTime; task.PauseTime = oldTask.PauseTime; task.ActualStartTime = oldTask.ActualStartTime; task.ActualEndTime = oldTask.ActualEndTime; var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; var changeTask = false; var keys = new List <string> { "Person", "EstimatedHour", "EstimatedMin", "Score", "Desc", "ActualHour", "ActualMin", "ActualScore", "CheckResult" }; if (oldTask.HaveChange(task, out var taskChange, keys)) { changeTask = true; taskChange.Time = markedDateTime; taskChange.Account = createUserId; taskChange.PlanId = task.PlanId; taskChange.IsAssign = true; taskChange.TaskId = task.TaskId; taskChange.ItemId = task.Id; changes.Add(taskChange); } if (oldTask.IsCheck) { ManufacturePlanTask preTask; if (oldTask.CheckResult != ManufacturePlanCheckState.Redo && task.CheckResult == ManufacturePlanCheckState.Redo) { var sql = "SELECT * FROM `manufacture_plan_task` WHERE PlanId = @PlanId AND `Order` = @Relation;"; preTask = ServerConfig.ApiDb.Query <ManufacturePlanTask>(sql, new { oldTask.PlanId, oldTask.Relation }) .FirstOrDefault(); if (preTask != null) { if (preTask.State == ManufacturePlanTaskState.Done) { var oldPreTask = (ManufacturePlanTask)preTask.Clone(); preTask.State = preTask.IsCheck ? ManufacturePlanTaskState.WaitCheck : ManufacturePlanTaskState.WaitRedo; preTask.RedoCount++; preTask.IsRedo = true; keys = new List <string> { "State" }; if (oldPreTask.HaveChange(preTask, out var change, keys)) { change.Time = markedDateTime; change.Account = createUserId; change.PlanId = preTask.PlanId; change.IsAssign = true; change.TaskId = preTask.TaskId; change.ItemId = preTask.Id; changes.Add(change); } ServerConfig.ApiDb.Execute( "UPDATE manufacture_plan_task SET `State` = @State, `RedoCount` = @RedoCount, `IsRedo` = @IsRedo WHERE `Id` = @Id;", preTask); } else { return(Result.GenError <DataResult>(Error.ManufacturePlaneTaskNotDone)); } } } if (oldTask.CheckResult == ManufacturePlanCheckState.Redo && task.CheckResult != ManufacturePlanCheckState.Redo) { var sql = "SELECT * FROM `manufacture_plan_task` WHERE PlanId = @PlanId AND `Order` = @Relation;"; preTask = ServerConfig.ApiDb.Query <ManufacturePlanTask>(sql, new { oldTask.PlanId, oldTask.Relation }) .FirstOrDefault(); if (preTask != null) { if (preTask.State == ManufacturePlanTaskState.WaitRedo || preTask.State == ManufacturePlanTaskState.WaitCheck) { var oldPreTask = (ManufacturePlanTask)preTask.Clone(); preTask.State = ManufacturePlanTaskState.Done; preTask.RedoCount--; preTask.IsRedo = preTask.RedoCount > 0; keys = new List <string> { "State" }; if (oldPreTask.HaveChange(preTask, out var change, keys)) { change.Time = markedDateTime; change.Account = createUserId; change.PlanId = preTask.PlanId; change.IsAssign = true; change.TaskId = preTask.TaskId; change.ItemId = preTask.Id; changes.Add(change); } ServerConfig.ApiDb.Execute( "UPDATE manufacture_plan_task SET `State` = @State, `RedoCount` = @RedoCount, `IsRedo` = @IsRedo WHERE `Id` = @Id;", preTask); } else { return(Result.GenError <DataResult>(Error.ManufacturePlaneTaskNotWaitRedo)); } } } var checkItemChange = new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = task.PlanId, IsAssign = true, TaskId = task.TaskId, ItemId = task.Id, Type = ManufactureLogType.UpdateCheckItem }; var data = ServerConfig.ApiDb.Query <ManufacturePlanCheckItem>( "SELECT * FROM `manufacture_plan_check_item` WHERE PlanId = @PlanId AND ItemId = @Id AND MarkedDelete = 0;", new { task.PlanId, task.Id }); if (task.Items != null && task.Items.Any()) { var update = false; foreach (var item in task.Items) { var d = data.FirstOrDefault(x => x.Id == item.Id); if (d == null) { continue; } item.Desc = item.Desc ?? d.Desc; item.Images = item.Images ?? d.Images; if (d.HaveChange(item, out var change)) { update = true; change.Time = markedDateTime; change.Account = createUserId; change.PlanId = task.PlanId; change.IsAssign = true; change.TaskId = task.TaskId; change.ItemId = task.Id; change.Type = ManufactureLogType.UpdateCheckItem; changes.Add(change); } } if (update) { changes.Add(checkItemChange); ServerConfig.ApiDb.Execute( "UPDATE manufacture_plan_check_item SET `CheckTime` = @CheckTime, `Desc` = @Desc, `Result` = @Result, `Images` = @Images WHERE `Id` = @Id;", task.Items); } } } if (changeTask) { ServerConfig.ApiDb.Execute("UPDATE manufacture_plan_task SET `Person` = @Person, `EstimatedHour` = @EstimatedHour, `EstimatedMin` = @EstimatedMin, `Score` = @Score, `Desc` = @Desc, `ActualHour` = @ActualHour, `ActualMin` = @ActualMin, `ActualScore` = @ActualScore, `CheckResult` = @CheckResult WHERE `Id` = @Id;", task); } ManufactureLog.AddLog(changes); return(Result.GenError <Result>(Error.Success)); }
public DataResult UpManufacturePlanTask([FromBody] ManufacturePlanTaskUp moveTask) { if (moveTask.FromOrder == 0 || moveTask.ToOrder == 0) { return(Result.GenError <DataResult>(Error.ManufactureTaskItemNotExist)); } var tasks = ServerConfig.ApiDb.Query <ManufacturePlanTask>("SELECT * FROM `manufacture_plan_task` WHERE MarkedDelete = 0 AND TotalOrder <= @FromOrder AND TotalOrder >= @ToOrder Order By TotalOrder;", moveTask); if (tasks.Count() < 2) { return(Result.GenError <DataResult>(Error.ManufactureTaskItemNotExist)); } if (tasks.Select(x => x.TotalOrder).All(y => y != moveTask.FromOrder && y != moveTask.ToOrder)) { return(Result.GenError <DataResult>(Error.ManufactureTaskItemNotExist)); } var fromTask = (ManufacturePlanTask)tasks.First(x => x.TotalOrder == moveTask.FromOrder).Clone(); var toTask = (ManufacturePlanTask)tasks.First(x => x.TotalOrder == moveTask.ToOrder).Clone(); //无法上移非等待中/非待检验任务 if ((fromTask.State != ManufacturePlanTaskState.Wait && fromTask.State != ManufacturePlanTaskState.WaitCheck && fromTask.State != ManufacturePlanTaskState.WaitRedo)) { return(Result.GenError <DataResult>(Error.ManufacturePlaneTaskNotWait)); } var count = tasks.Count(); var state = fromTask.IsCheck ? ManufacturePlanTaskState.Checking : ManufacturePlanTaskState.Doing; var res = fromTask.IsCheck ? Error.ManufacturePlaneTaskCheckAfterChecking : Error.ManufacturePlaneTaskAfterDoing; //不能上移到该操作工的进行中/检验中任务之前 if (tasks.Take(count - 1).Any(x => x.Person == fromTask.Person && x.State == state)) { return(Result.GenError <DataResult>(res)); } //不能上移到关联任务之前 if (tasks.Take(count - 1).Any(x => x.PlanId == fromTask.PlanId && x.Order == fromTask.Relation)) { return(Result.GenError <DataResult>(Error.ManufacturePlaneTaskAfterDoing)); } var changes = new List <ManufactureLog>(); var newTasks = new Dictionary <int, ManufacturePlanTask>(); newTasks.AddRange(tasks.Take(count - 1).OrderByDescending(x => x.TotalOrder).ToDictionary(x => x.Id)); var changeOrder = new List <Tuple <int, int> >(); foreach (var task in newTasks.Values) { if (task.PlanId == fromTask.PlanId) { //if (task.Relation != 0) //{ // task.Relation++; //} changeOrder.Add(new Tuple <int, int>(task.Order, task.Order + 1)); task.Order++; } task.TotalOrder++; } newTasks = newTasks.Values.OrderBy(x => x.TotalOrder).ToDictionary(x => x.Id); newTasks.Add(fromTask.Id, fromTask); newTasks.Values.Last().TotalOrder = newTasks.Values.First().TotalOrder - 1; var oldOrder = fromTask.Order; if (fromTask.PlanId == toTask.PlanId) { newTasks.Values.Last().Order = toTask.Order; } if (newTasks.Values.Last().Order <= 0) { newTasks.Values.Last().Order = 1; } changeOrder.Add(new Tuple <int, int>(oldOrder, newTasks.Values.Last().Order)); if (changeOrder.Any()) { var changeOrderTasks = ServerConfig.ApiDb.Query <ManufacturePlanTask>("SELECT * FROM `manufacture_plan_task` WHERE MarkedDelete = 0 AND `PlanId` = @PlanId AND `Relation` IN @Relation;", new { PlanId = fromTask.PlanId, Relation = changeOrder.Select(x => x.Item2) }); var chOrderTasks = new List <Tuple <int, int> >(); foreach (var chTuple in changeOrder) { chOrderTasks.AddRange(changeOrderTasks.Where(x => x.Relation == chTuple.Item1).Select(y => new Tuple <int, int>(y.Id, chTuple.Item2))); } ServerConfig.ApiDb.Execute("UPDATE manufacture_plan_task SET `MarkedDateTime`= NOW(), `Relation` = @Item2 WHERE `Id` = @Item1;", chOrderTasks); } var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; var planChange = new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = fromTask.PlanId, IsAssign = true, Type = ManufactureLogType.PlanUpdateItem, ParsingWay = 1, }; foreach (var oldTask in tasks.Where(x => x.PlanId == fromTask.PlanId)) { if (newTasks.ContainsKey(oldTask.Id)) { var newTask = newTasks[oldTask.Id]; if (oldTask.HaveChange(newTask, out var change)) { planChange.ParamList.Add(new ManufactureLogItem { Type = ManufactureLogType.UpdatePlanTaskFormat, Field = newTask.Order.ToString(), Items = change.ParamList.Select(y => { y.Type = ManufactureLogType.UpdatePlanTaskItemFormat; return(y); }) }); changes.Add(change); } } } changes.Add(planChange); ServerConfig.ApiDb.Execute("UPDATE manufacture_plan_task SET `MarkedDateTime`= NOW(), `TotalOrder` = @TotalOrder, `Order` = @Order, `Relation` = @Relation WHERE `Id` = @Id;", newTasks.Values); ManufactureLog.AddLog(changes); var result = new DataResult(); result.datas.AddRange(newTasks.Values.Where(x => x.Id == fromTask.Id || x.Id == toTask.Id)); return(result); }
public DataResult PostManufacturePlan([FromBody] ManufacturePlanTasks manufacturePlan) { if (manufacturePlan.Plan.IsNullOrEmpty()) { return(Result.GenError <DataResult>(Error.ManufacturePlanNotEmpty)); } var cnt = ServerConfig.ApiDb.Query <int>("SELECT COUNT(1) FROM `manufacture_plan` WHERE `Plan` = @Plan AND MarkedDelete = 0;", new { manufacturePlan.Plan }).FirstOrDefault(); if (cnt > 0) { return(Result.GenError <DataResult>(Error.ManufacturePlanIsExist)); } cnt = ServerConfig.ApiDb.Query <int>("SELECT COUNT(1) FROM `manufacture_task` WHERE Id = @Id AND MarkedDelete = 0;", new { Id = manufacturePlan.TaskId }).FirstOrDefault(); if (cnt == 0) { return(Result.GenError <DataResult>(Error.ManufactureTaskNotExist)); } var items = manufacturePlan.Items; var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; var result = new DataResult(); if (items != null && items.Any()) { items = manufacturePlan.Items.OrderBy(x => x.Order); if (items.Any(x => x.Item.IsNullOrEmpty())) { return(Result.GenError <DataResult>(Error.ManufactureTaskItemNotEmpty)); } if (items.GroupBy(x => x.Order).Any(y => y.Count() > 1)) { return(Result.GenError <DataResult>(Error.ManufactureTaskItemOrderDuplicate)); } if (items.Any(x => x.IsCheck && x.Relation == 0)) { return(Result.GenError <DataResult>(Error.ManufactureCheckItemNoRelation)); } var oldToNew = new Dictionary <int, int>(); var i = 0; foreach (var item in items) { oldToNew.Add(item.Order, ++i); item.Order = oldToNew[item.Order]; if (item.Relation != 0) { item.Relation = oldToNew[item.Relation]; } } foreach (var item in items) { if (item.Order <= item.Relation || (item.Relation != 0 && items.All(x => x.Order != item.Relation))) { result.errno = Error.ManufactureTaskItemRelationError; result.datas.Add(item.Item); return(result); } item.CreateUserId = createUserId; item.MarkedDateTime = markedDateTime; item.Desc = item.Desc ?? ""; } } manufacturePlan.CreateUserId = createUserId; manufacturePlan.MarkedDateTime = markedDateTime; manufacturePlan.Id = ServerConfig.ApiDb.Query <int>("INSERT INTO manufacture_plan (`CreateUserId`, `MarkedDateTime`, `State`, `Plan`, `PlannedStartTime`, `PlannedEndTime`, `EstimatedHour`, `EstimatedMin`, `TaskId`) " + "VALUES (@CreateUserId, @MarkedDateTime, @State, @Plan, @PlannedStartTime, @PlannedEndTime, @EstimatedHour, @EstimatedMin, @TaskId);SELECT LAST_INSERT_ID();", manufacturePlan).FirstOrDefault(); var changes = new List <ManufactureLog> { new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = manufacturePlan.Id, TaskId = manufacturePlan.TaskId, Type = ManufactureLogType.PlanCreate } }; if (items != null && items.Any()) { foreach (var item in items) { item.PlanId = manufacturePlan.Id; } ServerConfig.ApiDb.Execute( "INSERT INTO manufacture_plan_item (`CreateUserId`, `MarkedDateTime`, `PlanId`, `Order`, `Person`, `ModuleId`, `IsCheck`, `CheckId`, `Item`, `EstimatedHour`, `EstimatedMin`, `Score`, `Desc`, `Relation`) " + "VALUES (@CreateUserId, @MarkedDateTime, @PlanId, @Order, @Person, @ModuleId, @IsCheck, @CheckId, @Item, @EstimatedHour, @EstimatedMin, @Score, @Desc, @Relation);", items); var data = ServerConfig.ApiDb.Query <ManufacturePlanItem>("SELECT Id FROM `manufacture_plan_item` WHERE PlanId = @Id AND MarkedDelete = 0;", new { manufacturePlan.Id }); changes.AddRange(data.Select(x => new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = manufacturePlan.Id, TaskId = manufacturePlan.TaskId, ItemId = x.Id, Type = ManufactureLogType.TaskCreate })); } ManufactureLog.AddLog(changes); return(Result.GenError <DataResult>(Error.Success)); }
public Result DeleteManufacturePlan([FromBody] BatchDelete batchDelete) { var changes = new List <ManufactureLog>(); var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; var ids = batchDelete.ids; var data = ServerConfig.ApiDb.Query <ManufacturePlan>("SELECT Id, TaskId, State FROM `manufacture_plan` WHERE Id IN @id AND `MarkedDelete` = 0;", new { id = ids }); if (!data.Any()) { return(Result.GenError <Result>(Error.ManufacturePlanNotExist)); } if (data.Any(x => x.State != ManufacturePlanState.Wait)) { return(Result.GenError <Result>(Error.ManufacturePlaneAssignState)); } changes.AddRange(data.Select(x => new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = x.Id, TaskId = x.TaskId, Type = ManufactureLogType.PlanDelete })); var waitPlanIds = data.Select(x => x.Id); var delPlanItems = ServerConfig.ApiDb.Query <ManufacturePlanItem>("SELECT Id FROM `manufacture_plan_item` WHERE PlanId IN @Id AND MarkedDelete = 0;", new { Id = waitPlanIds }); changes.AddRange(delPlanItems.Select(x => new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = x.PlanId, TaskId = data.FirstOrDefault(y => y.Id == x.PlanId)?.TaskId ?? 0, ItemId = x.Id, Type = ManufactureLogType.TaskDelete })); //var otherIds = data.Select(x => x.Id); //if (otherIds.Any()) //{ // delItems = // ServerConfig.ApiDb.Query<ManufacturePlanItem>("SELECT Id FROM `manufacture_plan_task` WHERE PlanId IN @Id AND MarkedDelete = 0;", new { Id = otherIds }); // changes.AddRange(delItems.Select(x => new ManufactureLog // { // Time = markedDateTime, // Account = createUserId, // PlanId = x.PlanId, // TaskId = data.FirstOrDefault(y => y.Id == x.PlanId)?.TaskId ?? 0, // ItemId = x.Id, // Type = ManufactureLogType.TaskDelete // })); //} ManufactureLog.AddLog(changes); ServerConfig.ApiDb.Execute( "UPDATE `manufacture_plan` SET `MarkedDateTime`= @MarkedDateTime, `MarkedDelete`= @MarkedDelete WHERE `Id` IN @Id;", new { MarkedDateTime = DateTime.Now, MarkedDelete = true, Id = ids }); ServerConfig.ApiDb.Execute( "UPDATE `manufacture_plan_item` SET `MarkedDateTime`= @MarkedDateTime, `MarkedDelete`= @MarkedDelete WHERE `PlanId` IN @Id;", new { MarkedDateTime = DateTime.Now, MarkedDelete = true, Id = ids }); //ServerConfig.ApiDb.Execute( // "UPDATE `manufacture_plan_task` SET `MarkedDateTime`= @MarkedDateTime, `MarkedDelete`= @MarkedDelete WHERE `PlanId` IN @Id;", new // { // MarkedDateTime = DateTime.Now, // MarkedDelete = true, // Id = ids // }); return(Result.GenError <Result>(Error.Success)); }
public DataResult PutManufacturePlan([FromBody] IEnumerable <ManufacturePlanTasks> manufacturePlans) { if (manufacturePlans == null || manufacturePlans.Any(x => x.Id == 0)) { return(Result.GenError <DataResult>(Error.ManufacturePlanNotExist)); } var manufacturePlanOlds = ServerConfig.ApiDb.Query <ManufacturePlan>("SELECT a.*, b.Task FROM `manufacture_plan` a JOIN `manufacture_task` b ON a.TaskId = b.Id WHERE a.Id IN @Id AND a.MarkedDelete = 0;", new { Id = manufacturePlans.Select(x => x.Id) }); if (manufacturePlanOlds == null || !manufacturePlanOlds.Any() || manufacturePlanOlds.Count() != manufacturePlans.Count()) { return(Result.GenError <DataResult>(Error.ManufacturePlanNotExist)); } //if (manufacturePlanOlds.Any(x => x.State != ManufacturePlanState.Wait)) //{ // return Result.GenError<DataResult>(Error.ManufacturePlaneChangeState); //} var changes = new List <ManufactureLog>(); var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; foreach (var manufacturePlan in manufacturePlans) { var manufacturePlanOld = manufacturePlanOlds.FirstOrDefault(x => x.Id == manufacturePlan.Id); if (manufacturePlanOld == null) { return(Result.GenError <DataResult>(Error.ManufacturePlanNotExist)); } var changeItems = new List <ManufactureLog>(); var changePlan = false; if (manufacturePlan.Plan != null) { if (manufacturePlan.Plan == string.Empty) { return(Result.GenError <DataResult>(Error.ManufacturePlanNotEmpty)); } if (manufacturePlan.Plan != manufacturePlanOld.Plan) { var cnt = ServerConfig.ApiDb.Query <int>("SELECT COUNT(1) FROM `manufacture_plan` WHERE `Plan` = @Plan AND MarkedDelete = 0;", new { manufacturePlan.Plan }).FirstOrDefault(); if (cnt > 0) { return(Result.GenError <DataResult>(Error.ManufacturePlanIsExist)); } } } if (manufacturePlan.TaskId == 0) { return(Result.GenError <DataResult>(Error.ManufactureTaskNotExist)); } if (manufacturePlan.TaskId != manufacturePlanOld.TaskId) { var task = ServerConfig.ApiDb.Query <ManufactureTask>("SELECT Id, Task FROM `manufacture_task` WHERE Id = @Id AND MarkedDelete = 0;", new { Id = manufacturePlan.TaskId }).FirstOrDefault(); if (task == null) { return(Result.GenError <DataResult>(Error.ManufactureTaskNotExist)); } manufacturePlan.Task = task.Task; } manufacturePlan.Plan = !manufacturePlan.Plan.IsNullOrEmpty() ? manufacturePlan.Plan : manufacturePlanOld.Plan; manufacturePlan.PlannedStartTime = manufacturePlan.PlannedStartTime != default(DateTime) ? manufacturePlan.PlannedStartTime : manufacturePlanOld.PlannedStartTime; manufacturePlan.PlannedEndTime = manufacturePlan.PlannedEndTime != default(DateTime) ? manufacturePlan.PlannedEndTime : manufacturePlanOld.PlannedEndTime; if (manufacturePlanOld.HaveChange(manufacturePlan, out var planChange)) { changePlan = true; manufacturePlan.MarkedDateTime = markedDateTime; planChange.Time = markedDateTime; planChange.Account = createUserId; planChange.PlanId = manufacturePlan.Id; planChange.TaskId = manufacturePlan.TaskId; changes.Add(planChange); } if (manufacturePlan.Items != null) { var changeItem = false; var items = new List <ManufacturePlanTask>(); var add = false; foreach (var item in manufacturePlan.Items) { if (item.State == ManufacturePlanTaskState.WaitAssign) { add = true; } if (add) { items.Add(item); } } var result = new DataResult(); if (items != null && items.Any()) { if (items.Any(x => x.State != ManufacturePlanTaskState.WaitAssign)) { return(Result.GenError <DataResult>(Error.ManufacturePlaneTaskAfterAssign)); } var sql = $"SELECT a.*, IFNULL(b.Plan, '') Plan, IFNULL(c.Name, '') Processor, IFNULL(d.Module, '') Module, IFNULL(e.`Check`, '') `Check` FROM `manufacture_plan_item` a " + "LEFT JOIN `manufacture_plan` b ON a.PlanId = b.Id " + "LEFT JOIN (SELECT a.*, b.Name FROM `manufacture_processor` a JOIN `accounts` b ON a.ProcessorId = b.Id WHERE a.MarkedDelete = 0) c ON a.Person = c.Id " + "LEFT JOIN `manufacture_task_module` d ON a.ModuleId = d.Id " + "LEFT JOIN `manufacture_check` e ON a.CheckId = e.Id " + "WHERE a.PlanId = @Id AND a.`State` = @state AND a.MarkedDelete = 0 ORDER BY a.`Order`;"; var waitAssign = ServerConfig.ApiDb.Query <ManufacturePlanTask>(sql, new { manufacturePlan.Id, state = ManufacturePlanItemState.WaitAssign }); //已下发的和额外添加的 var haveManufacturePlanItems = ServerConfig.ApiDb.Query <ManufacturePlanTask>("SELECT * FROM `manufacture_plan_task` WHERE PlanId = @PlanId AND MarkedDelete = 0 ORDER BY `Order`;", new { PlanId = manufacturePlan.Id }); var max = haveManufacturePlanItems.Count(); var order = max; foreach (var item in items) { item.Order = ++order; } //var oldToNew = new Dictionary<int, int>(); //var i = 0; //foreach (var item in items) //{ // oldToNew.Add(item.Order, ++i); // item.Order = oldToNew[item.Order]; // if (item.Relation != 0) // { // item.Relation = oldToNew[item.Relation]; // } //} if (items.Any(x => x.Item.IsNullOrEmpty())) { return(Result.GenError <DataResult>(Error.ManufactureTaskItemNotEmpty)); } if (items.GroupBy(x => x.Order).Any(y => y.Count() > 1)) { return(Result.GenError <DataResult>(Error.ManufactureTaskItemOrderDuplicate)); } var error = 0; foreach (var item in items) { item.PlanId = manufacturePlan.Id; if (error != 2 && item.Order <= item.Relation || (item.Relation != 0 && (items.All(x => x.Order != item.Relation) && item.Relation > max))) { error = 1; result.datas.Add(item.Item); } else if (error != 1 && item.IsCheck && item.Relation == 0) { error = 2; result.datas.Add(item.Item); } if (error != 0) { continue; } var d = waitAssign.FirstOrDefault(x => x.Id == item.Id); if (d != null) { item.Item = item.Item ?? d.Item; item.Desc = item.Desc ?? d.Desc; item.CheckId = !item.IsCheck && d.IsCheck ? 0 : item.CheckId; item.Check = !item.IsCheck && d.IsCheck ? "" : !item.Check.IsNullOrEmpty() ? item.Check : ""; if (d.HaveChange(item, out var change)) { changeItem = true; item.MarkedDateTime = markedDateTime; change.Time = markedDateTime; change.Account = createUserId; change.PlanId = manufacturePlan.Id; change.TaskId = manufacturePlan.TaskId; change.ItemId = item.Id; change.Order = d.Order; changeItems.Add(change); } } else { item.CreateUserId = createUserId; item.MarkedDateTime = markedDateTime; item.Desc = item.Desc ?? ""; } } if (result.datas.Any()) { result.errno = error == 1 ? Error.ManufactureTaskItemRelationError : Error.ManufactureCheckItemNoRelation; return(result); } var itemChange = new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = manufacturePlan.Id, TaskId = manufacturePlan.TaskId, Type = ManufactureLogType.PlanUpdateItem, ParsingWay = 1, }; #region 更新 var updateItems = items.Where(x => x.Id != 0 && waitAssign.Any(y => y.Id == x.Id)); if (updateItems.Any() && changeItem) { ServerConfig.ApiDb.Execute("UPDATE manufacture_plan_item SET `MarkedDateTime` = @MarkedDateTime, `Order` = @Order, `Person` = @Person, `ModuleId` = @ModuleId, `IsCheck` = @IsCheck, " + "`CheckId` = @CheckId, `Item` = @Item, `EstimatedHour` = @EstimatedHour, `EstimatedMin` = @EstimatedMin, `Score` = @Score, `Desc` = @Desc, `Relation` = @Relation WHERE `Id` = @Id;", updateItems); } #endregion #region 除 var delItems = waitAssign.Where(x => items.All(y => y.Id != x.Id)); if (delItems.Any()) { foreach (var delItem in delItems.OrderBy(x => x.Order)) { delItem.MarkedDateTime = markedDateTime; delItem.MarkedDelete = true; itemChange.ParamList.Add(new ManufactureLogItem { Type = ManufactureLogType.DeletePlanTaskFormat, Field = delItem.Order.ToString() }); } changes.AddRange(delItems.Select(x => new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = manufacturePlan.Id, TaskId = manufacturePlan.TaskId, ItemId = x.Id, Type = ManufactureLogType.TaskDelete })); ServerConfig.ApiDb.Execute("UPDATE `manufacture_plan_item` SET `MarkedDateTime`= @MarkedDateTime, `MarkedDelete`= @MarkedDelete WHERE `Id` = @Id;", delItems); } #endregion if (updateItems.Any() && changeItem) { itemChange.ParamList.AddRange(changeItems.Select(x => new ManufactureLogItem { Type = ManufactureLogType.UpdatePlanTaskFormat, Field = x.Order.ToString(), Items = x.ParamList.Select(y => { y.Type = ManufactureLogType.UpdatePlanTaskItemFormat; return(y); }) })); } #region 添加 var addItems = items.Where(x => x.Id == 0); if (addItems.Any()) { ServerConfig.ApiDb.Execute( "INSERT INTO manufacture_plan_item (`CreateUserId`, `MarkedDateTime`, `PlanId`, `Order`, `Person`, `ModuleId`, `IsCheck`, `CheckId`, `Item`, `EstimatedHour`, `EstimatedMin`, `Score`, `Desc`, `Relation`) " + "VALUES (@CreateUserId, @MarkedDateTime, @PlanId, @Order, @Person, @ModuleId, @IsCheck, @CheckId, @Item, @EstimatedHour, @EstimatedMin, @Score, @Desc, @Relation);", addItems); var ids = updateItems.Select(x => x.Id); var newData = ServerConfig.ApiDb.Query <ManufacturePlanItem>($"SELECT Id, `Order` FROM `manufacture_plan_item` WHERE PlanId = @Id{(ids.Any() ? " AND Id NOT IN @Ids" : "")} AND MarkedDelete = 0;", new { manufacturePlan.Id, Ids = ids }); itemChange.ParamList.AddRange(newData.Select(x => new ManufactureLogItem { Type = ManufactureLogType.AddPlanTaskFormat, Field = x.Order.ToString() })); changes.AddRange(newData.Select(x => new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = manufacturePlan.Id, TaskId = manufacturePlan.TaskId, ItemId = x.Id, Type = ManufactureLogType.TaskCreate })); } #endregion if (itemChange.ParamList.Any()) { changes.Add(itemChange); } changes.AddRange(changeItems); } else { var itemChange = new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = manufacturePlan.Id, TaskId = manufacturePlan.TaskId, Type = ManufactureLogType.PlanUpdateItem, ParsingWay = 1, }; #region 除 var sql = $"SELECT a.*, IFNULL(b.Plan, '') Plan, IFNULL(c.Name, '') Processor, IFNULL(d.Module, '') Module, IFNULL(e.`Check`, '') `Check` FROM `manufacture_plan_item` a " + "LEFT JOIN `manufacture_plan` b ON a.PlanId = b.Id " + "LEFT JOIN (SELECT a.*, b.Name FROM `manufacture_processor` a JOIN `accounts` b ON a.ProcessorId = b.Id WHERE a.MarkedDelete = 0) c ON a.Person = c.Id " + "LEFT JOIN `manufacture_task_module` d ON a.ModuleId = d.Id " + "LEFT JOIN `manufacture_check` e ON a.CheckId = e.Id " + "WHERE a.PlanId = @Id AND a.`State` = @state AND a.MarkedDelete = 0 ORDER BY a.`Order`;"; var waitAssign = ServerConfig.ApiDb.Query <ManufacturePlanTask>(sql, new { manufacturePlan.Id, state = ManufacturePlanItemState.WaitAssign }); var delItems = waitAssign.Where(x => items.All(y => y.Id != x.Id)); if (delItems.Any()) { foreach (var delItem in delItems.OrderBy(x => x.Order)) { delItem.MarkedDateTime = markedDateTime; delItem.MarkedDelete = true; itemChange.ParamList.Add(new ManufactureLogItem { Type = ManufactureLogType.DeletePlanTaskFormat, Field = delItem.Order.ToString() }); } changes.AddRange(delItems.Select(x => new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = manufacturePlan.Id, TaskId = manufacturePlan.TaskId, ItemId = x.Id, Type = ManufactureLogType.TaskDelete })); ServerConfig.ApiDb.Execute("UPDATE `manufacture_plan_item` SET `MarkedDateTime`= @MarkedDateTime, `MarkedDelete`= @MarkedDelete WHERE `Id` = @Id;", delItems); } #endregion } } if (changePlan) { ServerConfig.ApiDb.Execute( "UPDATE manufacture_plan SET `MarkedDateTime` = @MarkedDateTime, `Plan` = @Plan, `PlannedStartTime` = @PlannedStartTime, `PlannedEndTime` = @PlannedEndTime, `EstimatedHour` = @EstimatedHour, `EstimatedMin` = @EstimatedMin, `TaskId` = @TaskId WHERE `Id` = @Id;", manufacturePlan); } } ManufactureLog.AddLog(changes); return(Result.GenError <DataResult>(Error.Success)); }
public Result AssignManufacturePlan([FromBody] ManufacturePlanAssign assignPlan) { var plan = ServerConfig.ApiDb.Query <ManufacturePlan>("SELECT * FROM `manufacture_plan` WHERE `Id` = @PlanId AND MarkedDelete = 0;", new { assignPlan.PlanId }).FirstOrDefault(); if (plan == null) { return(Result.GenError <Result>(Error.ManufacturePlanNotExist)); } var manufacturePlanItems = ServerConfig.ApiDb.Query <ManufacturePlanTask>("SELECT * FROM `manufacture_plan_item` WHERE PlanId = @PlanId AND MarkedDelete = 0 ORDER BY `Order`;", new { assignPlan.PlanId }); if (!manufacturePlanItems.Any()) { return(Result.GenError <Result>(Error.ManufacturePlaneNoTask)); } if (manufacturePlanItems.All(x => x.State != ManufacturePlanTaskState.WaitAssign)) { return(Result.GenError <Result>(Error.ManufacturePlaneAssignState)); } if (assignPlan.TaskIds.IsNullOrEmpty()) { var changes = new List <ManufactureLog>(); var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; var assigned = plan.State == ManufacturePlanState.Assigned; if (!assigned) { plan.State = ManufacturePlanState.Assigned; plan.AssignedTime = markedDateTime; changes.Add(new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = plan.Id, IsAssign = plan.State > ManufacturePlanState.Wait, TaskId = plan.TaskId, Type = ManufactureLogType.PlanAssigned }); } ServerConfig.ApiDb.Execute( "UPDATE manufacture_plan SET `State` = @State, `AssignedTime` = @AssignedTime WHERE `Id` = @Id;", plan); if (manufacturePlanItems != null && manufacturePlanItems.Any()) { manufacturePlanItems = manufacturePlanItems.OrderBy(x => x.Order); var i = 0; foreach (var manufacturePlanItem in manufacturePlanItems) { manufacturePlanItem.CreateUserId = createUserId; manufacturePlanItem.MarkedDateTime = markedDateTime; manufacturePlanItem.OldId = manufacturePlanItem.Id; manufacturePlanItem.Assignor = createUserId; manufacturePlanItem.Desc = manufacturePlanItem.Desc ?? ""; manufacturePlanItem.Order = ++i; manufacturePlanItem.State = ManufacturePlanTaskState.Wait; } ServerConfig.ApiDb.Execute( "INSERT INTO manufacture_plan_task (`CreateUserId`, `MarkedDateTime`, `PlanId`, `Order`, `Person`, `ModuleId`, `IsCheck`, `CheckId`, `Item`, `EstimatedHour`, `EstimatedMin`, `Score`, `Desc`, `Relation`, `OldId`, `Assignor`) " + "VALUES (@CreateUserId, @MarkedDateTime, @PlanId, @Order, @Person, @ModuleId, @IsCheck, @CheckId, @Item, @EstimatedHour, @EstimatedMin, @Score, @Desc, @Relation, @OldId, @Assignor);", manufacturePlanItems); ServerConfig.ApiDb.Execute( "UPDATE manufacture_plan_item SET `MarkedDateTime` = @MarkedDateTime, `Order` = @Order, `State` = @State WHERE `Id` = @Id;", manufacturePlanItems); ServerConfig.ApiDb.Execute( "UPDATE manufacture_plan_task SET `TotalOrder` = (SELECT a.TotalOrder FROM (SELECT MAX(TotalOrder) TotalOrder FROM `manufacture_plan_task` WHERE MarkedDelete = 0) a) + `Order` WHERE `TotalOrder` = 0 AND PlanId = @PlanId AND MarkedDelete = 0;", new { assignPlan.PlanId }); var newData = ServerConfig.ApiDb.Query <ManufacturePlanItem>("SELECT Id FROM `manufacture_plan_task` WHERE PlanId = @PlanId AND MarkedDelete = 0;", new { assignPlan.PlanId }); changes.AddRange(newData.Select(x => new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = plan.Id, IsAssign = plan.State > ManufacturePlanState.Wait, TaskId = plan.TaskId, ItemId = x.Id, Type = ManufactureLogType.TaskAssigned })); } ManufactureLog.AddLog(changes); } else { var taskIds = assignPlan.TaskIds.Split(",").Select(int.Parse); if (!taskIds.Any()) { return(Result.GenError <DataResult>(Error.ParamError)); } if (taskIds.Any(x => manufacturePlanItems.All(y => y.Id != x))) { return(Result.GenError <DataResult>(Error.ManufactureTaskItemNotExist)); } //待下发任务 var assignManufacturePlanItems = manufacturePlanItems.Where(x => taskIds.Contains(x.Id)); if (assignManufacturePlanItems.Any(x => x.State != ManufacturePlanTaskState.WaitAssign)) { return(Result.GenError <DataResult>(Error.ManufacturePlaneAssignState)); } //已下发的和额外添加的 var haveManufacturePlanItems = ServerConfig.ApiDb.Query <ManufacturePlanTask>("SELECT * FROM `manufacture_plan_task` WHERE PlanId = @PlanId AND MarkedDelete = 0 ORDER BY `Order`;", new { assignPlan.PlanId }); var notAssignManufacturePlanItems = manufacturePlanItems.Where(x => x.State == ManufacturePlanTaskState.WaitAssign && !taskIds.Contains(x.Id)); var relationIds = assignManufacturePlanItems.Where(x => x.Relation != 0).Select(y => y.Relation); //if (relationIds.Any()) //{ if (relationIds.Any(x => x > haveManufacturePlanItems.Count()) && relationIds.Any(x => assignManufacturePlanItems.All(y => y.Order != x))) { return(Result.GenError <DataResult>(Error.ManufactureTaskItemAssignAfterRelation)); } ////关联任务 //var relationManufacturePlanItems = manufacturePlanItems.Where(x => relationIds.Contains(x.Id)); ////未下发的关联任务 //var taskRelations = relationManufacturePlanItems.Where(x => x.State == ManufacturePlanTaskState.WaitAssign); //if (taskRelations.Any() && taskRelations.All(x => !taskIds.Contains(x.Id))) //{ // return Result.GenError<DataResult>(Error.ManufactureTaskItemAssignAfterRelation); //} //} var changes = new List <ManufactureLog>(); var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; var assigned = plan.State == ManufacturePlanState.Assigned; if (!assigned) { plan.State = ManufacturePlanState.Assigned; plan.AssignedTime = markedDateTime; changes.Add(new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = plan.Id, IsAssign = true, TaskId = plan.TaskId, Type = ManufactureLogType.PlanAssigned }); } ServerConfig.ApiDb.Execute( "UPDATE manufacture_plan SET `State` = @State, `AssignedTime` = @AssignedTime WHERE `Id` = @Id;", plan); if (assignManufacturePlanItems.Any()) { var order = haveManufacturePlanItems.Count(); foreach (var assignManufacturePlanItem in assignManufacturePlanItems) { assignManufacturePlanItem.CreateUserId = createUserId; assignManufacturePlanItem.MarkedDateTime = markedDateTime; assignManufacturePlanItem.OldId = assignManufacturePlanItem.Id; assignManufacturePlanItem.Assignor = createUserId; assignManufacturePlanItem.Desc = assignManufacturePlanItem.Desc ?? ""; assignManufacturePlanItem.Order = ++order; assignManufacturePlanItem.State = ManufacturePlanTaskState.Wait; } foreach (var notAssignManufacturePlanItem in notAssignManufacturePlanItems) { notAssignManufacturePlanItem.CreateUserId = createUserId; notAssignManufacturePlanItem.MarkedDateTime = markedDateTime; notAssignManufacturePlanItem.Assignor = createUserId; notAssignManufacturePlanItem.Desc = notAssignManufacturePlanItem.Desc ?? ""; notAssignManufacturePlanItem.Order = ++order; } assignManufacturePlanItems = assignManufacturePlanItems.OrderBy(x => x.Order); ServerConfig.ApiDb.Execute( "INSERT INTO manufacture_plan_task (`CreateUserId`, `MarkedDateTime`, `PlanId`, `Order`, `Person`, `ModuleId`, `IsCheck`, `CheckId`, `Item`, `EstimatedHour`, `EstimatedMin`, `Score`, `Desc`, `Relation`, `OldId`, `Assignor`) " + "VALUES (@CreateUserId, @MarkedDateTime, @PlanId, @Order, @Person, @ModuleId, @IsCheck, @CheckId, @Item, @EstimatedHour, @EstimatedMin, @Score, @Desc, @Relation, @OldId, @Assignor);", assignManufacturePlanItems); ServerConfig.ApiDb.Execute( "UPDATE manufacture_plan_item SET `MarkedDateTime` = @MarkedDateTime, `Order` = @Order, `State` = @State WHERE `Id` = @Id;", manufacturePlanItems); ServerConfig.ApiDb.Execute( "UPDATE manufacture_plan_task SET `TotalOrder` = (SELECT a.TotalOrder FROM (SELECT MAX(TotalOrder) TotalOrder FROM `manufacture_plan_task` WHERE MarkedDelete = 0) a) + `Order` WHERE `TotalOrder` = 0 AND PlanId = @PlanId AND MarkedDelete = 0;", new { assignPlan.PlanId }); var newData = ServerConfig.ApiDb.Query <ManufacturePlanItem>("SELECT Id FROM `manufacture_plan_task` WHERE PlanId = @PlanId AND MarkedDelete = 0;", new { assignPlan.PlanId }); changes.AddRange(newData.Select(x => new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = plan.Id, IsAssign = plan.State > ManufacturePlanState.Wait, TaskId = plan.TaskId, ItemId = x.Id, Type = ManufactureLogType.TaskAssigned })); } ManufactureLog.AddLog(changes); } return(Result.GenError <DataResult>(Error.Success)); }
public Result ManufactureCheck([FromBody] ManufacturePlanCheckItem item) { if (item.Id == 0) { return(Result.GenError <DataResult>(Error.ManufactureCheckItemNotExist)); } var account = Request.GetIdentityInformation(); var now = DateTime.Now; var sql = "SELECT * FROM manufacture_plan_task WHERE Id = @ItemId AND MarkedDelete = 0 AND IsCheck = 1 ORDER BY `TotalOrder`;"; var task = ServerConfig.ApiDb.Query <ManufacturePlanTask>(sql, new { item.ItemId }) .FirstOrDefault(); if (task != null) { if (task.State != ManufacturePlanTaskState.Checking) { return(Result.GenError <DataResult>(Error.ManufactureTaskStateError)); } var changes = new List <ManufactureLog>(); var oldItem = ServerConfig.ApiDb.Query <ManufacturePlanCheckItem>("SELECT * FROM `manufacture_plan_check_item` WHERE Id = @Id AND MarkedDelete = 0;", new { item.Id }).FirstOrDefault(); if (oldItem == null) { return(Result.GenError <DataResult>(Error.ManufactureCheckItemNotExist)); } item.CheckTime = item.CheckTime == default(DateTime) ? oldItem.CheckTime : item.CheckTime; item.Desc = item.Desc ?? oldItem.Desc; item.Result = item.Result == ManufacturePlanCheckItemState.Wait && oldItem.Result != ManufacturePlanCheckItemState.Wait ? oldItem.Result : item.Result; item.Images = item.Images ?? oldItem.Images; //oldItem.CheckTime = now; if (oldItem.HaveChange(item, out var change)) { change.Time = now; change.Account = account; change.PlanId = task.PlanId; change.IsAssign = true; change.TaskId = task.TaskId; change.ItemId = task.Id; change.Type = ManufactureLogType.UpdateCheckItem; changes.Add(change); } if (changes.Any()) { ServerConfig.ApiDb.Execute( oldItem.Images == item.Images ? "UPDATE manufacture_plan_check_item SET `CheckTime` = @CheckTime, `Result` = @Result, `Desc` = @Desc WHERE `Id` = @Id;" : "UPDATE manufacture_plan_check_item SET `Images` = @Images WHERE `Id` = @Id;", item); ManufactureLog.AddLog(changes); } return(Result.GenError <DataResult>(Error.Success)); } return(Result.GenError <DataResult>(Error.ManufactureNoTask)); }
public Result FinishManufactureCheck([FromBody] ManufactureOpCheckTask opTask) { var tId = opTask.TaskId; var account = opTask.Account; var gId = opTask.GId; var checkResult = opTask.CheckResult; if (!EnumHelper.TryParseInt(checkResult, out ManufacturePlanCheckState result)) { return(Result.GenError <Result>(Error.ParamError)); } var processors = ServerConfig.ApiDb.Query <Processor>( "SELECT a.Id, b.Account FROM `manufacture_processor` a " + "JOIN `accounts` b ON a.ProcessorId = b.Id " + $"WHERE {(gId == 0 ? "" : "GroupId = @gId AND ")}b.Account = @account AND a.`MarkedDelete` = 0;", new { account, gId }); if (!processors.Any()) { return(Result.GenError <DataResult>(Error.ManufactureProcessorNotExist)); } var sql = "SELECT b.*, a.* FROM manufacture_plan_task a " + "LEFT JOIN `manufacture_plan` b ON a.PlanId = b.Id " + "WHERE a.State IN @state AND a.Person IN @pId AND a.MarkedDelete = 0 AND a.IsCheck = 1 ORDER BY a.`TotalOrder` LIMIT 1;"; ManufacturePlanTask task = null; foreach (var validState in ValidStates) { task = ServerConfig.ApiDb.Query <ManufacturePlanTask>(sql, new { state = validState.Value, pId = processors.Select(x => x.Id) }) .FirstOrDefault(); if (task != null) { break; } } if (task != null) { if (task.Id != tId) { return(Result.GenError <DataResult>(Error.ManufactureTaskStateError)); } if (task.State != ManufacturePlanTaskState.Checking) { return(Result.GenError <DataResult>(Error.ManufactureTaskStateError)); } var changes = new List <ManufactureLog>(); var now = DateTime.Now; var oldTask = (ManufacturePlanTask)task.Clone(); task.State = ManufacturePlanTaskState.Done; task.ActualEndTime = now.NoSecond(); task.CheckResult = result; if (task.PauseTime != default(DateTime)) { var totalSecond = (int)(task.PauseTime - task.ActualStartTime).TotalSeconds; task.ActualHour += totalSecond / 3600; task.ActualMin += (totalSecond - task.ActualHour * 3600) / 60; task.PauseTime = default(DateTime); } else { var totalSecond = (int)(task.ActualEndTime - task.ActualStartTime).TotalSeconds; task.ActualHour += totalSecond / 3600; task.ActualMin += (totalSecond - task.ActualHour * 3600) / 60; } if (oldTask.HaveChange(task, out var change)) { change.Time = now; change.Account = account; change.PlanId = task.PlanId; change.IsAssign = true; change.TaskId = task.TaskId; change.ItemId = task.Id; change.Type = ManufactureLogType.UpdateCheckResult; changes.Add(change); } if (result == ManufacturePlanCheckState.Redo) { task.State = ManufacturePlanTaskState.Wait; sql = "SELECT * FROM `manufacture_plan_task` WHERE PlanId = @PlanId AND `Order` = @Relation;"; var preTask = ServerConfig.ApiDb.Query <ManufacturePlanTask>(sql, new { task.PlanId, task.Relation }).FirstOrDefault(); if (preTask != null) { var oldPreTask = (ManufacturePlanTask)preTask.Clone(); preTask.State = !preTask.IsCheck ? ManufacturePlanTaskState.WaitRedo : ManufacturePlanTaskState.WaitCheck; if (oldPreTask.HaveChange(preTask, out var changePre)) { changePre.Time = now; changePre.Account = account; changePre.PlanId = oldPreTask.PlanId; changePre.IsAssign = true; changePre.TaskId = oldPreTask.TaskId; changePre.ItemId = oldPreTask.Id; changes.Add(changePre); } } ServerConfig.ApiDb.Execute("UPDATE manufacture_plan_task SET `State` = @State WHERE `Id` = @Id;", preTask); } ServerConfig.ApiDb.Execute("UPDATE manufacture_plan_task SET `State` = @State, `ActualEndTime` = @ActualEndTime, `PauseTime` = @PauseTime, " + "`ActualHour` = @ActualHour, `ActualMin` = @ActualMin, `CheckResult` = @CheckResult WHERE `Id` = @Id;", task); ManufactureLog.AddLog(changes); return(Result.GenError <DataResult>(Error.Success)); } return(Result.GenError <DataResult>(Error.ManufactureNoTask)); }
public Result StartManufactureCheck([FromBody] ManufactureOpTask opTask) { var tId = opTask.TaskId; var account = opTask.Account; var gId = opTask.GId; var processors = ServerConfig.ApiDb.Query <Processor>( "SELECT a.Id, b.Account FROM `manufacture_processor` a " + "JOIN `accounts` b ON a.ProcessorId = b.Id " + $"WHERE {(gId == 0 ? "" : "GroupId = @gId AND ")}b.Account = @account AND a.`MarkedDelete` = 0;", new { account, gId }); if (!processors.Any()) { return(Result.GenError <DataResult>(Error.ManufactureProcessorNotExist)); } var sql = "SELECT b.*, a.* FROM manufacture_plan_task a " + "LEFT JOIN `manufacture_plan` b ON a.PlanId = b.Id " + "WHERE a.State IN @state AND a.Person IN @pId AND a.MarkedDelete = 0 AND a.IsCheck = 1 ORDER BY a.`TotalOrder` LIMIT 1;"; ManufacturePlanTask task = null; foreach (var validState in ValidStates) { task = ServerConfig.ApiDb.Query <ManufacturePlanTask>(sql, new { state = validState.Value, pId = processors.Select(x => x.Id) }) .FirstOrDefault(); if (task != null) { break; } } if (task != null) { if (task.Id != tId) { return(Result.GenError <DataResult>(Error.ManufactureTaskStateError)); } if (task.State != ManufacturePlanTaskState.WaitCheck && task.State != ManufacturePlanTaskState.Pause) { return(Result.GenError <DataResult>(Error.ManufactureTaskStateError)); } var changes = new List <ManufactureLog>(); var now = DateTime.Now; var oldTask = (ManufacturePlanTask)task.Clone(); task.State = ManufacturePlanTaskState.Checking; if (task.FirstStartTime == default(DateTime)) { task.FirstStartTime = now; } if (task.IsRedo) { task.RedoCount++; } task.ActualStartTime = now.NoSecond(); if (oldTask.HaveChange(task, out var change)) { change.Time = now; change.Account = account; change.PlanId = task.PlanId; change.IsAssign = true; change.TaskId = task.TaskId; change.ItemId = task.Id; change.Type = ManufactureLogType.StartTask; changes.Add(change); } if (!oldTask.IsCheckItem) { task.IsCheckItem = true; var manufacturePlanCheckItems = ServerConfig.ApiDb.Query <ManufacturePlanCheckItem>("SELECT * FROM `manufacture_check_item` WHERE CheckId = @CheckId AND MarkedDelete = 0;", new { task.CheckId }); var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; if (manufacturePlanCheckItems.Any()) { foreach (var manufactureCheckItem in manufacturePlanCheckItems) { manufactureCheckItem.CreateUserId = createUserId; manufactureCheckItem.PlanId = oldTask.PlanId; manufactureCheckItem.ItemId = oldTask.Id; } ServerConfig.ApiDb.Execute( "INSERT INTO manufacture_plan_check_item (`CreateUserId`, `PlanId`, `ItemId`, `Item`, `Method`) " + "VALUES (@CreateUserId, @PlanId, @ItemId, @Item, @Method);", manufacturePlanCheckItems); changes.Add(new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = task.PlanId, IsAssign = true, TaskId = task.TaskId, ItemId = task.Id, Type = ManufactureLogType.CheckAssigned }); } } ServerConfig.ApiDb.Execute("UPDATE manufacture_plan_task SET `State` = @State, `IsCheckItem` = @IsCheckItem, `FirstStartTime` = @FirstStartTime, " + "`ActualStartTime` = @ActualStartTime, `RedoCount` = @RedoCount WHERE `Id` = @Id;", task); ManufactureLog.AddLog(changes); return(Result.GenError <DataResult>(Error.Success)); } return(Result.GenError <DataResult>(Error.ManufactureNoTask)); }
public Result FinishManufactureTask([FromBody] ManufactureOpTask opTask) { var tId = opTask.TaskId; var account = opTask.Account; var gId = opTask.GId; var processors = ServerConfig.ApiDb.Query <Processor>("SELECT a.Id, b.Account FROM `manufacture_processor` a JOIN `accounts` b ON a.ProcessorId = b.Id " + $"WHERE b.Account = @account AND a.`MarkedDelete` = 0 {(gId == 0 ? "" : " AND GroupId = @gId")};", new { account, gId }); if (!processors.Any()) { return(Result.GenError <DataResult>(Error.ManufactureProcessorNotExist)); } var sql = "SELECT b.*, a.* FROM manufacture_plan_task a " + "LEFT JOIN `manufacture_plan` b ON a.PlanId = b.Id " + "WHERE a.State IN @state AND a.Person IN @pId AND a.MarkedDelete = 0 AND a.IsCheck = 0 ORDER BY a.`TotalOrder` LIMIT 1;"; ManufacturePlanTask task = null; foreach (var validState in ValidStates) { task = ServerConfig.ApiDb.Query <ManufacturePlanTask>(sql, new { state = validState.Value, pId = processors.Select(x => x.Id) }) .FirstOrDefault(); if (task != null) { break; } } if (task != null) { if (task.Id != tId) { return(Result.GenError <DataResult>(Error.ManufactureTaskStateError)); } if (task.State != ManufacturePlanTaskState.Doing) { return(Result.GenError <DataResult>(Error.ManufactureTaskStateError)); } var now = DateTime.Now; var changes = new List <ManufactureLog>(); var oldTask = (ManufacturePlanTask)task.Clone(); task.State = ManufacturePlanTaskState.Done; task.ActualEndTime = now; var totalSecond = (int)(task.ActualEndTime - task.ActualStartTime).TotalSeconds; var totalHour = totalSecond / 3600; task.ActualHour += totalHour; task.ActualMin += (totalSecond - totalHour * 3600) / 60; //if (task.PauseTime != default(DateTime)) //{ // var totalSecond = (int)(task.PauseTime - task.ActualStartTime).TotalSeconds; // var totalHour = totalSecond / 3600; // task.ActualHour += totalHour; // task.ActualMin += (totalSecond - totalHour * 3600) / 60; // task.PauseTime = default(DateTime); //} //else //{ // var totalSecond = (int)(task.ActualEndTime - task.ActualStartTime).TotalSeconds; // task.ActualHour += totalSecond / 3600; // task.ActualMin += (totalSecond - task.ActualHour * 3600) / 60; //} if (oldTask.HaveChange(task, out var change)) { change.Time = now; change.Account = account; change.PlanId = task.PlanId; change.IsAssign = true; change.TaskId = task.TaskId; change.ItemId = task.Id; change.Type = ManufactureLogType.FinishTask; changes.Add(change); } var tasks = new List <ManufacturePlanTask> { task }; sql = "SELECT * FROM `manufacture_plan_task` WHERE PlanId = @PlanId AND Relation = @Order AND IsCheck = 1 AND `State` = @state;"; var checkTasks = ServerConfig.ApiDb.Query <ManufacturePlanTask>(sql, new { task.PlanId, task.Order, state = ManufacturePlanTaskState.Wait }); if (checkTasks != null && checkTasks.Any()) { foreach (var checkTask in checkTasks) { var oldCheckTask = (ManufacturePlanTask)checkTask.Clone(); checkTask.State = ManufacturePlanTaskState.WaitCheck; if (oldCheckTask.HaveChange(checkTask, out var changeCheck)) { changeCheck.Time = now; changeCheck.Account = account; changeCheck.PlanId = checkTask.PlanId; changeCheck.IsAssign = true; changeCheck.TaskId = checkTask.TaskId; changeCheck.ItemId = checkTask.Id; changeCheck.Type = ManufactureLogType.TaskUpdate; changes.Add(changeCheck); } tasks.Add(checkTask); } } ServerConfig.ApiDb.Execute("UPDATE manufacture_plan_task SET `MarkedDateTime` = @MarkedDateTime, `State` = @State, `ActualEndTime` = @ActualEndTime, " + "`ActualHour` = @ActualHour, `ActualMin` = @ActualMin WHERE `Id` = @Id;", tasks); ManufactureLog.AddLog(changes); return(Result.GenError <DataResult>(Error.Success)); } return(Result.GenError <DataResult>(Error.ManufactureNoTask)); }
public Result StartManufactureTask([FromBody] ManufactureOpTask opTask) { var tId = opTask.TaskId; var account = opTask.Account; var gId = opTask.GId; var processors = ServerConfig.ApiDb.Query <Processor>("SELECT a.Id, b.Account FROM `manufacture_processor` a JOIN `accounts` b ON a.ProcessorId = b.Id " + $"WHERE b.Account = @account AND a.`MarkedDelete` = 0 {(gId == 0 ? "" : " AND GroupId = @gId")};", new { account, gId }); if (!processors.Any()) { return(Result.GenError <DataResult>(Error.ManufactureProcessorNotExist)); } var sql = "SELECT b.*, a.* FROM manufacture_plan_task a " + "LEFT JOIN `manufacture_plan` b ON a.PlanId = b.Id " + "WHERE a.State IN @state AND a.Person IN @pId AND a.MarkedDelete = 0 AND a.IsCheck = 0 ORDER BY a.`TotalOrder` LIMIT 1;"; ManufacturePlanTask task = null; foreach (var validState in ValidStates) { task = ServerConfig.ApiDb.Query <ManufacturePlanTask>(sql, new { state = validState.Value, pId = processors.Select(x => x.Id) }) .FirstOrDefault(); if (task != null) { break; } } if (task != null) { if (task.Id != tId) { return(Result.GenError <DataResult>(Error.ManufactureTaskStateError)); } if (task.State != ManufacturePlanTaskState.Wait && task.State != ManufacturePlanTaskState.WaitRedo && task.State != ManufacturePlanTaskState.Pause) { return(Result.GenError <DataResult>(Error.ManufactureTaskStateError)); } var now = DateTime.Now; var oldTask = (ManufacturePlanTask)task.Clone(); task.State = ManufacturePlanTaskState.Doing; if (task.FirstStartTime == default(DateTime)) { task.FirstStartTime = now; } if (task.IsRedo) { task.RedoCount++; } task.ActualStartTime = now; if (oldTask.HaveChange(task, out var change)) { change.Time = now; change.Account = account; change.PlanId = task.PlanId; change.IsAssign = true; change.TaskId = task.TaskId; change.ItemId = task.Id; change.Type = ManufactureLogType.StartTask; } ServerConfig.ApiDb.Execute("UPDATE manufacture_plan_task SET `State` = @State, `FirstStartTime` = @FirstStartTime, `ActualStartTime` = @ActualStartTime, " + "`RedoCount` = @RedoCount WHERE `Id` = @Id;", task); ManufactureLog.AddLog(new List <ManufactureLog> { change }); return(Result.GenError <DataResult>(Error.Success)); } return(Result.GenError <DataResult>(Error.ManufactureNoTask)); }