You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1688 lines
80 KiB

using ICSSoft.SendMail;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NFine.Code;
using NFine.Data.Extensions;
using NFine.Domain._03_Entity.SRM;
using NFine.Repository;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace NFine.Application.SRM
{
public class PerFormanceApp : RepositoryFactory<ICSVendor>
{
/// <summary>
/// 获取绩效类型管理
/// </summary>
/// <param name="queryJson"></param>
/// <param name="jqgridparam"></param>
/// <returns></returns>
public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
{
DataTable dt = new DataTable();
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"select
ID
,MITEMCODE
,MITEMNAME
,MITEMDESCRIPTION
,MITEMSCORE as MITEMSCORE
,WorkPoint
from ICSPERFTEMPLATEMITEM a
WHERE 1=1";
if (!string.IsNullOrWhiteSpace(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["WorkPoint"].ToString()))
{
sql += " and a.WorkPoint like '%" + queryParam["WorkPoint"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["MITEMCODE"].ToString()))
{
sql += " and a.MITEMCODE like '%" + queryParam["MITEMCODE"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["MITEMNAME"].ToString()))
{
sql += " and a.MITEMNAME like '%" + queryParam["MITEMNAME"].ToString() + "%' ";
}
}
if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
{
sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
}
//sql += " group by ID, MITEMCODE,MITEMNAME,MITEMDESCRIPTION,WorkPoint";
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public DataRow GetEMSCORE()
{
DataRow dr = null;
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" select distinct
100-Sum(MITEMSCORE)as MITEMSCORE
from ICSPERFTEMPLATEMITEM a
WHERE 1=1
";
dr = SqlHelper.GetDataRowBySql(sql);
return dr;
}
/// <summary>
/// 获取绩效打分
/// </summary>
/// <param name="queryJson"></param>
/// <param name="jqgridparam"></param>
/// <returns></returns>
//public DataTable GetPerFormanceMark(string queryJson, ref Pagination jqgridparam)
//{
// DataTable dt = new DataTable();
// var queryParam = queryJson.ToJObject();
// List<DbParameter> parameter = new List<DbParameter>();
// string sql = @"select DISTINCT
// a.ID,
// a.WorkPoint,
// VENDORCODE,
// b.VenName,
// MITEMCODE,
// MITEMNAME,
// SCORE,
// CONVERT(NVARCHAR(50),a.BeginDate,23) as BeginDate,
// CONVERT(NVARCHAR(50),a.EndDate,23) as EndDate,
// CHECKSTATUS,
// CREATEDATE,
// CREATETIME,
// CREATEUSER,
// MODIFIEDDATE,
// MODIFIEDTIME,
// MODIFIEDUSER,
// ADDITION1,
// ADDITION2
// from ICSPERFCHECKRESULT a
// LEFT JOIN ICSVendor b on a.VENDORCODE=b.VenCode AND a.WorkPoint=b.WorkPoint
// WHERE 1=1";
// if (!string.IsNullOrWhiteSpace(queryJson))
// {
// if (!string.IsNullOrWhiteSpace(queryParam["WorkPoint"].ToString()))
// {
// sql += " and a.WorkPoint like '%" + queryParam["WorkPoint"].ToString() + "%' ";
// }
// if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
// {
// sql += " and a.BeginDate > '" + queryParam["BeginDate"].ToString() + "' ";
// }
// if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
// {
// sql += " and a.EndDate < '" + queryParam["EndDate"].ToString() + "' ";
// }
// if (!string.IsNullOrWhiteSpace(queryParam["CREATEDATE"].ToString()))
// {
// sql += " and a.CREATEDATE = '" + queryParam["CREATEDATE"].ToString() + "' ";
// }
// if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
// {
// sql += " and a.VENDORCODE like '%" + queryParam["VenCode"].ToString() + "%' ";
// }
// if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
// {
// sql += " and b.cVenName like '%" + queryParam["VenName"].ToString() + "%' ";
// }
// if (!string.IsNullOrWhiteSpace(queryParam["CREATEUSER"].ToString()))
// {
// sql += " and a.CREATEUSER like '%" + queryParam["CREATEUSER"].ToString() + "%' ";
// }
// }
// if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
// {
// sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
// }
// return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
//}
/// <summary>
/// 获取绩效打分
/// </summary>
/// <param name="queryJson"></param>
/// <param name="jqgridparam"></param>
/// <returns></returns>
public DataTable GetPerFormanceMarkGrid(string queryJson, ref Pagination jqgridparam)
{
DataTable dt = new DataTable();
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"SELECT a.VENDORCODE
,b.VenName
,a.CHECKSTATUS
,a.CREATEUSER
,a.CREATEDATE
,SUM(a.SCORE)AS SCORE
,a.ADDITION1
,a.ADDITION2
,a.RatingAttachment
,a.WorkPoint
,a.PERFCode
,a.CHECKSTATUS as HIDDSTATUS
,a.ScoreUser
FROM ICSPERFCHECKRESULT a
LEFT JOIN dbo.ICSVendor b ON a.VENDORCODE=b.VenCode AND a.WorkPoint=b.WorkPoint
WHERE 1=1
";
if (!string.IsNullOrWhiteSpace(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
{
sql += " and a.CREATEDATE > '" + queryParam["BeginDate"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
{
sql += " and a.CREATEDATE < '" + queryParam["EndDate"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["WorkPoint"].ToString()))
{
sql += " and a.WorkPoint like '%" + queryParam["WorkPoint"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
{
sql += " and a.VENDORCODE like '%" + queryParam["VenCode"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
{
sql += " and b.cVenName like '%" + queryParam["VenName"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["ADDITION1"].ToString()))
{
sql += " and a.ADDITION1 like '%" + queryParam["ADDITION1"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["ADDITION2"].ToString()))
{
sql += " and a.ADDITION2 like '%" + queryParam["ADDITION2"].ToString() + "%' ";
}
}
if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
{
sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
}
//权限设置
if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
{
sql = SqlHelper.OrganizeByVendor_F_ParentId(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
}
sql += " GROUP BY a.VENDORCODE,b.VenName,a.CHECKSTATUS,a.CREATEUSER,a.CREATEDATE,a.ADDITION1,a.ADDITION2,a.RatingAttachment ,a.WorkPoint ,a.PERFCode,a.ScoreUser";
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public DataTable GetPerFormanceMarkGridByVendor(string queryJson, ref Pagination jqgridparam)
{
DataTable dt = new DataTable();
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"SELECT a.VENDORCODE
,b.VenName
,a.CHECKSTATUS
,a.CREATEUSER
,a.CREATEDATE
,SUM(a.SCORE)AS SCORE
,a.ADDITION1
,a.ADDITION2
,a.FileName
,a.WorkPoint
,a.PERFCode
,a.CHECKSTATUS as HIDDSTATUS
FROM ICSPERFCHECKRESULT a
LEFT JOIN dbo.ICSVendor b ON a.VENDORCODE=b.VenCode AND a.WorkPoint=b.WorkPoint
WHERE 1=1 and a.CHECKSTATUS='1'
";
if (!string.IsNullOrWhiteSpace(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
{
sql += " and a.CREATEDATE > '" + queryParam["BeginDate"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
{
sql += " and a.CREATEDATE < '" + queryParam["EndDate"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["WorkPoint"].ToString()))
{
sql += " and a.WorkPoint like '%" + queryParam["WorkPoint"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
{
sql += " and a.VENDORCODE like '%" + queryParam["VenCode"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
{
sql += " and b.cVenName like '%" + queryParam["VenName"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["ADDITION1"].ToString()))
{
sql += " and a.ADDITION1 like '%" + queryParam["ADDITION1"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["ADDITION2"].ToString()))
{
sql += " and a.ADDITION2 like '%" + queryParam["ADDITION2"].ToString() + "%' ";
}
}
if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
{
sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
}
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor") || NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "TempVendor")
{
sql += " and a.VENDORCODE in (SELECT VenCode FROM ICSVendor where VenName ='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserName + "')";
}
//权限设置
if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
{
sql = SqlHelper.OrganizeByVendor_F_ParentIdBYDZ(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
}
sql += " GROUP BY a.VENDORCODE,b.VenName,a.CHECKSTATUS,a.CREATEUSER,a.CREATEDATE,a.ADDITION1,a.ADDITION2,a.FileName ,a.WorkPoint ,a.PERFCode";
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public DataTable GetPerFormanceMarkByMain(ref Pagination jqgridparam, string objArr, string WorkPoint)
{
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" declare @sql varchar(8000)
SELECT DISTINCT b.VenCode as VENDORCODE,b.VenName AS VenName,a.FileName,b.VenPhone,a.MITEMCODE, ISNULL(a.SCORE,0) as CastPrice,SUMSCORE
into #Temp
FROM ICSPERFCHECKRESULT a
LEFT JOIN dbo.ICSVendor b ON a.VENDORCODE=b.VenCode AND a.WorkPoint=b.WorkPoint
where a.PERFCode='{0}' and a.WorkPoint='{1}'
select @sql=isnull(@sql+',','')+' ['+MITEMCODE+']'
from(select distinct MITEMCODE from #Temp)as a
set @sql='SELECT * FROM #Temp PIVOT(MAX(CastPrice) FOR MITEMCODE IN ('+@sql+'))a '
exec(@sql)
";
sql = string.Format(sql, objArr,WorkPoint);
DataTable dtr = SqlHelper.FindTablePageBySql_OtherTemp3(sql.ToString(), " " + "#Temp" + " ", " drop table #Temp", parameter.ToArray(), ref jqgridparam);
return dtr;
//return SqlServerHelper.FindTablePageBySql_OtherTemp(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public DataTable GetPerFormanceMarkByMainUpdate(ref Pagination jqgridparam, string objArr, string WorkPoint)
{
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" declare @sql varchar(8000)
SELECT DISTINCT b.VenCode as VENDORCODE,b.VenName AS VenName,a.RatingAttachment,b.VenPhone,a.MITEMCODE, ISNULL(a.SCORE,0) as CastPrice,SUMSCORE,a.RatingAttachment AS RatingAttachmenthidden,a.Rating
into #Temp
FROM ICSPERFCHECKRESULT a
LEFT JOIN dbo.ICSVendor b ON a.VENDORCODE=b.VenCode AND a.WorkPoint=b.WorkPoint
where a.PERFCode='{0}' and a.WorkPoint='{1}'
select @sql=isnull(@sql+',','')+' ['+MITEMCODE+']'
from(select distinct MITEMCODE from #Temp)as a
set @sql='SELECT * FROM #Temp PIVOT(MAX(CastPrice) FOR MITEMCODE IN ('+@sql+'))a '
exec(@sql)
";
sql = string.Format(sql, objArr, WorkPoint);
DataTable dtr = SqlHelper.FindTablePageBySql_OtherTemp3(sql.ToString(), " " + "#Temp" + " ", " drop table #Temp", parameter.ToArray(), ref jqgridparam);
return dtr;
//return SqlServerHelper.FindTablePageBySql_OtherTemp(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public DataTable GetPerFormanceMark(string BidCode, ref Pagination jqgridparam)
{
DataTable dt = new DataTable();
//var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"
declare @sql varchar(8000)
SELECT distinct d.BDID,a.InvCode,b.INVNAME,e.VenName as SupplierCode,isnull(d.CastPrice,0) as CastPrice,g.VendorFileName,g.BidCode,d.isCast
into #Temp
FROM ICSBidDocBD a
LEFT JOIN ICSBidDoc g on a.BidCode=g.BidCode and a.WorkPoint=g.WorkPoint
LEFT JOIN ICSINVENTORY b ON a.InvCode=b.InvCode and g.WorkPoint=b.WorkPoint
LEFT JOIN ICSBidInfo c ON c.BidCode = a.BidCode and b.WorkPoint=c.WorkPoint
LEFT JOIN ICSBidInfoDetail d ON d.InfoID = c.ID AND d.BDID = a.ID and c.WorkPoint=d.WorkPoint
LEFT JOIN ICSVendor e ON e.VenCode = c.SupplierCode and a.WorkPoint=e.WorkPoint
LEFT JOIN Sys_SRM_User f ON f.F_Account = e.cVenCode
where a.BidCode='{0}'
select @sql=isnull(@sql+',','')+' ['+SupplierCode+']'
from(select distinct SupplierCode from #Temp)as a
set @sql='SELECT *,'''' as ZBVendor FROM #Temp PIVOT(MAX(CastPrice) FOR SupplierCode IN ('+@sql+'))a Where a.BDID<>'''' and a.iscast<>0'
exec(@sql)
";
sql = string.Format(sql, BidCode);
DataTable dtr = SqlHelper.FindTablePageBySql_OtherTemp2(sql.ToString(), " " + "#Temp" + " ", " drop table #Temp", parameter.ToArray(), ref jqgridparam);
string name = "";
foreach (DataRow dr in dtr.Rows)
{
decimal qty = decimal.MaxValue;
foreach (DataColumn col in dtr.Columns)
{
if (col.Caption == "InvCode" || col.Caption == "ZBVendor" || col.Caption == "INVNAME" || col.Caption == "BDID" || col.Caption == "VendorFileName" || col.Caption == "BidCode" || col.Caption == "isCast")
continue;
if (Convert.ToDecimal(string.IsNullOrWhiteSpace(dr[col.Caption].ToString()) ? 0 : dr[col.Caption]) < qty && Convert.ToDecimal(string.IsNullOrWhiteSpace(dr[col.Caption].ToString()) ? 0 : dr[col.Caption]) > 0)
{
qty = Convert.ToDecimal(dr[col.Caption]);
name = col.Caption;
}
}
dr["ZBVendor"] = name;
}
return dtr;
//return SqlServerHelper.FindTablePageBySql_OtherTemp(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public DataTable GetPerFormanceMarkBYColumn(string BidCode)
{
string sql = @"SELECT MITEMCODE as ColCaption,MITEMNAME as ColFiledName FROM ICSPERFTEMPLATEMITEM";
sql = string.Format(sql, BidCode);
DataTable dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
/// <summary>
/// 修改时获取主表信息
/// </summary>
/// <param name="tmpID"></param>
/// <param name="WorkPoint"></param>
/// <returns></returns>
public DataRow GetList(string MITEMCODE, string WorkPoint)
{
DataRow dr = null;
string sql = string.Empty;
try
{
sql = @"SELECT * FROM ICSPERFTEMPLATEMITEM
WHERE MITEMCODE='" + MITEMCODE + "' and WorkPoint = '" + WorkPoint + "'";
dr = SqlHelper.GetDataRowBySql(sql);
return dr;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
/// <summary>
/// 创建绩效类型
/// </summary>
/// <param name="queryJson"></param>
/// <param name="ID"></param>
public void SubmitPERFTEMPLATEMItem(string queryJson, string ID)
{
try
{
DataTable dt = new DataTable();
List<DbParameter> parameter = new List<DbParameter>();
ICSPERFTEMPLATEMITEM[] list = JsonConvert.DeserializeObject<ICSPERFTEMPLATEMITEM[]>(queryJson);
string sql = string.Empty;
string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.Replace("'", "");
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
sql = "select * from ICSPERFTEMPLATEMITEM where MITEMCODE='" + list[0].MITEMCODE + "'and ID!='" + ID + "'";
dt = SqlCommandHelper.SQlReturnData(sql, cmd);
if (dt != null && dt.Rows.Count > 0)
{
throw new Exception("绩效考核类型已存在!");
}
foreach (var obj in list)
{
sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSPERFTEMPLATEMITEM WHERE ID=@ID)
BEGIN
INSERT INTO dbo.ICSPERFTEMPLATEMITEM
(ID
,WorkPoint
,MITEMCODE
,MITEMDESCRIPTION
,MITEMNAME
,MITEMSCORE
,CREATEDATE
,CREATETIME
,CREATEUSER
,MODIFIEDDATE
,MODIFIEDTIME
,MODIFIEDUSER
,ADDITION1
,ADDITION2
)
VALUES
(
NEWID()
,@WorkPoint
,@MITEMCODE
,@MITEMDESCRIPTION
,@MITEMNAME
,@MITEMSCORE
,GETDATE()
,CONVERT(varchar,GETDATE(),120)
,@CREATEUSER
,''
,''
,''
,''
,'')
END
ELSE
BEGIN
UPDATE dbo.ICSPERFTEMPLATEMITEM SET
MITEMCODE=@MITEMCODE
,MITEMDESCRIPTION=@MITEMDESCRIPTION
,MITEMNAME=@MITEMNAME
,MITEMSCORE=@MITEMSCORE
,MODIFIEDDATE=GETDATE()
,MODIFIEDTIME=CONVERT(varchar,GETDATE(),120)
,MODIFIEDUSER=@MODIFIEDUSER
WHERE ID=@ID
END";
SqlParameter[] sp_Detail = {
new SqlParameter("@ID",ID),
new SqlParameter("@MITEMCODE",obj.MITEMCODE),
new SqlParameter("@MITEMDESCRIPTION",obj.MITEMDESCRIPTION),
new SqlParameter("@MITEMNAME",obj.MITEMNAME),
new SqlParameter("@MITEMSCORE",obj.MITEMSCORE),
new SqlParameter("@CREATEUSER",UserCode),
//new SqlParameter("@MODIFIEDDATE",Muser),
new SqlParameter("@WorkPoint",obj.WorkPoint),
new SqlParameter("@MODIFIEDUSER",UserCode),
};
SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
}
cmd.Transaction.Commit();
}
catch (Exception ex)
{
cmd.Transaction.Rollback();
throw new Exception(ex.Message);
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
conn.Dispose();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
/// <summary>
/// 获取类别
/// </summary>
/// <returns></returns>
public DataTable GetICSPERFTEMPLATEMITEM(string queryJson)
{
var queryParam = queryJson.ToJObject();
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
string sql = @"
SELECT DISTINCT
ID,
a.MITEMCODE,
a.MITEMNAME
FROM dbo.ICSPERFTEMPLATEMITEM a WHERE 1=1
";
if (!string.IsNullOrWhiteSpace(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["MITEMCODE"].ToString()))
{
sql += " and a.MITEMCODE like '%" + queryParam["MITEMCODE"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["WorkPoint"].ToString()))
{
sql += " and a.WorkPoint = '" + queryParam["WorkPoint"].ToString() + "' ";
}
}
//string role = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
//if (role != "admin")
//{
// sql += " and a.WorkPoint in(" + WorkPoint + ")";
//}
DataTable dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
/// <summary>
/// 创建供应商与绩效类型
/// </summary>
/// <param name="queryJson"></param>
/// <returns></returns>
public void SubmitICSPERFTEMPLATEMITEM(string queryJson, string queryJson2)
{
try
{
DataTable dt = new DataTable();
List<DbParameter> parameter = new List<DbParameter>();
ICSPERFCHECKRESULT[] list = JsonConvert.DeserializeObject<ICSPERFCHECKRESULT[]>(queryJson);
ICSVendor[] VendorList = JsonConvert.DeserializeObject<ICSVendor[]>(queryJson2);
string sql = string.Empty;
string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.Trim(',');
string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
foreach (var obj in list)
{
foreach (var itemwh in VendorList)
{
sql = "select * from ICSPERFCHECKRESULT where MITEMCODE='" + obj.MITEMCODE + "' and VENDORCODE = '" + itemwh.VenCode + "'";
dt = SqlCommandHelper.SQlReturnData(sql, cmd);
if (dt != null && dt.Rows.Count > 0)
{
throw new Exception("供应商已经关联资料");
}
sql = @"INSERT INTO dbo.ICSPERFCHECKRESULT
(ID,
WorkPoint,
VENDORCODE,
MITEMCODE,
MITEMNAME,
SCORE,
BeginDate,
EndDate,
CHECKSTATUS,
CREATEDATE,
CREATETIME,
CREATEUSER,
MODIFIEDDATE,
MODIFIEDTIME,
MODIFIEDUSER,
ADDITION1,
ADDITION2
)
VALUES
(
NEWID(),
@WorkPoint,
@VENDORCODE,
@MITEMCODE,
@MITEMNAME,
@SCORE,
null,
null,
'NEW',
GETDATE(),
CONVERT(varchar,GETDATE(),120),
@CREATEUSER,
'',
'',
'',
'',
'')
";
SqlParameter[] sp_Detail = {
new SqlParameter("@WorkPoint",obj.WorkPoint),
new SqlParameter("@VENDORCODE",itemwh.VenCode),
new SqlParameter("@MITEMCODE",obj.MITEMCODE),
new SqlParameter("@MITEMNAME",obj.MITEMNAME),
new SqlParameter("@SCORE","0"),
new SqlParameter("@CREATEUSER",UserCode),
};
SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
}
}
cmd.Transaction.Commit();
}
catch (Exception ex)
{
cmd.Transaction.Rollback();
throw new Exception(ex.Message);
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
conn.Dispose();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
//删除认证项目
public string DeletePerFormanceType(string ID)
{
string sql = string.Empty;
string msg = "";
ID = ID.Substring(1, ID.Length - 2);
sql = @"delete FROM ICSPERFTEMPLATEMITEM where ID in ({0})";
sql = string.Format(sql, ID.TrimEnd(','));
try
{
SqlHelper.ExecuteNonQuery(sql);
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
/// <summary>
/// 保存打分
/// </summary>
/// <param name="queryJson"></param>
/// <param name="ID"></param>
public void SavePerFormance(string queryJson)
{
try
{
DataTable dt = new DataTable();
List<DbParameter> parameter = new List<DbParameter>();
ICSPERFCHECKRESULT[] list = JsonConvert.DeserializeObject<ICSPERFCHECKRESULT[]>(queryJson);
string sql = string.Empty;
string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.Replace("'", "");
foreach (var obj in list)
{
sql = @" UPDATE dbo.ICSPERFCHECKRESULT SET
BeginDate=@BeginDate
,EndDate=@EndDate
,SCORE=@SCORE
,MODIFIEDDATE=GETDATE()
,MODIFIEDTIME=CONVERT(varchar,GETDATE(),120)
,MODIFIEDUSER=@MODIFIEDUSER
WHERE ID=@ID";
SqlParameter[] sp_Detail = {
new SqlParameter("@ID",obj.ID),
new SqlParameter("@BeginDate",obj.BeginDate),
new SqlParameter("@EndDate",Convert.ToDateTime(obj.EndDate).ToString("yyyy-MM-dd")),
new SqlParameter("@SCORE",obj.SCORE),
new SqlParameter("@MODIFIEDUSER",UserCode),
};
SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
}
cmd.Transaction.Commit();
}
catch (Exception ex)
{
cmd.Transaction.Rollback();
throw new Exception(ex.Message);
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
conn.Dispose();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
/// <summary>
/// 获取绩效查询
/// </summary>
/// <param name="queryJson"></param>
/// <param name="jqgridparam"></param>
/// <returns></returns>
public DataTable GetPerFormanceMarkSearch(string queryJson, ref Pagination jqgridparam)
{
DataTable dt = new DataTable();
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"
if exists(select * from tempdb..sysobjects where id = object_id('tempdb..#jixiao'))
DROP TABLE #jixiao
if exists(select * from tempdb..sysobjects where id = object_id('tempdb..#Scores'))
DROP TABLE #Scores
SELECT SUM(a.SCORE*(b.MITEMSCORE/100))AS Qty ,a.VENDORCODE,'服务'AS type,c.VenName cVenName,a.WorkPoint
INTO #jixiao
FROM ICSPERFCHECKRESULT a
LEFT JOIN ICSPERFTEMPLATEMITEM b ON a.MITEMCODE=b.MITEMCODE AND a.MITEMNAME=b.MITEMNAME AND a.WorkPoint=b.WorkPoint
LEFT JOIN dbo.ICSVendor c ON a.VENDORCODE=c.VenCode AND a.WorkPoint=c.WorkPoint
WHERE a.BeginDate>='" + queryParam["BeginDate"].ToString() + "' AND a.EndDate<='" + queryParam["EndDate"].ToString() + "'GROUP BY a.VENDORCODE,c.VenName,a.WorkPoint ";
sql += @" UNION ALL
SELECT CAST( cast(count(aa.LOTNO)-COUNT(c.LOTNO) as DECIMAL(20,2) )/cast( count(aa.LOTNO)as DECIMAL(20,2))*100 AS DECIMAL(20,2)) as Qty,aa.VenCode,'质量' AS type,aa.VenName,aa.WorkPoint
FROM (SELECT a.VenCode,a.VenName,a.WorkPoint,d.LOTNO FROM ICSVendor a
LEFT JOIN dbo.ICSASN b ON a.VenCode=b.VenCode AND a.WorkPoint=b.WorkPoint
LEFT JOIN dbo.ICSASNDETAIL d ON b.ASNCode=d.ASNCode AND b.WorkPoint=d.WorkPoint
WHERE convert(varchar(10),d.MTIME,23)>='" + queryParam["BeginDate"].ToString() + @"' AND convert(varchar(10),d.MTIME,23)<='" + queryParam["EndDate"].ToString() + @"'
--where convert(varchar(10),d.createtime,23) BETWEEN '2022-09-01' and '2022-09-30'
)aa
left join (SELECT LotNO,WorkPoint,MTIME FROM ICSINSPECTION WHERE UnqualifiedQuantity<>0 GROUP BY LotNO,WorkPoint,MTIME ) c on aa.LOTNO=c.LotNO AND aa.WorkPoint=c.WorkPoint
GROUP BY aa.VenCode,aa.VenName,aa.WorkPoint";
sql += @" UNION ALL
SELECT CAST( cast( count(a.Quantity)as DECIMAL(20,2))/cast(count(b.Quantity) as DECIMAL(20,2) )*100 AS DECIMAL(20,2)) as Qty,
a.VenCode,'交期' AS type,c.VenName,a.WorkPoint
FROM dbo.ICSPurchaseOrder a
LEFT JOIN dbo.ICSDeliveryNotice b ON a.POID=b.POID AND a.WorkPoint=b.WorkPoint
LEFT JOIN dbo.ICSVendor c ON a.VenCode=c.VenCode AND a.WorkPoint=c.WorkPoint
WHERE b.MTIME>='" + queryParam["BeginDate"].ToString() + "' AND b.MTIME<='" + queryParam["EndDate"].ToString() + "' GROUP BY a.VenCode,c.VenName,a.WorkPoint ";
sql += @" SELECT DISTINCT CASE WHEN c.SL>2 THEN 100*((MIN(a.UnitPrice)+MAX(a.UnitPrice)-a.UnitPrice)/MAX(a.UnitPrice)) else 100 End
AS qty, a.VenCode,'成本'AS type,d.VenName,a.WorkPoint
FROM dbo.ICSPurchaseOrder a
LEFT JOIN dbo.ICSINVENTORY b ON a.InvCode=b.INVCODE AND a.WorkPoint=b.WorkPoint
LEFT JOIN (select count(b.VenCode)AS SL, b.InvCode FROM(SELECT InvCode,VenCode from ICSPurchaseOrder group by InvCode,VenCode) b GROUP BY b.InvCode) c ON a.INVCODE=c.INVCODE
LEFT JOIN dbo.ICSVendor d ON a.VenCode=d.VenCode AND a.WorkPoint=d.WorkPoint
WHERE a.CreateDateTime>='" + queryParam["BeginDate"].ToString() + "' AND a.CreateDateTime<='" + queryParam["EndDate"].ToString() + "'GROUP BY a.VenCode,b.INVCODE, c.SL,a.UnitPrice,d.VenName,a.WorkPoint";
sql += @"
SELECT a.VENDORCODE,SUM(a.Qty*(isnull(b.TARGETSCORE,0)/100))AS Sacor,a.WorkPoint INTO #Scores FROM #jixiao a LEFT JOIN ICSPERFNORMALTARGET b ON a.type=b.NORMALTARGETCATEGORY WHERE b.EffDate>='" + queryParam["BeginDate"].ToString() + "' AND b.DisDate<='" + queryParam["EndDate"].ToString() + "' GROUP BY a.VENDORCODE,a.WorkPoint";
sql += @"
SELECT t.cVenName,t.VENDORCODE, ISNULL(t.服务,0)AS 服务, ISNULL(t.质量,0)AS 质量 ,ISNULL(t.交期,0)AS 交期,ISNULL( t.成本,0)AS 成本
into ##SUMCount FROM #jixiao
PIVOT (
SUM(qty) FOR type IN (服务,成本, 交期, 质量)
)AS T
SELECT a.cVenName,a.VENDORCODE,a.服务,a.质量,a.交期,a.成本,isnull(b.Sacor,0)Sacor,b.WorkPoint INTO ##SUMCounts FROM ##SUMCount a LEFT JOIN #Scores b ON a.VENDORCODE=b.VENDORCODE WHERE 1=1
SELECT * from ##SUMCounts WHERE 1=1
";
if (!string.IsNullOrWhiteSpace(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["WorkPoint"].ToString()))
{
sql += " and WorkPoint like '%" + queryParam["WorkPoint"].ToString() + "%' ";
}
//if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
//{
// sql += " and a.BeginDate > '" + queryParam["BeginDate"].ToString() + "' ";
//}
//if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
//{
// sql += " and a.EndDate < '" + queryParam["EndDate"].ToString() + "' ";
//}
if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
{
sql += " and VENDORCODE like '%" + queryParam["VenCode"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
{
sql += " and cVenName like '%" + queryParam["VenName"].ToString() + "%' ";
}
}
if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
{
sql += " and WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
}
sql = string.Format(sql);
return SqlHelper.FindTablePageBySql_OtherTemps(sql.ToString(), " " + "##SUMCounts" + " ", "DROP TABLE ##SUMCount;DROP TABLE ##SUMCounts", parameter.ToArray(), ref jqgridparam);
}
public DataTable GetPerFormanceTarget(string queryJson, ref Pagination jqgridparam)
{
DataTable dt = new DataTable();
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"SELECT
ID,
WorkPoint,
NORMALTARGETCATEGORY ,
NORMALTARGETValue,
TARGETSCORE,
CONVERT(NVARCHAR(50),EffDate,23) as EffDate,
CONVERT(NVARCHAR(50),DisDate,23) as DisDate,
REMARK,
CREATEDATE,
CREATETIME,
CREATEUSER,
MODIFIEDDATE,
MODIFIEDTIME,
MODIFIEDUSER,
ADDITION1,
ADDITION2
FROM ICSPERFNORMALTARGET WHERE 1=1";
if (!string.IsNullOrWhiteSpace(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["NORMALTARGETCATEGORY"].ToString()))
{
sql += " and NORMALTARGETCATEGORY like '%" + queryParam["NORMALTARGETCATEGORY"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
{
sql += " and EffDate > '" + queryParam["BeginDate"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
{
sql += " and DisDate <'" + queryParam["EndDate"].ToString() + "' ";
}
}
if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
{
sql += " and WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
}
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
/// <summary>
/// 修改时获取主表信息
/// </summary>
/// <param name="tmpID"></param>
/// <param name="WorkPoint"></param>
/// <returns></returns>
public DataRow GetPerFormanceTargetAdd(string ID)
{
DataRow dr = null;
string sql = string.Empty;
try
{
sql = @"SELECT * FROM ICSPERFNORMALTARGET
WHERE ID='" + ID + "'";
dr = SqlHelper.GetDataRowBySql(sql);
return dr;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
/// <summary>
/// 创建绩效权值
/// </summary>
/// <param name="queryJson"></param>
/// <param name="ID"></param>
public void SubmitPerFormanceTarget(string queryJson, string ID)
{
try
{
DataTable dt = new DataTable();
List<DbParameter> parameter = new List<DbParameter>();
ICSPERFNORMALTARGET[] list = JsonConvert.DeserializeObject<ICSPERFNORMALTARGET[]>(queryJson);
string sql = string.Empty;
string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.Replace("'", "");
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
//sql = "select * from ICSPERFNORMALTARGET where MITEMCODE='" + list[0].MITEMCODE + "'and ID!='" + ID + "'";
//dt = SqlCommandHelper.SQlReturnData(sql, cmd);
//if (dt != null && dt.Rows.Count > 0)
//{
// throw new Exception("绩效考核类型已存在!");
//}
foreach (var obj in list)
{
sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSPERFNORMALTARGET WHERE ID=@ID)
BEGIN
INSERT INTO dbo.ICSPERFNORMALTARGET
(ID
,WorkPoint
,NORMALTARGETCATEGORY
,NORMALTARGETValue
,TARGETSCORE
,EffDate
,DisDate
,REMARK
,CREATEDATE
,CREATETIME
,CREATEUSER
,MODIFIEDDATE
,MODIFIEDTIME
,MODIFIEDUSER
,ADDITION1
,ADDITION2
)
VALUES
(
NEWID()
,@WorkPoint
,@NORMALTARGETCATEGORY
,@NORMALTARGETValue
,@TARGETSCORE
,@EffDate
,@DisDate
,@REMARK
,GETDATE()
,CONVERT(varchar,GETDATE(),120)
,@CREATEUSER
,''
,''
,''
,''
,'')
END
ELSE
BEGIN
UPDATE dbo.ICSPERFNORMALTARGET SET
NORMALTARGETValue=@NORMALTARGETValue
,TARGETSCORE=@TARGETSCORE
,EffDate=@EffDate
,DisDate=@DisDate
,REMARK=@REMARK
,MODIFIEDDATE=GETDATE()
,MODIFIEDTIME=CONVERT(varchar,GETDATE(),120)
,MODIFIEDUSER=@MODIFIEDUSER
WHERE ID=@ID
END";
SqlParameter[] sp_Detail = {
new SqlParameter("@NORMALTARGETCATEGORY",obj.NORMALTARGETCATEGORY),
new SqlParameter("@NORMALTARGETValue",obj.NORMALTARGETValue),
new SqlParameter("@TARGETSCORE",obj.TARGETSCORE),
new SqlParameter("@EffDate",obj.EffDate),
new SqlParameter("@DisDate",obj.DisDate),
new SqlParameter("@REMARK",obj.REMARK),
new SqlParameter("@CREATEUSER",UserCode),
new SqlParameter("@MODIFIEDUSER",UserCode),
new SqlParameter("@ID",ID),
new SqlParameter("@WorkPoint",obj.WorkPoint),
};
SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
}
cmd.Transaction.Commit();
}
catch (Exception ex)
{
cmd.Transaction.Rollback();
throw new Exception(ex.Message);
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
conn.Dispose();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
public string DeletePerFormance(string ID)
{
ID = ID.Substring(1, ID.Length - 2).TrimEnd(',');
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string msg = "";
string sql = string.Format(@"DELETE
FROM dbo.ICSPERFCHECKRESULT
WHERE ID IN ({0}) ", ID);
try
{
SqlHelper.ExecuteNonQuery(sql);
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
public decimal GetScore(string WorkPoint)
{
decimal SumScore = 0;
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" select distinct
Sum(MITEMSCORE)as MITEMSCORE
from ICSPERFTEMPLATEMITEM a
WHERE 1=1 and WorkPoint='" + WorkPoint + "'";
DataTable dt = SqlHelper.GetDataTableBySql(sql);
if (dt.Rows.Count > 0)
{
SumScore = Convert.ToDecimal(dt.Rows[0]["MITEMSCORE"].ToString());
}
return SumScore;
}
public string GetScoreByTarget(string EffDate, string DisDate)
{
string SumScore = "";
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"select distinct
ISNULL(Sum(TARGETSCORE),0)as MITEMSCORE
from ICSPERFNORMALTARGET a
where '" + EffDate + "' between CONVERT(varchar(12) ,EffDate, 23) and CONVERT(varchar(12) ,DisDate, 23) AND '" + DisDate + "' between CONVERT(varchar(12) ,EffDate, 23) and CONVERT(varchar(12) ,DisDate, 23)";
DataTable dt = SqlHelper.GetDataTableBySql(sql);
if (dt.Rows.Count > 0)
{
SumScore = dt.Rows[0]["MITEMSCORE"].ToString();
}
return SumScore;
}
public DataRow GetEMSCOREByTarget(string EffDate, string DisDate)
{
DataRow dr = null;
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" select distinct
100-ISNULL(Sum(TARGETSCORE),0)as MITEMSCORE
from ICSPERFNORMALTARGET a
where '" + EffDate + "' between CONVERT(varchar(12) ,EffDate, 23) and CONVERT(varchar(12) ,DisDate, 23) AND '" + DisDate + "' between CONVERT(varchar(12) ,EffDate, 23) and CONVERT(varchar(12) ,DisDate, 23)";
dr = SqlHelper.GetDataRowBySql(sql);
return dr;
}
public string DeleteICSPERFCHECKRESULT(string ID)
{
ID = ID.TrimStart('"').TrimEnd('"').TrimEnd(',');
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string msg = "";
string sql = string.Format(@"DELETE
FROM dbo.ICSPERFCHECKRESULT
WHERE ID IN ('{0}') ", ID);
try
{
SqlHelper.ExecuteNonQuery(sql);
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
public void SaveFormTiJiaoZB(string arrayShellFabricDetail,string Type)
{
string sql = string.Empty;
string DoCode = string.Empty;
string userCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
try
{
JArray res = (JArray)JsonConvert.DeserializeObject(arrayShellFabricDetail);
if (Type == "1")
{
foreach (var item in res)
{
JObject jo = (JObject)item;
string Issql = @"SELECT * from ICSPERFCHECKRESULT WHERE VENDORCODE='" + jo["VENDORCODE"].ToString() + "' and WorkPoint='" + jo["WorkPoint"].ToString() + "' and ADDITION1='" + jo["Year"].ToString() + "' and ADDITION2='" + jo["Moth"].ToString() + "'";
DataTable dt = SqlHelper.GetDataTableBySql(Issql);
if (dt.Rows.Count > 0)
{
throw new Exception("打分供应商" + jo["VENDORCODE"].ToString() + ",年份" + jo["Year"].ToString() + "月份" + jo["Moth"].ToString() + " 已打分!");
}
JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
string Pre = "PERF" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM") + DateTime.Now.ToString("dd");
string PERFCode = GetSerialCode(jo["WorkPoint"].ToString(), "ICSBidDoc", "BidCode", Pre, 3);
foreach (var detail in resdetail)
{
sql += @"INSERT INTO dbo.ICSPERFCHECKRESULT
(ID,WorkPoint,VENDORCODE,MITEMCODE,MITEMNAME,SCORE,ADDITION1,ADDITION2
,CHECKSTATUS,CREATEDATE,CREATETIME,CREATEUSER,
MODIFIEDDATE,MODIFIEDTIME,MODIFIEDUSER,SUMSCORE
,FileName,FilePath,Comment,PERFCode,RatingAttachment,Rating,PoOrgName,ScoreUser
)
VALUES
( NEWID(),'" + jo["WorkPoint"].ToString() + "','" + jo["VENDORCODE"].ToString() + "','" + detail["colName"].ToString() + "','" + detail["collable"].ToString() + @"','" + detail["colValue"].ToString() + @"'
,'" + jo["Year"].ToString() + "','" + jo["Moth"].ToString() + "',0,'" + DateTime.Now.ToString("yyyy-MM-dd") + "','" + DateTime.Now.ToString("yyyy-MM-dd") + "','" + userCode + @"'
,'','','','" + jo["SUMSCORE"].ToString() + @"'
,'','','" + jo["Comment"].ToString() + "','" + PERFCode + "','" + jo["RatingAttachment"].ToString() + "','" + jo["Rating"].ToString() + "','" + jo["PoOrgName"].ToString() + "', '" + jo["ScoreUser"].ToString() + "')";
}
}
}
else
{
foreach (var item in res)
{
JObject jo = (JObject)item;
JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
foreach (var detail in resdetail)
{
sql += @"UPDATE dbo.ICSPERFCHECKRESULT SET SCORE='" + detail["colValue"].ToString() + "',ADDITION1='" + jo["Year"].ToString() + "',ADDITION2='" + jo["Moth"].ToString() + "',SUMSCORE='"+ jo["SUMSCORE"].ToString() + "',Comment='"+ jo["Comment"].ToString() + "',RatingAttachment='"+ jo["RatingAttachment"].ToString() + "',Rating='"+ jo["Rating"].ToString() + "',PoOrgName='"+ jo["PoOrgName"].ToString() + "',ScoreUser='"+ jo["ScoreUser"].ToString() + "' WHERE PERFCode='"+ jo["objArr"].ToString() + "' and VENDORCODE='"+ jo["VENDORCODE"].ToString() + "' and MITEMCODE='"+ detail["colName"].ToString() + "'";
}
}
}
SqlHelper.CmdExecuteNonQueryLi(sql);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
public void SaveFormMarkMaintenance(string queryJson)
{
string sql = string.Empty;
string DoCode = string.Empty;
string userCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
try
{
var queryParam = queryJson.ToJObject();
if (Convert.ToDecimal(queryParam["SUMSCORE"].ToString()) > 80)
{
sql += "Update ICSPERFCHECKRESULT set CHECKSTATUS='5',Rating='{0}',VendorRating='{1}' where PERFCode='{2}'";
}
else
{
sql += "Update ICSPERFCHECKRESULT set CHECKSTATUS='3',Rating='{0}',VendorRating='{1}' where PERFCode='{2}'";
}
sql = string.Format(sql, queryParam["CGComment"].ToString(), queryParam["CYSComment"].ToString(), queryParam["objArr"].ToString());
SqlHelper.CmdExecuteNonQueryLi(sql);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
public void SaveFormOK(string queryJson)
{
string sql = string.Empty;
string DoCode = string.Empty;
string userCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
try
{
string wheresql = "(";
string[] id = queryJson.Split(',');
for (int i = 0; i < id.Length; i++)
{
wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
}
wheresql = wheresql.Trim(',') + ")";
sql += "Update ICSPERFCHECKRESULT set CHECKSTATUS='4' where PERFCode in {0}";
sql = string.Format(sql, wheresql);
SqlHelper.CmdExecuteNonQueryLi(sql);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
public void SaveFormNG(string queryJson)
{
string sql = string.Empty;
string DoCode = string.Empty;
string userCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
try
{
string wheresql = "(";
string[] id = queryJson.Split(',');
for (int i = 0; i < id.Length; i++)
{
wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
}
wheresql = wheresql.Trim(',') + ")";
sql += "Update ICSPERFCHECKRESULT set CHECKSTATUS='5' where PERFCode in {0} ";
sql = string.Format(sql, wheresql);
SqlHelper.CmdExecuteNonQueryLi(sql);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
{
string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
}
/// <summary>
/// 发布打分
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
public string PERFPublish(string json)
{
string msg = string.Empty;
try
{
string wheresql = "(";
string[] id = json.Split(',');
for (int i = 0; i < id.Length; i++)
{
wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
}
wheresql = wheresql.Trim(',') + ")";
//发送邮件通知供应商
string MailOpen = ConfigurationManager.ConnectionStrings["MailOpen"].ConnectionString;
if (MailOpen == "true")
{
string SendHost = ConfigurationManager.ConnectionStrings["SendHost"].ConnectionString;
string StrSendPort = ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString;
int SendPort = 25;
if (!string.IsNullOrEmpty(StrSendPort))
SendPort = Convert.ToInt32(ConfigurationManager.ConnectionStrings["SendPort"].ConnectionString);
string SendDisplayName = ConfigurationManager.ConnectionStrings["SendDisplayName"].ConnectionString;
string SendAddress = ConfigurationManager.ConnectionStrings["SendAddress"].ConnectionString;
string SendPassword = ConfigurationManager.ConnectionStrings["SendPassword"].ConnectionString;
string sqlEmail = @"SELECT DISTINCT F_EMail,VenDorCode,F_RealName,a.PERFCode,SUM(a.SCORE) AS SCORE
,a.ADDITION1,a.ADDITION2
FROM ICSPERFCHECKRESULT a
inner JOIN sys_SRM_User b ON a.VENDORCODE=b.F_VenCode and a.workpoint=b.F_Location
where PERFCode in " + wheresql + @"
GROUP BY F_EMail,VenDorCode,F_RealName,a.PERFCode,a.ADDITION1,a.ADDITION2
";
DataTable dt = SqlHelper.GetDataTableBySql(sqlEmail);
foreach (DataRow dr in dt.Rows)
{
decimal SCORE = Convert.ToDecimal(dr["SCORE"].ToString());
string cVenCode = dr["VenDorCode"].ToString();
string TOAddress = dr["F_Email"].ToString();
string ADDITION1 = dr["ADDITION1"].ToString();
string ADDITION2 = dr["ADDITION2"].ToString();
string[] Partint = TOAddress.Split(';');
if (SCORE < 80)
{
if (!string.IsNullOrEmpty(TOAddress))
{
foreach (var p in Partint)
{
string CCAddress = "";
string Subject = "有来自佑伦SRM平台新发布的绩效打分信息";
bool isBodyHtml = false;
string F_RealName = dr["F_RealName"].ToString();
//string StarTime = dr["StarTime"].ToString();
//string EndTime = dr["EndTime"].ToString();
string PERFCode = dr["PERFCode"].ToString();
string NowDate = DateTime.Now.GetDateTimeFormats('D')[0].ToString();
string body = F_RealName + ":";
body += " \r\n\r\n\r\n " + cVenCode + "," + ADDITION1 + "年" + ADDITION2 + "月评分低于标准总分(80分)请到SRM系统及时处理!!";
body += "\r\n";
body += " 顺颂商祺!";
body += "\r\n";
body += " 佑伦真空设备科技有限公司";
body += "\r\n";
body += " " + NowDate;
string StrConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
if (!string.IsNullOrEmpty(TOAddress))
{
try
{
ICSSendMail.SendEmail(StrConn, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, p.ToString(), CCAddress, Subject, isBodyHtml, body);
}
catch (Exception ex)
{
throw new Exception("供应商:" + cVenCode + "邮件发送失败! \r\n" + ex.Message);
}
}
else
{
msg = "请先维护供应商:" + F_RealName + "邮箱!";
}
}
}
}
}
}
string sql = "update ICSPERFCHECKRESULT set CHECKSTATUS='1' where PERFCode in " + wheresql;
int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
if (count > 0)
{
msg = "发布成功!";
}
else
{
msg = "发布失败!";
}
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
public string PERFClose(string json)
{
try
{
string wheresql = "(";
string[] id = json.Split(',');
for (int i = 0; i < id.Length; i++)
{
wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
}
wheresql = wheresql.Trim(',') + ")";
string sql = "update ICSPERFCHECKRESULT set CHECKSTATUS='2' where PERFCode in " + wheresql;
int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
if (count > 0)
{
return "关闭成功!";
}
else
{
return "关闭失败!";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
public string PERFdelete(string json)
{
string msg = string.Empty;
try
{
string wheresql = "(";
string[] id = json.Split(',');
for (int i = 0; i < id.Length; i++)
{
wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
}
wheresql = wheresql.Trim(',') + ")";
string sql = "delete from ICSPERFCHECKRESULT where PERFCode in" + wheresql;
int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
if (count < 0)
{
msg = "删除失败!";
}
}
catch (Exception ex)
{
return ex.Message + " 删除失败!";
}
return msg;
}
public DataTable GetPerFormanceMarkInfo(string BidCode, string WorkPoint)
{
string sql = @"SELECT WorkPoint,CREATEUSER,ADDITION1,ADDITION2,Comment,CREATEDATE,
Rating,VendorRating,ScoreUser,PoOrgName
FROM ICSPERFCHECKRESULT
WHERE 1=1
and PERFCode='" + BidCode + "' and WorkPoint='" + WorkPoint + "'";
return Repository().FindTableBySql(sql.ToString());
}
public string SetData_PR(string savePath)
{
string msg = "";
string connString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
string PERFCode = string.Empty;
string Vencode = string.Empty;
//数据获取
try
{
string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string sql = "";
int rowNO = 0;
DataTable data = FileToExcel.ExcelToTable(savePath);
var parent = data.DefaultView.ToTable(true, "供应商编码", "供应商名称", "评语", "考核类别", "考核类别名称", "分值","总分", "打分年", "打分月", "组织", "采购组织", "打分人", "打分日期", "备注");
foreach (DataRow dr in parent.Rows)
{
rowNO = rowNO + 1;
string GUID = Guid.NewGuid().ToString();
if (string.IsNullOrWhiteSpace(dr["供应商编码"].ToString()))
throw new Exception("供应商编码不能为空!");
if (string.IsNullOrWhiteSpace(dr["供应商名称"].ToString()))
throw new Exception("供应商名称不能为空!");
if (string.IsNullOrWhiteSpace(dr["考核类别"].ToString()))
throw new Exception("考核类别不能为空!");
if (string.IsNullOrWhiteSpace(dr["考核类别名称"].ToString()))
throw new Exception("考核类别名称不能为空!");
if (string.IsNullOrWhiteSpace(dr["分值"].ToString()))
throw new Exception("分值不能为空!");
if (string.IsNullOrWhiteSpace(dr["总分"].ToString()))
throw new Exception("总分不能为空!");
if (string.IsNullOrWhiteSpace(dr["打分年"].ToString()))
throw new Exception("打分年不能为空!");
if (string.IsNullOrWhiteSpace(dr["打分月"].ToString()))
throw new Exception("打分月不能为空!");
if (string.IsNullOrWhiteSpace(dr["组织"].ToString()))
throw new Exception("组织不能为空!");
if (string.IsNullOrWhiteSpace(dr["采购组织"].ToString()))
throw new Exception("采购组织不能为空!");
string ishave = ISHave(dr["供应商编码"].ToString());
if (ishave == "1")
{
msg += "供应商编码" + dr["供应商编码"].ToString() + "不存在!";
continue;
}
else
{
if (Vencode != dr["供应商编码"].ToString())
{
string Pre = "PERF" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM") + DateTime.Now.ToString("dd");
PERFCode = GetSerialCode(dr["组织"].ToString(), "ICSBidDoc", "BidCode", Pre, 3);
}
sql = @"
INSERT INTO dbo.ICSPERFCHECKRESULT( ID,VENDORCODE,MITEMCODE,MITEMNAME,SCORE,CHECKSTATUS,CREATEDATE,CREATETIME,
CREATEUSER,ADDITION1,ADDITION2,SUMSCORE,Comment,PERFCode,Rating,ScoreUser,WorkPoint,PoOrgName,MODIFIEDDATE,MODIFIEDTIME,MODIFIEDUSER)
VALUES ( @ID,@VENDORCODE,@MITEMCODE,@MITEMNAME,@SCORE,@CHECKSTATUS,@CREATEDATE, @CREATETIME,@CREATEUSER,@ADDITION1, @ADDITION2,
@SUMSCORE,@Comment,@PERFCode,@Rating,@ScoreUser,@WorkPoint,@PoOrgName
,@MODIFIEDDATE,@MODIFIEDTIME,@MODIFIEDUSER)";
SqlParameter[] sp_BD = {
new SqlParameter("@ID",GUID),
new SqlParameter("@VENDORCODE",dr["供应商编码"].ToString()),
new SqlParameter("@MITEMCODE",dr["考核类别"].ToString()),
new SqlParameter("@MITEMNAME",dr["考核类别名称"].ToString()),
new SqlParameter("@SCORE",dr["分值"].ToString()),
new SqlParameter("@CHECKSTATUS","0"),
new SqlParameter("@CREATEDATE",DateTime.Now.ToString("yyyy-MM-dd")),
new SqlParameter("@CREATETIME",DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")),
new SqlParameter("@CREATEUSER",MuserName),
new SqlParameter("@ADDITION1",dr["打分年"].ToString()),
new SqlParameter("@ADDITION2",dr["打分月"].ToString()),
new SqlParameter("@SUMSCORE",dr["总分"].ToString()),
new SqlParameter("@Comment",dr["备注"].ToString()),
new SqlParameter("@PERFCode",PERFCode),
new SqlParameter("@Rating",dr["评语"].ToString()),
new SqlParameter("@ScoreUser",dr["打分人"].ToString()),
new SqlParameter("@WorkPoint",dr["组织"].ToString()),
new SqlParameter("@PoOrgName",dr["采购组织"].ToString()),
new SqlParameter("@MODIFIEDDATE",""),
new SqlParameter("@MODIFIEDTIME",""),
new SqlParameter("@MODIFIEDUSER","")
};
SqlCommandHelper.CmdExecuteNonQuery(sql, sp_BD, cmd);
}
Vencode = dr["供应商编码"].ToString();
}
cmd.Transaction.Commit();
msg += "导入成功";
}
catch (Exception ex)
{
throw new Exception("" + ex.Message + "!");
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
conn.Dispose();
}
return msg;
}
public string ISHave(string VenCode)
{
string sql = @"SELECT * FROM ICSVenDor WHERE VenCode='" + VenCode + "'";
DataTable dt = SqlHelper.GetDataTableBySql(sql);
if (dt != null && dt.Rows.Count > 0)
{
return "0";
}
else
{
return "1";
}
}
//选择供应商列表
public DataTable GetVendorList(string queryJson, ref Pagination jqgridparam, string WorkPoint, string year, string Moth, string Day)
{
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"SELECT DISTINCT
a.VenCode AS cVenCode,
a.VenName AS cVenName,
'ERP' AS Source,
isnull(b.HGV,0)as HGV ,
isnull(c.OnTimeRate,0) as OnTimeRate
--b.UnqualifiedQuantity,
--b.quantity,
--b.POCode
FROM
ICSVendor a
LEFT JOIN
( SELECT ROUND( SUM(ISNULL(CASE WHEN
g.InvIQC ='1'
THEN ISNULL(e.QualifiedQuantity, 0)
WHEN g.InvIQC ='0' AND e.LotNo IS NULL
THEN ISNULL(c.DNQuantity, 0) END, 0))
/ sum(c.DNQuantity), 2)* ISNULL(f.MITEMSCORE, 1) AS HGV
,a.VenCode,
a.WorkPoint
FROM ICSPurchaseOrder a
inner JOIN ICSInventoryLotDetail b ON a.POCode = b.TransCode AND a.Sequence = b.TransSequence AND a.WorkPoint = b.WorkPoint
LEFT JOIN dbo.ICSASNDetail c on b.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
LEFT JOIN ICSInspection e ON b.LotNo = e.LotNo AND c.WorkPoint = e.WorkPoint and Enable=1
left join ICSPERFTEMPLATEMITEM f on f.MITEMNAME='品质管理'
LEFT JOIN dbo.ICSInventory g ON a.InvCode=g.InvCode AND a.WorkPoint=g.WorkPoint
LEFT JOIN ( SELECT MAX(MTIME)AS mtime ,ASNCode,WorkPoint FROM ICSDeliveryNotice WHERE DNType='1'and ASNCode is not null GROUP BY
ASNCode,WorkPoint ) d ON c.ASNCode = d.ASNCode AND c.WorkPoint = d.WorkPoint
WHERE c.DNQuantity>0 and d.mtime>='" + year +"-"+Moth+ "-01' and d.mtime<='" + year +"-"+Moth+"-"+Day+ @"'
GROUP BY
a.VenCode,
a.WorkPoint,
f.MITEMSCORE
) b ON a.VenCode = b.VenCode AND a.WorkPoint = b.WorkPoint
left join (
SELECT
a.vencode,
-- 计算按时交货的批次数量
SUM(CASE WHEN d.MTIME <= a.PlanArriveDate THEN e.Quantity ELSE NULL END) AS OnTimeLotCount,
-- 计算按时交货率
ROUND(
CAST(SUM(CASE WHEN d.MTIME <= a.PlanArriveDate THEN e.Quantity ELSE NULL END) AS FLOAT)
/ NULLIF(SUM(e.Quantity), 0) * f.MITEMSCORE, 2
) AS OnTimeRate
FROM
ICSPurchaseOrder a
-- 连接 ICSInventoryLotDetail 表
INNER JOIN
ICSInventoryLotDetail b ON a.POCode = b.TransCode AND a.Sequence = b.TransSequence AND a.WorkPoint = b.WorkPoint
-- 连接 ICSInventoryLot 表
INNER JOIN
ICSInventoryLot e ON b.LotNo = e.LotNo AND b.WorkPoint = e.WorkPoint
-- 连接 ICSASNDetail 表
INNER JOIN
ICSASNDetail c ON b.LotNo = c.LotNo AND b.WorkPoint = c.WorkPoint
-- 连接 ICSDeliveryNotice 表,取最大 MTIME
INNER JOIN
(
SELECT MAX(MTIME) AS mtime, ASNCode, WorkPoint
FROM ICSDeliveryNotice
WHERE DNType = '1' AND ASNCode IS NOT NULL
GROUP BY ASNCode, WorkPoint
) d ON c.ASNCode = d.ASNCode AND c.WorkPoint = d.WorkPoint
-- 左连接 ICSPERFTEMPLATEMITEM 表
LEFT JOIN
ICSPERFTEMPLATEMITEM f ON f.MITEMNAME = '交期管理'
where a.PlanArriveDate >= '" + year +"-"+Moth+ "-01' and a.PlanArriveDate<='" + year +"-"+Moth+"-"+Day+ @"'
group by a.vencode,f.MITEMSCORE
) c on a.VenCode=c.vencode Where 1=1";
if (!string.IsNullOrEmpty(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["cVenCode"].ToString()))
sql += " and a.VenCode like '%" + queryParam["cVenCode"].ToString() + "%'";
if (!string.IsNullOrWhiteSpace(queryParam["cVenName"].ToString()))
sql += " and a.VenName like '%" + queryParam["cVenName"].ToString() + "%'";
}
sql += " and a.WorkPoint in ('" + WorkPoint + "')";
//权限设置
if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
{
sql = SqlHelper.OrganizeByVendor_F_ParentIdBYJX(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
}
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
}
}