/*********************** * 说明:单据审批业务处理接口 * 创建人:龚宇超 * 创建日期:2017-12-28 * 修改人: * 修改日期: * 修改备注: * 版本:1.0.0.0 ***********************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using Lskj.Core; using Lskj.Util; using System.Data.SqlClient; using Lskj.Model; using Lskj.Business; namespace Lskj.Business.Impl { /// /// Class BillAuditImpl. /// public class BillAuditImpl : BillImpl { /// /// 说明:单据确认 /// 创建人:龚宇超 /// 创建日期:2017-12-11 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 确认编号 /// System.Int32. public static int GetBillComfirm(string comfirmId) { string sqlValue = "select 1 from wms_billflowComfirm where id=@Id and comfirmFlag=0"; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@Id", comfirmId) }; return ExecSqlValue(sqlValue, parms); } /// /// 说明:确认审核 /// 创建人:龚宇超 /// 创建日期:2017-12-28 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 确认用户. /// 确认意见 /// 主键. /// System.Int32. public static int ConfirmAudit(string comfirmOper, string comfirmAdvice, string ModuleCode, string PrimaryValue) { int result = 0; if (BaseImpl.HasExistsTable("wms_BillflowComfirm")) { string sqlValue = string.Format("Update wms_BillflowComfirm set comfirmFlag=1,comfirmOper='{0}',comfirmDate='{1}',comfirmAdvice='{2}' where modid='{3}' and keyvalue='{4}' and operatorid={5} ", comfirmOper, DateTime.Now.ToString(), comfirmAdvice, ModuleCode, PrimaryValue, ERPInfo.Instance.UserId); result = ExecSqlValue(sqlValue); } return result; } /// /// 说明:创建来源单据Id /// 创建人:龚宇超 /// 创建日期:2017-12-28 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 主表. /// System.Int32. public static int CreateSourceBillId(string masterTable) { string sqlValue = string.Format("alter table {0} add divide_bill varchar(100) default('');", masterTable); return ExecSqlValue(sqlValue); } /// /// 说明:分单处理 /// 创建人:龚宇超 /// 创建日期:2017-01-09 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 处理返回消息. /// 主sql. /// 明细sql. /// 新单据编号 /// 模块编号. /// 单据Id /// System.Int32. public static int SpliteBill(out string msg, string masterSql, string detailSql, string billNo, string menuCode, string billDocumentId) { SqlParameter pMsg = new SqlParameter("@msg", SqlDbType.VarChar, 2000); pMsg.Direction = ParameterDirection.Output; SqlParameter returnValue = new SqlParameter("@return", SqlDbType.Int, 4); returnValue.Direction = ParameterDirection.ReturnValue; SqlParameter[] parms = { new SqlParameter("@mastersql",SqlDbType.VarChar,5000), new SqlParameter("@detailsql",SqlDbType.VarChar,5000), new SqlParameter("@Operatorid",SqlDbType.Int), new SqlParameter("@menuid",SqlDbType.VarChar,50), new SqlParameter("@billdocument_id",SqlDbType.VarChar,50), new SqlParameter("@newbilldocument_id",SqlDbType.VarChar,50), pMsg, returnValue }; parms[0].Value = masterSql; parms[1].Value = detailSql; parms[2].Value = ERPInfo.Instance.UserId; parms[3].Value = menuCode; parms[4].Value = billDocumentId; parms[5].Value = billNo; DataSet ds = SqlHelper.ExecuteDataSet(CommandType.StoredProcedure, "P_BillDivideSavePr_3", "billSave", parms); msg = pMsg.Value.ToString(); return Convert.ToInt32(returnValue.Value.ToString()); } /// /// 说明:获取页面属性 /// 创建人:龚宇超 /// 创建日期:2017-12-28 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 模块编号. /// DataRow. public static DataRow GetPubAuditProperty(string menuCode) { string field = string.Empty; DataTable dataTable = GetTableColumns("p_systembilltype"); if (dataTable.Columns.Contains("MuitlAuditFlag")) { field = ",MuitlAuditFlag"; } if (dataTable.Columns.Contains("BelowDetailLine")) { field += ",BelowDetailLine"; } if (dataTable.Columns.Contains("BelowDetailSql")) { field += ",BelowDetailSql"; } if (dataTable.Columns.Contains("MuitlAuditBackFlag")) { field += ",MuitlAuditBackFlag"; } if (dataTable.Columns.Contains("DisableAutomaticRefresh")) { field += ",DisableAutomaticRefresh"; } string sqlValue = string.Format("select mastertable,overbacksql,overbackkey,overbackoper,overbackcond,prefix,formkey,billPrintType {0} from p_systembilltype where typecode=@DllCoid", field); DataTable dtTable = SqlHelper.ExecuteDataTable(sqlValue, new SqlParameter[] { new SqlParameter("@DllCoid", menuCode) }); return dtTable.Rows.Count > 0 ? dtTable.Rows[0] : null; } /// /// 说明:单据跟踪 /// 创建人:龚宇超 /// 创建日期:2018-01-03 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 模块编号. /// 进度编号. /// DataRow. public static DataRow GetBillFlowData(string typeCode, string stepCode) { string sqlValue = "select * from P_systembillflow where typeCode=@typeCode and stepCode=@stepCode"; DataTable dtTable = SqlHelper.ExecuteDataTable(sqlValue, new SqlParameter[] { new SqlParameter("@typeCode", typeCode), new SqlParameter("@stepCode", stepCode) }); return dtTable.Rows.Count > 0 ? dtTable.Rows[0] : null; } /// /// 说明:获取单据BillInfo数据 /// 创建人:龚宇超 /// 创建日期:2017-01-04 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 模块编号 /// 单据类别 /// 进度编号 /// DataTable. public static DataRow GetBillFlowStep(string typeCode, string billType, string stepCode) { string sqlValue = "select * from p_systembillflowtypestep where typecode=@typeCode and billtype=@billType and stepcode=@stepCode"; DataTable dtTable = SqlHelper.ExecuteDataTable(sqlValue, new SqlParameter[] { new SqlParameter("@typeCode", typeCode), new SqlParameter("@billType", billType), new SqlParameter("@stepCode", stepCode) }); return dtTable.Rows.Count > 0 ? dtTable.Rows[0] : null; } /// /// 说明:获取操作用户 /// 创建人:龚宇超 /// 创建日期:2017-01-04 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 模块编号. /// 主键值 /// 步骤编码 /// DataRow. public static DataRow GetOperators(string typeCode, string paramaryValue,string stepcode) { DataTable dtTable = new DataTable(); if (SqlHelper.ExecuteDataTable("select object_id('wms_billflowoperex')").Rows.Count > 0 && int.Parse(SqlHelper.ExecuteScalar("select count(*) from sysobjects where id = object_id('wms_billflowoperex')")+"") >0) { string sqlValue = "select browsers,operators from wms_billflowOperex where modid=@DllCoid and keyvalue=@keyvalue and stepcode=@stepcode"; dtTable = SqlHelper.ExecuteDataTable(sqlValue, new SqlParameter[] { new SqlParameter("@DllCoid", typeCode), new SqlParameter("@keyvalue", paramaryValue) , new SqlParameter("@stepcode", stepcode) }); } return dtTable.Rows.Count > 0 ? dtTable.Rows[0] : null; } /// /// 说明:获取推送信息 /// 创建人:龚宇超 /// 创建日期:2017-01-10 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 主键值. /// 进度编号. /// DataRow. public static DataRow GetPushedOpers(string paramaryValue, string stepCode) { string sqlValue = "select operators,typeName menuname,'2'+CAST(b.id as varchar(10)) id from wms_billflowOper a,p_systembilltype b where a.modid=b.typeCode and keyvalue=@keyValue and stepcode=@stepCode and a.stepover=0"; DataTable dtTable = SqlHelper.ExecuteDataTable(sqlValue, new SqlParameter[] { new SqlParameter("@keyValue", paramaryValue), new SqlParameter("@stepCode", stepCode) }); return dtTable.Rows.Count > 0 ? dtTable.Rows[0] : null; } /// /// 说明:搜索已完成数据 /// 创建人:龚宇超 /// 创建日期:2017-12-28 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 审批模型. /// 取消标记. /// sql 拼接条件. /// DataTable. public static DataTable GetGridFinishData(BaseAccraditationModel model, bool cancelFlag, string cond) { string tmpsql = string.Empty; if (!string.IsNullOrEmpty(model.MenuCond)) { cond += string.Format(" and ({0}stepCode > {1} OR ({0}stepCode >= {1} and isnull({0}stepover,0)=1))", model.ColumnPrefix, model.MenuCond.Split(',').Last()); tmpsql = string.Format(@"select {0}Billdocument_Id as Billdocument_Id,convert(varchar(25),{0}Operatedate,120) as OperateDate, dbo.P_GetOperator({0}operatorid) as OperatorName,{0}stepCode as stepCode, convert(varchar(25),{0}AffirmDate,120) as AffirmDate,dbo.P_GetOperator({0}affirmer) as AffirmerName, case when 1=1 then (select top 1 operatorName from wms_billflowstep b where a.{0}Billdocument_Id=b.flowSourceKey and " + model.MenuCond.Split(',').Last() + @" = b.stepCode order by b.endTime desc) else a.{0}StepOverName end StepOverName, convert(varchar(25),case when ISNULL(a.{0}StepOverTime,'')='' then (select top 1 endTime from wms_billflowstep b where a.{0}Billdocument_Id=b.flowSourceKey and a.{0}stepCode-100 = b.stepCode order by b.endTime desc) else a.{0}StepOverTime end,120) StepOverTime," + (cancelFlag == true ? "case when isnull({0}cancelFlag,0)=1 then '关闭' else '正常' end " : "'正常'") + " as stepClosed " + "from " + model.BillTable + @" a where substring({0},1," + model.Prefix.Length.ToString() + ")='" + model.Prefix + "'", model.ColumnPrefix) + cond; } else { cond += " and isnull(" + model.ColumnPrefix + "stepover,0)=1 "; tmpsql = string.Format(@"select {0}Billdocument_Id as Billdocument_Id,convert(varchar(25),{0}Operatedate,120) as OperateDate, dbo.P_GetOperator({0}operatorid) as OperatorName,{0}stepCode as stepCode, convert(varchar(25),{0}AffirmDate,120) as AffirmDate,dbo.P_GetOperator({0}affirmer) as AffirmerName, {0}StepOverName as StepOverName,convert(varchar(25),{0}StepOverTime,120) as StepOverTime, " + (cancelFlag == true ? "case when isnull({0}cancelFlag,0)=1 then '关闭' else '正常' end " : "'正常'") + " as stepClosed " + "from " + model.BillTable + @" a where substring({0}billdocument_id,1," + model.Prefix.Length.ToString() + ")='" + model.Prefix + "'", model.ColumnPrefix) + cond; } if (!string.IsNullOrWhiteSpace(model.OverBackCond)) tmpsql = tmpsql + " and (" + ReplaceHelper.ReplaceUserInfo(model.OverBackCond) + ")"; if (!string.IsNullOrWhiteSpace(model.OverBackOper)) tmpsql = tmpsql + " and charindex('" + ERPInfo.Instance.UserName + ",','" + model.OverBackOper + ",')>0"; return SqlHelper.ExecuteDataTable(tmpsql); } /// /// 说明:获取单据BillInfo数据 /// 创建人:龚宇超 /// 创建日期:2017-01-04 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 模块编号 /// DataTable. public static DataTable GetBillInfoData(string menuCode) { string sqlValue = "select * from p_systembillinfo where typecode=@typeCode and isnull(isvisible,0)=0"; return SqlHelper.ExecuteDataTable(sqlValue, new SqlParameter[] { new SqlParameter("@typeCode", menuCode) }); } /// /// 说明:获取分单列 /// 创建人:龚宇超 /// 创建日期:2017-01-09 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 模块编号 /// 当前角色名. /// DataTable. public static DataTable GetSpareBillColumns(string menuCode, string operatorName) { string sqlValue = string.Format(@"SELECT isnull(CASE WHEN ISNULL(b.userList,'')='' AND ISNULL(a.PrivilegeView,'')<>'' THEN 0 ELSE width END,0) width, isnull(CASE WHEN ISNULL(c.userList,'')='' AND ISNULL(a.PrivilegeView,'')<>'' THEN 1 ELSE edited END,0) isEdited, a.fieldTypeId as fieldsqltag,a.lookupkeyfield as fieldsqlid,a.lookupresult as fieldsqlname,a.lookupsql as fieldsql,a.* FROM p_systembillDetail a LEFT JOIN ( SELECT userList,privTypeId from p_systemPrivilege b where modId = '{0}' AND CHARINDEX('{1}' + ',', userList + ',') > 0 ) b on CHARINDEX(CAST(b.privTypeId AS VARCHAR(5)) + ',',a.PrivilegeView + ',') > 0 LEFT JOIN ( SELECT TOP 1 userList,privTypeId FROM p_systemPrivilege WHERE modId = '{0}' AND CHARINDEX('{1}' + ',', USERLIST + ',') > 0 ) c ON CHARINDEX(CAST(c.privTypeId AS VARCHAR(5)) + ',',a.PrivilegeOper + ',') > 0 WHERE typeCode='{0}' and isnull(isVisible,0)=0 order by a.orderid asc", menuCode, operatorName); return SqlHelper.ExecuteDataTable(sqlValue); } /// /// 说明:获取分单历史 /// 创建人:龚宇超 /// 创建日期:2017-01-09 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 新单据编号 /// 表名 /// 单据编号. /// DataTable. public static DataTable GetSpareBillHistory(string billDocumentId, string table, string billId) { DataTable gridHistory = new DataTable(); string sqlValue = string.Format("select {0} from {1} where divide_bill='{2}'", billDocumentId, table, billId); DataTable dt = SqlHelper.ExecuteDataTable(sqlValue); string billDocumentNo = "{" + billDocumentId + "}"; string historysql = string.Empty; foreach (DataRow item in dt.Rows) { historysql = ReplaceHelper.ReplaceRowParam(item, billDocumentNo); DataTable dm = SqlHelper.ExecuteDataTable(historysql); gridHistory.Merge(dm); } return gridHistory; } /// /// 说明:设置billInfo动态列 /// 创建人:龚宇超 /// 创建日期:2017-01-09 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 模块编号 /// 角色名称. /// DataTable. public static DataTable SetBillInfoColumns(string menuCode, string operatorName) { string sqlValue = string.Format(@"SELECT isnull(CASE WHEN ISNULL(b.userList,'')='' AND ISNULL(a.PrivilegeView,'')<>'' THEN 0 ELSE width END,0) width, isnull(CASE WHEN ISNULL(c.userList,'')='' AND ISNULL(a.PrivilegeView,'')<>'' THEN 1 ELSE edited END,0) isEdited,a.* FROM p_PubRPSetDetailTab a LEFT JOIN ( SELECT userList,privTypeId from p_systemPrivilege b where modId = '{0}' AND CHARINDEX('{1}' + ',', userList + ',') > 0 ) b on CHARINDEX(CAST(b.privTypeId AS VARCHAR(5)) + ',',a.PrivilegeView + ',') > 0 LEFT JOIN ( SELECT TOP 1 userList,privTypeId FROM p_systemPrivilege WHERE modId = '{0}' AND CHARINDEX('{1}' + ',', USERLIST + ',') > 0 ) c ON CHARINDEX(CAST(c.privTypeId AS VARCHAR(5)) + ',',a.PrivilegeOper + ',') > 0 WHERE modid='{0}' and isnull(isVisible,0)=0 order by a.orderid asc", menuCode, operatorName); return SqlHelper.ExecuteDataTable(sqlValue); } /// /// 说明:获取单据BillInfo数据 /// 创建人:龚宇超 /// 创建日期:2017-01-04 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 模块编号 /// DataTable. public static DataTable GetBillMainInformation(string menuCode) { string sqlValue = "select fieldTypeId fieldsqltag,lookupResult fieldsqlname,lookupKeyField fieldsqlid,lookupSql fieldsql, * from p_systembillinfo where typecode=@typeCode and isnull(isvisible,0)=0"; return SqlHelper.ExecuteDataTable(sqlValue, new SqlParameter[] { new SqlParameter("@typeCode", menuCode) }); } /// /// 说明:获取有代理权限的人员 /// 创建人: /// 创建日期:2023-05-12 /// 修改人: ///