public DataResult GetSmartProcessCodeCategoryProcess([FromQuery] int qId, int cId) { var result = new DataResult(); result.datas.AddRange(SmartProcessCodeCategoryProcessHelper.GetDetail(qId, cId)); if (qId != 0 && !result.datas.Any()) { result.errno = Error.SmartProcessCodeCategoryProcessNotExist; return(result); } return(result); }
public Result PostSmartCapacityList([FromBody] IEnumerable <SmartCapacityList> smartCapacityLists) { if (smartCapacityLists == null || !smartCapacityLists.Any()) { return(Result.GenError <Result>(Error.ParamError)); } if (smartCapacityLists.Any(x => !x.IsSet())) { return(Result.GenError <Result>(Error.SmartCapacityListNotEmpty)); } var capacityId = smartCapacityLists.FirstOrDefault()?.CapacityId ?? 0; if (capacityId == 0) { return(Result.GenError <Result>(Error.SmartCapacityNotExist)); } var capacity = SmartCapacityHelper.Instance.Get <SmartCapacity>(capacityId); if (capacity == null) { return(Result.GenError <Result>(Error.SmartCapacityNotExist)); } var processes = SmartProcessCodeCategoryProcessHelper.GetDetailByCategoryId(capacity.CategoryId); if (!processes.Any()) { return(Result.GenError <Result>(Error.SmartProcessCodeCategoryProcessNotExist)); } if (smartCapacityLists.Count() != processes.Count()) { return(Result.GenError <Result>(Error.SmartCapacityListCountError)); } var userId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; foreach (var smartCapacityList in smartCapacityLists) { smartCapacityList.CreateUserId = userId; smartCapacityList.MarkedDateTime = markedDateTime; smartCapacityList.CapacityId = capacityId; } SmartCapacityListHelper.Instance.DeleteFromParent(capacityId); SmartCapacityListHelper.Instance.Add(smartCapacityLists); OldWorkFlowHelper.Instance.OnSmartCapacityListChanged(smartCapacityLists); return(Result.GenError <Result>(Error.Success)); }
public DataResult GetSmartProcessCode([FromQuery] int qId, int cId, int wId, bool menu) { var result = new DataResult(); var data = SmartProcessCodeHelper.GetDetail(qId, cId, wId); if (menu) { result.datas.AddRange(data.Select(x => new { x.Id, x.Code })); } else { var processIds = data.SelectMany(x => x.ProcessIdList).Distinct(); if (processIds.Any()) { var processList = SmartProcessCodeCategoryProcessHelper.GetProcess(processIds); if (processList.Any()) { foreach (var d in data) { foreach (var processId in d.ProcessIdList) { var process = processList.FirstOrDefault(x => x.Id == processId); if (process != null) { d.ProcessList.Add(process.Process); } } } } } result.datas.AddRange(data); } if (qId != 0 && !result.datas.Any()) { result.errno = Error.SmartProcessCodeNotExist; return(result); } return(result); }
public void Register() { #region 用户 AddAccount += (o, args) => { try { var time = args.Item1; var accounts = args.Item2; var plats = accounts.Where(x => x.Platform && x.Belongs.Any()); if (plats.Any()) { WorkHelper.Instance.Add(plats.SelectMany(x => x.Belongs.Select(y => new Person { MarkedDateTime = time, WorkshopId = y, AccountId = x.Id, }))); } } catch (Exception e) { Log.Error(e); } }; UpdateAccount += (o, args) => { try { var time = args.Item1; var newAccounts = args.Item2; var oldAccounts = args.Item3; //生产平台 var oldAccountDic = oldAccounts.ToDictionary(x => x.Id); var plats = newAccounts.Where(x => oldAccountDic[x.Id].Platform != x.Platform || oldAccountDic[x.Id].Belong != x.Belong); if (plats.Any()) { var wIds = plats.SelectMany(x => x.Belongs).Distinct(); var aIds = plats.Select(x => x.Id).Distinct(); if (plats.Any() && plats.Any()) { var oldWIds = plats.SelectMany(x => oldAccountDic[x.Id].Belongs).Distinct(); var pers = WorkHelper.GetDetailsNoM(oldWIds, aIds); var add = new List <Person>(); var delR = new List <Person>(); var del = new List <int>(); var platTmps = plats.Where(x => x.Platform).SelectMany(x => x.Belongs .Select(y => new Person { MarkedDateTime = time, WorkshopId = y, AccountId = x.Id, })); add.AddRange(platTmps.Where(x => !pers.Any(y => y.WorkshopId == x.WorkshopId && y.AccountId == x.AccountId))); delR.AddRange(pers.Where(x => platTmps.Any(y => y.WorkshopId == x.WorkshopId && y.AccountId == x.AccountId) && x.MarkedDelete).Select(x => { x.MarkedDateTime = time; x.MarkedDelete = false; return(x); })); del.AddRange(pers.Where(x => !platTmps.Any(y => y.WorkshopId == x.WorkshopId && y.AccountId == x.AccountId)).Select(x => x.Id)); if (add.Any()) { WorkHelper.Instance.Add(add); } if (delR.Any()) { WorkHelper.DeleteRecover(delR); } if (del.Any()) { WorkHelper.Instance.Delete(del); } } } } catch (Exception e) { Log.Error(e); } }; DeleteAccount += (o, accountIds) => { try { var time = DateTime.Now; var accounts = AccountInfoHelper.Instance.GetByIdsNoM <AccountInfo>(accountIds); var plats = accounts.Where(x => x.Platform && x.Belongs.Any()); if (plats.Any()) { WorkHelper.Instance.DeleteFromParent(plats.Select(x => x.Id)); } } catch (Exception e) { Log.Error(e); } }; #endregion #region 流程卡 SmartFlowCardCreated += (o, flowCards) => { }; SmartFlowCardProcessCreated += (o, param) => { var flowCards = param.Item1; if (flowCards == null || !flowCards.Any()) { return; } var smartFlowCardProcesses = param.Item2; if (smartFlowCardProcesses == null || !smartFlowCardProcesses.Any()) { return; } var createUserId = smartFlowCardProcesses.First().CreateUserId; var markedDateTime = smartFlowCardProcesses.First().MarkedDateTime; var taskOrderIds = flowCards.GroupBy(x => x.TaskOrderId).Select(y => y.Key); var processCodeCategoryIds = flowCards.GroupBy(x => x.ProcessCodeId).Select(y => y.Key); var processes = SmartProcessCodeCategoryProcessHelper.GetDetailByCategoryId(processCodeCategoryIds); var existTaskOrderLines = ServerConfig.ApiDb .Query <SmartLineTaskOrder>( "SELECT TaskOrderId, ProcessCodeCategoryId FROM `t_line_task_order` " + "WHERE MarkedDelete = 0 AND TaskOrderId IN @taskOrderIds AND ProcessCodeCategoryId IN @processCodeCategoryIds GROUP BY TaskOrderId, ProcessCodeCategoryId;", new { taskOrderIds, processCodeCategoryIds }); var taskOrderLines = new List <SmartLineTaskOrder>(); foreach (var taskOrderId in taskOrderIds) { var ids = flowCards.Where(x => x.TaskOrderId == taskOrderId).GroupBy(y => y.ProcessCodeId).Select(z => z.Key); foreach (var id in ids) { if (existTaskOrderLines.Any(x => x.TaskOrderId == taskOrderId && x.ProcessCodeCategoryId == id)) { continue; } var ps = processes.Where(x => x.ProcessCodeCategoryId == id); if (!ps.Any()) { continue; } taskOrderLines.AddRange(ps.Select(x => new SmartLineTaskOrder { CreateUserId = createUserId, MarkedDateTime = markedDateTime, TaskOrderId = taskOrderId, ProcessCodeCategoryId = id, ProcessId = x.Id, })); } } var taskOrders = SmartTaskOrderHelper.Instance.GetByIds <SmartTaskOrder>(taskOrderIds); var workOrderIds = taskOrders.GroupBy(x => x.WorkOrderId).Select(y => y.Key); var existWorkOrderLines = ServerConfig.ApiDb .Query <SmartLineWorkOrder>( "SELECT WorkOrderId, ProcessCodeCategoryId FROM `t_line_work_order` " + "WHERE MarkedDelete = 0 AND WorkOrderId IN @workOrderIds AND ProcessCodeCategoryId IN @processCodeCategoryIds GROUP BY WorkOrderId, ProcessCodeCategoryId;", new { workOrderIds, processCodeCategoryIds }); var workOrderLines = new List <SmartLineWorkOrder>(); foreach (var workOrderId in workOrderIds) { var tasks = taskOrders.Where(x => x.WorkOrderId == workOrderId); var ids = flowCards.Where(x => tasks.Any(a => a.Id == x.TaskOrderId)).GroupBy(y => y.ProcessCodeId).Select(z => z.Key); foreach (var id in ids) { if (existWorkOrderLines.Any(x => x.WorkOrderId == workOrderId && x.ProcessCodeCategoryId == id)) { continue; } var ps = processes.Where(x => x.ProcessCodeCategoryId == id); if (!ps.Any()) { continue; } workOrderLines.AddRange(ps.Select(x => new SmartLineWorkOrder { CreateUserId = createUserId, MarkedDateTime = markedDateTime, WorkOrderId = workOrderId, ProcessCodeCategoryId = id, ProcessId = x.Id, })); } } SmartLineTaskOrderHelper.Instance.Add <SmartLineTaskOrder>(taskOrderLines); SmartLineWorkOrderHelper.Instance.Add <SmartLineWorkOrder>(workOrderLines); }; #endregion #region 物料 #endregion }
public Result PutSmartProcessCodeCategory([FromBody] IEnumerable <SmartProcessCodeCategoryDetail> processCodeCategories) { if (processCodeCategories == null || !processCodeCategories.Any()) { return(Result.GenError <Result>(Error.ParamError)); } if (processCodeCategories.Any(x => x.Category.IsNullOrEmpty())) { return(Result.GenError <Result>(Error.SmartProcessCodeCategoryNotEmpty)); } if (processCodeCategories.GroupBy(x => x.Category).Any(y => y.Count() > 1)) { return(Result.GenError <Result>(Error.SmartProcessCodeCategoryDuplicate)); } var wId = processCodeCategories.FirstOrDefault()?.WorkshopId ?? 0; var sames = processCodeCategories.Select(x => x.Category); var ids = processCodeCategories.Select(x => x.Id); if (SmartProcessCodeCategoryHelper.GetHaveSame(wId, sames, ids)) { return(Result.GenError <Result>(Error.SmartProcessCodeCategoryIsExist)); } var cnt = SmartProcessCodeCategoryHelper.Instance.GetCountByIds(ids); if (cnt != processCodeCategories.Count()) { return(Result.GenError <Result>(Error.SmartProcessCodeCategoryNotExist)); } var processCodeCategoryIds = processCodeCategories.Select(x => x.Id); var data = SmartProcessCodeCategoryHelper.Instance.GetByIds <SmartProcessCodeCategory>(processCodeCategoryIds); if (data.Count() != processCodeCategories.Count()) { return(Result.GenError <Result>(Error.SmartProcessCodeCategoryNotExist)); } var userId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; var add = new List <SmartProcessCodeCategoryProcess>(); var update = new List <SmartProcessCodeCategoryProcess>(); var exist = SmartProcessCodeCategoryProcessHelper.GetDetailByCategoryId(processCodeCategories.Select(x => x.Id)); foreach (var processCodeCategory in processCodeCategories) { processCodeCategory.CreateUserId = userId; processCodeCategory.MarkedDateTime = markedDateTime; processCodeCategory.Remark = processCodeCategory.Remark ?? ""; processCodeCategory.Processes = processCodeCategory.Processes.Select(x => { x.ProcessCodeCategoryId = processCodeCategory.Id; return(x); }); var categoryProcesses = exist.Where(x => x.ProcessCodeCategoryId == processCodeCategory.Id); if (processCodeCategory.Processes != null && processCodeCategory.Processes.Any()) { add.AddRange(processCodeCategory.Processes.Where(x => x.Id == 0 && categoryProcesses.FirstOrDefault(a => a.Order == x.Order && a.ProcessId == x.ProcessId) == null) .Select(y => { y.CreateUserId = userId; y.MarkedDateTime = markedDateTime; y.ProcessCodeCategoryId = processCodeCategory.Id; return(y); })); update.AddRange(processCodeCategory.Processes .Where(x => categoryProcesses.Any(y => y.Id == x.Id) && (ClassExtension.HaveChange(categoryProcesses.First(y => y.Id == x.Id), x))).Select(z => //|| (x.Id == 0 && categoryProcesses.FirstOrDefault(a => a.Order == x.Order && a.ProcessId == x.ProcessId) != null)).Select(z => { var first = categoryProcesses.First(a => a.Id == z.Id); z.Id = first.Id; z.MarkedDateTime = markedDateTime; return(z); })); update.AddRange(categoryProcesses.Where(x => processCodeCategory.Processes.All(y => y.Id != x.Id)).Select(z => { z.MarkedDateTime = markedDateTime; z.MarkedDelete = true; return(z); })); } else { update.AddRange(categoryProcesses.Select(x => { x.MarkedDateTime = markedDateTime; x.MarkedDelete = true; return(x); })); } } if (add.Any()) { SmartProcessCodeCategoryProcessHelper.Instance.Add <SmartProcessCodeCategoryProcess>(add); } if (update.Any()) { SmartProcessCodeCategoryProcessHelper.Instance.Update <SmartProcessCodeCategoryProcess>(update); } SmartProcessCodeCategoryHelper.Instance.Update(processCodeCategories); return(Result.GenError <Result>(Error.Success)); }
public object GetSmartCapacityListInfo([FromQuery] int qId, int processId) { var result = new DataResult(); var deviceCategoryId = 0; SmartCapacityListDetail capacityList = null; if (qId != 0) { capacityList = SmartCapacityListHelper.GetDetail(qId); if (capacityList == null) { return(Result.GenError <Result>(Error.SmartCapacityListNotExist)); } var capacity = SmartCapacityHelper.Instance.Get <SmartCapacity>(capacityList.CapacityId); if (capacity == null) { return(Result.GenError <Result>(Error.SmartCapacityNotExist)); } deviceCategoryId = capacityList.CategoryId; } else if (processId != 0) { var process = SmartProcessCodeCategoryProcessHelper.GetDetailByProcessId(processId); if (process == null) { return(Result.GenError <Result>(Error.SmartProcessCodeCategoryProcessNotExist)); } capacityList = new SmartCapacityListDetail { ProcessId = process.Id }; deviceCategoryId = process.CategoryId; } else { return(Result.GenError <Result>(Error.ParamError)); } capacityList.PId = SmartProcessCodeCategoryProcessHelper.Instance.Get <SmartProcessCodeCategoryProcess>(capacityList.ProcessId)?.ProcessId ?? 0; var actDevices = new List <SmartDeviceCapacity>(); if (deviceCategoryId != 0) { var models = SmartDeviceModelHelper.GetDetail(0, deviceCategoryId); var devices = capacityList.DeviceList; if (models.Any()) { var modelCount = SmartDeviceHelper.GetNormalDeviceModelCount(models.Select(x => x.Id)); foreach (var model in models) { var device = devices.FirstOrDefault(x => x.ModelId == model.Id) ?? new SmartDeviceCapacity(); device.Category = model.Category; device.CategoryId = model.CategoryId; device.ModelId = model.Id; device.Model = model.Model; device.Count = modelCount.FirstOrDefault(x => x.ModelId == model.Id) != null ? modelCount.FirstOrDefault(x => x.ModelId == model.Id).Count : 0; actDevices.Add(device); } } } var actOperators = new List <SmartOperatorCapacity>(); var levels = SmartOperatorLevelHelper.Instance.GetAll <SmartOperatorLevel>().OrderBy(x => x.Order); if (levels.Any()) { var operatorCount = SmartOperatorHelper.GetNormalOperatorCount(capacityList.ProcessId); var operators = capacityList.OperatorList; if (levels.Any()) { foreach (var level in levels) { var op = operators.FirstOrDefault(x => x.LevelId == level.Id) ?? new SmartOperatorCapacity(); op.Level = level.Level; op.LevelId = level.Id; op.Count = operatorCount.FirstOrDefault(x => x.ProcessId == capacityList.PId && x.LevelId == op.LevelId) != null ? operatorCount.FirstOrDefault(x => x.ProcessId == capacityList.PId && x.LevelId == level.Id).Count : 0; actOperators.Add(op); } } } result.datas.Add(capacityList); return(new { errno = 0, errmsg = "成功", Devices = actDevices, Operators = actOperators }); }
public Result PutSmartCapacityList([FromBody] IEnumerable <SmartCapacityList> capacityLists) { if (capacityLists == null || !capacityLists.Any()) { return(Result.GenError <Result>(Error.ParamError)); } if (capacityLists.Any(x => !x.IsSet())) { return(Result.GenError <Result>(Error.SmartCapacityListNotEmpty)); } var capacityId = capacityLists.FirstOrDefault()?.CapacityId ?? 0; if (capacityId == 0) { return(Result.GenError <Result>(Error.ParamError)); } var capacity = SmartCapacityHelper.Instance.Get <SmartCapacity>(capacityId); if (capacity == null) { return(Result.GenError <Result>(Error.SmartCapacityNotExist)); } var processes = SmartProcessCodeCategoryProcessHelper.GetDetailByCategoryId(capacity.CategoryId); if (!processes.Any()) { return(Result.GenError <Result>(Error.SmartProcessCodeCategoryProcessNotExist)); } if (capacityLists.Count() != processes.Count()) { return(Result.GenError <Result>(Error.SmartCapacityListCountError)); } var capacityListIds = capacityLists.Select(x => x.Id); var data = SmartCapacityListHelper.Instance.GetByIds <SmartCapacityList>(capacityListIds); if (data.Count() != capacityLists.Count()) { return(Result.GenError <Result>(Error.SmartCapacityListNotExist)); } if (capacityLists.Count() != processes.Count()) { return(Result.GenError <Result>(Error.SmartCapacityListCountError)); } var userId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; foreach (var capacityList in capacityLists) { capacityList.CreateUserId = userId; capacityList.MarkedDateTime = markedDateTime; capacityList.CapacityId = capacityId; } var oldSmartCapacityLists = SmartCapacityListHelper.GetSmartCapacityLists(capacityId); //删除 var delete = oldSmartCapacityLists.Where(z => capacityLists.Where(x => x.Id != 0).All(y => y.Id != z.Id)); if (delete.Any()) { SmartCapacityListHelper.Instance.Delete(delete.Select(x => x.Id)); } //更新 var update = capacityLists.Where(x => x.Id != 0); if (update.Any()) { SmartCapacityListHelper.Instance.Update(update); } //新增 var add = capacityLists.Where(x => x.Id == 0); if (add.Any()) { SmartCapacityListHelper.Instance.Add(add); } OldWorkFlowHelper.Instance.OnSmartCapacityListChanged(capacityLists); return(Result.GenError <Result>(Error.Success)); }
public object PutSmartCapacityList([FromBody] OpSmartCapacity capacity) { var capacityId = capacity.Id; var oldCapacity = SmartCapacityHelper.Instance.Get <SmartCapacity>(capacityId); if (oldCapacity == null) { return(Result.GenError <Result>(Error.SmartCapacityNotExist)); } var capacityLists = capacity.List; if (capacityLists == null) { return(Result.GenError <Result>(Error.SmartCapacityListNotSet)); } var processes = SmartProcessCodeCategoryProcessHelper.GetDetailByCategoryId(capacity.CategoryId); if (!processes.Any()) { return(Result.GenError <Result>(Error.SmartProcessCodeCategoryProcessNotExist)); } if (capacityLists.Count() != processes.Count()) { return(Result.GenError <Result>(Error.SmartCapacityListCountError)); } if (capacityLists.Any(x => !x.IsSet())) { return(Result.GenError <Result>(Error.SmartCapacityListNotEmpty)); } var smartCapacityListIds = capacityLists.Select(x => x.Id).Where(y => y != 0); if (smartCapacityListIds.Any()) { var data = SmartCapacityListHelper.Instance.GetByIds <SmartCapacityList>(smartCapacityListIds); if (data.Count() != smartCapacityListIds.Count()) { return(Result.GenError <Result>(Error.SmartCapacityListNotExist)); } } var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; if (oldCapacity.CategoryId != capacity.CategoryId) { capacity.MarkedDateTime = markedDateTime; SmartCapacityHelper.UpdateCategoryId(capacity); } foreach (var smartCapacityList in capacityLists) { smartCapacityList.CreateUserId = createUserId; smartCapacityList.MarkedDateTime = markedDateTime; smartCapacityList.CapacityId = capacityId; } var oldSmartCapacityLists = SmartCapacityListHelper.GetSmartCapacityLists(capacityId); //删除 var delete = oldSmartCapacityLists.Where(z => capacityLists.Where(x => x.Id != 0).All(y => y.Id != z.Id)); if (delete.Any()) { SmartCapacityListHelper.Instance.Delete(delete.Select(x => x.Id)); } //更新 var update = capacityLists.Where(x => x.Id != 0); if (update.Any()) { SmartCapacityListHelper.Instance.Update(update); } //新增 var add = capacityLists.Where(x => x.Id == 0); if (add.Any()) { SmartCapacityListHelper.Instance.Add(add); } OldWorkFlowHelper.Instance.OnSmartCapacityListChanged(capacityLists); return(Result.GenError <Result>(Error.Success)); }