using FactorySystemCommon; using FactorySystemModel.EnumModel; using FactorySystemModel.RequestModel; using FactorySystemModel.ResponseModel; using FactorySystemModel.SqlSugarModel; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; namespace FactorySystemBll { public class MaterialTaskBll { /// /// 获取任务列表 /// public List GetList(MaterialTaskQuery mtq, out int totalNumber) { totalNumber = 0; var db = AppSettingsHelper.GetSqlSugar(); return db.Queryable((a, b, c) => new JoinQueryInfos(JoinType.Inner, a.FMaterialTeamID == b.FID, JoinType.Left, a.FAddUser == c.FID)) // 事项状态 .WhereIF(mtq.FState > 0 && mtq.FState != 99, (a, b) => a.FState == mtq.FState) // 物料号 .WhereIF(!string.IsNullOrEmpty(mtq.FMaterialCode), (a, b) => b.FMaterialCode.Equals(mtq.FMaterialCode)) // 类型 .WhereIF(mtq.FType >= 0, (a, b) => a.FType == mtq.FType) // 发起时间 .WhereIF(mtq.FDateRange != null && mtq.FDateRange[0] != "", (a, b) => a.FAddDate >= DateTime.Parse(mtq.FDateRange[0])) .WhereIF(mtq.FDateRange != null && mtq.FDateRange[1] != "", (a, b) => a.FAddDate <= DateTime.Parse(mtq.FDateRange[1])) // 责任人 .WhereIF(mtq.FUserID != null, (a, b) => (',' + a.FUserID + ',').Contains(',' + mtq.FUserID + ',')) //// 协同 //.WhereIF(mtq.FMaterialTeamID > 0, (a, b) => a.FMaterialTeamID == mtq.FMaterialTeamID) .OrderBy((a, b) => a.FID, OrderByType.Desc) .Select("a.*,b.FMaterialName,b.FMaterialCode,b.FTestCode,b.FMaterialType, c.FName as FAddUserName").OrderBy((a) => a.FID, OrderByType.Desc) .ToPageList(mtq.FPageIndex, mtq.FPageSize, ref totalNumber); } public List GetMaterialTasks(int teamId) { var db = AppSettingsHelper.GetSqlSugar(); List tasks = db.Queryable().Where(t => t.FMaterialTeamID == teamId).ToList(); return tasks; } /// /// 创建物料新增事项 /// public int CreateMaterialTask(int teamId, int teamworkType, int userId, int type, int factoryId, List users) { SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); int taskId = -1; try { if (users.Count > 0) { TFS_FMaterialTask materialTask = new TFS_FMaterialTask(); materialTask.FMaterialTeamID = teamId; materialTask.FType = type; materialTask.FFactoryID = factoryId; materialTask.FCanEdit = 1; materialTask.FAddUser = userId; materialTask.FAddDate = DateTime.Now; materialTask.FState = 1; materialTask.FTeamworkType = teamworkType; materialTask.FUserID = string.Join(",", users.GroupBy(ss => ss.FID).Select(sss => sss.Key)); materialTask.FUserName = string.Join("、", users.GroupBy(ss => ss.FName).Select(sss => sss.Key)); if (type == 0) { materialTask.FName = "物料分类"; materialTask.FDesc = "物料分类选择"; } else if (type == 1) { materialTask.FName = "物料视图"; materialTask.FDesc = "物料视图编辑"; } else if (type == 8) { materialTask.FName = "工艺组编号申请"; materialTask.FDesc = "工艺组编号申请"; } else { materialTask.FName = "确认视图"; materialTask.FDesc = "物料视图确认"; } taskId = db.Insertable(materialTask).IgnoreColumns(true).ExecuteReturnIdentity(); } } catch (Exception ex) { taskId = -1; } return taskId; } public int CloseMaterialTask(int teamId, int userId, int type) { SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); List taskList = db.Queryable().Where(s => s.FType == type && s.FMaterialTeamID == teamId && s.FState == 1).ToList(); int result = 0; if (taskList != null && taskList.Count > 0) { TFS_FMaterialTask fmt = taskList[0]; // fmt.FCanEdit = 2; fmt.FState = 2; fmt.FEditUser = userId; fmt.FEditDate = DateTime.Now; result = db.Updateable(fmt).IgnoreColumns(true).WhereColumns("FID").ExecuteCommand(); } return result; } public int CloseAllMaterialTask(int teamId, int userId) { SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); List taskList = db.Queryable().Where(s => s.FMaterialTeamID == teamId).ToList(); int result = 0; if (taskList != null && taskList.Count > 0) { foreach(TFS_FMaterialTask task in taskList) { task.FCanEdit = 2; task.FState = 2; task.FEditUser = userId; task.FEditDate = DateTime.Now; result = db.Updateable(task).IgnoreColumns(true).WhereColumns("FID").ExecuteCommand(); } } return result; } /** * 20230505 修改权限BUG * 获取事项用户,用于判断是否生成路线和事项 * **/ public List GetTaskUsers(int taskType, string viewType, int factoryId) { SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); List users = null; string funcType = null; List funcVal = null; // 物料分类任务 | 物料编辑任务 if (taskType == 0 || taskType == 1) { funcType = "4, 5"; funcVal = db.Queryable().Where(s => (s.FType == (int)Constant.BasicCode.物料视图编辑 || s.FType == (int)Constant.BasicCode.物料基础编辑) && viewType.Equals(s.F1) && // 视图编辑中的物料分类 s.FState == 1).Select(s => s.FValue).ToList(); } // 物料确认任务 else if (taskType == 2) { funcType = "2"; funcVal = new List { "7" }; } users = db.Queryable((a, b, c) => new JoinQueryInfos( JoinType.Left, a.FUserID.Equals(b.FID.ToString()), JoinType.Left, a.FRole.Equals(c.FRoleID.ToString()))) .Where((a, b, c) => factoryId.ToString().Contains(a.FFactoryID)) .Where((a, b, c) => b.FState == 1 && b.FDeleted != 1) .Where((a, b, c) => funcType.Contains(c.FType.ToString()) && funcVal.Contains(c.FFunctionID.ToString())) .GroupBy("b.FID, a.FFactoryID, b.FName, b.FUser") .Select("b.FID, cast(a.FFactoryID as int), b.FName, b.FUser") .ToList(); return users; } /// /// 组编号申请获取视图 /// public List GetDockGroupView(Dictionary inParam) { int teamId = int.Parse(inParam["FTeamID"].ToString()); SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); TFS_FMaterialTeamwork teamwork = db.Queryable().Where(s => s.FID == teamId).First(); List viewType = new List { (int)Constant.ViewType.半成品视图, (int)Constant.ViewType.中间品视图, (int)Constant.ViewType.香基视图 }; return db.Queryable().Where(s => s.FTeamID == teamId && s.FTeamType == 1 && s.FFactoryID == teamwork.FProdFactoryID && SqlFunc.IsNullOrEmpty(s.FGroupCode) && viewType.Contains(s.FViewType)).ToList(); } /// /// 组编号申请处理视图 /// public int DockMaterialGroup(List viewList, int userId) { int result = 0; SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); db.BeginTran(); try { int teamId = viewList.First().FTeamID; foreach (var view in viewList) { result += db.Updateable(new { FGroupCode = view.FGroupCode, FEditUser = userId, FEditDate = DateTime.Now }) .Where(s => s.FTeamID == teamId && s.FTeamType == 1 && s.FMaterialID == view.FMaterialID && s.FViewType == view.FViewType).ExecuteCommand(); } string taskSql = GetTaskSql(-1, 2, teamId, (int)Constant.TaskType.组编号申请, 2); db.Ado.ExecuteCommand(taskSql); db.CommitTran(); } catch (Exception) { db.RollbackTran(); } return result; } /// /// 事项变更SQL语句 /// private string GetTaskSql(int taskId, int taskState, int teamId = -1, int taskType = -1, int taskEdit = -1, string sqlAppend = "") { string updateSql = string.Format("a.FState={0}", taskState); if (taskState == 2) updateSql += ",FFinishDate=isnull(a.FFinishDate, getdate())"; if (taskEdit > 0) updateSql += string.Format(",a.FCanEdit={0}", taskEdit); List whereSql = new List(); if (taskId > 0) whereSql.Add(string.Format("a.FID={0}", taskId)); if (teamId > 0) whereSql.Add(string.Format("a.FMaterialTeamID={0}", teamId)); if (taskType > 0) whereSql.Add(string.Format("a.FType={0}", taskType)); if (whereSql.Count == 0 && string.IsNullOrEmpty(sqlAppend)) return ""; if (!string.IsNullOrEmpty(sqlAppend) && whereSql.Count > 0) sqlAppend = " and " + sqlAppend; return string.Format(@"update a set {0} from TFS_FMaterialTask a where {1} {2};", updateSql, string.Join(" and ", whereSql), sqlAppend); } } }