using System.Data; using System.Data.SqlClient; using System.Dynamic; using System.Text; using Gs.Toolbox; using Gs.Toolbox.ApiCore.Abstract.Mvc; using Gs.Toolbox.ApiCore.Common.Mvc; using Gs.Toolbox.ApiCore.Group; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using static Gs.Toolbox.UtilityHelper; namespace Gs.Wom.WorkService { [ApiGroup(ApiGroupNames.BaseInfo)] public class WorkProController : IRomteService { private readonly IHttpContextAccessor _http; private readonly string _userCode, _userGuid, _orgFids; public WorkProController(IHttpContextAccessor httpContextAccessor) { _http = httpContextAccessor; (_userCode, _userGuid, _orgFids) = GetUserGuidAndOrgGuid(_http); } #region /// /// 读取列表,支持分页 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto> GetListPage([FromBody] PageQuery model) { var currentPage = model.currentPage; var everyPageSize = model.everyPageSize; var sortName = string.IsNullOrEmpty(model.sortName) ? "a.hNo" : model.sortName; var keyWhere = model.keyWhere; var sbSql = new StringBuilder(); sbSql.Append("select * from "); sbSql.Append("( "); sbSql.Append("select top 100000 ROW_NUMBER() over(order by " + sortName + " " + model.sortOrder + ") as rowIndex,cast(0 as bit) as chkInt, a.*,(a.processNo+':'+a.processName) as processNoAndName,(case a.isStatus when 1 then '正常' when -1 then '禁用' else cast(a.isStatus as nvarchar(4)) end) as isStatusTxt from WORK_PROCESS a where 1=1" + keyWhere); sbSql.Append(") as T "); sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" + everyPageSize + " and T.rowindex<=" + currentPage + "*" + everyPageSize); sbSql.Append(" order by rowindex asc "); sbSql.Append( " select count(1) as intTotal from WORK_PROCESS a where 1=1 " + keyWhere); var dset = new DataSet(); try { dset = DbHelperSQL.Query(sbSql.ToString()); } catch (Exception ex) { LogHelper.Debug(ToString(), "GetListPage error:" + ex.Message); return ReturnDto>.QuickReturn(default(PageList), ReturnCode.Exception, ex.Message); } var _pglist = new PageList { total = 0, everyPageSize = 0, pages = 0, list = new List() }; if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0) //有数据 { var intTotal = int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString()); var pages = intTotal % everyPageSize != 0 ? intTotal / everyPageSize + 1 : intTotal / everyPageSize; _pglist.total = intTotal; _pglist.everyPageSize = everyPageSize; _pglist.pages = pages; var _dy = dset.Tables[0].TableToDynamicList(); _pglist.list = _dy; } return ReturnDto>.QuickReturn(_pglist, ReturnCode.Success, "读取成功"); } /// /// 删除 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto DeleteModel([FromBody] JArray guidList) { string[] intArray = guidList.ToObject(); System.Text.StringBuilder sbGuid = new StringBuilder(); foreach (string val in intArray) { if (sbGuid.Length > 0) sbGuid.Append(", "); sbGuid.Append(val); } var rtnInt = (int)ReturnCode.Default; var cont = 0; try { cont = isChkOrUnChk(sbGuid.ToString(), 1); if (cont > 0) return ReturnDto.QuickReturn(default(int?), ReturnCode.Exception, "删除失败,该信息已被审核!"); System.Text.StringBuilder sbSql = new StringBuilder(); sbSql.Append("delete from WORK_PROCESS "); sbSql.Append(" where guid in (select line from dbo.fn_split('" + sbGuid.ToString() + "',','))"); var rows = DbHelperSQL.ExecuteSql(sbSql.ToString()); rtnInt = rows; } catch (Exception ex) { LogHelper.Debug(ToString(), "DeleteModel error:" + ex.Message); rtnInt = (int)ReturnCode.Exception; return ReturnDto.QuickReturn(default(int?), ReturnCode.Exception, "删除失败," + ex.Message); } if (rtnInt > 0) return ReturnDto.QuickReturn(default(int?), ReturnCode.Success, "操作成功,共删除" + rtnInt + "条数据!"); return ReturnDto.QuickReturn(default(int?), ReturnCode.Exception, "删除失败,请重试!"); } /// /// 增加 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto EditModel([FromBody] dynamic model) { string guid = model.guid; string processNo = model.processNo; string processName = model.processName; string remark = model.remark; string isBack = model.isBack; string isStatus = model.isStatus; string description = model.description; int? rtnInt = (int)ReturnCode.Default; System.Text.StringBuilder sbSql = new StringBuilder(); if (!CheckGuid(guid)) { guid= Guid.NewGuid().ToString(); sbSql.Append("INSERT INTO [dbo].[WORK_PROCESS] ([guid] ,[processNo] ,[processName] ,[remark] ,[isBack] ,[isStatus] ,[description] ,[createBy] ,[createDate] ,[lastUpdateBy] ,[lastUpdateDate])"); sbSql.Append(" values( '"+ guid + "',@processNo,@processName,@remark,@isBack,@isStatus,@description,'" + _userCode + "',getdate(),'" + _userCode + "',getdate())"); } else { sbSql.Append("UPDATE [dbo].[WORK_PROCESS] SET [processNo] =@processNo,[processName] =@processName,[remark] =@remark,[isBack] =@isBack,[isStatus] =@isStatus,[description] =@description,[lastUpdateBy] ='" + _userCode + "',[lastUpdateDate] =getdate() where guid='"+guid.ToString()+"'"); } SqlParameter[] parameters = { new("@processNo", processNo), new("@processName", processName), new("@remark", remark), new("@isBack", isBack), new("@isStatus", isStatus), new("@description", description), }; try { rtnInt = DbHelperSQL.ExecuteSql(sbSql.ToString(), parameters); } catch (Exception ex) { LogHelper.Debug(ToString(), "EditModel error:" + ex.Message); rtnInt = (int)ReturnCode.Exception; return ReturnDto.QuickReturn("", ReturnCode.Exception, ex.Message); } if (rtnInt > 0) return ReturnDto.QuickReturn(guid, ReturnCode.Success, "操作成功!"); return ReturnDto.QuickReturn("", ReturnCode.Exception, "增加失败,请重试!"); } /// /// 读取 /// /// /// [RequestMethod(RequestMethods.POST)] [AllowAnonymous] public ReturnDto GetModel([FromBody] dynamic model) { dynamic m = new ExpandoObject(); var sbSql = new StringBuilder(); sbSql.Append("select top 1 * from WORK_PROCESS where 1=1 and guid='" + model.guid.ToString() + "' "); try { var dset = new DataSet(); dset = DbHelperSQL.Query(sbSql.ToString()); if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0) { var dr = dset.Tables[0].Rows[0]; m = dr.RowToDynamic(); return ReturnDto.QuickReturn(m, ReturnCode.Success, "读取成功!"); } return ReturnDto.QuickReturn(m, ReturnCode.Default, "读取失败!"); } catch (Exception ex) { LogHelper.Debug(ToString(), "GetModel error:" + ex.Message); return ReturnDto.QuickReturn(m, ReturnCode.Default, "读取失败!"); } } private int isChkOrUnChk(string guidList, int status) { var cont = 0; //cont = int.Parse(DbHelperSQL // .GetSingle("select count(1) from mes_Holiday where guid='" + // guidList + "' and isnull(check_status,0)=" + status + "") // .ToString()); return cont; } #endregion } }