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.
 
 
 
 

1380 lines
72 KiB

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.IO;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
using NFine.Domain._03_Entity.SRM;
namespace NFine.Application.SRM
{
public class BicDoc_PublishApp : RepositoryFactory<ICSVendor>
{
string GUID = Guid.NewGuid().ToString();
//列表查询
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
a.ID,
a.BidCode ,
a.BidName ,
a.BidUser UserName ,
a.StarTime ,
a.EndTime ,
a.BidStatus ,
a.BidStatus AS BidStatuss,
a.Remark ,
c.F_RealName UserName1 ,
a.OpenTime ,a.MTIME,
a.WorkPoint,
a.BidTime
FROM ICSBidDoc a
LEFT JOIN Sys_SRM_User b ON a.BidUser=b.F_Account
LEFT JOIN Sys_SRM_User c ON a.Tenders=c.F_Account
WHERE 1=1 and a.Status<>'0' ";
if (!string.IsNullOrWhiteSpace(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["BidCode"].ToString()))
{
sql += " and a.BidCode like '%" + queryParam["BidCode"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
{
sql += " and a.StarTime >= '" + queryParam["TimeFrom"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["TimeTo"].ToString()))
{
sql += " and a.EndTime <= '" + queryParam["TimeTo"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["BidStatus"].ToString()))
{
//if (queryParam["BidStatus"].ToString() == "已结束")
//{
sql += " and a.BidStatus ='" + queryParam["BidStatus"].ToString() + "'";
//}
//else if (queryParam["BidStatus"].ToString() == "已保存" || queryParam["BidStatus"].ToString() == "招标中" || queryParam["BidStatus"].ToString() == "已关闭")
//{
// sql += " and (a.BidStatus ='" + queryParam["BidStatus"].ToString() + "'and a.BidTime IS NOT NULL) ";
//}
//else if (queryParam["BidStatus"].ToString() == "已决标")
//{
// sql += " and (a.BidStatus ='" + queryParam["BidStatus"].ToString() + "' and a.BidTime IS NOT NULL) ";
//}
}
}
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
{
sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
}
//if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
//{
// sql += " and a.SupplierCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
//}
sql += " group by a.ID,a.MTIME, a.BidCode ,a.BidName , a.BidUser,a.StarTime ,a.EndTime ,a.BidStatus ,a.Remark , c.F_RealName ,a.OpenTime ,a.WorkPoint,a.BidTime";
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
//查询招标人列表
public DataTable GetBidUser(string WorkPoint)
{
string ItemCode = string.Empty;
string F_EnCode = string.Empty;
string sqlItem = @"SELECT '' as F_ItemCode,'' as F_ItemName
Union
select F_ItemCode,b.F_ItemName from [dbo].[Sys_SRM_Items] a
LEFT JOIN [dbo].[Sys_SRM_ItemsDetail] b on a.F_Id=b.F_itemID
where F_EnCode like '%{0}%'";
sqlItem = string.Format(sqlItem, WorkPoint);
DataTable table = SqlHelper.GetDataTableBySql(sqlItem);
return table;
}
//获取招标书标的列表
public DataTable GetBidDocBDInfoByCode(string ID, ref Pagination jqgridparam)
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
DataTable dt = new DataTable();
List<DbParameter> parameter = new List<DbParameter>();
ID = ID.TrimStart('"').TrimEnd('"');
string sql = @" SELECT b.ID ,b.InvCode INVCODE,b.Quantity,b.DeliveryTime,b.RowNO
,c.INVNAME , c.InvUnit ,case when isnull(b.cCode,'')='' then 'ERP' else '请购单' end as Source,b.Remark,c.InvStd,b.cCode FROM ICSBidDoc a
LEFT JOIN ICSBidDocBD b ON a.BidCode = b.BidCode and b.WorkPoint=b.WorkPoint
left JOIN ICSINVENTORY c on b.InvCode = c.INVCODE and b.WorkPoint=c.WorkPoint
WHERE a.ID= '{0}' and a.WorkPoint in ({1})and b.BidCode !='' ";
sql = string.Format(sql, ID, WorkPoint.TrimEnd(','));
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public DataTable GetBidDocBDInfoByBidCode(string BidCode, ref Pagination jqgridparam, string WorkPoint)
{
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
DataTable dt = new DataTable();
List<DbParameter> parameter = new List<DbParameter>();
BidCode = BidCode.TrimStart('"').TrimEnd('"');
string sql = @"SELECT a.ID ,a.InvCode INVCODE,a.Quantity,a.DeliveryTime,a.RowNO
,b.INVNAME , b.INVUOM ,a.Remark,b.InvStd ,
case when isnull(a.cCode,'')='' then 'ERP' else '请购单' end as Source
from ICSBidDocBD a
LEFT JOIN ICSINVENTORY b ON a.InvCode = b.INVCODE and a.WorkPoint=b.WorkPoint
LEFT JOIN ICSBidDoc c ON a.BidCode = c.BidCode and b.WorkPoint=c.WorkPoint
WHERE a.BidCode= '{0}' and a.WorkPoint in ('{1}')";
sql = string.Format(sql, BidCode, WorkPoint);
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
//获取招标书供应商列表
public DataTable GetBidDocGYSInfoByCode(string ID, ref Pagination jqgridparam, string WorkPoint)
{
DataTable dt = new DataTable();
List<DbParameter> parameter = new List<DbParameter>();
ID = ID.TrimStart('"').TrimEnd('"');
string sql = @"SELECT a.ID,a.SupplierCode cVenCode,b.VenName AS cVenName ,'ERP' Source,a.RowNO--,case when EarnestMoney='1' Then '是'Else'否' End as EarnestMoney
FROM ICSBidDocGYS a
LEFT JOIN ICSVendor b on a.SupplierCode=b.VenCode and a.WorkPoint=b.WorkPoint
LEFT JOIN ICSBidDoc c ON a.BidCode = c.BidCode and b.WorkPoint=c.WorkPoint
WHERE c.ID = '{0}' and a.WorkPoint = '{1}' ";
sql = string.Format(sql, ID, WorkPoint);
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
//选择物料列表
public DataTable GetItemList(string queryJson, ref Pagination jqgridparam, string WorkPoint)
{
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @"SELECT ID,INVCODE ,INVNAME , InvUnit ,'ERP' Source,InvStd
FROM ICSINVENTORY WHERE 1=1 and ISNULL(ClassName,'')!='生产类型' ";
if (!string.IsNullOrEmpty(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["INVCODE"].ToString()))
sql += " and INVCODE like '%" + queryParam["INVCODE"].ToString() + "%'";
if (!string.IsNullOrWhiteSpace(queryParam["INVNAME"].ToString()))
sql += " and INVNAME like '%" + queryParam["INVNAME"].ToString() + "%'";
}
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
sql += " and WorkPoint=('" + WorkPoint + "')";
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
//获取主表信息
public DataRow GetFormDetail(string tmpID, string WorkPoint)
{
DataRow dr = null;
string sql = string.Empty;
try
{
sql = @"SELECT * FROM ICSBidDoc
WHERE ID='" + tmpID + "' and WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
dr = SqlHelper.GetDataRowBySql(sql);
return dr;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
//选择供应商列表
public DataTable GetVendorList(string queryJson, ref Pagination jqgridparam, string WorkPoint)
{
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" SELECT DISTINCT VenCode AS cVenCode ,VenName AS cVenName ,'ERP' Source--,case when EarnestMoney='1' Then '是'Else'否' End as EarnestMoney
FROM ICSVendor WHERE 1=1";
if (!string.IsNullOrEmpty(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["cVenCode"].ToString()))
sql += " and VenCode like '%" + queryParam["cVenCode"].ToString() + "%'";
if (!string.IsNullOrWhiteSpace(queryParam["cVenName"].ToString()))
sql += " and VenName like '%" + queryParam["cVenName"].ToString() + "%'";
}
sql += " and WorkPoint in ('" + WorkPoint + "')";
//权限设置
if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode != "admin")
{
sql = SqlHelper.OrganizeByVendor_F_ParentId(sql, NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
}
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
//保存
public void SaveDetail(ICSBicDoc details)
{
string sql = string.Empty;
try
{
List<ICSBidDocBD> list_BD = JsonConvert.DeserializeObject<List<ICSBidDocBD>>(details.arrayBidDocBD);
List<ICSBidDocGYS> list_GYS = JsonConvert.DeserializeObject<List<ICSBidDocGYS>>(details.arrayBidDocGYS);
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 Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MuserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
sql = "select * from ICSBidDoc where BidCode='" + details.BidCode + "' and ID!='" + details.ID + "' and WorkPoint='" + details.WorkPoint + "'";
DataTable dt = SqlCommandHelper.SQlReturnData(sql, cmd);
if (dt != null && dt.Rows.Count > 0)
{
throw new Exception("招标书编号已存在");
}
sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSBidDoc WHERE ID=@ID)
BEGIN
INSERT INTO dbo.ICSBidDoc
( ID, BidCode, BidName, BidUser, StarTime, EndTime, BidStatus, BidType, Remark,
LogTime, LogUser, WorkPoint, MUSER, MUSERName, MTIME,Status)
VALUES ( @ID, @BidCode, @BidName , @BidUser , @StarTime , @EndTime , @BidStatus , @BidType , @Remark ,
getdate() , @LogUser , @WorkPoint ,@MUSER , @MUSERName , getdate(),@Status)
INSERT INTO dbo.ICSBidLog
( ID, BidCode, LogType, LogDes, LogTime, LogUser, WorkPoint, MUSER, MUSERName, MTIME )
VALUES ( newid(), @BidCode, '企业' , '招标书-新增' , getdate() , @LogUser , @WorkPoint ,@MUSER , @MUSERName , getdate())
END
ELSE
BEGIN
UPDATE dbo.ICSBidDoc SET
BidCode=@BidCode , BidName=@BidName ,BidUser=@BidUser, StarTime=@StarTime , EndTime=@EndTime , Remark=@Remark ,
BidStatus=@BidStatus, BidType=@BidType , LogUser=@LogUser , LogTime=GETDATE(),Status=@Status WHERE ID=@ID
INSERT INTO dbo.ICSBidLog
( ID, BidCode, LogType, LogDes, LogTime, LogUser, WorkPoint, MUSER, MUSERName, MTIME )
VALUES ( newid(), @BidCode, '企业' , '招标书-变更' , getdate() , @LogUser , @WorkPoint ,@MUSER , @MUSERName , getdate())
END";
SqlParameter[] sp_Detail = {
new SqlParameter("@ID",details.ID),
new SqlParameter("@BidCode",details.BidCode),
new SqlParameter("@BidName",details.BidName),
new SqlParameter("@BidUser",details.BidUser),
new SqlParameter("@StarTime",details.StarTime),
new SqlParameter("@EndTime",details.EndTime),
//new SqlParameter("@ZTBCount",details.ZTBCount),
new SqlParameter("@BidStatus","已保存"),
new SqlParameter("@BidType","企业"),
new SqlParameter("@Remark",details.Remark),
new SqlParameter("@LogUser",Muser),
new SqlParameter("@WorkPoint",details.WorkPoint),
new SqlParameter("@Status","1"),
new SqlParameter("@MUSER",Muser),
new SqlParameter("@MUSERName",MuserName)
};
SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
#region 标的
foreach (ICSBidDocBD BD in list_BD)
{
sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSBidDocBD WHERE BidCode=@BidCode and InvCode=@InvCode)
BEGIN
INSERT INTO dbo.ICSBidDocBD( ID, BidCode, InvCode, ItemType, Remark, Quantity, DeliveryTime, RowNo,
WorkPoint, MUSER, MUSERName, MTIME,cCode)
VALUES ( @ID, @BidCode, @InvCode, @ItemType, @Remark, @Quantity, @DeliveryTime, @RowNo,
@WorkPoint, @MUSER, @MUSERName, GETDATE(),@cCode)
--UPDATE ICSPU_AppVouch SET BidCode=@BidCode WHERE cCode=@cCode and cInvCode=@InvCode and WorkPoint=@WorkPoint
END
ELSE
BEGIN
UPDATE dbo.ICSBidDocBD SET BidCode=@BidCode,InvCode=@InvCode,ItemType=@ItemType,
Remark=@Remark,Quantity=@Quantity , DeliveryTime=@DeliveryTime,RowNo=@RowNo,cCode=@cCode
WHERE ID=@ID
--UPDATE ICSPU_AppVouch SET BidCode=@BidCode WHERE cCode=@cCode and cInvCode=@InvCode and WorkPoint=@WorkPoint
END";
SqlParameter[] sp_BD = {
new SqlParameter("@ID",BD.ID),
new SqlParameter("@BidCode",details.BidCode),
new SqlParameter("@InvCode",BD.InvCode),
new SqlParameter("@ItemType",BD.ItemType),
new SqlParameter("@Remark",BD.Remark),
new SqlParameter("@Quantity",BD.Quantity),
new SqlParameter("@DeliveryTime",BD.DeliveryTime),
new SqlParameter("@RowNo",BD.RowNo),
new SqlParameter("@WorkPoint",details.WorkPoint),
new SqlParameter("@MUSER",Muser),
new SqlParameter("@MUSERName",MuserName),
new SqlParameter("@cCode",BD.cCode)
};
SqlCommandHelper.CmdExecuteNonQuery(sql, sp_BD, cmd);
}
#endregion
#region 临时物料
foreach (ICSBidDocBD BD in list_BD)
{
if (BD.Source == "手工")
{
sql = @"INSERT INTO dbo.ICSINVENTORY
(
ID
,INVCODE
,INVNAME
,InvUnit
,INVSTD
,ClassCode
,ClassName
,MUSER
,MUSERName
,MTIME
,WorkPoint
)
VALUES (
@ID
,@INVCODE
,@INVNAME
,@InvUnit
,@INVSTD
,@ClassCode
,@ClassName
,@MUSER
,@MUSERName
,Getdate()
,@WorkPoint
)
";
SqlParameter[] sp_INv = {
new SqlParameter("@ID",BD.ID),
new SqlParameter("@INVCODE",BD.InvCode),
new SqlParameter("@INVNAME",BD.INVNAME),
new SqlParameter("@InvUnit",BD.INVUOM),
new SqlParameter("@INVSTD",BD.InvStd),
//new SqlParameter("@INVTYPE","生产类型"),
new SqlParameter("@ClassCode","生产类型"),
new SqlParameter("@ClassName","生产类型"),
new SqlParameter("@WorkPoint",details.WorkPoint),
new SqlParameter("@MUSER",Muser),
new SqlParameter("@MUSERName",MuserName),
//new SqlParameter("@WorkPoint",BD.cCode)
};
SqlCommandHelper.CmdExecuteNonQuery(sql, sp_INv, cmd);
}
}
#endregion
#region 供应商
foreach (ICSBidDocGYS GYS in list_GYS)
{
sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSBidDocGYS WHERE ID=@ID)
BEGIN
INSERT INTO dbo.ICSBidDocGYS (ID, BidCode, SupplierCode, RowNo, ResultConfirmed, WorkPoint, MUSER, MUSERName, MTIME )
VALUES (@ID, @BidCode, @SupplierCode, @RowNo, @ResultConfirmed, @WorkPoint, @MUSER, @MUSERName,GETDATE())
END
ELSE
BEGIN
UPDATE dbo.ICSBidDocGYS SET BidCode=@BidCode, SupplierCode=@SupplierCode, RowNo=@RowNo,
ResultConfirmed=@ResultConfirmed WHERE ID=@ID
END";
SqlParameter[] sp_GYS = {
new SqlParameter("@ID",GYS.ID),
new SqlParameter("@BidCode",details.BidCode),
new SqlParameter("@SupplierCode",GYS.SupplierCode),
new SqlParameter("@RowNo",GYS.RowNo),
new SqlParameter("@ResultConfirmed",GYS.ResultConfirmed),
new SqlParameter("@WorkPoint",details.WorkPoint),
new SqlParameter("@MUSER",Muser),
new SqlParameter("@MUSERName",MuserName),
};
SqlCommandHelper.CmdExecuteNonQuery(sql, sp_GYS, cmd);
//投标信息
sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSBidInfo WHERE BidCode=@BidCode and SupplierCode=@SupplierCode)
BEGIN
INSERT INTO dbo.ICSBidInfo (ID, BidCode, SupplierCode, IsSub, WorkPoint, MUSER, MUSERName, MTIME)
VALUES (@ID, @BidCode, @SupplierCode, 0, @WorkPoint, @MUSER, @MUSERName,GETDATE())
END
ELSE
BEGIN
UPDATE dbo.ICSBidInfo SET BidCode=@BidCode, SupplierCode=@SupplierCode, IsSub=0 WHERE BidCode=@BidCode and SupplierCode=@SupplierCode
END";
SqlParameter[] sp_BidInfo = {
new SqlParameter("@ID",GYS.ID),
//new SqlParameter("@TBCount",details.ZTBCount),
new SqlParameter("@BidCode",details.BidCode),
new SqlParameter("@SupplierCode",GYS.SupplierCode),
new SqlParameter("@WorkPoint",details.WorkPoint),
new SqlParameter("@MUSER",Muser),
new SqlParameter("@MUSERName",MuserName),
};
SqlCommandHelper.CmdExecuteNonQuery(sql, sp_BidInfo, cmd);
#region 是否付定金
//sql = @"Update ICSVendor set EarnestMoney=@EarnestMoney Where cVenCode=@VenCode ";
//SqlParameter[] paras = new SqlParameter[]
// {
// new SqlParameter("@EarnestMoney",SqlDbType.NVarChar),
// new SqlParameter("@VenCode", SqlDbType.NVarChar)
// };
//paras[0].Value = GYS.IsDid;
//paras[1].Value = GYS.VenCode;
//SqlCommandHelper.CmdExecuteNonQuery(sql, paras, cmd);
#endregion
}
#endregion
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 int UpDateByDocNo(string ID, string BidCode, string WorkPoint)
{
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
ID = ID.TrimStart('"').TrimEnd('"').TrimEnd(',');
BidCode = BidCode.TrimStart('"').TrimEnd('"').TrimEnd(',');
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 SupplierCode,c.F_Email,c.F_RealName,a.StarTime,a.EndTime,a.BidCode FROM ICSBidDoc a
LEFT JOIN ICSBidInfo b ON b.BidCode=a.BidCode and a.WorkPoint=b.WorkPoint
LEFT JOIN SYS_SRM_USER c ON b.SupplierCode=c.F_VenCode AND b.WorkPoint=c.F_location
WHERE a.BIdCode=" + BidCode + " and a.WorkPoint='" + WorkPoint + "'";
DataTable dt = SqlHelper.GetDataTableBySql(sqlEmail);
foreach (DataRow dr in dt.Rows)
{
string cVenCode = dr["SupplierCode"].ToString();
string TOAddress = dr["F_Email"].ToString();
string[] Partint = TOAddress.Split(';');
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 BidCodeName = dr["BidCode"].ToString();
string NowDate = DateTime.Now.GetDateTimeFormats('D')[0].ToString();
string body = F_RealName + ":";
body += "\r\n";
body += " \r\n\r\n\r\n 您有一个 招投书 待投标 ,招标书编号:" + BidCodeName + ",投标截止时间:" + EndTime + ",请尽快登录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
{
SendEmail(StrConn, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, p.ToString(), CCAddress, Subject, isBodyHtml, body);
}
catch (Exception ex)
{
throw new Exception("供应商:" + cVenCode + "邮件发送失败! \r\n" + ex.Message);
}
}
}
}
}
}
string sql = string.Empty;
sql = @"UPDATE dbo.ICSBidDoc SET OpenTime=GETDATE() ,
Tenders='{0}', BidStatus='招标中' , LogUser='{0}' , LogTime=GETDATE() WHERE ID in ({1})
INSERT INTO dbo.ICSBidLog
( ID, BidCode, LogType, LogDes, LogTime, LogUser, WorkPoint, MUSER, MUSERName, MTIME )
SELECT newid(), BidCode, '企业', '招标书-开标', GETDATE(), '{0}', '{3}', '{0}', '{4}', GETDATE()
FROM ICSBidLog WHERE BidCode in ({2}) and LogDes='招标书-新增'";
sql = string.Format(sql, MUSER, ID, BidCode, WorkPoint, MUSERName);
return SqlHelper.ExecuteNonQuery(sql);
}
public static void SendEmail(string ConnectionString, string SendHost, int SendPort, string SendDisplayName, string SendAddress, string SendPassword, string TOAddress, string CCAddress, string Subject, bool IsBodyHtml, string Body)
{
try
{
SmtpClient smtpClient = new SmtpClient
{
//EnableSsl = false,
UseDefaultCredentials = false,
Host = SendHost,
Port = SendPort,
Credentials = new NetworkCredential(SendAddress, SendPassword)
};
MailMessage mailMessage = new MailMessage
{
Subject = Subject,
SubjectEncoding = Encoding.GetEncoding("utf-8"),
BodyEncoding = Encoding.GetEncoding("utf-8"),
From = new MailAddress(SendAddress, SendDisplayName),
IsBodyHtml = IsBodyHtml,
Body = Body
};
string[] array = TOAddress.Split(new char[]
{
','
});
string[] array2 = array;
for (int i = 0; i < array2.Length; i++)
{
string text = array2[i];
if (!string.IsNullOrEmpty(text))
{
mailMessage.To.Add(text);
}
}
string[] array3 = CCAddress.Split(new char[]
{
','
});
array2 = array3;
for (int i = 0; i < array2.Length; i++)
{
string text2 = array2[i];
if (!string.IsNullOrEmpty(text2))
{
mailMessage.CC.Add(text2);
}
}
ServicePointManager.ServerCertificateValidationCallback = ((object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) => true);
smtpClient.Send(mailMessage);
// InsertData(ConnectionString, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, TOAddress, CCAddress, Subject, IsBodyHtml, Body, "1", null);
}
catch (Exception ex)
{
//InsertData(ConnectionString, SendHost, SendPort, SendDisplayName, SendAddress, SendPassword, TOAddress, CCAddress, Subject, IsBodyHtml, Body, "2", ex.Message);
throw;
}
}
//删除招标书
public string DeleteBidDoc(string BidCode, string WorkPoint)
{
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
BidCode = BidCode.TrimStart('"').TrimEnd('"').TrimEnd(',');
string sql = string.Empty;
sql = @"INSERT INTO dbo.ICSBidLog
( ID, BidCode, LogType, LogDes, LogTime, LogUser, WorkPoint, MUSER, MUSERName, MTIME )
SELECT newid(), BidCode, '企业', '招标书-删除', GETDATE(), '{0}', '{2}', '{0}', '{3}', GETDATE()
FROM ICSBidLog WHERE BidCode in ({1}) and LogDes='招标书-新增'
delete FROM ICSBidInfo where BidCode in ({1})
delete FROM ICSBidDocBD where BidCode in ({1})
delete FROM ICSBidDocGYS where BidCode in ({1})
delete FROM ICSBidDoc where BidCode in ({1})
delete FROM ICSPU_AppVouch where BidCode in ({1})";
sql = string.Format(sql, MUSER, BidCode, WorkPoint, MUSERName);
string msg = "";
try
{
SqlHelper.ExecuteNonQuery(sql);
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
//关闭
public int CloseBidding(string ID, string BidCode, string WorkPoint)
{
string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string MUSERName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
ID = ID.TrimStart('"').TrimEnd('"').TrimEnd(',');
BidCode = BidCode.TrimStart('"').TrimEnd('"').TrimEnd(',');
string sql = string.Empty;
sql = @"UPDATE dbo.ICSBidDoc SET OpenTime=GETDATE() ,
Tenders='{0}', BidStatus='已关闭' , LogUser='{0}' , LogTime=GETDATE() WHERE ID in ({1})
update ICSBidInfo set IsLock=0 where BidCode in ({2})
INSERT INTO dbo.ICSBidLog
( ID, BidCode, LogType, LogDes, LogTime, LogUser, WorkPoint, MUSER, MUSERName, MTIME )
SELECT newid(), BidCode, '企业', '招标书-关闭', GETDATE(), '{0}', '{3}', '{0}', '{4}', GETDATE()
FROM ICSBidLog WHERE BidCode in ({2}) and LogDes='招标书-新增'";
sql = string.Format(sql, MUSER, ID, BidCode, WorkPoint, MUSERName);
return SqlHelper.ExecuteNonQuery(sql);
}
/// <summary>
/// 删除招标书供应商数据
/// </summary>
/// <param name="keyValue"></param>
/// <returns></returns>
public string DeleteSup(string ID, string WorkPoint)
{
ID = ID.TrimStart('"').TrimEnd('"').TrimEnd(',');
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string msg = "";
string sql = string.Format(@"DELETE
FROM dbo.ICSBidDocGYS
WHERE ID IN ('{0}') and WorkPoint ='{1}' ", ID, WorkPoint);
try
{
SqlHelper.ExecuteNonQuery(sql);
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
/// <summary>
/// 删除招标书供应商数据
/// </summary>
/// <param name="keyValue"></param>
/// <returns></returns>
public string DeleteBD(string ID, string WorkPoint)
{
//ID = ID.TrimStart('"').TrimEnd('"').TrimEnd(',');
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string msg = "";
string sql = string.Format(@"DELETE
FROM dbo.ICSBidDocBD
WHERE ID IN ('{0}') and WorkPoint ='{1}' ", ID, WorkPoint);
try
{
SqlHelper.ExecuteNonQuery(sql);
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
/// <summary>
/// 上传招标文件
/// </summary>
/// <param name="keyValue"></param>
/// <returns></returns>
public int UpLoadFile(string FilePath, string FileName, string BidCode, string ID)
{
DataTable dt = new DataTable();
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string sql = "";
sql += string.Format(@"update ICSBidDoc set FileName='{0}'
where ID='{1}'",
FilePath, ID);
sql += "\r\n";
StringBuilder Str = new StringBuilder(sql);
return Repository().ExecuteBySql(Str);
}
public string ISHave(string InvCode)
{
string sql = @"SELECT * FROM ICSInventory WHERE InvCode='" + InvCode + "'";
DataTable dt = SqlHelper.GetDataTableBySql(sql);
if (dt != null && dt.Rows.Count > 0)
{
return "0";
}
else
{
return "1";
}
}
public string SetData_PR(String savePath, string ID, string BidCode, string WorkPoint)
{
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;
//数据获取
try
{
if (BidCode != "")
{
string sqls = "Delete ICSBidDocBD Where BidCode='" + BidCode + "'";
int count = SqlHelper.ExecuteNonQuery(sqls);
}
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("交期不能为空!");
string ishave = ISHave(dr["物料编码"].ToString());
if (ishave == "1")
{
msg += "物料" + dr["物料编码"].ToString() + "不存在!";
continue;
}
else
{
sql = @"IF NOT EXISTS(SELECT * FROM dbo.ICSBidDocBD WHERE ID=@ID)
BEGIN
INSERT INTO dbo.ICSBidDocBD( ID, BidCode, InvCode, ItemType, Remark, Quantity, DeliveryTime, RowNo,
WorkPoint, MUSER, MUSERName, MTIME)
VALUES ( @ID, @BidCode, @InvCode, @ItemType, @Remark, @Quantity, @DeliveryTime, @RowNo,
@WorkPoint, @MUSER, @MUSERName, GETDATE())
END
ELSE
BEGIN
UPDATE dbo.ICSBidDocBD SET BidCode=@BidCode,InvCode=@InvCode,ItemType=@ItemType,
Remark=@Remark,Quantity=@Quantity , DeliveryTime=@DeliveryTime,RowNo=@RowNo
WHERE ID=@ID
END";
SqlParameter[] sp_BD = {
new SqlParameter("@ID",GUID),
new SqlParameter("@BidCode",BidCode),
new SqlParameter("@InvCode",dr["物料编码"].ToString()),
new SqlParameter("@ItemType",""),
new SqlParameter("@Remark",dr["备注"].ToString()),
new SqlParameter("@Quantity",dr["计划采购数量"].ToString()),
new SqlParameter("@DeliveryTime",dr["交期"].ToString()),
new SqlParameter("@RowNo",rowNO),
new SqlParameter("@WorkPoint",WorkPoint),
new SqlParameter("@MUSER",Muser),
new SqlParameter("@MUSERName",MuserName),
//sql += "Insert Into ICSFManger Values('{0}','{1}','{2}','{3}','{4}','','{9}',CONVERT(varchar(100), '{10}', 23))";
//DataRow[] drs = data.Select("供应商编码+供应商名称+物料编码+物料名称='" + dr["供应商编码"].ToString() + dr["供应商名称"].ToString() + dr["物料编码"].ToString() + dr["物料名称"].ToString() + "'");
//foreach (DataRow de in drs)
//{
// foreach (DataColumn dc in data.Columns)
// {
// if (dc.Caption == "供应商编码" || dc.Caption == "供应商名称" || dc.Caption == "物料编码" || dc.Caption == "物料名称" || dc.Caption == "交货量" || dc.Caption == "排程日期")
// continue;
// sql += @"Insert INto ICSFMangerDetail Values ('{5}','{6}','','{7}',{8},CONVERT(varchar(100), '{10}', 23),'{9}')";
// sql = string.Format(sql, GUID, dr["供应商编码"].ToString(), dr["供应商名称"].ToString(), dr["物料编码"].ToString(), dr["物料名称"].ToString(), GUID, dc.Caption, de["交货量"].ToString(), de[dc.Caption].ToString(), MUSERNAME, DateTime.Now);
// }
//}
};
SqlCommandHelper.CmdExecuteNonQuery(sql, sp_BD, cmd);
}
}
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 InsertID(string ID,string WorkPoints)
{
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 = @" INSERT INTO dbo.ICSBidDoc
( ID, BidCode, BidName, BidUser, StarTime, EndTime, BidStatus, BidType, Remark,
LogTime, LogUser, WorkPoint, MUSER, MUSERName, MTIME,Status )
VALUES ( '" + ID + "', '', '' ,'','' , '' , '' , '', '' , getdate() , '' , "+ WorkPoint.Trim(',') + ", '" + Muser + "' , '" + MuserName + "', getdate(),0)";
int count = SqlHelper.ExecuteNonQuery(sql);
return ID;
}
public DataTable GetSubGridJsonBid(string queryJson, ref Pagination jqgridparam, string WorkPoint)
{
DataTable dt = new DataTable();
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" SELECT a.ID,b.INVCODE, b.INVNAME AS InvName,b.INVStd AS InvStd,b.INVUOM AS Unit,a.Quantity ,a.DeliveryTime,'ERP'as Source,a.ENTTRIBUTE1,d.cVenCode,d.cVenName
FROM ICSBidDocBD a
LEFT JOIN ICSInventory b ON a.InvCode = b.INVCODE and a.WorkPoint=b.WorkPoint
left join ICSBidDocGYS c on a.BidCode=c.BidCode and b.WorkPoint=c.WorkPoint
LEFT JOIN ICSVendor d on c.SupplierCode=d.cVenCode and c.WorkPoint=d.WorkPoint
WHERE a.BidCode = '{0}' and a.WorkPoint = ({1})";
sql = string.Format(sql, queryJson, WorkPoint);
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
/// <summary>
/// 请购单信息
/// </summary>
/// <param name="queryJson"></param>
/// <param name="jqgridparam"></param>
/// <param name="WorkPoint"></param>
/// <returns></returns>
public DataTable GetBicDocByPU(string queryJson, ref Pagination jqgridparam, string WorkPoint)
{
var queryParam = queryJson.ToJObject();
List<DbParameter> parameter = new List<DbParameter>();
DataTable dt = new DataTable();
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
string sql = @" SELECT
'请购单'as Source,
ID,
cCode,
ivouchrowno,
CONVERT(NVARCHAR(20),dDate,23) AS dDate,
cInvCode,
cInvName,
cInvStd,
INVUOM,
CONVERT(NVARCHAR(20),dRequirDate,23) AS dRequirDate,
CONVERT(NVARCHAR(20),dArriveDate,23) AS dArriveDate,
fQuantity,
WorkPoint,
Free1
FROM dbo.ICSPU_AppVouch WHERE BidCode is NUll ";
if (!string.IsNullOrWhiteSpace(queryJson))
{
if (!string.IsNullOrWhiteSpace(queryParam["cCode"].ToString()))
{
sql += " and cCode like '%" + queryParam["cCode"].ToString() + "%' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["BegiondDate"].ToString()))
{
sql += " and dDate >= '" + queryParam["BegiondDate"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["EnddDate"].ToString()))
{
sql += " and dDate <= '" + queryParam["EnddDate"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
{
sql += " and cInvCode ='" + queryParam["InvCode"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
{
sql += " and cInvName ='" + queryParam["InvName"].ToString() + "' ";
}
if (!string.IsNullOrWhiteSpace(WorkPoint))
{
sql += " and WorkPoint ='" + WorkPoint + "' ";
}
}
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public DataTable GetWorkPointByUser()
{
DataRow dr = null;
string sql = string.Empty;
string Muser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
try
{
sql = @"SELECT F_Location FROM sys_SRM_USer
WHERE F_Account='" + Muser + "'";
DataTable dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
public string GetBidCode(string WorkPoint, string Vendor)
{
string BidCide = string.Empty;
string sqlGetBidCide = @"SELECT a.F_ItemCode,a.F_ItemName,a.F_Description FROM Sys_SRM_ItemsDetail a
LEFT JOIN Sys_SRM_Items b ON a.F_ItemId = b.F_Id
WHERE b.F_EnCode = 'ZTBGZ01'";
if (!string.IsNullOrWhiteSpace(WorkPoint))
{
sqlGetBidCide += "and a.F_ItemCode='" + WorkPoint + "'";
}
DataTable dtGetBidCide = SqlHelper.GetDataTableBySql(sqlGetBidCide);
if (dtGetBidCide.Rows.Count <= 0 || dtGetBidCide.Rows[0]["F_Description"].ToString() == null)
{
throw new Exception("请先维护数据字典!");
}
string F_Description = dtGetBidCide.Rows.Count <= 0 || dtGetBidCide.Rows[0]["F_Description"].ToString() == null ? "" : dtGetBidCide.Rows[0]["F_Description"].ToString();
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
if (!string.IsNullOrEmpty(WorkPoint))
{
string Date = DateTime.Now.ToString("yyyy");
string Muoth = DateTime.Now.ToString("MM");
string Day = DateTime.Now.ToString("dd");
string Pre = F_Description + Date + Muoth + Day;
BidCide = GetSerialCode(WorkPoint, "ICSBidDoc", "BidCode", Pre, 2);
}
if (!string.IsNullOrWhiteSpace(BidCide))
{
string sqlISHave = @"SELECT BidCode FROM ICSBidDoc a
WHERE a.BidCode = '{0}'";
sqlISHave = string.Format(sqlISHave, BidCide);
DataTable dtIsHave = SqlHelper.GetDataTableBySql(sqlISHave);
if (dtIsHave.Rows.Count > 0)
{
throw new Exception("标书已存在!");
}
}
return BidCide;
}
public string GetBidItemCode(string WorkPoint, string Vendor)
{
string BidItemCode = string.Empty;
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
if (!string.IsNullOrEmpty(WorkPoint))
{
string Date = DateTime.Now.ToString("yy");
string Muoth = DateTime.Now.ToString("MM");
string Day = DateTime.Now.ToString("dd");
string Pre = "SRM" + WorkPoint;
BidItemCode = GetSerialCode(WorkPoint, "ICSBidDoc", "BidCode", Pre, 5);
}
if (!string.IsNullOrWhiteSpace(BidItemCode))
{
string sqlISHave = @"SELECT InvCode FROM ICSINVENTORY a
WHERE a.InvCode = '{0}'";
sqlISHave = string.Format(sqlISHave, BidItemCode);
DataTable dtIsHave = SqlHelper.GetDataTableBySql(sqlISHave);
if (dtIsHave.Rows.Count > 0)
{
throw new Exception("正式物料已存在!");
}
}
return BidItemCode;
}
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();
}
public string SubmitOARejict(string BidCode, string WorkPoint)
{
string sql = "";
string UserCode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
string msg = "";
DataTable dt = new DataTable();
var reqInterNme = "http://172.16.8.33/seeyon/rest/token/SRMTEST/25eba5c2-95e9-4bf8-92f5-0f42595255ba?loginName="+UserCode;
var responseStr = httpGet(reqInterNme);
try
{
string Pre = "HH-SRM" + WorkPoint;
string BIDCodes = GetSerialCode(WorkPoint, "ICSBidDoc", "code", Pre, 3);
//JObject res = (JObject)JsonConvert.DeserializeObject(dtsql.Rows[0]["searchKey"].ToString());
JObject res = (JObject)JsonConvert.DeserializeObject(responseStr);
string ID = res["id"].ToString();//获取Tockn
JObject resultbidUser = (JObject)JsonConvert.DeserializeObject(res["bindingUser"].ToString());
string id = resultbidUser["id"].ToString(); //用户ID
string departmentId = resultbidUser["departmentId"].ToString(); //部门ID
string postId = resultbidUser["postId"].ToString(); //岗位ID
//string Message = res["Message"].ToString();
if (!string.IsNullOrWhiteSpace(ID))
{
NFine.Domain._03_Entity.SRM.ICSBidDocOA.thirdAttachments ths = new NFine.Domain._03_Entity.SRM.ICSBidDocOA.thirdAttachments();
List<NFine.Domain._03_Entity.SRM.ICSBidDocOA.thirdAttachments> thirdAttachments = new List<NFine.Domain._03_Entity.SRM.ICSBidDocOA.thirdAttachments>();
NFine.Domain._03_Entity.SRM.ICSBidDocOA.datadetail dat = new NFine.Domain._03_Entity.SRM.ICSBidDocOA.datadetail();
NFine.Domain._03_Entity.SRM.ICSBidDocOA.datass dds = new NFine.Domain._03_Entity.SRM.ICSBidDocOA.datass();
string sqlFile = "SELECT FileName FROM ICSBidDoc Where BidCode='" + BidCode + "'and WorkPoint='" + WorkPoint + "'";
DataTable dts = SqlHelper.GetDataTableBySql(sqlFile);
string fileName = dts.Rows[0]["FileName"].ToString().TrimEnd(';');
string[] PrintParas = fileName.Split(';');
int subReference=0;
Random rd = new Random();  //无参即为使用系统时钟为种子
subReference=rd.Next();
int sort = 1;
string fileUrl = "";
if (!string.IsNullOrWhiteSpace(fileName))
{
foreach (var p in PrintParas)
{
string filePath = System.Web.HttpContext.Current.Server.MapPath("~\\File\\ZTBFile\\" + BidCode + "\\" + p.ToString());
string APIURL = "http://172.16.8.33/seeyon/rest/attachment?token=" + ID;
var IDFile = UploadLog(filePath, APIURL);
JObject resFile = (JObject)JsonConvert.DeserializeObject(IDFile);
JArray result = (JArray)JsonConvert.DeserializeObject(resFile["atts"].ToString());
foreach (var item in result)
{
JObject jo = (JObject)item;
fileUrl = jo["fileUrl"].ToString(); //地址
}
//JObject result = (JObject)JsonConvert.DeserializeObject(resFile["atts"].ToString());//企业信息
ths.subReference = subReference;
ths.fileUrl = fileUrl;
ths.sort = sort;
thirdAttachments.Add(ths);
sort++;
}
dds.thirdAttachments.Add(ths);
}
ICSBidDocOA da = new ICSBidDocOA();
da.appName = "collaboration";
List<NFine.Domain._03_Entity.SRM.ICSBidDocOA.attachments> attachmentsdetail = new List<NFine.Domain._03_Entity.SRM.ICSBidDocOA.attachments>();
NFine.Domain._03_Entity.SRM.ICSBidDocOA.attachments attachments = new NFine.Domain._03_Entity.SRM.ICSBidDocOA.attachments();
attachments.ID = "";
attachmentsdetail.Add(attachments);
dat.templateCode = "SRM01";
dat.draft = "0";
dat.relateDoc = "";//(OA 公文附件 ID,默认为空,不使用)
dat.subject = "";//(OA 流程标题,默认为空,OA 端自动生成标题)
sql = @"SELECT a.SupplierCode,b.cVenName,b.cVenRegCode,b.Free1 FROM dbo.ICSBidDocGYS a
LEFT JOIN dbo.ICSVendor b ON a.SupplierCode=b.cVenCode AND a.WorkPoint=b.WorkPoint
WHERE BidCode='" + BidCode + "'and a.WorkPoint='" + WorkPoint + "'";
DataTable dtVenDor = SqlHelper.GetDataTableBySql(sql);
for (int i = 0; i < dtVenDor.Rows.Count; i++)
{
List<NFine.Domain._03_Entity.SRM.ICSBidDocOA.formson_0023> formson_0023 = new List<NFine.Domain._03_Entity.SRM.ICSBidDocOA.formson_0023>();
Domain._03_Entity.SRM.ICSBidDocOA.formson_0023 dm0023 = new Domain._03_Entity.SRM.ICSBidDocOA.formson_0023();
dm0023. = dtVenDor.Rows[i]["SupplierCode"].ToString();
dm0023. = dtVenDor.Rows[i]["cVenRegCode"].ToString();
dm0023. = dtVenDor.Rows[i]["cVenName"].ToString();
dm0023. = "";
dds.formson_0023.Add(dm0023);
}
sql = @"SELECT a.InvCode,b.INVNAME,b.INVSTD,b.INVUOM,a.Quantity,a.DeliveryTime,a.Remark FROM dbo.ICSBidDocBD a
LEFT JOIN dbo.ICSINVENTORY b ON a.InvCode=b.INVCODE AND a.WorkPoint=b.WorkPoint
WHERE BidCode='" + BidCode + "' and a.WorkPoint='" + WorkPoint + "'";
DataTable dtDB =SqlHelper.GetDataTableBySql(sql) ;
for (int i = 0; i < dtDB.Rows.Count; i++)
{
List<NFine.Domain._03_Entity.SRM.ICSBidDocOA.formson_0022> formson_0022 = new List<NFine.Domain._03_Entity.SRM.ICSBidDocOA.formson_0022>();
Domain._03_Entity.SRM.ICSBidDocOA.formson_0022 dm0022 = new Domain._03_Entity.SRM.ICSBidDocOA.formson_0022();
dm0022. = dtDB.Rows[i]["InvCode"].ToString();
dm0022. = dtDB.Rows[i]["INVNAME"].ToString();
dm0022. = dtDB.Rows[i]["INVSTD"].ToString();
dm0022. = dtDB.Rows[i]["INVUOM"].ToString();
dm0022. = Convert.ToDecimal(dtDB.Rows[i]["Quantity"].ToString());
dm0022. = Convert.ToDateTime(dtDB.Rows[i]["DeliveryTime"]).ToString("yyyy-MM-dd HH:mm:ss.fff");
dm0022. = dtDB.Rows[i]["Remark"].ToString();
dds.formson_0022.Add(dm0022);
}
sql = @"SELECT BidCode,BidName,StarTime,EndTime,b.ID,a.Remark FROM dbo.ICSBidDoc a
LEFT JOIN ICSOAEnum b ON a.WorkPoint=b.WorkPoint
WHERE a.BidCode='" + BidCode + "' and a.WorkPoint='" + WorkPoint + "'";
DataTable dtDBDoc = SqlHelper.GetDataTableBySql(sql);
Domain._03_Entity.SRM.ICSBidDocOA.formmain_0021 dm0021 = new Domain._03_Entity.SRM.ICSBidDocOA.formmain_0021();
dm0021. = DateTime.Now.ToString("yyyy-MM-dd");
dm0021. = dtDBDoc.Rows[0]["ID"].ToString();
dm0021. = BIDCodes;
dm0021. = id;
dm0021. = departmentId;
dm0021. = postId;
dm0021. = dtDBDoc.Rows[0]["BidCode"].ToString();
dm0021. = dtDBDoc.Rows[0]["BidName"].ToString();
dm0021. = dtDBDoc.Rows[0]["ID"].ToString();
dm0021. = id;
dm0021. = Convert.ToDateTime(dtDBDoc.Rows[0]["StarTime"]).ToString("yyyy-MM-dd HH:mm:ss.fff");
dm0021. = Convert.ToDateTime(dtDBDoc.Rows[0]["EndTime"]).ToString("yyyy-MM-dd HH:mm:ss.fff");
dm0021. = "";
dm0021. = "";
dm0021. = dtDBDoc.Rows[0]["Remark"].ToString();
dm0021. = subReference;
dds.formmain_0021 = dm0021;
dat.data = dds;
da.data = dat;
string input = JsonConvert.SerializeObject(da);
//}
string APIURLBid = "http://172.16.8.33/seeyon/rest/bpm/process/start?token=" + ID;
string resultBid = HttpPost(APIURLBid, input);
JObject resBId = (JObject)JsonConvert.DeserializeObject(resultBid);
string Code = resBId["code"].ToString();//获取Tockn
if (Code=="0")
{
sql = "Update ICSBidDoc set BidStatus='OA审核中' Where BidCode='" + BidCode + "'";
SqlHelper.CmdExecuteNonQueryLi(sql);
}
else
{
msg = "OA上传OA失败!";
}
}
else
{
msg="获取Token失败";
}
}
catch (Exception ex)
{
msg=ex.Message;
}
return msg;
}
/// <summary>
/// Http Get请求
/// </summary>
/// <param name="url"></param>
/// <param name="headerValue"></param>
/// <returns></returns>
static String httpGet(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
WebHeaderCollection headers = new WebHeaderCollection();
//headers.Add("Token", headerValue[0]);
//headers.Add("Timespan", headerValue[1]);
request.UserAgent = null;
request.Headers = headers;
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
var httpStatusCode = (int)response.StatusCode;
Console.WriteLine("返回码为 {0}", httpStatusCode);
if (httpStatusCode == 200)
{
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
else
{
Console.WriteLine("未返回数据 {0}", httpStatusCode);
throw new Exception("no data response");
}
}
/// <summary>
/// Http P0st请求
/// </summary>
/// <param name="url"></param>
/// <param name="headerValue"></param>
/// <returns></returns>
public static string UploadLog(string file, string fileippath)
{
var uploadUrl = fileippath;
HttpWebRequest request = WebRequest.Create(uploadUrl) as HttpWebRequest;
request.AllowAutoRedirect = true;
request.Method = "POST";
//这段代码不是必须,请求头传输内容,看业务情况
//request.Headers.Add("iauth", ia);//加鉴权
string boundary = DateTime.Now.Ticks.ToString("X"); // 随机分隔线
request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary;
byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");
byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
int pos = file.LastIndexOf("\\");
string fileName = file.Substring(pos + 1);
//请求头部信息
StringBuilder sbHeader = new StringBuilder(string.Format("Content-Disposition:form-data;name=\"file\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n", fileName));
byte[] postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString());
FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read);
byte[] bArr = new byte[fs.Length];
fs.Read(bArr, 0, bArr.Length);
fs.Close();
Stream postStream = request.GetRequestStream();
postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length);
postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
postStream.Write(bArr, 0, bArr.Length);
postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
postStream.Close();
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
Stream instream = response.GetResponseStream();
StreamReader sr = new StreamReader(instream, Encoding.UTF8);
string content = sr.ReadToEnd();
return content;
}
public class ASn
{
public byte[] File { get; set; }
//public string warehouseCode { get; set; }
}
public class DeleteICSAsndet
{
public List<ASn> icsasn = new List<ASn>();
}
public static string HttpPost(string url, string body)
{
try
{
Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
request.ContentType = "application/json; charset=utf-8";
byte[] buffer = encoding.GetBytes(body);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
{
return reader.ReadToEnd();
}
}
catch (WebException ex)
{
throw new Exception(ex.Message);
}
}
/// <summary>
/// 创建临时物料
/// </summary>
/// <param name="queryJson"></param>
/// <returns></returns>
// public string SubmitFormCFType(string queryJson)
// {
// string msg = string.Empty;
// try
// {
// DataTable dt = new DataTable();
// List<DbParameter> parameter = new List<DbParameter>();
// ICSBicItemFSC[] list = JsonConvert.DeserializeObject<ICSBicItemFSC[]>(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 UserCodeName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
// foreach (var obj in list)
// {
// sql = @"
// INSERT INTO dbo.ICSINVENTORY
// (
// ID
// ,INVCODE
// ,INVNAME
// ,INVUOM
// ,INVSTD
// ,INVTYPE
// ,INVCLASS
// ,INVEXPORTIMPORT
// ,MUSER
// ,MUSERName
// ,MTIME
// ,WorkPoint
// )
// VALUES
// (
// NEWID()
// ,@INVCODE
// ,@INVNAME
// ,@INVUOM
// ,@INVSTD
// ,@INVTYPE
// ,@INVCLASS
// ,@INVEXPORTIMPORT
// ,@MUSER
// ,@MUSERName
// ,GetDate()
// ,@WorkPoint
// ) ";
// SqlParameter[] sp_Detail = {
// //new SqlParameter("@ID",obj.ID),
// new SqlParameter("@INVCODE",obj.INVCODE),
// new SqlParameter("@INVNAME",obj.INVCODE),
// new SqlParameter("@INVSTD",obj.INVSTD),
// new SqlParameter("@INVUOM",obj.INVUOM),
// new SqlParameter("@INVTYPE","非生产物料"),
// new SqlParameter("@INVCLASS","非生产物料"),
// new SqlParameter("@INVEXPORTIMPORT","非生产物料"),
// new SqlParameter("@MUSER",UserCode),
// new SqlParameter("@MUSERName",UserCodeName),
// new SqlParameter("@WorkPoint",obj.WorkPoint),
// };
// SqlCommandHelper.CmdExecuteNonQuery(sql, sp_Detail, cmd);
// }
// cmd.Transaction.Commit();
// }
// catch (Exception ex)
// {
// cmd.Transaction.Rollback();
// msg = ex.Message;
// }
// finally
// {
// if (conn.State == ConnectionState.Open)
// {
// conn.Close();
// }
// conn.Dispose();
// }
// }
// catch (Exception ex)
// {
// msg=ex.Message;
// }
// return msg;
// }
}
}