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);
}
}