/***********************
* 说明:单据审批业务处理接口
* 创建人:龚宇超
* 创建日期: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
/// 修改人:
///