You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							250 lines
						
					
					
						
							11 KiB
						
					
					
				
			
		
		
	
	
							250 lines
						
					
					
						
							11 KiB
						
					
					
				| 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
 | |
|     {
 | |
|         /// <summary>
 | |
|         /// 获取任务列表
 | |
|         /// </summary>
 | |
|         public List<MaterialTaskRow> GetList(MaterialTaskQuery mtq, out int totalNumber)
 | |
|         {
 | |
|             totalNumber = 0;
 | |
|             var db = AppSettingsHelper.GetSqlSugar();
 | |
|             return db.Queryable<TFS_FMaterialTask, TFS_FMaterialTeamwork, TUser>((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<MaterialTaskRow>("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<TFS_FMaterialTask> GetMaterialTasks(int teamId)
 | |
|         {
 | |
|             var db = AppSettingsHelper.GetSqlSugar();
 | |
|             List<TFS_FMaterialTask> tasks = db.Queryable<TFS_FMaterialTask>().Where(t => t.FMaterialTeamID == teamId).ToList();
 | |
| 
 | |
|             return tasks;
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 创建物料新增事项
 | |
|         /// </summary>
 | |
|         public int CreateMaterialTask(int teamId, int teamworkType, int userId, int type, int factoryId, List<TUser> 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<TFS_FMaterialTask> taskList = db.Queryable<TFS_FMaterialTask>().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<TFS_FMaterialTask> taskList = db.Queryable<TFS_FMaterialTask>().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<TUser> GetTaskUsers(int taskType, string viewType, int factoryId)
 | |
|         {
 | |
|             SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
 | |
|             List<TUser> users = null;
 | |
|             string funcType = null;
 | |
|             List<string> funcVal = null;
 | |
| 
 | |
|             // 物料分类任务 | 物料编辑任务
 | |
|             if (taskType == 0 || taskType == 1)
 | |
|             {
 | |
|                 funcType = "4, 5";
 | |
|                 funcVal = db.Queryable<TBasicCode>().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<string> { "7" };
 | |
|             }
 | |
| 
 | |
|             users = db.Queryable<FPower, TUser, TRole_Right>((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<TUser>("b.FID, cast(a.FFactoryID as int), b.FName, b.FUser")
 | |
|                    .ToList();
 | |
| 
 | |
|             return users;
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 组编号申请获取视图
 | |
|         /// </summary>
 | |
|         public List<TFS_ViewMaterial> GetDockGroupView(Dictionary<string, object> inParam)
 | |
|         {
 | |
|             int teamId = int.Parse(inParam["FTeamID"].ToString());
 | |
|             SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
 | |
|             TFS_FMaterialTeamwork teamwork = db.Queryable<TFS_FMaterialTeamwork>().Where(s => s.FID == teamId).First();
 | |
|             List<int> viewType = new List<int>
 | |
|             {
 | |
|                 (int)Constant.ViewType.半成品视图,
 | |
|                 (int)Constant.ViewType.中间品视图,
 | |
|                 (int)Constant.ViewType.香基视图
 | |
|             };
 | |
|             return db.Queryable<TFS_ViewMaterial>().Where(s => s.FTeamID == teamId && s.FTeamType == 1 && s.FFactoryID == teamwork.FProdFactoryID
 | |
|             && SqlFunc.IsNullOrEmpty(s.FGroupCode) && viewType.Contains(s.FViewType)).ToList();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 组编号申请处理视图
 | |
|         /// </summary>
 | |
|         public int DockMaterialGroup(List<TFS_ViewMaterial> 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<TFS_ViewMaterial>(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;
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 事项变更SQL语句
 | |
|         /// </summary>
 | |
|         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<string> whereSql = new List<string>();
 | |
|             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);
 | |
|         }
 | |
|     }
 | |
| }
 |