public GridData Load(string userid, string type, int pageCurrent, int pageSize) { //todo:待办/已办/我的 var result = new GridData { page = pageCurrent }; var cnt = _unitWork.Find <WFProcessInstance>(u => u.CreateUserId == userid).Count(); if (type == "inbox") //待办事项 { result.total = cnt % pageSize == 0? cnt / pageSize : cnt / pageSize + 1; result.rows = _unitWork.Find <WFProcessInstance>(pageCurrent, pageSize, "CreateDate descending", null).ToList(); } else if (type == "outbox") //已办事项 { result.total = cnt % pageSize == 0 ? cnt / pageSize : cnt / pageSize + 1; result.rows = _unitWork.Find <WFProcessInstance>(pageCurrent, pageSize, "CreateDate descending", null).ToList(); } else //我的流程 { result.total = cnt % pageSize == 0 ? cnt / pageSize : cnt / pageSize + 1; result.rows = _unitWork.Find <WFProcessInstance>(pageCurrent, pageSize, "CreateDate descending", null).ToList(); } return(result); }
/// <summary> /// 獲取當前登錄使用者的數據訪問許可權 /// </summary> /// <param name=""parameterName>linq表達式參數的名稱,如u=>u.name中的"u"</param> /// <returns></returns> protected IQueryable <T> GetDataPrivilege(string parametername) { var loginUser = _auth.GetCurrentUser(); if (loginUser.User.Account == Define.SYSTEM_USERNAME) { return(UnitWork.Find <T>(null)); //超級管理員特權 } var moduleName = typeof(T).Name; var rule = UnitWork.FirstOrDefault <DataPrivilegeRule>(u => u.SourceCode == moduleName); if (rule == null) { return(UnitWork.Find <T>(null)); //沒有設定數據規則,那麼視為該資源允許被任何主體檢視 } if (rule.PrivilegeRules.Contains(Define.DATAPRIVILEGE_LOGINUSER) || rule.PrivilegeRules.Contains(Define.DATAPRIVILEGE_LOGINROLE) || rule.PrivilegeRules.Contains(Define.DATAPRIVILEGE_LOGINORG)) { //即把{loginUser} =='xxxxxxx'換為 loginUser.User.Id =='xxxxxxx',從而把當前登錄的使用者名稱與當時設計規則時選定的使用者id對比 rule.PrivilegeRules = rule.PrivilegeRules.Replace(Define.DATAPRIVILEGE_LOGINUSER, loginUser.User.Id); var roles = loginUser.Roles.Select(u => u.Id).ToList(); roles.Sort(); //按字母排序,這樣可以進行like操作 rule.PrivilegeRules = rule.PrivilegeRules.Replace(Define.DATAPRIVILEGE_LOGINROLE, string.Join(',', roles)); var orgs = loginUser.Orgs.Select(u => u.Id).ToList(); orgs.Sort(); rule.PrivilegeRules = rule.PrivilegeRules.Replace(Define.DATAPRIVILEGE_LOGINORG, string.Join(',', orgs)); } return(UnitWork.Find <T>(null).GenerateFilter(parametername, JsonHelper.Instance.Deserialize <FilterGroup>(rule.PrivilegeRules))); }
/// <summary> /// 获取当前登录用户的数据访问权限 /// </summary> /// <param name=""parameterName>linq表达式参数的名称,如u=>u.name中的"u"</param> /// <returns></returns> protected IQueryable <T> GetDataPrivilege(string parametername) { var loginUser = _auth.GetCurrentUser(); if (loginUser.User.Account == Define.SYSTEM_USERNAME) { return(UnitWork.Find <T>(null)); //超级管理员特权 } var moduleName = typeof(T).Name; var rule = UnitWork.FindSingle <DataPrivilegeRule>(u => u.SourceCode == moduleName); if (rule == null) { return(UnitWork.Find <T>(null)); //没有设置数据规则,那么视为该资源允许被任何主体查看 } if (rule.PrivilegeRules.Contains(Define.DATAPRIVILEGE_LOGINUSER) || rule.PrivilegeRules.Contains(Define.DATAPRIVILEGE_LOGINROLE) || rule.PrivilegeRules.Contains(Define.DATAPRIVILEGE_LOGINORG)) { //即把{loginUser} =='xxxxxxx'换为 loginUser.User.Id =='xxxxxxx',从而把当前登录的用户名与当时设计规则时选定的用户id对比 rule.PrivilegeRules = rule.PrivilegeRules.Replace(Define.DATAPRIVILEGE_LOGINUSER, loginUser.User.Id); var roles = loginUser.Roles.Select(u => u.Id).ToList(); roles.Sort(); //按字母排序,这样可以进行like操作 rule.PrivilegeRules = rule.PrivilegeRules.Replace(Define.DATAPRIVILEGE_LOGINROLE, string.Join(',', roles)); var orgs = loginUser.Orgs.Select(u => u.Id).ToList(); orgs.Sort(); rule.PrivilegeRules = rule.PrivilegeRules.Replace(Define.DATAPRIVILEGE_LOGINORG, string.Join(',', orgs)); } return(UnitWork.Find <T>(null).GenerateFilter(parametername, JsonHelper.Instance.Deserialize <FilterGroup>(rule.PrivilegeRules))); }
public TableData TurnStepApp(StepTrace stepTrace, string tostep) { TableData tab = new TableData { code = 200 }; string sErrorMsg = ""; int nofree = 0; try { if (stepTrace != null) { var sidlist = _unitWork.Find <StepStation>(u => u.StepType == tostep).Select(a => a.StationId); List <Equipment> equipments = _unitWork.Find <Equipment>(u => sidlist.Contains(u.StationId)).ToList(); foreach (var equipment in equipments) { if (_unitWork.IsExist <EquipmentStatus>(u => u.EquipmentId.Equals(equipment.Id) && u.Status == "0")) { //调用桁车接口进行转移工序作业,如果接口调用成功,更新下一工位为指定的去向工位; int?toStepId = _unitWork.Find <Step>(u => u.StepType == tostep).Select(a => a.Id).FirstOrDefault(); stepTrace.NextStepId = toStepId; _app.Update(stepTrace); tab.code = 200; tab.msg = "工单号:" + stepTrace.WONumber + "操作成功!"; break; //待桁车工序转移作业完成后调用中控桁车运行节点接口告知中控系统完成信号,中控系统更新StepTrace的当前工位,和下一工序工位,及当前工序,及呼叫焊接设备开始工作 } else { nofree = nofree + 1; if (nofree == equipments.Count) { sErrorMsg += "此工序没有空闲工位可用,无法转到此工序!<br>"; tab.msg = sErrorMsg; } } } } else { sErrorMsg += "数据错误,传入空数据!<br>"; tab.msg = sErrorMsg; } } catch (Exception ex) { tab.code = 300; tab.msg += ex.Message; } return(tab); }
/// <summary> /// 用户可访问的机构 /// </summary> /// <returns>IQueryable<Org>.</returns> public virtual IQueryable <Org> GetOrgsQuery() { var orgids = _unitWork.Find <Relevance>( u => (u.FirstId == _user.Id && u.Key == "UserOrg") || (u.Key == "RoleOrg" && _userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId); return(_unitWork.Find <Org>(u => orgids.Contains(u.Id))); }
public void GetDynamic() { var usersInOrg = from user in _unit.Find <User>(null) join relevance in _unit.Find <Relevance>(u => u.Key == "UserOrg") on user.Id equals relevance.FirstId join org in _unit.Find <Org>(null) on relevance.SecondId equals org.Id select new { user.Name, OrgName = org.Name }; foreach (var user in usersInOrg) { Debug.WriteLine("{0} :{1}", user.Name, user.OrgName); } }
public static List <T> FindList <T>(int page, int size) where T : class { IUnitWork unitWork = AutofacIocManager.Instance.Resolver <IUnitWork>(); var data = unitWork.Find <T>(null).Skip((page - 1) * size).Take(size).ToList(); return(data ?? new List <T>()); }
/// <summary> /// 加载一个分类及子分类全部Categorys /// </summary> public GridData Load(Guid parentId, int pageindex, int pagesize) { IQueryable <Category> categories; int total = 0; if (parentId == Guid.Empty) { categories = _unitWork.Find <Category>(pageindex, pagesize); total = _repository.GetCount(); } else { var ids = GetSubCategories(parentId); categories = _unitWork.Find <Category>(pageindex, pagesize, "SortNo", u => ids.Contains(u.Id)); total = _repository.GetCategoryCntInOrgs(ids); } var query = from c in categories join category in _unitWork.Find <Category>(null) on c.ParentId equals category.Id into temp from category in temp.DefaultIfEmpty() select new { c.CascadeId, c.Name, c.ParentId, ParentName = category.Name, c.SortNo, c.RootName, c.RootKey, c.Status, c.Id }; return(new GridData() { records = total, total = (int)Math.Ceiling((double)total / pagesize), rows = query.ToList(), page = pageindex }); }
public static List <ItemViewModel> GetParentRoles(bool load = false) { if (load || ParentRoles == null) { IUnitWork unitWork = AutofacIocManager.Instance.Resolver <IUnitWork>(); var data = unitWork.Find <RoleInfo>(it => it.Roles == null || it.Roles.Count == 0).Select(it => new ItemViewModel() { Label = it.Name, Value = it.Id }).ToList(); ParentRoles = data; } return(ParentRoles); }
public static List <ItemViewModel> GetAccountItems(bool load = false) { if (load || AccountItems == null) { IUnitWork unitWork = AutofacIocManager.Instance.Resolver <IUnitWork>(); var data = unitWork.Find <AccountItemInfo>(null).Select(it => new ItemViewModel() { Label = it.Name, Value = it.Id }).ToList(); AccountItems = data; } return(AccountItems); }
public static List <ItemViewModel> GetContent(bool load = false) { if (load || Contents == null) { IUnitWork unitWork = AutofacIocManager.Instance.Resolver <IUnitWork>(); var data = unitWork.Find <BringUpContentInfo>(null).Select(it => new ItemViewModel() { Label = it.Name, Value = it.Id }).ToList(); Contents = data; } return(Contents); }
public TableData IsStopApp(int[] ids, bool stop) { TableData tab = new TableData(); Location location = new Location(); try { foreach (int id in ids) { location = _unitWork.Find <Location>(n => n.Id == id).FirstOrDefault(); location.IsStop = stop; _unitWork.Update(location); } tab.code = 200; } catch (Exception ex) { tab.code = 300; tab.msg = ex.Message; } return(tab); }
public Response UploadIForm(IFormFile file, string pcode, string scode) { string outputDirPath = $"/OfficeFiles/"; Response result = new Infrastructure.Response(); var fileName = file.FileName; String suffixName = fileName.Substring(fileName.LastIndexOf(".")); Console.WriteLine(fileName); var newfilename = pcode + scode + suffixName; fileName = $"/UploadFile/{newfilename}"; fileName = _hostingEnvironment.WebRootPath + fileName; using (FileStream fs = System.IO.File.Create(fileName)) { file.CopyTo(fs); fs.Flush(); } Step step = _unitWork.Find <Step>(u => u.ProductCode == pcode && u.Code == scode).FirstOrDefault(); if (suffixName.ToUpper() == ".XLSX" || suffixName.ToUpper() == ".XLS") { ExcelPreview.Priview(fileName, pcode + scode, _hostingEnvironment.WebRootPath + outputDirPath); step.LinkSop = "/OfficeFiles/" + pcode + scode + ".html"; } else if (suffixName.ToUpper() == ".DOC" || suffixName.ToUpper() == ".DOCX") { WordPreview.Priview(fileName, pcode + scode, _hostingEnvironment.WebRootPath + outputDirPath); step.LinkSop = "/OfficeFiles/" + pcode + scode + ".html"; } else { step.LinkSop = "/UploadFile/" + newfilename; }; _app.Update(step); return(result); }
public TableData GetRoadWays() { var result = new TableData(); try { var data = _unitWork.Find <Location>(u => u.Code.Contains("-01-01-01")).Select(u => u.RoadWay); result.data = data; result.count = data.Count(); } catch (Exception ex) { result.msg = ex.Message; } return(result); }
/// <summary> /// 如果一个类有层级结构(树状),则修改该节点时,要修改该节点的所有子节点 /// //修改对象的级联ID,生成类似XXX.XXX.X.XX /// </summary> /// <typeparam name="U">U必须是一个继承TreeEntity的结构</typeparam> /// <param name="entity"></param> public void ChangeModuleCascade <U>(U entity) where U : TreeEntity { string cascadeId; int currentCascadeId = 1; //当前结点的级联节点最后一位 var sameLevels = UnitWork.Find <U>(o => o.ParentId == entity.ParentId && o.Id != entity.Id); foreach (var obj in sameLevels) { int objCascadeId = int.Parse(obj.CascadeId.TrimEnd('.').Split('.').Last()); if (currentCascadeId <= objCascadeId) { currentCascadeId = objCascadeId + 1; } } if (!string.IsNullOrEmpty(entity.ParentId)) { var parentOrg = UnitWork.FindSingle <U>(o => o.Id == entity.ParentId); if (parentOrg != null) { cascadeId = parentOrg.CascadeId + currentCascadeId + "."; entity.ParentName = parentOrg.Name; } else { throw new Exception("未能找到该组织的父节点信息"); } } else { cascadeId = ".0." + currentCascadeId + "."; entity.ParentName = "根节点"; } entity.CascadeId = cascadeId; }
public TableData CreateDistributeTaskApp(List <MaterialCallHeader> mcheaderlist) { TableData tab = new TableData { code = 200 }; int hcount = 0; int listcount = 0; string sErrorMsg = ""; Location location = null; try { listcount = mcheaderlist.Count; foreach (MaterialCallHeader materialCallHeader in mcheaderlist) { MaterialDistributeTaskHeader materialDistributeTaskHeader = new MaterialDistributeTaskHeader(); List <MaterialCallDetail> materialCallDetails = _unitWork.Find <MaterialCallDetail>(u => u.CallHeaderId.Equals(materialCallHeader.Id)).ToList(); if (!_unitWork.IsExist <MaterialDistributeTaskHeader>(u => u.MaterialCallId.Equals(materialCallHeader.Id))) { //生成配送主数据 // MaterialDistributeTaskHeader materialDistributeTaskHeader = new MaterialDistributeTaskHeader(); var pcode = _unitWork.Find <MaterialCallDetail>(u => u.CallHeaderId == materialCallHeader.Id).Select(a => a.ProductCode).FirstOrDefault(); var pid = _unitWork.Find <ProductHeader>(u => u.Code == pcode).Select(a => a.Id).FirstOrDefault(); location = _unitWork.Find <Location>(u => u.Code == materialCallHeader.LocationCode).FirstOrDefault(); materialDistributeTaskHeader.MaterialCallId = materialCallHeader.Id; materialDistributeTaskHeader.ProductId = pid; materialDistributeTaskHeader.ProductCode = pcode; materialDistributeTaskHeader.NeedStation = materialCallHeader.NeedStation; materialDistributeTaskHeader.LocationCode = materialCallHeader.LocationCode; materialDistributeTaskHeader.ContainerType = location.Type; if (!string.IsNullOrEmpty(location.ContainerCode)) { materialDistributeTaskHeader.ContainerCode = location.ContainerCode; } materialDistributeTaskHeader.NeedTime = materialCallHeader.CallTime; materialDistributeTaskHeader.Status = 1; materialDistributeTaskHeader.UserCode = _app._loginInfo.Account; if (materialCallHeader.CallType == CallType.料) { if (location.Status == LocationStatus.空仓位) {//第一次上料 materialDistributeTaskHeader.TaskNo = _app.GetTaskNo(AGVTaskNo.工位叫料); materialDistributeTaskHeader.CallType = TaskType.料配送; materialDistributeTaskHeader.EndPlace = materialCallHeader.LocationCode; if (string.IsNullOrEmpty(pcode)) { materialDistributeTaskHeader.MaterialConfirm = MaterialConfirm.已确认; } else { materialDistributeTaskHeader.MaterialConfirm = MaterialConfirm.未确认; } _appmh.Add(materialDistributeTaskHeader); } else { //先生成取空料框任务 MaterialDistributeTaskHeader mt = new MaterialDistributeTaskHeader(); materialDistributeTaskHeader.CopyTo(mt); mt.Id = null; mt.TaskNo = _app.GetTaskNo(AGVTaskNo.取空料框); mt.CallType = TaskType.回收料框; mt.StartPlace = materialCallHeader.LocationCode; mt.MaterialConfirm = MaterialConfirm.已确认; _appmh.Add(mt); //再成上料任务 materialDistributeTaskHeader.TaskNo = _app.GetTaskNo(AGVTaskNo.工位叫料); materialDistributeTaskHeader.CallType = TaskType.料配送; materialDistributeTaskHeader.StartPlace = ""; materialDistributeTaskHeader.ContainerCode = ""; materialDistributeTaskHeader.EndPlace = materialCallHeader.LocationCode; if (string.IsNullOrEmpty(pcode)) { materialDistributeTaskHeader.MaterialConfirm = MaterialConfirm.已确认; } else { materialDistributeTaskHeader.MaterialConfirm = MaterialConfirm.未确认; } _appmh.Add(materialDistributeTaskHeader); } //只有呼叫类型是上料任务时,才有呼叫明细数据,其它呼叫类型无需写入任务配送明细表 if (materialCallDetails.Count > 0) { foreach (MaterialCallDetail mcdetail in materialCallDetails) { List <MaterialDemand> materialDemands = _unitWork.Find <MaterialDemand>(u => u.OrderCode == mcdetail.OrderCode).ToList(); //判断此工单的物料需求是否生成 if (materialDemands.Count > 0) { //判断此工单的物料配送任务是否已经建立 //if (!_unitWork.IsExist<MaterialDistributeTaskDetail>(u => u.OrderCode == mcdetail.OrderCode)) //{ //生成配送明细数据 foreach (MaterialDemand md in materialDemands) { if (md.ClassABC == location.Type) { MaterialDistributeTaskDetail materialDistributeTaskDetail = new MaterialDistributeTaskDetail(); materialDistributeTaskDetail.MaterialDistributeTaskHeaderId = materialDistributeTaskHeader.Id; materialDistributeTaskDetail.OrderCode = md.OrderCode; materialDistributeTaskDetail.MaterialCode = md.MaterialCode; materialDistributeTaskDetail.SerialNumber = mcdetail.SerialNumber; materialDistributeTaskDetail.Qty = md.DistributeQty; materialDistributeTaskDetail.UserCode = _app._loginInfo.Account; _appmd.Add(materialDistributeTaskDetail); } } hcount = hcount + 1; //} //else //{ // sErrorMsg += "工单号为:" + mcdetail.OrderCode + "的配送任务已经建立过,不可重复建立!<br>"; // tab.msg = sErrorMsg; //} } else { sErrorMsg += "工单号为:" + mcdetail.OrderCode + "未建立工单对应的物料需求,无法生成!<br>"; tab.msg = sErrorMsg; } } } } else if (materialCallHeader.CallType == CallType.料) { if (location.Status == LocationStatus.空仓位) {//第一次下料,即只补空料框 materialDistributeTaskHeader.TaskNo = _app.GetTaskNo(AGVTaskNo.补给空框); materialDistributeTaskHeader.CallType = TaskType.补给料框; materialDistributeTaskHeader.EndPlace = materialCallHeader.LocationCode; materialDistributeTaskHeader.MaterialConfirm = MaterialConfirm.已确认; _appmh.Add(materialDistributeTaskHeader); } else {//先生成下料任务 materialDistributeTaskHeader.TaskNo = _app.GetTaskNo(AGVTaskNo.成品下料); materialDistributeTaskHeader.CallType = TaskType.料取件; materialDistributeTaskHeader.StartPlace = materialCallHeader.LocationCode; _appmh.Add(materialDistributeTaskHeader); //再生成补空料框任务 MaterialDistributeTaskHeader mtbk = new MaterialDistributeTaskHeader(); materialDistributeTaskHeader.CopyTo(mtbk); mtbk.Id = null; mtbk.TaskNo = _app.GetTaskNo(AGVTaskNo.补给空框); mtbk.CallType = TaskType.补给料框; mtbk.ContainerCode = ""; mtbk.StartPlace = ""; mtbk.EndPlace = materialCallHeader.LocationCode; mtbk.MaterialConfirm = MaterialConfirm.已确认; _appmh.Add(mtbk); } } } } if (listcount <= hcount) { tab.code = 200; tab.msg = "配送任务已成功生成!"; } else { tab.code = 200; tab.msg = "执行完成!部分生成失败的信息如下:<br>" + tab.msg; } } catch (Exception ex) { tab.code = 300; tab.msg += ex.Message; } return(tab); }
public void GetUserAccessed(string name) { if (name == "System") { _modules = _unitWork.Find <Module>(null).ToList(); _moduleElements = _unitWork.Find <ModuleElement>(null).ToList(); _resources = _unitWork.Find <Resource>(null).OrderBy(u => u.SortNo).ToList(); _orgs = _unitWork.Find <Org>(null).OrderBy(u => u.SortNo).ToList(); } else { _user = _unitWork.FindSingle <User>(u => u.Account == name); //用户角色 var userRoleIds = _unitWork.Find <Relevance>(u => u.FirstId == _user.Id && u.Key == "UserRole").Select(u => u.SecondId).ToList(); //用户角色与自己分配到的模块ID var moduleIds = _unitWork.Find <Relevance>( u => (u.FirstId == _user.Id && u.Key == "UserModule") || (u.Key == "RoleModule" && userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId); //得出最终用户拥有的模块 _modules = _unitWork.Find <Module>(u => moduleIds.Contains(u.Id)).OrderBy(u => u.SortNo).ToList(); //用户角色与自己分配到的菜单ID var elementIds = _unitWork.Find <Relevance>( u => (u.FirstId == _user.Id && u.Key == "UserElement") || (u.Key == "RoleElement" && userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId); //模块菜单权限 _moduleElements = _unitWork.Find <ModuleElement>(u => elementIds.Contains(u.Id)).ToList(); //用户角色与自己分配到的资源ID var resourceIds = _unitWork.Find <Relevance>( u => (u.FirstId == _user.Id && u.Key == "UserResource") || (u.Key == "RoleResource" && userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId); _resources = _unitWork.Find <Resource>(u => resourceIds.Contains(u.Id)).ToList(); //用户角色与自己分配到的机构ID var orgids = _unitWork.Find <Relevance>( u => (u.FirstId == _user.Id && u.Key == "UserAccessedOrg") || (u.Key == "RoleAccessedOrg" && userRoleIds.Contains(u.FirstId))).Select(u => u.SecondId); _orgs = _unitWork.Find <Org>(u => orgids.Contains(u.Id)).ToList(); } }
public List <WFSchemeInfo> GetList() { return(_unitWork.Find <WFSchemeInfo>(null).ToList()); }
public List <WFFrmMain> GetAllList() { return(_unitWork.Find <WFFrmMain>(null).ToList()); }
/// <summary> /// 如果一个类有层级结构(树状),则修改该节点时,要修改该节点的所有子节点 /// //修改对象的级联ID,生成类似XXX.XXX.X.XX /// </summary> /// <typeparam name="TU">U必须是一个继承TreeEntity的结构</typeparam> /// <param name="entity"></param> public void ChangeModuleCascade <TU>(TU entity) where TU : TreeEntity { List <string> listCascadeId = new List <string>(); List <string> listParentName = new List <string>(); int currentCascadeId = 1; //当前结点的级联节点最后一位 //var sameLevels = UnitWork.Find<TU>(o => (o.ParentId == entity.ParentId) && o.Id != entity.Id); var sameLevels = UnitWork.Find <TU>(o => (entity.ParentId.Contains(o.ParentId) || string.IsNullOrEmpty(entity.ParentId)) && o.Id != entity.Id).ToList(); if (!string.IsNullOrEmpty(entity.ParentId) && entity.ParentId.Contains(",")) { foreach (var obj in sameLevels) { int objCascadeId = int.Parse(obj.CascadeId.TrimEnd('.').Split('.').Last()); if (currentCascadeId <= objCascadeId) { currentCascadeId = objCascadeId + 1; } } if (!string.IsNullOrEmpty((entity.ParentId))) { //var parent = UnitWork.FindSingle<TU>(o => o.Id == entity.ParentId); var parent = UnitWork.Find <TU>(o => entity.ParentId.Contains(o.Id)); if (parent.Any()) { foreach (var p in parent) { listCascadeId.Add(p.CascadeId + currentCascadeId + "."); listParentName.Add(p.Name); } } else { throw new Exception("未能找到该组织的父节点信息"); } } else { listCascadeId.Add(".0." + currentCascadeId + "."); listParentName.Add("根节点"); } } else { foreach (var obj in sameLevels) { int objCascadeId = int.Parse(obj.CascadeId.TrimEnd('.').Split('.').Last()); if (currentCascadeId <= objCascadeId) { currentCascadeId = objCascadeId + 1; } } if (!string.IsNullOrEmpty((entity.ParentId))) { //var parent = UnitWork.FindSingle<TU>(o => o.Id == entity.ParentId); var parent = UnitWork.FindSingle <TU>(o => entity.ParentId.Contains(o.Id)); if (parent != null) { listCascadeId.Add(parent.CascadeId + currentCascadeId + "."); listParentName.Add(parent.Name); } else { throw new Exception("未能找到该组织的父节点信息"); } } else { listCascadeId.Add(".0." + currentCascadeId + "."); listParentName.Add("根节点"); } } entity.CascadeId = string.Join(',', listCascadeId); entity.ParentName = string.Join(',', listParentName); }
public void Upd(MaterialDistributeTaskHeader entity) { if (entity.Status == AGVTaskState.配送完成 || entity.Status == AGVTaskState.放料车完成) { //同步更新物料呼叫状态为完成 MaterialCallHeader materialCallHeader = _unitWork.FindSingle <MaterialCallHeader>(u => u.Id.Equals(entity.MaterialCallId)); materialCallHeader.Status = CallStatus.完成; materialCallHeader.UpdateTime = DateTime.Now; materialCallHeader.UpdateBy = _app._loginInfo.Account; _unitWork.Update(materialCallHeader); if (entity.Status == AGVTaskState.配送完成) { List <MaterialCallDetail> materialCallDetail = _unitWork.Find <MaterialCallDetail>(u => u.CallHeaderId.Equals(materialCallHeader.Id)).ToList(); foreach (MaterialCallDetail mcdetail in materialCallDetail) { //同步更新物料需求状态 List <MaterialDemand> materialDemands = _unitWork.Find <MaterialDemand>(u => u.OrderCode.Equals(mcdetail.OrderCode) && u.ProductCode == mcdetail.ProductCode).ToList(); foreach (MaterialDemand md in materialDemands) { md.Status = CallStatus.完成; md.UpdateTime = DateTime.Now; md.UpdateBy = _app._loginInfo.Account; _unitWork.Update(md); } } } //更新缓存区位置存放的料框编号和状态 Location location = _unitWork.Find <Location>(u => u.Code == entity.LocationCode).FirstOrDefault(); location.UpdateTime = DateTime.Now; location.UpdateBy = _app._loginInfo.Account; location.ContainerCode = entity.ContainerCode; location.Status = LocationStatus.货; _unitWork.Update(location); //容器 Container container = _unitWork.Find <Container>(u => u.Code == entity.ContainerCode).FirstOrDefault(); container.UpdateTime = DateTime.Now; container.UpdateBy = _app._loginInfo.Account; container.LocationCode = entity.LocationCode; container.Status = ContainerStatus.; _unitWork.Update(container); } if (entity.Status == AGVTaskState.回收料框完成 || entity.Status == AGVTaskState.取工件完成) { //更新缓存区位置存放的料框编号和状态 Location location = _unitWork.Find <Location>(u => u.Code == entity.LocationCode).FirstOrDefault(); location.UpdateTime = DateTime.Now; location.UpdateBy = _app._loginInfo.Account; location.ContainerCode = ""; location.Status = LocationStatus.空仓位; _unitWork.Update(location); //容器 Container container = _unitWork.Find <Container>(u => u.Code == entity.ContainerCode).FirstOrDefault(); container.UpdateTime = DateTime.Now; container.UpdateBy = _app._loginInfo.Account; container.LocationCode = ""; container.Status = ContainerStatus.空; _unitWork.Update(container); } entity.Status = AGVTaskState.任务完成; _app.Update(entity); }
private IQueryable <T> Query() { IQueryable <T> queryable = UnitWork.Find <T>(null); return(queryable); }
public TableData CreateSNApp(List <OrderHeader> ohlist) { using (var tran = _context.Database.BeginTransaction()) { TableData tab = new TableData { code = 200 }; int hcount = 0; int listcount = 0; string sErrorMsg = ""; try { listcount = ohlist.Count; foreach (OrderHeader orderhearder in ohlist) { if (orderhearder.Status == OrderStatus.已准备) { if (_unitWork.IsExist <SerialNumber>(u => u.OrderCode.Equals(orderhearder.Code))) { sErrorMsg += "工单号为:" + orderhearder.Code + "已生成过SN,不可再生成!<br>"; tab.msg = sErrorMsg; } else { List <OrderDetiail> orderDetiails = _unitWork.Find <OrderDetiail>(u => u.OrderHeaderId.Equals(orderhearder.Id)).ToList(); for (int i = 0; i < orderhearder.PlanQty; i++) { SerialNumber serialNumber = new SerialNumber(); serialNumber.OrderCode = orderhearder.Code; serialNumber.ProductCode = orderhearder.ProductCode; serialNumber.SerialNumberMember = _app.GetTaskNo(orderhearder.ProductCode); if (_unitWork.IsExist <ProductBarcodeRule>(u => u.ProductCode == orderhearder.ProductCode)) { serialNumber.SerialRule = _unitWork.FindSingle <ProductBarcodeRule>(u => u.ProductCode == orderhearder.ProductCode).Code; } else { serialNumber.SerialRule = ""; } serialNumber.PrintCount = 0; _apps.Add(serialNumber); if (orderDetiails.Count > 0) { OrderDetiail orderDetiail = _unitWork.Find <OrderDetiail>(u => u.OrderCode.Equals(serialNumber.OrderCode)).Skip(i).Take(1).OrderBy(a => a.Id).FirstOrDefault(); //更新工单明细表的SN orderDetiail.SerialNumber = serialNumber.SerialNumberMember; _appdt.Update(orderDetiail); } else { //写入工单明细表 OrderDetiail odin = new OrderDetiail(); odin.OrderCode = serialNumber.OrderCode; odin.OrderHeaderId = orderhearder.Id; ProductHeader dno = _unitWork.FindSingle <ProductHeader>(u => u.Code.Equals(orderhearder.ProductCode)); odin.DrawingNumber = dno.DrawingNumber; //if (_unitWork.IsExist<ProductHeader>(u => u.Code.Equals(orderhearder.ProductCode))) //{ // odin.DrawingNumber = _unitWork.FindSingle<ProductHeader>(u => u.Code.Equals(orderhearder.ProductCode)).DrawingNumber; //} odin.SerialNumber = serialNumber.SerialNumberMember; odin.ExecuteStatus = "ready"; odin.QualityStatus = "good"; _appdt.Add(odin); } } hcount = hcount + 1; } } else { sErrorMsg += "工单号为:" + orderhearder.Code + "状态错误,为非准备状态!<br>"; tab.msg = sErrorMsg; } } if (listcount <= hcount) { tab.code = 200; tab.msg = "工单已全部成功生成SN!"; } else { tab.code = 200; tab.msg = "工单全部完成!部分未成功生成SN的信息如下:<br>" + tab.msg; } tran.Commit(); } catch (Exception ex) { tran.Rollback(); tab.code = 300; tab.msg += ex.Message; } return(tab); } }