cnf
2025-09-10 1b3db8f5683373dd8e179b006e7314783dd1f9db
WebApi/Gs.Wom/WorkService/WorkProController.cs
@@ -13,252 +13,232 @@
using static Gs.Toolbox.UtilityHelper;
namespace Gs.Wom.WorkService;
[ApiGroup(ApiGroupNames.BaseInfo)]
public class WorkProController : IRomteService
namespace Gs.Wom.WorkService
{
    private readonly IHttpContextAccessor _http;
    private readonly string _userCode, _userGuid, _orgFids;
    public WorkProController(IHttpContextAccessor httpContextAccessor)
    [ApiGroup(ApiGroupNames.BaseInfo)]
    public class WorkProController : IRomteService
    {
        _http = httpContextAccessor;
        (_userCode, _userGuid, _orgFids) =
            GetUserGuidAndOrgGuid(_http);
    }
        private readonly IHttpContextAccessor _http;
        private readonly string _userCode, _userGuid, _orgFids;
    #region
    /// <summary>
    ///     读取列表,支持分页
    /// </summary>
    /// <param name="model"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<PageList<dynamic>> 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
        public WorkProController(IHttpContextAccessor httpContextAccessor)
        {
            dset = DbHelperSQL.Query(sbSql.ToString());
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), "GetListPage error:" + ex.Message);
            return ReturnDto<PageList<dynamic>>.QuickReturn(
                default(PageList<dynamic>), ReturnCode.Exception, ex.Message);
            _http = httpContextAccessor;
            (_userCode, _userGuid, _orgFids) =
                GetUserGuidAndOrgGuid(_http);
        }
        var _pglist = new PageList<dynamic>
        #region
        /// <summary>
        ///     读取列表,支持分页
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [RequestMethod(RequestMethods.POST)]
        public ReturnDto<PageList<dynamic>> GetListPage([FromBody] PageQuery model)
        {
            total = 0,
            everyPageSize = 0,
            pages = 0,
            list = new List<dynamic>()
        };
        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<PageList<dynamic>>.QuickReturn(_pglist,
            ReturnCode.Success, "读取成功");
    }
            //(case a.isStatus when 1 then '正常' when - 1 then  '禁用'  else cast(a.isStatus as nvarchar(4))  end) as isStatusTxt
    /// <summary>
    ///     删除
    /// </summary>
    /// <param name="model"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<int?> DeleteModel([FromBody] JArray guidList)
    {
        var intArray = guidList.ToObject<string[]>();
        var sbGuid = new StringBuilder();
        foreach (var 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<int>.QuickReturn(default(int?),
                    ReturnCode.Exception, "删除失败,该信息已被审核!");
            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("delete from WORK_PROCESS ");
            sbSql.Append(" where guid in (select line from dbo.fn_split('" +
                         sbGuid + "',','))");
            var rows = DbHelperSQL.ExecuteSql(sbSql.ToString());
            rtnInt = rows;
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), "DeleteModel error:" + ex.Message);
            rtnInt = (int)ReturnCode.Exception;
            return ReturnDto<int>.QuickReturn(default(int?),
                ReturnCode.Exception, "删除失败," + ex.Message);
        }
        if (rtnInt > 0)
            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Success,
                "操作成功,共删除" + rtnInt + "条数据!");
        return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception,
            "删除失败,请重试!");
    }
    /// <summary>
    ///     增加
    /// </summary>
    /// <param name="model"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<string?> 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 isZsm = model.isZsm;
        string isTbm = model.isTbm;
        string description = model.description;
        int? rtnInt = (int)ReturnCode.Default;
        var sbSql = new StringBuilder();
        if (!CheckGuid(guid))
        {
            guid = Guid.NewGuid().ToString();
            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.PROC_NO+':'+a.PROC_NAME) as processNoAndName from MES_PROC_INFO 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(
                "INSERT INTO [dbo].[WORK_PROCESS] ([guid] ,[processNo] ,[processName] ,[remark] ,[isBack] ,[isStatus] ,[description] ,[createBy] ,[createDate] ,[lastUpdateBy] ,[lastUpdateDate],isZsm,isTbm)");
            sbSql.Append(" values( '" + guid +
                         "',@processNo,@processName,@remark,@isBack,@isStatus,@description,'" +
                         _userCode + "',getdate(),'" + _userCode +
                         "',getdate(),@isZsm,@isTbm)");
        }
        else
        {
            sbSql.Append(
                "UPDATE [dbo].[WORK_PROCESS]  SET [processNo] =@processNo,[processName] =@processName,[remark] =@remark,[isBack] =@isBack,[isStatus] =@isStatus,[description] =@description,[lastUpdateBy] ='" +
                _userCode +
                "',[lastUpdateDate] =getdate(),isZsm=@isZsm,isTbm=@isTbm where guid='" +
                guid + "'");
        }
        SqlParameter[] parameters =
        {
            new("@processNo", processNo),
            new("@processName", processName),
            new("@remark", remark),
            new("@isBack", isBack),
            new("@isStatus", isStatus),
            new("@description", description),
            new("@isZsm", isZsm),
            new("@isTbm", isTbm)
        };
        try
        {
            rtnInt = DbHelperSQL.ExecuteSql(sbSql.ToString(), parameters);
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), "EditModel error:" + ex.Message);
            rtnInt = (int)ReturnCode.Exception;
            return ReturnDto<string>.QuickReturn("", ReturnCode.Exception,
                ex.Message);
        }
        if (rtnInt > 0)
            return ReturnDto<string>.QuickReturn(guid, ReturnCode.Success,
                "操作成功!");
        return ReturnDto<string>.QuickReturn("", ReturnCode.Exception,
            "增加失败,请重试!");
    }
    /// <summary>
    ///     读取
    /// </summary>
    /// <param name="guid"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    [AllowAnonymous]
    public ReturnDto<ExpandoObject> 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
        {
                " select count(1) as intTotal  from MES_PROC_INFO a  where 1=1 " +
                keyWhere);
            var dset = new DataSet();
            dset = DbHelperSQL.Query(sbSql.ToString());
            if (dset != null && dset.Tables.Count > 0 &&
                dset.Tables[0].Rows.Count > 0)
            try
            {
                var dr = dset.Tables[0].Rows[0];
                m = dr.RowToDynamic();
                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
                    "读取成功!");
                dset = DbHelperSQL.Query(sbSql.ToString());
            }
            catch (Exception ex)
            {
                LogHelper.Debug(ToString(), "GetListPage error:" + ex.Message);
                return ReturnDto<PageList<dynamic>>.QuickReturn(default(PageList<dynamic>), ReturnCode.Exception, ex.Message);
            }
            var _pglist = new PageList<dynamic>
            {
                total = 0,
                everyPageSize = 0,
                pages = 0,
                list = new List<dynamic>()
            };
            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<PageList<dynamic>>.QuickReturn(_pglist,
                ReturnCode.Success, "读取成功");
        }
        /// <summary>
        ///     删除
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [RequestMethod(RequestMethods.POST)]
        public ReturnDto<int?> DeleteModel([FromBody] JArray guidList)
        {
            string[] intArray = guidList.ToObject<string[]>();
            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<int>.QuickReturn(default(int?),
                        ReturnCode.Exception, "删除失败,该信息已被审核!");
                System.Text.StringBuilder sbSql = new StringBuilder();
                sbSql.Append("delete from MES_PROC_INFO ");
                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<int>.QuickReturn(default(int?),
                    ReturnCode.Exception, "删除失败," + ex.Message);
            }
            if (rtnInt > 0)
                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Success,
                    "操作成功,共删除" + rtnInt + "条数据!");
            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception,
                "删除失败,请重试!");
        }
        /// <summary>
        ///     增加
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [RequestMethod(RequestMethods.POST)]
        public ReturnDto<string?> 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<string>.QuickReturn("", ReturnCode.Exception, ex.Message);
            }
            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
                "读取失败!");
            if (rtnInt > 0)
                return ReturnDto<string>.QuickReturn(guid, ReturnCode.Success, "操作成功!");
            return ReturnDto<string>.QuickReturn("", ReturnCode.Exception, "增加失败,请重试!");
        }
        catch (Exception ex)
        /// <summary>
        ///     读取
        /// </summary>
        /// <param name="guid"></param>
        /// <returns></returns>
        [RequestMethod(RequestMethods.POST)]
        [AllowAnonymous]
        public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
        {
            LogHelper.Debug(ToString(), "GetModel error:" + ex.Message);
            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
                "读取失败!");
            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<dynamic>.QuickReturn(m, ReturnCode.Success,
                        "读取成功!");
                }
                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
                    "读取失败!");
            }
            catch (Exception ex)
            {
                LogHelper.Debug(ToString(), "GetModel error:" + ex.Message);
                return ReturnDto<dynamic>.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;
        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
    }
    #endregion
}
}