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.Http; using Microsoft.AspNetCore.Mvc; using static Gs.Toolbox.UtilityHelper; namespace Gs.JJGZ; [ApiGroup(ApiGroupNames.JJGZ)] public class MesJjgzScheduleController : IRomteService { private readonly IHttpContextAccessor _http; private readonly string _userCode, _userGuid, _orgFids; public MesJjgzScheduleController(IHttpContextAccessor httpContextAccessor) { _http = httpContextAccessor; (_userCode, _userGuid, _orgFids) = GetUserGuidAndOrgGuid(_http); } /// /// 读取列表,支持分页 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto> GetListPage([FromBody] dynamic model) { int currentPage = model.currentPage; int everyPageSize = model.everyPageSize; string sortName = model.sortName; string keyWhere = model.keyWhere; var _pglist = new PageList { total = 0, everyPageSize = 0, pages = 0, list = new List() }; try { // 构建分页查询SQL string orderBy = string.IsNullOrEmpty(sortName) ? "CREATE_DATE DESC" : $"{sortName} ASC"; // 查询总数 string countSql = $"SELECT COUNT(1) FROM MES_JJGZ_SCHEDULES WHERE 1=1 {keyWhere}"; var countResult = DbHelperSQL.GetSingle(countSql); int intTotal = countResult != null ? Convert.ToInt32(countResult) : 0; if (intTotal > 0) { // 分页查询数据 int offset = (currentPage - 1) * everyPageSize; string dataSql = $@" SELECT * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY {orderBy}) AS RowNum, * FROM MES_JJGZ_SCHEDULES WHERE 1=1 {keyWhere} ) AS T WHERE T.RowNum BETWEEN {offset + 1} AND {offset + everyPageSize}"; var dsMain = DbHelperSQL.Query(dataSql); if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0) { var pages = intTotal % everyPageSize != 0 ? intTotal / everyPageSize + 1 : intTotal / everyPageSize; _pglist.total = intTotal; _pglist.everyPageSize = everyPageSize; _pglist.pages = pages; var _dy = dsMain.Tables[0].TableToDynamicList(); _pglist.list = _dy; } } } catch (Exception ex) { LogHelper.Debug(ToString(), ex.Message); return ReturnDto>.QuickReturn(_pglist, ReturnCode.Exception, ex.Message); } return ReturnDto>.QuickReturn(_pglist, ReturnCode.Success, "读取成功"); } /// /// 读取 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto GetModel([FromBody] dynamic model) { string guid = model.guid.ToString(); dynamic m = new ExpandoObject(); string mainTable = "MES_JJGZ_SCHEDULES"; try { string sqlMain = $"SELECT * FROM {mainTable} WHERE GUID='{guid}'"; var dsMain = DbHelperSQL.Query(sqlMain); if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0) { var dr = dsMain.Tables[0].Rows[0]; m = dr.RowToDynamic(); } } catch (Exception ex) { LogHelper.Debug(ToString(), ex.Message); } if (m != null) return ReturnDto.QuickReturn(m, ReturnCode.Success, "读取成功!"); return ReturnDto.QuickReturn(m, ReturnCode.Default, "读取失败!"); } /// /// 提交审核反审核 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto EditModelSubmit([FromBody] dynamic mode) { string _guid = mode.guid; string _inFieldValue = mode.inFieldValue; dynamic m = new ExpandoObject(); m.outSum = -1; m.outMsg = ""; try { string sql = $"UPDATE MES_JJGZ_SCHEDULES SET CHECK_STATUS='{_inFieldValue}',CHECK_DATE = getdate(), CHECK_USER='{_userGuid}' WHERE GUID='{_guid}'"; int rows = DbHelperSQL.ExecuteSql(sql); m.outSum = rows; m.outMsg = rows > 0 ? "操作成功!" : "未更新任何数据"; } catch (Exception ex) { LogHelper.Debug(ToString(), "EditModelSubmit error:" + ex.Message); m.outMsg = ex.Message; m.outSum = -1; return ReturnDto.QuickReturn(m, ReturnCode.Default, ex.Message); } return ReturnDto.QuickReturn(m, ReturnCode.Success, "操作成功!"); } /// /// 增加或编辑实体 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto EditModel([FromBody] dynamic model) { Guid? guid = model.guid; //主键 string onWorkTime1 = model.onWorkTime1; // 上午上班时间 string offWorkTime1 = model.offWorkTime1; // 上午下班时间 string onWorkTime2 = model.onWorkTime2; // 下午上班时间 string offWorkTime2 = model.offWorkTime2; // 下午下班时间 string onWorkTime3 = model.onWorkTime3; // 加班上班时间 string offWorkTime3 = model.offWorkTime3; // 加班下班时间 string beginTime = model.beginTime; // 生效日期 string endTime = model.endTime; // 失效日期 string remark = model.remark; // 备注 dynamic mObj = new ExpandoObject(); mObj.outMsg = ""; mObj.outSum = -1; mObj.outGuid = ""; mObj.outNo = ""; using (var conn = new SqlConnection(DbHelperSQL.strConn)) { try { conn.Open(); if (CheckGuid(guid)) { // 编辑模式 string sql = $@"UPDATE MES_JJGZ_SCHEDULES SET OnWorkTime1='{onWorkTime1}', OffWorkTime1='{offWorkTime1}', OnWorkTime2='{onWorkTime2}', OffWorkTime2='{offWorkTime2}', OnWorkTime3='{onWorkTime3}', OffWorkTime3='{offWorkTime3}', BeginTime='{beginTime}', EndTime='{endTime}', Remark='{remark}' WHERE GUID='{guid}'"; int rows = DbHelperSQL.ExecuteSql(sql); mObj.outSum = rows; mObj.outGuid = guid.ToString(); mObj.outMsg = rows > 0 ? "操作成功!" : "未更新任何数据"; } else { // 新增模式 - 生成班次编号和GUID guid = Guid.NewGuid(); // 调用存储过程生成班次编号 using (var cmd = new SqlCommand("getOrderNo", conn)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@wntype", "SC(班次)")); cmd.Parameters.Add(new SqlParameter("@hNo", SqlDbType.NVarChar, 50) { Direction = ParameterDirection.Output }); cmd.ExecuteNonQuery(); string scheNo = cmd.Parameters["@hNo"].Value.ToString(); // 插入数据 string insertSql = $@" DECLARE @userBy NVARCHAR(20); SELECT TOP 1 @userBy=[ACCOUNT] FROM [dbo].[SYS_USER] WHERE guid='{_userGuid}'; INSERT INTO MES_JJGZ_SCHEDULES ( GUID, CREATE_BY, CREATE_DATE, ScheNo, OnWorkTime1, OffWorkTime1, OnWorkTime2, OffWorkTime2, OnWorkTime3, OffWorkTime3, BeginTime, EndTime, Remark, CHECK_STATUS ) VALUES ( '{guid}', @userBy, GETDATE(), '{scheNo}', '{onWorkTime1}', '{offWorkTime1}', '{onWorkTime2}', '{offWorkTime2}', '{onWorkTime3}', '{offWorkTime3}', '{beginTime}', '{endTime}', '{remark}', 0 )"; int rows = DbHelperSQL.ExecuteSql(insertSql); mObj.outSum = rows; mObj.outGuid = guid.ToString(); mObj.outNo = scheNo; mObj.outMsg = rows > 0 ? "操作成功!" : "未插入任何数据"; } } } catch (Exception ex) { LogHelper.Debug(ToString(), "EditModel error:" + ex.Message); mObj.outMsg = ex.Message; mObj.outSum = -1; } finally { conn.Close(); } } if (mObj.outSum <= 0) return ReturnDto.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg); return ReturnDto.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg); } /// /// 删除主表或明细 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto DeleteModel([FromBody] dynamic model) { int? rtnInt = (int)ReturnCode.Default; Guid? guid = model.guid; var _outMsg = ""; var _outSum = -1; try { if (CheckGuid(guid)) { string sql = $"DELETE FROM MES_JJGZ_SCHEDULES WHERE GUID='{guid}'"; _outSum = DbHelperSQL.ExecuteSql(sql); _outMsg = _outSum > 0 ? "删除成功!" : "未删除任何数据"; } else { _outMsg = "主键不能为空!"; _outSum = -1; } } catch (Exception ex) { LogHelper.Debug(ToString(), "DeleteModel error:" + ex.Message); _outMsg = ex.Message; _outSum = -1; } if (_outSum <= 0) return ReturnDto.QuickReturn(rtnInt, ReturnCode.Exception, _outMsg); return ReturnDto.QuickReturn(rtnInt, ReturnCode.Success, _outMsg); } }