using System ;
using System.Data ;
using System.Collections.Generic ;
using System.Text ;
using Microsoft.Practices.EnterpriseLibrary.Data ;
using DSWeb.Areas.CommMng.Models ;
using DSWeb.EntityDA ;
using HcUtility.Comm ;
using DSWeb.MvcShipping.DAL.MsSysParamSet ;
using System.Linq ;
using DSWeb.MvcShipping.Models.MsChFeeYsAutoDui ;
using DSWeb.TruckMng.Helper ;
using DSWeb.Areas.CommMng.DAL ;
using DSWeb.MvcShipping.Models.WMSNew ;
using NPOI.HSSF.UserModel ;
using NPOI.SS.UserModel ;
using NPOI.XSSF.UserModel ;
using System.IO ;
using NPOI.SS.Util ;
//using System.Net.Mail;
//using System.Net.Mime;
//using System.Net;
using MailKit.Net.Smtp ;
using MimeKit ;
using ICSharpCode.SharpZipLib.Zip ;
using ICSharpCode.SharpZipLib.Checksum ;
using DSWeb.MvcShipping.DAL.MsSysBillNoSet ;
using System.Data.SqlClient ;
using DSWeb.MvcShipping.Models.MsOpMailLog ;
using HcUtility.Core ;
using MimeKit.Utils ;
using CommonTool.MailKit ;
namespace DSWeb.MvcShipping.DAL.MsChFeeYsAutoDui
{
public class MsChFeeYsAutoDuiDAL
{
private static string _ComName = "" ;
private static string _UserId = "" ;
private static string _email = "" ;
public static List < MsChFeeYsAutoDuiModel > GetDataList ( string strCondition , int start , int limit , out int count , string sort )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( @ "SELECT
SUM ( CASE WHEN ( c . ISINVOICE = 0 OR c . ISINVOICE IS NULL ) AND c . FEETYPE = 1 THEN ISNULL ( c . INVOICE , 0 ) * ISNULL ( c . EXCHANGERATE , 0 ) ELSE 0 END ) TTLINVDR ,
SUM ( CASE WHEN ( c . ISINVOICE = 0 OR c . ISINVOICE IS NULL ) AND c . FEETYPE = 1 THEN ISNULL ( c . AMOUNT , 0 ) * ISNULL ( c . EXCHANGERATE , 0 ) ELSE 0 END ) TTLDR ,
C . CUSTOMERNAME KeHuJianCheng ,
IC . DESCRIPTION KeHuQuanCheng ,
' ' LanHuoRen ,
CD . DUIDATE DuiZhangRiQi ,
IC . CHIEF DuiZhangLianXiRen ,
IC . TEL DuiZhangLianXiDianHua ,
isnull ( stuff ( ( SELECT distinct EMAIL + ';' FROM info_client_contact AS t WHERE ISNULL ( ISDUI , 0 ) = 1 AND LINKID = IC . GID FOR xml path ( ' ' ) ) , 1 , 0 , ' ' ) , IC . EMAIL ) DuiZhangLianXiYouXiang ,
SUM ( CASE WHEN C . CURRENCY = ' RMB ' AND C . FEETYPE = 1 THEN C . AMOUNT ELSE 0 END ) YingShouRMB ,
SUM ( CASE WHEN C . CURRENCY = ' USD ' AND C . FEETYPE = 1 THEN C . AMOUNT ELSE 0 END ) YingShouUSD ,
SUM ( CASE WHEN C . CURRENCY = ' RMB ' AND C . FEETYPE = 2 THEN C . AMOUNT ELSE 0 END ) YingFuRMB ,
SUM ( CASE WHEN C . CURRENCY = ' USD ' AND C . FEETYPE = 2 THEN C . AMOUNT ELSE 0 END ) YingFuUSD ,
- - 查 询 字 段
CD . OP DuiZhangRen ,
CD . DUINO DuiZhangBianHao ,
CD . DUINAME DuiZhangMingCheng ,
CD . REMARKS DuiZhangBeiZhu ,
( SELECT TOP 1 ACCTYPE FROM Info_Client_ACCDATE WHERE LINKGID = IC . GID ORDER BY BGNDATE DESC ) JieFeiLeiXing
FROM ch_fee C
LEFT JOIN ch_dui CD on CD . DUINO = C . DEBITNO
LEFT JOIN info_client IC on IC . SHORTNAME = C . CUSTOMERNAME
WHERE 1 = 1 ");
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " " + strCondition ) ;
}
strSql . Append ( @ " GROUP BY C.CUSTOMERNAME,IC.DESCRIPTION,IC.CHIEF,IC.TEL,IC.EMAIL,CD.OP,CD.DUINO,CD.DUINAME,CD.REMARKS,CD.DUIDATE,IC.GID
");
if ( ! string . IsNullOrEmpty ( sort ) )
{
var so = JsonConvert . Deserialize < List < SortObject > > ( sort ) ;
string orderbyStr = " ORDER BY " ;
foreach ( var s in so )
{
orderbyStr + = s . property + " " + s . direction + "," ;
}
orderbyStr = orderbyStr . Substring ( 0 , orderbyStr . Length - 1 ) ;
strSql . Append ( orderbyStr ) ;
}
else
{
strSql . Append ( " order by C.CUSTOMERNAME " ) ;
}
int totalCount = 0 ;
StringBuilder sb = PagerHelper . PageSQL ( strSql . ToString ( ) , start , limit , out totalCount ) ;
count = totalCount ;
return SetData ( sb ) ;
}
private static List < MsChFeeYsAutoDuiModel > SetData ( StringBuilder sb )
{
var headList = new List < MsChFeeYsAutoDuiModel > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , sb . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
MsChFeeYsAutoDuiModel data = new MsChFeeYsAutoDuiModel ( ) ;
#region Set DB data to Object
data . KeHuJianCheng = reader [ "KeHuJianCheng" ] . ToString ( ) ;
data . KeHuQuanCheng = reader [ "KeHuQuanCheng" ] . ToString ( ) ;
data . LanHuoRen = reader [ "LanHuoRen" ] . ToString ( ) ;
data . YingShouRMB = reader [ "YingShouRMB" ] . ToString ( ) ;
data . YingShouUSD = reader [ "YingShouUSD" ] . ToString ( ) ;
data . YingFuRMB = reader [ "YingFuRMB" ] . ToString ( ) ;
data . YingFuUSD = reader [ "YingFuUSD" ] . ToString ( ) ;
data . DuiZhangLianXiRen = reader [ "DuiZhangLianXiRen" ] . ToString ( ) ;
data . DuiZhangLianXiYouXiang = reader [ "DuiZhangLianXiYouXiang" ] . ToString ( ) ;
data . DuiZhangLianXiDianHua = reader [ "DuiZhangLianXiDianHua" ] . ToString ( ) ;
data . DuiZhangBeiZhu = reader [ "DuiZhangBeiZhu" ] . ToString ( ) ;
data . DuiZhangRiQi = reader [ "DuiZhangRiQi" ] . ToString ( ) ;
data . JieFeiLeiXing = reader [ "JieFeiLeiXing" ] . ToString ( ) ;
data . DuiZhangBianHao = reader [ "DuiZhangBianHao" ] . ToString ( ) ;
//data.YiJieSuan = reader["YiJieSuan"].ToString();
//data.JieFeiLeiXing = reader["JieFeiLeiXing"].ToString();
//data.ZhangQi = reader["ZhangQi"].ToString();
//data.YingJieRiQi = reader["YingJieRiQi"].ToString();
//data.YouXiangRiQi = reader["YouXiangRiQi"].ToString();
//data.YouJianYiFaSong = reader["YouJianYiFaSong"].ToString();
decimal ttldr = 0 ;
if ( reader [ "TTLDR" ] ! = DBNull . Value )
ttldr = Convert . ToDecimal ( reader [ "TTLDR" ] ) ;
decimal ttlinvdr = 0 ;
if ( reader [ "TTLDR" ] ! = DBNull . Value )
ttlinvdr = Convert . ToDecimal ( reader [ "TTLINVDR" ] ) ;
if ( ttlinvdr = = 0 ) data . YingShouKaiPiao = "未开票" ;
else if ( ttlinvdr = = ttldr ) data . YingShouKaiPiao = "已开票" ;
else if ( ttlinvdr ! = ttldr ) data . YingShouKaiPiao = "部分开票" ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
public static List < MsChFeeYsAutoDuiMainModel > GetMainDataList ( string strCondition , int start , int limit , out int count , string sort )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( @ "SELECT
* FROM CH_DUI_MAIN
WHERE 1 = 1 ");
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " and " + strCondition ) ;
}
if ( ! string . IsNullOrEmpty ( sort ) )
{
var so = JsonConvert . Deserialize < List < SortObject > > ( sort ) ;
string orderbyStr = " ORDER BY " ;
foreach ( var s in so )
{
orderbyStr + = s . property + " " + s . direction + "," ;
}
orderbyStr = orderbyStr . Substring ( 0 , orderbyStr . Length - 1 ) ;
strSql . Append ( orderbyStr ) ;
}
else
{
strSql . Append ( " order by mainDuiNo desc " ) ;
}
int totalCount = 0 ;
StringBuilder sb = PagerHelper . PageSQL ( strSql . ToString ( ) , start , limit , out totalCount ) ;
count = totalCount ;
return SetMainData ( sb ) ;
}
private static List < MsChFeeYsAutoDuiMainModel > SetMainData ( StringBuilder sb )
{
var headList = new List < MsChFeeYsAutoDuiMainModel > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , sb . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
MsChFeeYsAutoDuiMainModel data = new MsChFeeYsAutoDuiMainModel ( ) ;
#region Set DB data to Object
data . dMainId = reader [ "dMainId" ] . ToString ( ) ;
data . mainDuiNo = reader [ "mainDuiNo" ] . ToString ( ) ;
data . mainDuiName = reader [ "mainDuiName" ] . ToString ( ) ;
data . duiOp = reader [ "duiOp" ] . ToString ( ) ;
data . description = reader [ "description" ] . ToString ( ) ;
if ( reader [ "duiDate" ] ! = DBNull . Value )
{
DateTime duidt = DateTime . Parse ( reader [ "duiDate" ] . ToString ( ) ) ;
data . duiDate = duidt . ToString ( "yyyy-MM-dd" ) ;
}
data . createDate = reader [ "createDate" ] . ToString ( ) ;
if ( reader [ "KaiChuanRiFrom" ] ! = DBNull . Value )
{
DateTime KaiChuanRiFrom = DateTime . Parse ( reader [ "KaiChuanRiFrom" ] . ToString ( ) ) ;
data . KaiChuanRiFrom = KaiChuanRiFrom . ToString ( "yyyy-MM-dd" ) ;
}
if ( reader [ "KaiChuanRiTo" ] ! = DBNull . Value )
{
DateTime KaiChuanRiTo = DateTime . Parse ( reader [ "KaiChuanRiTo" ] . ToString ( ) ) ;
data . KaiChuanRiTo = KaiChuanRiTo . ToString ( "yyyy-MM-dd" ) ;
}
data . DuiZhangKeHu = reader [ "DuiZhangKeHu" ] . ToString ( ) ;
data . ShouFuFangXiang = reader [ "ShouFuFangXiang" ] . ToString ( ) ;
data . JieFeiLeiXing = reader [ "JieFeiLeiXing" ] . ToString ( ) ;
data . ShiFouYiKaiPiao = reader [ "ShiFouYiKaiPiao" ] . ToString ( ) ;
data . FeiYongZhuangTai = reader [ "FeiYongZhuangTai" ] . ToString ( ) ;
data . accDate_Min = reader [ "accDate_Min" ] . ToString ( ) ;
data . accDate_Max = reader [ "accDate_Max" ] . ToString ( ) ;
data . SALECORPID = reader [ "SALECORPID" ] . ToString ( ) ;
data . CORPID = reader [ "CORPID" ] . ToString ( ) ;
data . BiBie = reader [ "BiBie" ] . ToString ( ) ;
data . FEENAME = reader [ "FEENAME" ] . ToString ( ) ;
if ( reader [ "ISCHAOQI" ] ! = DBNull . Value )
data . ISCHAOQI = reader [ "ISCHAOQI" ] . ToString ( ) ;
if ( reader [ "ISZHIQI" ] ! = DBNull . Value )
data . ISZHIQI = reader [ "ISZHIQI" ] . ToString ( ) ;
if ( reader [ "EXCHANGERATE" ] ! = DBNull . Value )
data . EXCHANGERATE = reader [ "EXCHANGERATE" ] . ToString ( ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
public static List < MsChFeeYsAutoDuiDetailsModel > GetDetailsList ( string conditions )
{
if ( conditions ! = "" )
{
conditions = " " + conditions ;
}
string sql = string . Format ( @ "select
VB . BSTYPE as YeWuLeiXing ,
VB . BLTYPE as ZhuangYunFangShi ,
VB . CUSTNO as WeiTuoBianHao ,
VB . MBLNO as ZhuTiDanHao ,
VB . HBLNO as FenTiDanHao ,
VB . ETD as KaiChuanRiQi ,
VB . VESSEL as ChuanMing ,
VB . VOYNO as HangCi ,
VB . CNTRTOTAL as JiZhuangXiang ,
VB . SALE as LanHuoRen ,
VB . OP as CaoZuo ,
VB . DOC as DanZheng ,
VB . LANE as HangXian ,
VB . CUSTSERVICE as KeFu ,
VB . PORTLOAD as ZhuangHuoGang ,
VB . PORTDISCHARGE as XieHuoGang ,
MAX ( C . SALECORP ) SALECORP ,
SUM ( CASE WHEN C . CURRENCY = ' RMB ' AND C . FEETYPE = 1 THEN C . AMOUNT ELSE 0 END ) YingShouRMB ,
SUM ( CASE WHEN C . CURRENCY = ' USD ' AND C . FEETYPE = 1 THEN C . AMOUNT ELSE 0 END ) YingShouUSD ,
SUM ( CASE WHEN C . CURRENCY = ' RMB ' AND C . FEETYPE = 2 THEN C . AMOUNT ELSE 0 END ) YingFuRMB ,
SUM ( CASE WHEN C . CURRENCY = ' USD ' AND C . FEETYPE = 2 THEN C . AMOUNT ELSE 0 END ) YingFuUSD
from ch_fee C
left join v_op_bill VB on C . BSNO = VB . BSNO
where 1 = 1 { 0 }
GROUP BY VB . BSTYPE , VB . BLTYPE , VB . CUSTNO , VB . MBLNO , VB . HBLNO , VB . ETD , VB . VESSEL , VB . VOYNO , VB . CNTRTOTAL , VB . SALE , VB . OP , VB . DOC , VB . LANE , VB . CUSTSERVICE , VB . PORTLOAD , VB . PORTDISCHARGE
order by VB . MBLNO ", conditions);
return SetDetailsData ( sql ) ;
}
private static List < MsChFeeYsAutoDuiDetailsModel > SetDetailsData ( string sql )
{
var headList = new List < MsChFeeYsAutoDuiDetailsModel > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , sql ) )
{
while ( reader . Read ( ) )
{
MsChFeeYsAutoDuiDetailsModel data = new MsChFeeYsAutoDuiDetailsModel ( ) ;
#region Set DB data to Object
data . YeWuLeiXing = reader [ "YeWuLeiXing" ] . ToString ( ) ;
data . ZhuangYunFangShi = reader [ "ZhuangYunFangShi" ] . ToString ( ) ;
data . WeiTuoBianHao = reader [ "WeiTuoBianHao" ] . ToString ( ) ;
data . ZhuTiDanHao = reader [ "ZhuTiDanHao" ] . ToString ( ) ;
data . FenTiDanHao = reader [ "FenTiDanHao" ] . ToString ( ) ;
if ( reader [ "KaiChuanRiQi" ] ! = DBNull . Value )
{
DateTime etdDate = DateTime . Parse ( reader [ "KaiChuanRiQi" ] . ToString ( ) ) ;
data . KaiChuanRiQi = etdDate . ToString ( "yyyy-MM-dd" ) ;
}
data . ChuanMing = reader [ "ChuanMing" ] . ToString ( ) ;
data . HangCi = reader [ "HangCi" ] . ToString ( ) ;
data . JiZhuangXiang = reader [ "JiZhuangXiang" ] . ToString ( ) ;
data . LanHuoRen = reader [ "LanHuoRen" ] . ToString ( ) ;
data . CaoZuo = reader [ "CaoZuo" ] . ToString ( ) ;
data . DanZheng = reader [ "DanZheng" ] . ToString ( ) ;
data . HangXian = reader [ "HangXian" ] . ToString ( ) ;
data . KeFu = reader [ "KeFu" ] . ToString ( ) ;
data . ZhuangHuoGang = reader [ "ZhuangHuoGang" ] . ToString ( ) ;
data . XieHuoGang = reader [ "XieHuoGang" ] . ToString ( ) ;
data . YingShouRMB = reader [ "YingShouRMB" ] . ToString ( ) ;
data . YingShouUSD = reader [ "YingShouUSD" ] . ToString ( ) ;
//data.YingShouQiTa = reader["YingShouQiTa"].ToString();
data . YingFuRMB = reader [ "YingFuRMB" ] . ToString ( ) ;
data . YingFuUSD = reader [ "YingFuUSD" ] . ToString ( ) ;
data . SALECORP = reader [ "SALECORP" ] . ToString ( ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
private static List < MsChFeeYsAutoDuiExcelModel > GetExcelDataList ( string conditions )
{
if ( conditions ! = "" )
{
conditions = " and " + conditions ;
}
string sql = string . Format ( @ " select VB.MBLNO,
C . CUSTOMERNAME ,
VB . VESSEL ,
VB . VOYNO ,
VB . ETD ,
VB . OP ,
VB . SALE ,
VB . DESTINATION ,
SUM ( CASE WHEN C . CURRENCY = ' RMB ' AND C . FEETYPE = 1 THEN C . AMOUNT ELSE 0 END ) SRMB ,
SUM ( CASE WHEN C . CURRENCY = ' USD ' AND C . FEETYPE = 1 THEN C . AMOUNT ELSE 0 END ) SUSD ,
SUM ( CASE WHEN C . CURRENCY = ' RMB ' AND C . FEETYPE = 2 THEN C . AMOUNT ELSE 0 END ) FRMB ,
SUM ( CASE WHEN C . CURRENCY = ' USD ' AND C . FEETYPE = 2 THEN C . AMOUNT ELSE 0 END ) FUSD ,
C . DebitNo ,
max ( c . SALECORP ) SALECORP
from ch_fee C
left join v_op_bill VB on C . BSNO = VB . BSNO
where 1 = 1 { 0 }
GROUP BY VB . MBLNO , VB . VESSEL , VB . VOYNO , VB . ETD , VB . OP , VB . SALE , VB . DESTINATION , C . CUSTOMERNAME , C . DebitNo
order by C . CUSTOMERNAME , VB . MBLNO ",conditions);
return SetExcelData ( sql ) ;
}
private static List < MsChFeeYsAutoDuiExcelModel > GetExcelNODAYDataList ( string conditions , string ISZHIQI , decimal EXCHANGERATE = 0 )
{
if ( conditions ! = "" )
{
conditions = " and " + conditions ;
}
string sql = string . Format ( @ " select *,(SRMB+SUSD*{0})*NODAY*0.005 NOAMOUNT from (select VB.MBLNO,
C . CUSTOMERNAME ,
VB . VESSEL ,
VB . VOYNO ,
VB . ETD ,
VB . OP ,
VB . SALE ,
VB . DESTINATION ,
SUM ( CASE WHEN C . CURRENCY = ' RMB ' AND C . FEETYPE = 1 THEN C . AMOUNT ELSE 0 END ) SRMB ,
SUM ( CASE WHEN C . CURRENCY = ' USD ' AND C . FEETYPE = 1 THEN C . AMOUNT ELSE 0 END ) SUSD ,
SUM ( CASE WHEN C . CURRENCY = ' RMB ' AND C . FEETYPE = 2 THEN C . AMOUNT ELSE 0 END ) FRMB ,
SUM ( CASE WHEN C . CURRENCY = ' USD ' AND C . FEETYPE = 2 THEN C . AMOUNT ELSE 0 END ) FUSD ,
C . DebitNo ,
DATEDIFF ( [ day ] , [ dbo ] . [ GetCustStlDay ] ( VB . ETD , C . CUSTOMERNAME , VB . SALE ) , GETDATE ( ) ) NODAY ,
max ( c . SALECORP ) SALECORP
from ch_fee C
left join v_op_bill VB on C . BSNO = VB . BSNO
where 1 = 1 { 1 }
GROUP BY VB . MBLNO , VB . VESSEL , VB . VOYNO , VB . ETD , VB . OP , VB . SALE , VB . DESTINATION , C . CUSTOMERNAME , C . DebitNo
) as VS order by CUSTOMERNAME , MBLNO ", EXCHANGERATE.ToString(), conditions);
return SetExcelNODAYData ( sql ) ;
}
private static List < MsChFeeYsAutoDuiExcelModel > SetExcelData ( string sql )
{
var headList = new List < MsChFeeYsAutoDuiExcelModel > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
SqlCommand cmd = new SqlCommand ( ) ;
cmd . CommandText = sql . ToString ( ) ;
cmd . CommandTimeout = 120000 ; //要加这一句
using ( IDataReader reader = db . ExecuteReader ( cmd ) )
{
while ( reader . Read ( ) )
{
MsChFeeYsAutoDuiExcelModel data = new MsChFeeYsAutoDuiExcelModel ( ) ;
#region Set DB data to Object
data . KeHuMingCheng = reader [ "CUSTOMERNAME" ] . ToString ( ) ;
data . MBLNO = reader [ "MBLNO" ] . ToString ( ) ;
data . ChuanMing = reader [ "VESSEL" ] . ToString ( ) ;
data . HangCi = reader [ "VOYNO" ] . ToString ( ) ;
data . OP = reader [ "OP" ] . ToString ( ) ;
data . SALE = reader [ "SALE" ] . ToString ( ) ;
data . KaiChuanRi = reader [ "ETD" ] . ToString ( ) ;
data . MuDiGang = reader [ "DESTINATION" ] . ToString ( ) ;
data . RMB = reader [ "SRMB" ] . ToString ( ) ;
data . USD = reader [ "SUSD" ] . ToString ( ) ;
data . FRMB = reader [ "FRMB" ] . ToString ( ) ;
data . FUSD = reader [ "FUSD" ] . ToString ( ) ;
data . DuiNo = reader [ "DebitNo" ] . ToString ( ) ;
data . NOAMOUNT = "0" ;
data . SALECORP = reader [ "SALECORP" ] . ToString ( ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
private static List < MsChFeeYsAutoDuiExcelModel > SetExcelNODAYData ( string sql )
{
var headList = new List < MsChFeeYsAutoDuiExcelModel > ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
SqlCommand cmd = new SqlCommand ( ) ;
cmd . CommandText = sql . ToString ( ) ;
cmd . CommandTimeout = 120000 ; //要加这一句
using ( IDataReader reader = db . ExecuteReader ( cmd ) )
{
while ( reader . Read ( ) )
{
MsChFeeYsAutoDuiExcelModel data = new MsChFeeYsAutoDuiExcelModel ( ) ;
#region Set DB data to Object
data . KeHuMingCheng = reader [ "CUSTOMERNAME" ] . ToString ( ) ;
data . MBLNO = reader [ "MBLNO" ] . ToString ( ) ;
data . ChuanMing = reader [ "VESSEL" ] . ToString ( ) ;
data . HangCi = reader [ "VOYNO" ] . ToString ( ) ;
data . OP = reader [ "OP" ] . ToString ( ) ;
data . SALE = reader [ "SALE" ] . ToString ( ) ;
data . KaiChuanRi = reader [ "ETD" ] . ToString ( ) ;
data . MuDiGang = reader [ "DESTINATION" ] . ToString ( ) ;
data . RMB = reader [ "SRMB" ] . ToString ( ) ;
data . USD = reader [ "SUSD" ] . ToString ( ) ;
data . FRMB = reader [ "FRMB" ] . ToString ( ) ;
data . FUSD = reader [ "FUSD" ] . ToString ( ) ;
data . DuiNo = reader [ "DebitNo" ] . ToString ( ) ;
data . NODAY = reader [ "NODAY" ] . ToString ( ) ;
data . NOAMOUNT = reader [ "NOAMOUNT" ] . ToString ( ) ;
data . SALECORP = reader [ "SALECORP" ] . ToString ( ) ;
# endregion
headList . Add ( data ) ;
}
reader . Close ( ) ;
}
return headList ;
}
public static DBResult SendExcel ( List < MsChFeeYsAutoDuiModel > list , string path , string userid , string comid , string cc , out string datapath , DSWeb . SoftMng . Model . EmailConfig model , string username , string useduiname , string ISZHIQI = "0" , decimal EXCHANGERATE = 0 , string ISCHAOQI = "0" )
{
var result = new DBResult ( ) ;
try
{
string DataPath = "" ;
_UserId = userid ;
string UserName = GetUserNameWithUserId ( userid ) ;
string ComName = GetComNameWithComId ( comid ) ;
string mainduiname = "" ;
if ( list . Count > 0 )
{
mainduiname = GetDuiNameWithDuiNo ( list [ 0 ] . DuiZhangBianHao ) ;
}
_ComName = ComName ;
//获取数据
string whereSql = "" ;
string custStr = "" ;
foreach ( var item in list )
{
custStr + = "'" + item . DuiZhangBianHao + "'," ;
}
custStr = custStr . Substring ( 0 , custStr . Length - 1 ) ;
whereSql = "C.DEBITNO IN (" + custStr + ") " ;
List < MsChFeeYsAutoDuiExcelModel > excelList = new List < MsChFeeYsAutoDuiExcelModel > ( ) ;
if ( ISZHIQI = = "1" )
excelList = GetExcelNODAYDataList ( whereSql , ISZHIQI , EXCHANGERATE ) ;
else
excelList = GetExcelDataList ( whereSql ) ;
//遍历list, 每个客户生成一个excel并发送
string tempCust = "" ;
foreach ( var item in excelList )
{
if ( tempCust = = item . KeHuMingCheng )
{
continue ;
}
if ( item . KeHuMingCheng ! = tempCust )
{
tempCust = item . KeHuMingCheng ;
List < MsChFeeYsAutoDuiExcelModel > listSend = excelList . FindAll ( e = > e . KeHuMingCheng = = tempCust ) ;
//生成excel
string filename = "" ;
var YSAUTODUIISNOTSALEOP = MsSysParamSetDAL . GetData ( "PARAMNAME='YSAUTODUIISNOTSALEOP'" ) . PARAMVALUE ;
if ( YSAUTODUIISNOTSALEOP = = "1" )
DataPath = ListToExcelNoOpSale ( listSend , path , UserName , ComName , out filename , mainduiname , useduiname ) ;
else
{
if ( ISZHIQI = = "1" )
DataPath = ListToExcelNoDay ( listSend , path , UserName , ComName , out filename , mainduiname , useduiname , EXCHANGERATE , ISCHAOQI ) ;
else
DataPath = ListToExcel ( listSend , path , UserName , ComName , out filename , mainduiname , useduiname , ISCHAOQI ) ;
}
if ( DataPath = = "" )
{
datapath = "" ;
result . Success = false ;
result . Message = "生成EXCEL错误! " ;
return result ;
}
//发送邮件
//获取邮件地址
string email = list . Find ( f = > f . KeHuJianCheng = = tempCust ) . DuiZhangLianXiYouXiang ;
//设置邮件内容
string title = DateTime . Now . ToString ( "yyyy-MM" ) + tempCust + "客户对账单" ;
if ( useduiname = = "1" ) title = mainduiname ;
string sign = GetSign ( userid ) ;
string context = sign ;
//发送
//if (cc != "1") _email = "";
// string[] emailList = email.Split(';');
//foreach (var m in emailList)
//{
// if (m!="")
// {
result = SendMailWithExcelFile ( title , context , DataPath , email , _email , _ComName , tempCust , model , username , cc ) ;
// }
//}
//if (_email!=""&&cc=="1") SendMailWithExcelFile(title, context, DataPath, _email, _ComName, tempCust, model, username);
}
}
datapath = DataPath ;
}
catch ( Exception e )
{
datapath = "" ;
result . Success = false ;
result . Message = e . Message ;
return result ;
}
return result ;
}
/// <summary>
/// 返回excel文件路径
/// </summary>
/// <param name="list"></param>
/// <param name="path"></param>
/// <param name="condition"></param>
/// <param name="userid"></param>
/// <param name="comid"></param>
/// <param name="datapath"></param>
/// <returns></returns>
public static string GetExcelUrls ( List < MsChFeeYsAutoDuiModel > list , string path , string userid , string comid , string timeStr , string condition , string useduiname , string ISZHIQI = "0" , decimal EXCHANGERATE = 0 , string ISCHAOQI = "0" )
{
try
{
string DataPath = "" ;
_UserId = userid ;
string UserName = GetUserNameWithUserId ( userid ) ;
string ComName = GetComNameWithComId ( comid ) ;
string mainduiname = "" ;
if ( list . Count > 0 )
{
mainduiname = GetDuiNameWithDuiNo ( list [ 0 ] . DuiZhangBianHao ) ;
}
_ComName = ComName ;
//获取数据
string whereSql = "" ;
string custStr = "" ;
foreach ( var item in list )
{
custStr + = "'" + item . DuiZhangBianHao + "'," ;
}
custStr = custStr . Substring ( 0 , custStr . Length - 1 ) ;
whereSql = "C.DEBITNO IN (" + custStr + ") " ;
if ( ! string . IsNullOrEmpty ( condition ) )
{
whereSql = condition + " and " + whereSql ;
}
List < MsChFeeYsAutoDuiExcelModel > excelList = new List < MsChFeeYsAutoDuiExcelModel > ( ) ;
if ( ISZHIQI = = "1" )
excelList = GetExcelNODAYDataList ( whereSql , ISZHIQI , EXCHANGERATE ) ;
else
excelList = GetExcelDataList ( whereSql ) ;
string tempCust = "" ;
foreach ( var item in excelList )
{
if ( tempCust = = item . KeHuMingCheng )
{
continue ;
}
if ( item . KeHuMingCheng ! = tempCust )
{
tempCust = item . KeHuMingCheng ;
List < MsChFeeYsAutoDuiExcelModel > listSend = excelList . FindAll ( e = > e . KeHuMingCheng = = tempCust ) ;
//生成excel
string filename = "" ;
var YSAUTODUIISNOTSALEOP = MsSysParamSetDAL . GetData ( "PARAMNAME='YSAUTODUIISNOTSALEOP'" ) . PARAMVALUE ;
if ( YSAUTODUIISNOTSALEOP = = "1" )
DataPath = ListToExcelNoOpSale ( listSend , path + "\\Excels\\" , UserName , ComName , out filename , mainduiname , useduiname ) ;
else
{
if ( ISZHIQI = = "1" )
DataPath = ListToExcelNoDay ( listSend , path + "\\Excels\\" , UserName , ComName , out filename , mainduiname , useduiname , EXCHANGERATE , ISCHAOQI ) ;
else
DataPath = ListToExcel ( listSend , path + "\\Excels\\" , UserName , ComName , out filename , mainduiname , useduiname , ISCHAOQI ) ;
}
}
}
// CreateZipFile(path+"\\Excels\\",path+"\\zip\\data.zip");
if ( ! System . IO . Directory . Exists ( path + "\\zip\\" ) )
System . IO . Directory . CreateDirectory ( path + "\\zip\\" ) ;
List < string > folders = new List < string > ( ) ;
folders . Add ( path + "\\Excels\\" ) ;
string timeTemp = DateTime . Now . ToString ( "yyyyMM" ) ;
ZipManyFilesOrDictorys ( folders , path + "\\zip\\" + timeTemp + ".zip" , "" ) ;
return "<a href =\"../../AutoDuiFiles/" + timeStr + "/" + "zip/" + timeTemp + ".zip\">" + timeTemp + ".zip</a>" ;
}
catch ( Exception e )
{
return e . Message ;
throw ;
}
}
public static string ListToExcel ( List < MsChFeeYsAutoDuiExcelModel > list , string path , string sendUser , string sendCom , out string filename , string mainduiname , string useduiname , string ISCHAOQI = "0" )
{
if ( list . Count < = 0 )
{
filename = "" ;
return "" ;
}
String custName = list [ 0 ] . KeHuMingCheng ;
String duino = list [ 0 ] . DuiNo ;
IWorkbook hssfworkbook = new HSSFWorkbook ( ) ;
ISheet sheet = hssfworkbook . CreateSheet ( "1" ) ;
#region 格式
ICellStyle styleNormal = hssfworkbook . CreateCellStyle ( ) ;
styleNormal . BorderBottom = BorderStyle . Thin ;
styleNormal . BorderLeft = BorderStyle . Thin ;
styleNormal . BorderRight = BorderStyle . Thin ;
styleNormal . BorderTop = BorderStyle . Thin ;
ICellStyle styleNum = hssfworkbook . CreateCellStyle ( ) ;
IDataFormat dataformat = hssfworkbook . CreateDataFormat ( ) ;
styleNum . DataFormat = HSSFDataFormat . GetBuiltinFormat ( "0.00" ) ;
styleNum . BorderBottom = BorderStyle . Thin ;
styleNum . BorderLeft = BorderStyle . Thin ;
styleNum . BorderRight = BorderStyle . Thin ;
styleNum . BorderTop = BorderStyle . Thin ;
ICellStyle styleHeji = hssfworkbook . CreateCellStyle ( ) ;
styleHeji . BorderBottom = BorderStyle . Thin ;
styleHeji . BorderLeft = BorderStyle . Thin ;
styleHeji . BorderRight = BorderStyle . Thin ;
styleHeji . BorderTop = BorderStyle . Thin ;
styleHeji . Alignment = HorizontalAlignment . Center ;
# endregion
#region 标题
IRow row0 = sheet . CreateRow ( 0 ) ;
ICell cell0 = row0 . CreateCell ( 0 ) ;
cell0 . SetCellValue ( sendCom ) ;
ICellStyle style0 = hssfworkbook . CreateCellStyle ( ) ;
style0 . Alignment = HorizontalAlignment . Center ;
IFont font = hssfworkbook . CreateFont ( ) ;
font . FontName = "宋体" ;
font . FontHeightInPoints = 18 ;
font . Boldweight = ( short ) FontBoldWeight . Bold ;
style0 . SetFont ( font ) ;
cell0 . CellStyle = style0 ;
sheet . AddMergedRegion ( new CellRangeAddress ( 0 , 0 , 0 , 11 ) ) ;
# endregion
#region 日期
IRow row1 = sheet . CreateRow ( 1 ) ;
ICell cel1 = row1 . CreateCell ( 0 ) ;
ICellStyle style1 = hssfworkbook . CreateCellStyle ( ) ;
style1 . Alignment = HorizontalAlignment . Center ;
IFont font2 = hssfworkbook . CreateFont ( ) ;
font2 . FontName = "宋体" ;
font2 . FontHeightInPoints = 14 ;
font2 . Boldweight = ( short ) FontBoldWeight . Bold ;
style0 . SetFont ( font2 ) ;
cel1 . CellStyle = style1 ;
sheet . AddMergedRegion ( new CellRangeAddress ( 1 , 1 , 0 , 10 ) ) ;
if ( useduiname = = "1" )
cel1 . SetCellValue ( mainduiname ) ;
else
cel1 . SetCellValue ( "(" + DateTime . Now . ToString ( "yyyyMM" ) + ")费用确认单" ) ;
# endregion
if ( ISCHAOQI = = "1" | | ISCHAOQI = = "2" )
{
IRow row3 = sheet . CreateRow ( 2 ) ;
ICell cel3 = row3 . CreateCell ( 0 ) ;
sheet . AddMergedRegion ( new CellRangeAddress ( 2 , 2 , 0 , 11 ) ) ;
cel3 . SetCellValue ( "尊敬的客户:" ) ;
#region 对账客户
IRow row2 = sheet . CreateRow ( 3 ) ;
ICell cel2 = row2 . CreateCell ( 0 ) ;
sheet . AddMergedRegion ( new CellRangeAddress ( 3 , 3 , 0 , 11 ) ) ;
cel2 . SetCellValue ( "贵司在我司订舱的如下货物即将产生滞纳金,请合理安排付款,避免超期。如已付款,请忽略。谢谢合作!" ) ;
# endregion
}
else {
#region 对账客户
string email = "" ;
string qq = "" ;
string phone = GetPhoneWithUserId ( out email , out qq ) ;
_email = email ;
IRow row2 = sheet . CreateRow ( 2 ) ;
ICell cel2 = row2 . CreateCell ( 0 ) ;
sheet . AddMergedRegion ( new CellRangeAddress ( 2 , 2 , 0 , 10 ) ) ;
cel2 . SetCellValue ( "对账联系人:" + sendUser + " 联系电话:"
+ phone + " E-Mail:" + email + " QQ:" + qq + " 对账编号:" + duino ) ;
# endregion
#region 对账联系人
IRow row3 = sheet . CreateRow ( 3 ) ;
ICell cel3 = row3 . CreateCell ( 0 ) ;
row3 . Height = 0 ;
# endregion
}
#region 表头
IRow row4 = sheet . CreateRow ( 4 ) ;
ICell head0 = row4 . CreateCell ( 0 ) ;
head0 . CellStyle = styleNormal ;
head0 . SetCellValue ( "对账抬头" ) ;
ICell head1 = row4 . CreateCell ( 1 ) ;
head1 . CellStyle = styleNormal ;
head1 . SetCellValue ( "开船日" ) ;
ICell head2 = row4 . CreateCell ( 2 ) ;
head2 . CellStyle = styleNormal ;
head2 . SetCellValue ( "船名" ) ;
ICell head3 = row4 . CreateCell ( 3 ) ;
head3 . CellStyle = styleNormal ;
head3 . SetCellValue ( "航次" ) ;
ICell head4 = row4 . CreateCell ( 4 ) ;
head4 . CellStyle = styleNormal ;
head4 . SetCellValue ( "目的港" ) ;
ICell head5 = row4 . CreateCell ( 5 ) ;
head5 . CellStyle = styleNormal ;
head5 . SetCellValue ( "MB/L No" ) ;
ICell head6 = row4 . CreateCell ( 6 ) ;
head6 . CellStyle = styleNormal ;
head6 . SetCellValue ( "操作" ) ;
ICell head7 = row4 . CreateCell ( 7 ) ;
head7 . CellStyle = styleNormal ;
head7 . SetCellValue ( "销售" ) ;
ICell head8 = row4 . CreateCell ( 8 ) ;
head8 . CellStyle = styleNormal ;
head8 . SetCellValue ( "应收RMB" ) ;
ICell head9 = row4 . CreateCell ( 9 ) ;
head9 . CellStyle = styleNormal ;
head9 . SetCellValue ( "应收USD" ) ;
ICell head10 = row4 . CreateCell ( 10 ) ;
head10 . CellStyle = styleNormal ;
head10 . SetCellValue ( "应付RMB" ) ;
ICell head11 = row4 . CreateCell ( 11 ) ;
head11 . CellStyle = styleNormal ;
head11 . SetCellValue ( "应付USD" ) ;
# endregion
#region 明细
int rowindex = 5 ;
double sumRmb = 0 ;
double sumUsd = 0 ;
double sumFRmb = 0 ;
double sumFUsd = 0 ;
foreach ( var item in list )
{
IRow r = sheet . CreateRow ( rowindex ) ;
ICell c0 = r . CreateCell ( 0 ) ;
c0 . CellStyle = styleNormal ;
c0 . SetCellValue ( item . KeHuMingCheng ) ;
ICell c1 = r . CreateCell ( 1 ) ;
c1 . CellStyle = styleNormal ;
c1 . SetCellValue ( item . KaiChuanRi ) ;
ICell c2 = r . CreateCell ( 2 ) ;
c2 . CellStyle = styleNormal ;
c2 . SetCellValue ( item . ChuanMing ) ;
ICell c3 = r . CreateCell ( 3 ) ;
c3 . CellStyle = styleNormal ;
c3 . SetCellValue ( item . HangCi ) ;
ICell c4 = r . CreateCell ( 4 ) ;
c4 . CellStyle = styleNormal ;
c4 . SetCellValue ( item . MuDiGang ) ;
ICell c5 = r . CreateCell ( 5 ) ;
c5 . CellStyle = styleNormal ;
c5 . SetCellValue ( item . MBLNO ) ;
ICell c6 = r . CreateCell ( 6 ) ;
c6 . CellStyle = styleNormal ;
c6 . SetCellValue ( item . OP ) ;
ICell c7 = r . CreateCell ( 7 ) ;
c7 . CellStyle = styleNormal ;
c7 . SetCellValue ( item . SALE ) ;
ICell c8 = r . CreateCell ( 8 ) ;
c8 . CellStyle = styleNum ;
ICell c9 = r . CreateCell ( 9 ) ;
c9 . CellStyle = styleNum ;
ICell c10 = r . CreateCell ( 10 ) ;
c10 . CellStyle = styleNum ;
ICell c11 = r . CreateCell ( 11 ) ;
c11 . CellStyle = styleNum ;
if ( item . RMB = = "" | | item . RMB = = null )
{
c8 . SetCellValue ( 0 ) ;
sumRmb + = 0 ;
}
else
{
c8 . SetCellType ( CellType . Numeric ) ;
c8 . SetCellValue ( double . Parse ( item . RMB ) ) ;
sumRmb + = double . Parse ( item . RMB ) ;
}
if ( item . USD = = "" | | item . USD = = null )
{
c9 . SetCellType ( CellType . Numeric ) ;
c9 . SetCellValue ( 0 ) ;
sumUsd + = 0 ;
}
else
{
c9 . SetCellValue ( double . Parse ( item . USD ) ) ;
sumUsd + = double . Parse ( item . USD ) ;
}
//应付
if ( item . FRMB = = "" | | item . FRMB = = null )
{
c10 . SetCellValue ( 0 ) ;
sumFRmb + = 0 ;
}
else
{
c10 . SetCellType ( CellType . Numeric ) ;
c10 . SetCellValue ( double . Parse ( item . FRMB ) ) ;
sumFRmb + = double . Parse ( item . FRMB ) ;
}
if ( item . FUSD = = "" | | item . FUSD = = null )
{
c11 . SetCellType ( CellType . Numeric ) ;
c11 . SetCellValue ( 0 ) ;
sumFUsd + = 0 ;
}
else
{
c11 . SetCellValue ( double . Parse ( item . FUSD ) ) ;
sumFUsd + = double . Parse ( item . FUSD ) ;
}
rowindex + + ;
}
IRow rtotal = sheet . CreateRow ( rowindex ) ;
ICell ct0 = rtotal . CreateCell ( 0 ) ;
ct0 . CellStyle = styleHeji ;
ct0 . SetCellValue ( "合计" ) ;
for ( int i = 1 ; i < 9 ; i + + )
{
ICell ct1 = rtotal . CreateCell ( i ) ;
ct1 . CellStyle = styleNormal ;
ct1 . SetCellValue ( "" ) ;
}
ICell ctrmb = rtotal . CreateCell ( 8 ) ;
//ctrmb.SetCellType(CellType.Numeric);
ctrmb . CellStyle = styleNum ;
ctrmb . SetCellValue ( sumRmb ) ;
ICell ctusd = rtotal . CreateCell ( 9 ) ;
ctusd . CellStyle = styleNum ;
ctusd . SetCellValue ( sumUsd ) ;
ICell ctfrmb = rtotal . CreateCell ( 10 ) ;
ctfrmb . CellStyle = styleNum ;
ctfrmb . SetCellValue ( sumFRmb ) ;
ICell ctfusd = rtotal . CreateCell ( 11 ) ;
ctfusd . CellStyle = styleNum ;
ctfusd . SetCellValue ( sumFUsd ) ;
//列宽
sheet . SetColumnWidth ( 0 , 32 * 256 ) ;
sheet . SetColumnWidth ( 1 , 20 * 256 ) ;
sheet . SetColumnWidth ( 2 , 20 * 256 ) ;
sheet . SetColumnWidth ( 3 , 28 * 256 ) ;
sheet . SetColumnWidth ( 4 , 20 * 256 ) ;
sheet . SetColumnWidth ( 5 , 25 * 256 ) ;
sheet . SetColumnWidth ( 6 , 20 * 256 ) ;
sheet . SetColumnWidth ( 7 , 20 * 256 ) ;
sheet . SetColumnWidth ( 8 , 20 * 256 ) ;
sheet . SetColumnWidth ( 9 , 20 * 256 ) ;
sheet . SetColumnWidth ( 10 , 20 * 256 ) ;
sheet . SetColumnWidth ( 11 , 20 * 256 ) ;
sheet . AddMergedRegion ( new CellRangeAddress ( rowindex , rowindex , 0 , 7 ) ) ;
# endregion
if ( ISCHAOQI = = "1" | | ISCHAOQI = = "2" )
{
IRow rowsum = sheet . CreateRow ( rowindex + 1 ) ;
ICell celsum = rowsum . CreateCell ( 0 ) ;
sheet . AddMergedRegion ( new CellRangeAddress ( rowindex + 1 , rowindex + 1 , 0 , 11 ) ) ;
celsum . SetCellValue ( "滞纳金收取标准:(人民币欠费+美金欠费X实时汇率) X5‰X超期天数" ) ;
}
if ( ! System . IO . Directory . Exists ( path ) )
System . IO . Directory . CreateDirectory ( path ) ;
string fileName = "[" + custName + "]" + mainduiname + "_" + DateTime . Now . ToString ( "yyyyMMddHHmmssfff" ) + ".xls" ;
using ( FileStream file = new FileStream ( path + "\\" + fileName , FileMode . Create ) )
{
hssfworkbook . Write ( file ) ; //创建test.xls文件。
file . Close ( ) ;
}
filename = fileName ;
return path + "\\" + fileName ;
}
public static string ListToExcelNoDay ( List < MsChFeeYsAutoDuiExcelModel > list , string path , string sendUser , string sendCom , out string filename , string mainduiname , string useduiname , decimal EXCHANGERATE = 0 , string ISCHAOQI = "0" )
{
if ( list . Count < = 0 )
{
filename = "" ;
return "" ;
}
String custName = list [ 0 ] . KeHuMingCheng ;
String duino = list [ 0 ] . DuiNo ;
IWorkbook hssfworkbook = new HSSFWorkbook ( ) ;
ISheet sheet = hssfworkbook . CreateSheet ( "1" ) ;
#region 格式
ICellStyle styleNormal = hssfworkbook . CreateCellStyle ( ) ;
styleNormal . BorderBottom = BorderStyle . Thin ;
styleNormal . BorderLeft = BorderStyle . Thin ;
styleNormal . BorderRight = BorderStyle . Thin ;
styleNormal . BorderTop = BorderStyle . Thin ;
ICellStyle styleNum = hssfworkbook . CreateCellStyle ( ) ;
IDataFormat dataformat = hssfworkbook . CreateDataFormat ( ) ;
styleNum . DataFormat = HSSFDataFormat . GetBuiltinFormat ( "0.00" ) ;
styleNum . BorderBottom = BorderStyle . Thin ;
styleNum . BorderLeft = BorderStyle . Thin ;
styleNum . BorderRight = BorderStyle . Thin ;
styleNum . BorderTop = BorderStyle . Thin ;
ICellStyle styleHeji = hssfworkbook . CreateCellStyle ( ) ;
styleHeji . BorderBottom = BorderStyle . Thin ;
styleHeji . BorderLeft = BorderStyle . Thin ;
styleHeji . BorderRight = BorderStyle . Thin ;
styleHeji . BorderTop = BorderStyle . Thin ;
styleHeji . Alignment = HorizontalAlignment . Center ;
# endregion
#region 标题
IRow row0 = sheet . CreateRow ( 0 ) ;
ICell cell0 = row0 . CreateCell ( 0 ) ;
cell0 . SetCellValue ( sendCom ) ;
ICellStyle style0 = hssfworkbook . CreateCellStyle ( ) ;
style0 . Alignment = HorizontalAlignment . Center ;
IFont font = hssfworkbook . CreateFont ( ) ;
font . FontName = "宋体" ;
font . FontHeightInPoints = 18 ;
font . Boldweight = ( short ) FontBoldWeight . Bold ;
style0 . SetFont ( font ) ;
cell0 . CellStyle = style0 ;
sheet . AddMergedRegion ( new CellRangeAddress ( 0 , 0 , 0 , 11 ) ) ;
# endregion
#region 日期
IRow row1 = sheet . CreateRow ( 1 ) ;
ICell cel1 = row1 . CreateCell ( 0 ) ;
ICellStyle style1 = hssfworkbook . CreateCellStyle ( ) ;
style1 . Alignment = HorizontalAlignment . Center ;
IFont font2 = hssfworkbook . CreateFont ( ) ;
font2 . FontName = "宋体" ;
font2 . FontHeightInPoints = 14 ;
font2 . Boldweight = ( short ) FontBoldWeight . Bold ;
style0 . SetFont ( font2 ) ;
cel1 . CellStyle = style1 ;
sheet . AddMergedRegion ( new CellRangeAddress ( 1 , 1 , 0 , 13 ) ) ;
if ( useduiname = = "1" )
cel1 . SetCellValue ( mainduiname ) ;
else
cel1 . SetCellValue ( "(" + DateTime . Now . ToString ( "yyyyMM" ) + ")滞纳金收费通知" ) ;
# endregion
IRow row3 = sheet . CreateRow ( 2 ) ;
ICell cel3 = row3 . CreateCell ( 0 ) ;
sheet . AddMergedRegion ( new CellRangeAddress ( 2 , 2 , 0 , 13 ) ) ;
cel3 . SetCellValue ( "尊敬的客户:" ) ;
double sumNOAMOUNT = 0 ;
if ( ISCHAOQI = = "1" )
{
foreach ( var item in list )
{
if ( item . NOAMOUNT = = "" | | item . NOAMOUNT = = null )
{
sumNOAMOUNT + = 0 ;
}
else
{
sumNOAMOUNT + = double . Parse ( item . NOAMOUNT ) ;
}
}
}
#region 对账客户
string email = "" ;
string qq = "" ;
string phone = GetPhoneWithUserId ( out email , out qq ) ;
_email = email ;
IRow row2 = sheet . CreateRow ( 3 ) ;
ICell cel2 = row2 . CreateCell ( 0 ) ;
sheet . AddMergedRegion ( new CellRangeAddress ( 3 , 3 , 0 , 13 ) ) ;
if ( ISCHAOQI ! = "1" )
cel2 . SetCellValue ( "贵司在我司订舱的如下货物即将产生滞纳金,请合理安排付款,避免超期。如已付款,请忽略。谢谢合作!" ) ;
else
cel2 . SetCellValue ( "截止到今天为止,贵司在我司订舱的如下货物已产生累计:" + Math . Round ( sumNOAMOUNT , 2 , MidpointRounding . AwayFromZero ) . ToString ( ) + "元滞纳金。请尽快安排付款买单,如已付款,请忽略。谢谢合作!" ) ;
# endregion
#region 对账联系人
# endregion
#region 表头
IRow row4 = sheet . CreateRow ( 4 ) ;
ICell head0 = row4 . CreateCell ( 0 ) ;
head0 . CellStyle = styleNormal ;
head0 . SetCellValue ( "对账抬头" ) ;
ICell head1 = row4 . CreateCell ( 1 ) ;
head1 . CellStyle = styleNormal ;
head1 . SetCellValue ( "开船日" ) ;
ICell head2 = row4 . CreateCell ( 2 ) ;
head2 . CellStyle = styleNormal ;
head2 . SetCellValue ( "船名" ) ;
ICell head3 = row4 . CreateCell ( 3 ) ;
head3 . CellStyle = styleNormal ;
head3 . SetCellValue ( "航次" ) ;
ICell head4 = row4 . CreateCell ( 4 ) ;
head4 . CellStyle = styleNormal ;
head4 . SetCellValue ( "目的港" ) ;
ICell head5 = row4 . CreateCell ( 5 ) ;
head5 . CellStyle = styleNormal ;
head5 . SetCellValue ( "MB/L No" ) ;
ICell head6 = row4 . CreateCell ( 6 ) ;
head6 . CellStyle = styleNormal ;
head6 . SetCellValue ( "操作" ) ;
ICell head7 = row4 . CreateCell ( 7 ) ;
head7 . CellStyle = styleNormal ;
head7 . SetCellValue ( "销售" ) ;
ICell head8 = row4 . CreateCell ( 8 ) ;
head8 . CellStyle = styleNormal ;
head8 . SetCellValue ( "应收RMB" ) ;
ICell head9 = row4 . CreateCell ( 9 ) ;
head9 . CellStyle = styleNormal ;
head9 . SetCellValue ( "应收USD" ) ;
ICell head10 = row4 . CreateCell ( 10 ) ;
head10 . CellStyle = styleNormal ;
head10 . SetCellValue ( "应付RMB" ) ;
ICell head11 = row4 . CreateCell ( 11 ) ;
head11 . CellStyle = styleNormal ;
head11 . SetCellValue ( "应付USD" ) ;
ICell head12 = row4 . CreateCell ( 12 ) ;
head12 . CellStyle = styleNormal ;
head12 . SetCellValue ( "超期天数" ) ;
ICell head13 = row4 . CreateCell ( 13 ) ;
head13 . CellStyle = styleNormal ;
head13 . SetCellValue ( "滞期费" ) ;
# endregion
#region 明细
int rowindex = 5 ;
double sumRmb = 0 ;
double sumUsd = 0 ;
double sumFRmb = 0 ;
double sumFUsd = 0 ;
foreach ( var item in list )
{
IRow r = sheet . CreateRow ( rowindex ) ;
ICell c0 = r . CreateCell ( 0 ) ;
c0 . CellStyle = styleNormal ;
c0 . SetCellValue ( item . KeHuMingCheng ) ;
ICell c1 = r . CreateCell ( 1 ) ;
c1 . CellStyle = styleNormal ;
c1 . SetCellValue ( item . KaiChuanRi ) ;
ICell c2 = r . CreateCell ( 2 ) ;
c2 . CellStyle = styleNormal ;
c2 . SetCellValue ( item . ChuanMing ) ;
ICell c3 = r . CreateCell ( 3 ) ;
c3 . CellStyle = styleNormal ;
c3 . SetCellValue ( item . HangCi ) ;
ICell c4 = r . CreateCell ( 4 ) ;
c4 . CellStyle = styleNormal ;
c4 . SetCellValue ( item . MuDiGang ) ;
ICell c5 = r . CreateCell ( 5 ) ;
c5 . CellStyle = styleNormal ;
c5 . SetCellValue ( item . MBLNO ) ;
ICell c6 = r . CreateCell ( 6 ) ;
c6 . CellStyle = styleNormal ;
c6 . SetCellValue ( item . OP ) ;
ICell c7 = r . CreateCell ( 7 ) ;
c7 . CellStyle = styleNormal ;
c7 . SetCellValue ( item . SALE ) ;
ICell c8 = r . CreateCell ( 8 ) ;
c8 . CellStyle = styleNum ;
ICell c9 = r . CreateCell ( 9 ) ;
c9 . CellStyle = styleNum ;
ICell c10 = r . CreateCell ( 10 ) ;
c10 . CellStyle = styleNum ;
ICell c11 = r . CreateCell ( 11 ) ;
c11 . CellStyle = styleNum ;
ICell c12 = r . CreateCell ( 12 ) ;
c12 . CellStyle = styleNormal ;
c12 . SetCellValue ( item . NODAY ) ;
ICell c13 = r . CreateCell ( 13 ) ;
c13 . CellStyle = styleNum ;
if ( item . RMB = = "" | | item . RMB = = null )
{
c8 . SetCellValue ( 0 ) ;
sumRmb + = 0 ;
}
else
{
c8 . SetCellType ( CellType . Numeric ) ;
c8 . SetCellValue ( double . Parse ( item . RMB ) ) ;
sumRmb + = double . Parse ( item . RMB ) ;
}
if ( item . USD = = "" | | item . USD = = null )
{
c9 . SetCellType ( CellType . Numeric ) ;
c9 . SetCellValue ( 0 ) ;
sumUsd + = 0 ;
}
else
{
c9 . SetCellValue ( double . Parse ( item . USD ) ) ;
sumUsd + = double . Parse ( item . USD ) ;
}
//应付
if ( item . FRMB = = "" | | item . FRMB = = null )
{
c10 . SetCellValue ( 0 ) ;
sumFRmb + = 0 ;
}
else
{
c10 . SetCellType ( CellType . Numeric ) ;
c10 . SetCellValue ( double . Parse ( item . FRMB ) ) ;
sumFRmb + = double . Parse ( item . FRMB ) ;
}
if ( item . FUSD = = "" | | item . FUSD = = null )
{
c11 . SetCellType ( CellType . Numeric ) ;
c11 . SetCellValue ( 0 ) ;
sumFUsd + = 0 ;
}
else
{
c11 . SetCellValue ( double . Parse ( item . FUSD ) ) ;
sumFUsd + = double . Parse ( item . FUSD ) ;
}
if ( item . NOAMOUNT = = "" | | item . NOAMOUNT = = null | | ISCHAOQI ! = "1" )
{
c13 . SetCellType ( CellType . Numeric ) ;
c13 . SetCellValue ( 0 ) ;
}
else
{
c13 . SetCellValue ( double . Parse ( item . NOAMOUNT ) ) ;
}
rowindex + + ;
}
IRow rtotal = sheet . CreateRow ( rowindex ) ;
ICell ct0 = rtotal . CreateCell ( 0 ) ;
ct0 . CellStyle = styleHeji ;
ct0 . SetCellValue ( "合计" ) ;
for ( int i = 1 ; i < 9 ; i + + )
{
ICell ct1 = rtotal . CreateCell ( i ) ;
ct1 . CellStyle = styleNormal ;
ct1 . SetCellValue ( "" ) ;
}
ICell ctrmb = rtotal . CreateCell ( 8 ) ;
//ctrmb.SetCellType(CellType.Numeric);
ctrmb . CellStyle = styleNum ;
ctrmb . SetCellValue ( sumRmb ) ;
ICell ctusd = rtotal . CreateCell ( 9 ) ;
ctusd . CellStyle = styleNum ;
ctusd . SetCellValue ( sumUsd ) ;
ICell ctfrmb = rtotal . CreateCell ( 10 ) ;
ctfrmb . CellStyle = styleNum ;
ctfrmb . SetCellValue ( sumFRmb ) ;
ICell ctfusd = rtotal . CreateCell ( 11 ) ;
ctfusd . CellStyle = styleNum ;
ctfusd . SetCellValue ( sumFUsd ) ;
ICell ct12 = rtotal . CreateCell ( 12 ) ;
ct12 . CellStyle = styleNormal ;
ct12 . SetCellValue ( "" ) ;
ICell ctfnoamount = rtotal . CreateCell ( 13 ) ;
ctfnoamount . CellStyle = styleNum ;
ctfnoamount . SetCellValue ( sumNOAMOUNT ) ;
//列宽
sheet . SetColumnWidth ( 0 , 32 * 256 ) ;
sheet . SetColumnWidth ( 1 , 20 * 256 ) ;
sheet . SetColumnWidth ( 2 , 20 * 256 ) ;
sheet . SetColumnWidth ( 3 , 28 * 256 ) ;
sheet . SetColumnWidth ( 4 , 20 * 256 ) ;
sheet . SetColumnWidth ( 5 , 25 * 256 ) ;
sheet . SetColumnWidth ( 6 , 20 * 256 ) ;
sheet . SetColumnWidth ( 7 , 20 * 256 ) ;
sheet . SetColumnWidth ( 8 , 20 * 256 ) ;
sheet . SetColumnWidth ( 9 , 20 * 256 ) ;
sheet . SetColumnWidth ( 10 , 20 * 256 ) ;
sheet . SetColumnWidth ( 11 , 20 * 256 ) ;
sheet . SetColumnWidth ( 12 , 20 * 256 ) ;
sheet . SetColumnWidth ( 13 , 20 * 256 ) ;
sheet . AddMergedRegion ( new CellRangeAddress ( rowindex , rowindex , 0 , 7 ) ) ;
# endregion
IRow rowsum = sheet . CreateRow ( rowindex + 1 ) ;
ICell celsum = rowsum . CreateCell ( 0 ) ;
sheet . AddMergedRegion ( new CellRangeAddress ( rowindex + 1 , rowindex + 1 , 0 , 13 ) ) ;
celsum . SetCellValue ( "滞纳金收取标准:人民币欠费+美金欠费X" + EXCHANGERATE . ToString ( ) + "X5‰X超期天数" ) ;
if ( ! System . IO . Directory . Exists ( path ) )
System . IO . Directory . CreateDirectory ( path ) ;
string fileName = "[" + custName + "]" + mainduiname + "_" + DateTime . Now . ToString ( "yyyyMMddHHmmssfff" ) + ".xls" ;
using ( FileStream file = new FileStream ( path + "\\" + fileName , FileMode . Create ) )
{
hssfworkbook . Write ( file ) ; //创建test.xls文件。
file . Close ( ) ;
}
filename = fileName ;
return path + "\\" + fileName ;
}
public static string ListToExcelNoOpSale ( List < MsChFeeYsAutoDuiExcelModel > list , string path , string sendUser , string sendCom , out string filename , string mainduiname , string useduiname )
{
if ( list . Count < = 0 )
{
filename = "" ;
return "" ;
}
String custName = list [ 0 ] . KeHuMingCheng ;
String duino = list [ 0 ] . DuiNo ;
IWorkbook hssfworkbook = new HSSFWorkbook ( ) ;
ISheet sheet = hssfworkbook . CreateSheet ( "1" ) ;
#region 格式
ICellStyle styleNormal = hssfworkbook . CreateCellStyle ( ) ;
styleNormal . BorderBottom = BorderStyle . Thin ;
styleNormal . BorderLeft = BorderStyle . Thin ;
styleNormal . BorderRight = BorderStyle . Thin ;
styleNormal . BorderTop = BorderStyle . Thin ;
ICellStyle styleNum = hssfworkbook . CreateCellStyle ( ) ;
IDataFormat dataformat = hssfworkbook . CreateDataFormat ( ) ;
styleNum . DataFormat = HSSFDataFormat . GetBuiltinFormat ( "0.00" ) ;
styleNum . BorderBottom = BorderStyle . Thin ;
styleNum . BorderLeft = BorderStyle . Thin ;
styleNum . BorderRight = BorderStyle . Thin ;
styleNum . BorderTop = BorderStyle . Thin ;
ICellStyle styleHeji = hssfworkbook . CreateCellStyle ( ) ;
styleHeji . BorderBottom = BorderStyle . Thin ;
styleHeji . BorderLeft = BorderStyle . Thin ;
styleHeji . BorderRight = BorderStyle . Thin ;
styleHeji . BorderTop = BorderStyle . Thin ;
styleHeji . Alignment = HorizontalAlignment . Center ;
# endregion
#region 标题
IRow row0 = sheet . CreateRow ( 0 ) ;
ICell cell0 = row0 . CreateCell ( 0 ) ;
cell0 . SetCellValue ( sendCom ) ;
ICellStyle style0 = hssfworkbook . CreateCellStyle ( ) ;
style0 . Alignment = HorizontalAlignment . Center ;
IFont font = hssfworkbook . CreateFont ( ) ;
font . FontName = "宋体" ;
font . FontHeightInPoints = 18 ;
font . Boldweight = ( short ) FontBoldWeight . Bold ;
style0 . SetFont ( font ) ;
cell0 . CellStyle = style0 ;
sheet . AddMergedRegion ( new CellRangeAddress ( 0 , 0 , 0 , 11 ) ) ;
# endregion
#region 日期
IRow row1 = sheet . CreateRow ( 1 ) ;
ICell cel1 = row1 . CreateCell ( 0 ) ;
ICellStyle style1 = hssfworkbook . CreateCellStyle ( ) ;
style1 . Alignment = HorizontalAlignment . Center ;
IFont font2 = hssfworkbook . CreateFont ( ) ;
font2 . FontName = "宋体" ;
font2 . FontHeightInPoints = 14 ;
font2 . Boldweight = ( short ) FontBoldWeight . Bold ;
style0 . SetFont ( font2 ) ;
cel1 . CellStyle = style1 ;
sheet . AddMergedRegion ( new CellRangeAddress ( 1 , 1 , 0 , 10 ) ) ;
if ( useduiname = = "1" )
cel1 . SetCellValue ( mainduiname ) ;
else
cel1 . SetCellValue ( "(" + DateTime . Now . ToString ( "yyyyMM" ) + ")费用确认单" ) ;
# endregion
#region 对账客户
string email = "" ;
string qq = "" ;
string phone = GetPhoneWithUserId ( out email , out qq ) ;
_email = email ;
IRow row2 = sheet . CreateRow ( 2 ) ;
ICell cel2 = row2 . CreateCell ( 0 ) ;
sheet . AddMergedRegion ( new CellRangeAddress ( 2 , 2 , 0 , 10 ) ) ;
cel2 . SetCellValue ( "对账联系人:" + sendUser + " 联系电话:"
+ phone + " E-Mail:" + email + " QQ:" + qq + " 对账编号:" + duino ) ;
# endregion
#region 对账联系人
IRow row3 = sheet . CreateRow ( 3 ) ;
ICell cel3 = row3 . CreateCell ( 0 ) ;
row3 . Height = 0 ;
# endregion
#region 表头
IRow row4 = sheet . CreateRow ( 4 ) ;
ICell head0 = row4 . CreateCell ( 0 ) ;
head0 . CellStyle = styleNormal ;
head0 . SetCellValue ( "对账抬头" ) ;
ICell head1 = row4 . CreateCell ( 1 ) ;
head1 . CellStyle = styleNormal ;
head1 . SetCellValue ( "开船日" ) ;
ICell head2 = row4 . CreateCell ( 2 ) ;
head2 . CellStyle = styleNormal ;
head2 . SetCellValue ( "船名" ) ;
ICell head3 = row4 . CreateCell ( 3 ) ;
head3 . CellStyle = styleNormal ;
head3 . SetCellValue ( "航次" ) ;
ICell head4 = row4 . CreateCell ( 4 ) ;
head4 . CellStyle = styleNormal ;
head4 . SetCellValue ( "目的港" ) ;
ICell head5 = row4 . CreateCell ( 5 ) ;
head5 . CellStyle = styleNormal ;
head5 . SetCellValue ( "MB/L No" ) ;
ICell head8 = row4 . CreateCell ( 6 ) ;
head8 . CellStyle = styleNormal ;
head8 . SetCellValue ( "应收RMB" ) ;
ICell head9 = row4 . CreateCell ( 7 ) ;
head9 . CellStyle = styleNormal ;
head9 . SetCellValue ( "应收USD" ) ;
ICell head10 = row4 . CreateCell ( 8 ) ;
head10 . CellStyle = styleNormal ;
head10 . SetCellValue ( "应付RMB" ) ;
ICell head11 = row4 . CreateCell ( 9 ) ;
head11 . CellStyle = styleNormal ;
head11 . SetCellValue ( "应付USD" ) ;
# endregion
#region 明细
int rowindex = 5 ;
double sumRmb = 0 ;
double sumUsd = 0 ;
double sumFRmb = 0 ;
double sumFUsd = 0 ;
foreach ( var item in list )
{
IRow r = sheet . CreateRow ( rowindex ) ;
ICell c0 = r . CreateCell ( 0 ) ;
c0 . CellStyle = styleNormal ;
c0 . SetCellValue ( item . KeHuMingCheng ) ;
ICell c1 = r . CreateCell ( 1 ) ;
c1 . CellStyle = styleNormal ;
c1 . SetCellValue ( item . KaiChuanRi ) ;
ICell c2 = r . CreateCell ( 2 ) ;
c2 . CellStyle = styleNormal ;
c2 . SetCellValue ( item . ChuanMing ) ;
ICell c3 = r . CreateCell ( 3 ) ;
c3 . CellStyle = styleNormal ;
c3 . SetCellValue ( item . HangCi ) ;
ICell c4 = r . CreateCell ( 4 ) ;
c4 . CellStyle = styleNormal ;
c4 . SetCellValue ( item . MuDiGang ) ;
ICell c5 = r . CreateCell ( 5 ) ;
c5 . CellStyle = styleNormal ;
c5 . SetCellValue ( item . MBLNO ) ;
//ICell c6 = r.CreateCell(6);
//c6.CellStyle = styleNormal;
//c6.SetCellValue(item.OP);
//ICell c7 = r.CreateCell(7);
//c7.CellStyle = styleNormal;
//c7.SetCellValue(item.SALE);
ICell c8 = r . CreateCell ( 6 ) ;
c8 . CellStyle = styleNum ;
ICell c9 = r . CreateCell ( 7 ) ;
c9 . CellStyle = styleNum ;
ICell c10 = r . CreateCell ( 8 ) ;
c10 . CellStyle = styleNum ;
ICell c11 = r . CreateCell ( 9 ) ;
c11 . CellStyle = styleNum ;
if ( item . RMB = = "" | | item . RMB = = null )
{
c8 . SetCellValue ( 0 ) ;
sumRmb + = 0 ;
}
else
{
c8 . SetCellType ( CellType . Numeric ) ;
c8 . SetCellValue ( double . Parse ( item . RMB ) ) ;
sumRmb + = double . Parse ( item . RMB ) ;
}
if ( item . USD = = "" | | item . USD = = null )
{
c9 . SetCellType ( CellType . Numeric ) ;
c9 . SetCellValue ( 0 ) ;
sumUsd + = 0 ;
}
else
{
c9 . SetCellValue ( double . Parse ( item . USD ) ) ;
sumUsd + = double . Parse ( item . USD ) ;
}
//应付
if ( item . FRMB = = "" | | item . FRMB = = null )
{
c10 . SetCellValue ( 0 ) ;
sumFRmb + = 0 ;
}
else
{
c10 . SetCellType ( CellType . Numeric ) ;
c10 . SetCellValue ( double . Parse ( item . FRMB ) ) ;
sumFRmb + = double . Parse ( item . FRMB ) ;
}
if ( item . FUSD = = "" | | item . FUSD = = null )
{
c11 . SetCellType ( CellType . Numeric ) ;
c11 . SetCellValue ( 0 ) ;
sumFUsd + = 0 ;
}
else
{
c11 . SetCellValue ( double . Parse ( item . FUSD ) ) ;
sumFUsd + = double . Parse ( item . FUSD ) ;
}
rowindex + + ;
}
IRow rtotal = sheet . CreateRow ( rowindex ) ;
ICell ct0 = rtotal . CreateCell ( 0 ) ;
ct0 . CellStyle = styleHeji ;
ct0 . SetCellValue ( "合计" ) ;
for ( int i = 1 ; i < 7 ; i + + )
{
ICell ct1 = rtotal . CreateCell ( i ) ;
ct1 . CellStyle = styleNormal ;
ct1 . SetCellValue ( "" ) ;
}
ICell ctrmb = rtotal . CreateCell ( 6 ) ;
//ctrmb.SetCellType(CellType.Numeric);
ctrmb . CellStyle = styleNum ;
ctrmb . SetCellValue ( sumRmb ) ;
ICell ctusd = rtotal . CreateCell ( 7 ) ;
ctusd . CellStyle = styleNum ;
ctusd . SetCellValue ( sumUsd ) ;
ICell ctfrmb = rtotal . CreateCell ( 8 ) ;
ctfrmb . CellStyle = styleNum ;
ctfrmb . SetCellValue ( sumFRmb ) ;
ICell ctfusd = rtotal . CreateCell ( 9 ) ;
ctfusd . CellStyle = styleNum ;
ctfusd . SetCellValue ( sumFUsd ) ;
//列宽
sheet . SetColumnWidth ( 0 , 32 * 256 ) ;
sheet . SetColumnWidth ( 1 , 20 * 256 ) ;
sheet . SetColumnWidth ( 2 , 20 * 256 ) ;
sheet . SetColumnWidth ( 3 , 28 * 256 ) ;
sheet . SetColumnWidth ( 4 , 20 * 256 ) ;
sheet . SetColumnWidth ( 5 , 25 * 256 ) ;
//sheet.SetColumnWidth(6, 20 * 256);
//sheet.SetColumnWidth(7, 20 * 256);
sheet . SetColumnWidth ( 6 , 20 * 256 ) ;
sheet . SetColumnWidth ( 7 , 20 * 256 ) ;
sheet . SetColumnWidth ( 8 , 20 * 256 ) ;
sheet . SetColumnWidth ( 9 , 20 * 256 ) ;
sheet . AddMergedRegion ( new CellRangeAddress ( rowindex , rowindex , 0 , 5 ) ) ;
# endregion
if ( ! System . IO . Directory . Exists ( path ) )
System . IO . Directory . CreateDirectory ( path ) ;
string fileName = "[" + custName + "]" + mainduiname + "_" + DateTime . Now . ToString ( "yyyyMMddHHmmssfff" ) + ".xls" ;
using ( FileStream file = new FileStream ( path + "\\" + fileName , FileMode . Create ) )
{
hssfworkbook . Write ( file ) ; //创建test.xls文件。
file . Close ( ) ;
}
filename = fileName ;
return path + "\\" + fileName ;
}
private static DBResult SendMailWithExcelFile ( string title , string context , string excelPath , string custMailAddress , string ccmailaddr , string comname , string toname , DSWeb . SoftMng . Model . EmailConfig model , string username , string cc )
{
var result = new DBResult ( ) ;
// SendEmail se = new SendEmail("dongshengsoft@dongshengsoft.com", "admin@dongshengsoft.com", "", "", title, context, false);
// se.SetSmtp("admin@dongshengsoft.com", "ds!@#)(*", "smtpcom.263xmail.com", 25, false,
//System.Net.Mail.MailPriority.Normal);
if ( custMailAddress = = "" )
{
result . Success = false ;
result . Message = "客户邮箱不能为空!" ;
return result ;
}
try
{
//var ccList = new List<string>();
//ccList.Add("*****@qq.com");
var recipients = new List < string > ( ) ;
var ccList = new List < string > ( ) ;
string [ ] emailList = custMailAddress . Split ( ';' ) ;
foreach ( var m in emailList )
{
if ( m . Trim ( ) ! = "" )
recipients . Add ( m ) ;
}
var opmail = "" ;
if ( cc = = "1" )
{
string [ ] ccemailList = ccmailaddr . Split ( ';' ) ;
var i = 0 ;
foreach ( var m in ccemailList )
{
if ( m . Trim ( ) ! = "" )
ccList . Add ( m ) ;
if ( i = = 0 ) opmail = m ;
i = i + 1 ;
}
}
if ( opmail = = "" ) opmail = model . EmailAccount ;
var mailBodyEntity = new MailBodyEntity ( )
{
Body = context ,
Cc = ccList ,
//MailBodyType = "html",
MailFiles = new List < MailFile > ( ) {
new MailFile { MailFilePath = excelPath , MailFileSubType = "xls" , MailFileType = "xls" }
} ,
Recipients = recipients ,
Sender = opmail ,
SenderAddress = opmail ,
Subject = title ,
} ;
var sendServerConfiguration = new SendServerConfigurationEntity ( )
{
SenderPassword = model . EmailPass ,
SmtpPort = Convert . ToInt32 ( model . Port ) ,
IsSsl = true ,
MailEncoding = "utf-8" ,
SenderAccount = model . EmailAccount ,
SmtpHost = model . ServerAddr ,
} ;
var Mailresult = MailHelper . SendMail ( mailBodyEntity , sendServerConfiguration ) ;
if ( Mailresult . ResultStatus = = true )
{
var filename = Path . GetFileName ( excelPath ) ;
var head = new OpMailLog ( ) ;
head . BSNO = "" ;
head . BLTYPE = "自动对账" ;
head . RECEIVER = custMailAddress ;
head . SUBJECT = title ;
head . DESCRIPTION = context ;
head . ATTACHMENT = "../../ AutoDuiFiles / Excels" + filename ;
head . SENDER = username ;
head . SENDTIME = DateTime . Now . ToString ( "yyyy-MM-dd HH:mm:ss" ) ;
head . DbOperationType = DbOperationType . DbotIns ;
var modb = new ModelObjectDB ( ) ;
modb . Save ( head ) ;
}
else {
result . Success = Mailresult . ResultStatus ;
result . Message = Mailresult . ResultInformation ;
return result ;
}
//ReceiveEmailHelper.ReceiveEmail();
//ReceiveEmailHelper.DownloadBodyParts();
//Console.WriteLine("成功!");
//Console.ReadLine();
}
catch ( Exception ex )
{
result . Success = false ;
result . Message = ex . Message ;
return result ;
}
result . Success = true ;
result . Message = "发送成功!" ;
return result ;
//SendEmail se = new SendEmail(custMailAddress, model.EmailAccount, "", "", title, context, false);
//// SendEmail se = new SendEmail("dev001@dongshengsoft.com", "admin@dongshengsoft.com", "", "", mailtopic, mailbody, false);
//se.Attachments(excelPath);
//try
//{
// se.SetSmtp(model.EmailAccount, model.EmailPass, model.ServerAddr, Convert.ToInt32(model.Port), true, System.Net.Mail.MailPriority.Normal); //必须在所有参数设置完后调用此方法
// var filename = Path.GetFileName(excelPath);
// var head = new OpMailLog();
// head.BSNO = "";
// head.BLTYPE = "自动对账";
// head.RECEIVER = custMailAddress;
// head.SUBJECT = title;
// head.DESCRIPTION = context;
// head.ATTACHMENT = "../../ AutoDuiFiles / Excels" + filename;
// head.SENDER = username;
// head.SENDTIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
// head.DbOperationType = DbOperationType.DbotIns;
// var modb = new ModelObjectDB();
// modb.Save(head);
//}
//catch (Exception e)
//{
// se.SetSmtp(model.EmailAccount, model.EmailPass, model.ServerAddr, Convert.ToInt32(model.Port), false, System.Net.Mail.MailPriority.Normal); //必须在所有参数设置完后调用此方法
// //
//}
//var useremail = _email;
//if (useremail.Trim() == "") useremail = "admin@dongshengsoft.com";
//MailAddress mafrom = new MailAddress(useremail, comname, Encoding.GetEncoding(936));
//MailAddress mato = new MailAddress(custMailAddress, toname, Encoding.GetEncoding(936));
//using (var smtp = new SmtpClient())
////TO:
//using (var mail = new MailMessage(mafrom, mato))
//{
// //附件
// var attach = new Attachment(excelPath, MediaTypeNames.Application.Octet);
// //设置ContentId
// mail.Attachments.Add(attach);
// //标题和内容, 注意设置编码, 因为默认编码是ASCII
// mail.Subject = title;
// mail.SubjectEncoding = Encoding.UTF8;
// //HTML内容
// mail.Body = context;
// mail.BodyEncoding = Encoding.UTF8;
// //指示改电子邮件内容是HTML格式
// mail.IsBodyHtml = true;
// //SMTP设置( 根据邮箱类型设置, 这里是Live Mail的SMTP服务器地址)
// smtp.Host = model.ServerAddr;// "smtpcom.263xmail.com";//服务器地址
// smtp.Port = Convert.ToInt32(model.Port);// 465;//端口
// smtp.EnableSsl =Convert.ToBoolean(model.SSL);// false;//SSL
// smtp.UseDefaultCredentials = false;
// smtp.Credentials = new NetworkCredential(model.EmailAccount, model.EmailPass);//new NetworkCredential("admin@dongshengsoft.com", "ds!@#)(*");//账号密码
// smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
// //发送
// smtp.Send(mail);
// var filename = Path.GetFileName(excelPath);
// var head = new OpMailLog();
// head.BSNO = "";
// head.BLTYPE ="自动对账";
// head.RECEIVER = custMailAddress;
// head.SUBJECT = title;
// head.DESCRIPTION = context;
// head.ATTACHMENT = "../../ AutoDuiFiles / Excels" + filename;
// head.SENDER = username;
// head.SENDTIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
// head.DbOperationType = DbOperationType.DbotIns;
// var modb = new ModelObjectDB();
// modb.Save(head);
//}
}
private static string GetUserNameWithUserId ( string userid )
{
string sql = "select showname from [user] where gid = '" + userid + "' " ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
return db . ExecuteScalar ( CommandType . Text , sql ) . ToString ( ) ;
}
private static string GetComNameWithComId ( string comid )
{
string sql = "select fullname from company where gid = '" + comid + "' " ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
return db . ExecuteScalar ( CommandType . Text , sql ) . ToString ( ) ;
}
private static string GetPhoneWithUserId ( out string email , out string qq )
{
string sql = "select officephone,EMAIL1,QQ from user_baseinfo where userid = '" + _UserId + "' " ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
string phone = "" ;
email = "" ;
qq = "" ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , sql ) )
{
while ( reader . Read ( ) )
{
phone = reader [ "officephone" ] . ToString ( ) ;
email = reader [ "EMAIL1" ] . ToString ( ) ;
qq = reader [ "QQ" ] . ToString ( ) ;
}
reader . Close ( ) ;
}
return phone ;
}
private static void CreateZipFile ( string filesPath , string zipFilePath )
{
if ( ! Directory . Exists ( filesPath ) )
{
Console . WriteLine ( "Cannot find directory '{0}'" , filesPath ) ;
return ;
}
try
{
string [ ] filenames = Directory . GetFiles ( filesPath ) ;
using ( ZipOutputStream s = new ZipOutputStream ( File . Create ( zipFilePath ) ) )
{
s . SetLevel ( 9 ) ; // 压缩级别 0-9
//s.Password = "123"; //Zip压缩文件密码
byte [ ] buffer = new byte [ 4096 ] ; //缓冲区大小
foreach ( string file in filenames )
{
ZipEntry entry = new ZipEntry ( Path . GetFileName ( file ) ) ;
entry . DateTime = DateTime . Now ;
s . PutNextEntry ( entry ) ;
using ( FileStream fs = File . OpenRead ( file ) )
{
int sourceBytes ;
do
{
sourceBytes = fs . Read ( buffer , 0 , buffer . Length ) ;
s . Write ( buffer , 0 , sourceBytes ) ;
} while ( sourceBytes > 0 ) ;
}
}
s . Finish ( ) ;
s . Close ( ) ;
}
}
catch ( Exception ex )
{
Console . WriteLine ( "Exception during processing {0}" , ex ) ;
}
}
/// <summary>
/// 压缩多个目录或文件
/// </summary>
/// <param name="folderOrFileList">待压缩的文件夹或者文件,全路径格式,是一个集合</param>
/// <param name="zipedFile">压缩后的文件名,全路径格式</param>
/// <param name="password">压宿密码</param>
/// <returns></returns>
public static bool ZipManyFilesOrDictorys ( IEnumerable < string > folderOrFileList , string zipedFile , string password )
{
bool res = true ;
using ( var s = new ZipOutputStream ( File . Create ( zipedFile ) ) )
{
s . SetLevel ( 6 ) ;
if ( ! string . IsNullOrEmpty ( password ) )
{
s . Password = password ;
}
foreach ( string fileOrDir in folderOrFileList )
{
//是文件夹
if ( Directory . Exists ( fileOrDir ) )
{
res = ZipFileDictory ( fileOrDir , s , "" ) ;
}
else
{
//文件
res = ZipFileWithStream ( fileOrDir , s ) ;
}
}
s . Finish ( ) ;
s . Close ( ) ;
return res ;
}
}
/// <summary>
/// 递归压缩文件夹方法
/// </summary>
/// <param name="folderToZip"></param>
/// <param name="s"></param>
/// <param name="parentFolderName"></param>
private static bool ZipFileDictory ( string folderToZip , ZipOutputStream s , string parentFolderName )
{
bool res = true ;
ZipEntry entry = null ;
FileStream fs = null ;
Crc32 crc = new Crc32 ( ) ;
try
{
//创建当前文件夹
entry = new ZipEntry ( Path . Combine ( parentFolderName , Path . GetFileName ( folderToZip ) + "/" ) ) ; //加上 “/” 才会当成是文件夹创建
s . PutNextEntry ( entry ) ;
s . Flush ( ) ;
//先压缩文件,再递归压缩文件夹
var filenames = Directory . GetFiles ( folderToZip ) ;
foreach ( string file in filenames )
{
//打开压缩文件
fs = File . OpenRead ( file ) ;
byte [ ] buffer = new byte [ fs . Length ] ;
fs . Read ( buffer , 0 , buffer . Length ) ;
entry = new ZipEntry ( Path . Combine ( parentFolderName , Path . GetFileName ( folderToZip ) + "/" + Path . GetFileName ( file ) ) ) ;
entry . DateTime = DateTime . Now ;
entry . Size = fs . Length ;
fs . Close ( ) ;
crc . Reset ( ) ;
crc . Update ( buffer ) ;
entry . Crc = crc . Value ;
s . PutNextEntry ( entry ) ;
s . Write ( buffer , 0 , buffer . Length ) ;
}
}
catch
{
res = false ;
}
finally
{
if ( fs ! = null )
{
fs . Close ( ) ;
}
if ( entry ! = null )
{
}
GC . Collect ( ) ;
GC . Collect ( 1 ) ;
}
var folders = Directory . GetDirectories ( folderToZip ) ;
foreach ( string folder in folders )
{
if ( ! ZipFileDictory ( folder , s , Path . Combine ( parentFolderName , Path . GetFileName ( folderToZip ) ) ) )
{
return false ;
}
}
return res ;
}
/// <summary>
/// 带压缩流压缩单个文件
/// </summary>
/// <param name="fileToZip">要进行压缩的文件名</param>
/// <param name="zipStream"></param>
/// <returns></returns>
private static bool ZipFileWithStream ( string fileToZip , ZipOutputStream zipStream )
{
//如果文件没有找到,则报错
if ( ! File . Exists ( fileToZip ) )
{
throw new FileNotFoundException ( "指定要压缩的文件: " + fileToZip + " 不存在!" ) ;
}
//FileStream fs = null;
FileStream zipFile = null ;
ZipEntry zipEntry = null ;
bool res = true ;
try
{
zipFile = File . OpenRead ( fileToZip ) ;
byte [ ] buffer = new byte [ zipFile . Length ] ;
zipFile . Read ( buffer , 0 , buffer . Length ) ;
zipFile . Close ( ) ;
zipEntry = new ZipEntry ( Path . GetFileName ( fileToZip ) ) ;
zipStream . PutNextEntry ( zipEntry ) ;
zipStream . Write ( buffer , 0 , buffer . Length ) ;
}
catch
{
res = false ;
}
finally
{
if ( zipEntry ! = null )
{
}
if ( zipFile ! = null )
{
zipFile . Close ( ) ;
}
GC . Collect ( ) ;
GC . Collect ( 1 ) ;
}
return res ;
}
public static bool CreateAndUpdateDui ( string condition , string dMainId , string comid , string usershowname )
{
try
{
//获取ch_fee.id 集合
var strSql = new StringBuilder ( ) ;
strSql . Append ( @ "SELECT
C . CUSTOMERNAME ,
C . GID ,
VB . BSNO
FROM ch_fee C
LEFT JOIN v_op_bill VB on VB . BSNO = C . BSNO
WHERE 1 = 1 and C . CUSTOMERNAME < > ' ' ");
if ( condition ! = "" )
{
strSql . Append ( condition ) ;
}
strSql . Append ( "order by C.CUSTOMERNAME" ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
List < MsChFeeYsAutoDuiCreateModel > listc = new List < MsChFeeYsAutoDuiCreateModel > ( ) ;
using ( IDataReader reader = db . ExecuteReader ( CommandType . Text , strSql . ToString ( ) ) )
{
while ( reader . Read ( ) )
{
MsChFeeYsAutoDuiCreateModel m = new MsChFeeYsAutoDuiCreateModel ( ) ;
m . FeeGid = reader [ "GID" ] . ToString ( ) ;
m . CustomerName = reader [ "CUSTOMERNAME" ] . ToString ( ) ;
m . BSNO = reader [ "BSNO" ] . ToString ( ) ;
listc . Add ( m ) ;
}
}
//每一个客户生成一个对账编号并更新ch_fee.isdebit,ch_fee.debitno
string custtemp = "" ;
string DuiNo = "" ;
List < MsChFeeYsAutoDuiDebitNoAndFeeGid > listDbtFee = new List < MsChFeeYsAutoDuiDebitNoAndFeeGid > ( ) ;
List < MsChFeeYsAutoDuiChDui > listdui = new List < MsChFeeYsAutoDuiChDui > ( ) ;
int i = 0 ;
foreach ( var item in listc )
{
if ( item . CustomerName = = custtemp )
{
MsChFeeYsAutoDuiDebitNoAndFeeGid df = new MsChFeeYsAutoDuiDebitNoAndFeeGid ( ) ;
df . DebitNo = DuiNo ;
df . FeeGid = item . FeeGid ;
listDbtFee . Add ( df ) ;
MsChFeeYsAutoDuiChDui md = new MsChFeeYsAutoDuiChDui ( ) ;
md . CUSTNAME = item . CustomerName ;
md . DUIDATE = DateTime . Now . ToString ( "yyyy-MM-dd" ) ;
md . DuiNo = DuiNo ;
md . duiType = "1" ;
md . DUINAME = "" ;
md . REMARKS = "" ;
md . OP = usershowname ;
md . BSNO = item . BSNO ;
listdui . Add ( md ) ;
}
else
{
var billnoset = MsSysBillNoSetDAL . GetData ( "OPLBNAME='客户对账'" , comid ) ;
string DUIDATE = DateTime . Now . ToString ( "yyyy-MM-dd" ) ;
if ( billnoset . BILLTYPE ! = "" )
DuiNo = MsSysBillNoSetDAL . GetBillNo ( billnoset , DUIDATE . ToString ( ) . Trim ( ) , DUIDATE . ToString ( ) . Trim ( ) ) ;
else
DuiNo = PubSysDAL . GetBillNo ( "0301" ) ;
custtemp = item . CustomerName ;
MsChFeeYsAutoDuiDebitNoAndFeeGid df = new MsChFeeYsAutoDuiDebitNoAndFeeGid ( ) ;
df . DebitNo = DuiNo ;
df . FeeGid = item . FeeGid ;
listDbtFee . Add ( df ) ;
MsChFeeYsAutoDuiChDui md = new MsChFeeYsAutoDuiChDui ( ) ;
md . CUSTNAME = item . CustomerName ;
md . DUIDATE = DateTime . Now . ToString ( "yyyy-MM-dd" ) ;
md . DuiNo = DuiNo ;
md . duiType = "1" ;
md . DUINAME = "" ;
md . REMARKS = "" ;
md . OP = usershowname ;
md . BSNO = item . BSNO ;
listdui . Add ( md ) ;
}
i + + ;
}
UpdateChfeeWithDict ( listDbtFee ) ;
//每一个客户生成一个对账编号并插入ch_dui
InsertChduiWithList ( listdui ) ;
//将对账编号和dMainId插入ch_dui_main_dui关系表
InsertChduimaindui ( listdui , dMainId ) ;
//插入数据到ch_dui_bill表
//InsertChDuiBill(listdui);
InsertChDuiBill ( dMainId ) ;
return true ;
}
catch ( Exception )
{
return false ;
throw ;
}
}
private static void UpdateChfeeWithDict ( List < MsChFeeYsAutoDuiDebitNoAndFeeGid > listDbtFee )
{
string gids = "" ;
string debitno = "" ;
for ( int i = 0 ; i < listDbtFee . Count ; i + + )
{
MsChFeeYsAutoDuiDebitNoAndFeeGid df = listDbtFee [ i ] ;
if ( df . DebitNo = = debitno )
{
gids + = "'" + df . FeeGid + "'," ;
}
else
{
if ( debitno ! = "" )
{
gids = gids . Substring ( 0 , gids . Length - 1 ) ;
UpdateChfeeWithGidsAndDebitno ( gids , debitno ) ;
gids = "'" + df . FeeGid + "'," ;
debitno = df . DebitNo ;
}
else
{
gids = "'" + df . FeeGid + "'," ;
debitno = df . DebitNo ;
}
}
}
//更新最后一组
if ( listDbtFee . Count > 0 )
{
gids = gids . Substring ( 0 , gids . Length - 1 ) ;
UpdateChfeeWithGidsAndDebitno ( gids , debitno ) ;
}
}
private static void UpdateChfeeWithGidsAndDebitno ( string gids , string debitno )
{
try
{
StringBuilder sb = new StringBuilder ( ) ;
sb . Append ( "update ch_fee set " ) ;
sb . Append ( "debitno = '" + debitno + "'," ) ;
sb . Append ( "isdebit = 1 " ) ;
sb . Append ( "where gid in (" + gids + ")" ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
db . ExecuteNonQuery ( CommandType . Text , sb . ToString ( ) ) ;
}
catch ( Exception )
{
throw ;
}
}
private static void InsertChduiWithList ( List < MsChFeeYsAutoDuiChDui > listdui )
{
List < MsChFeeYsAutoDuiChDui > newList = listdui . Where ( ( x , i ) = > listdui . FindIndex ( z = > z . DuiNo = = x . DuiNo ) = = i ) . ToList ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
StringBuilder insSb = new StringBuilder ( ) ;
insSb . Append ( "insert into ch_dui (duino,custname,duidate,op,duiname,duitype) values " ) ;
int cnt = 0 ;
foreach ( var item in newList )
{
insSb . Append ( "(" ) ;
insSb . Append ( "'" + item . DuiNo + "'," ) ;
insSb . Append ( "'" + item . CUSTNAME + "'," ) ;
insSb . Append ( "'" + item . DUIDATE + "'," ) ;
insSb . Append ( "'" + item . OP + "'," ) ;
insSb . Append ( "'" + item . DUINAME + "'," ) ;
insSb . Append ( "" + item . duiType + "" ) ;
insSb . Append ( ")," ) ;
//超过900行执行一次插入
if ( cnt = = 900 )
{
string sql = insSb . ToString ( ) ;
sql = sql . Substring ( 0 , sql . Length - 1 ) ;
db . ExecuteNonQuery ( CommandType . Text , sql ) ;
insSb . Clear ( ) ;
insSb . Append ( "insert into ch_dui (duino,custname,duidate,op,duiname,duitype) values " ) ;
cnt = 0 ;
}
cnt + + ;
}
if ( newList . Count > 0 )
{
string sqlIns = insSb . ToString ( ) ;
sqlIns = sqlIns . Substring ( 0 , sqlIns . Length - 1 ) ;
db . ExecuteNonQuery ( CommandType . Text , sqlIns ) ;
}
}
private static void InsertChduimaindui ( List < MsChFeeYsAutoDuiChDui > listdui , string mainid )
{
List < MsChFeeYsAutoDuiChDui > newList = listdui . Where ( ( x , i ) = > listdui . FindIndex ( z = > z . DuiNo = = x . DuiNo ) = = i ) . ToList ( ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
StringBuilder insSb = new StringBuilder ( ) ;
insSb . Append ( "insert into ch_dui_main_dui (dMainId,duino) values " ) ;
int cnt = 0 ;
foreach ( var item in newList )
{
insSb . Append ( "(" ) ;
insSb . Append ( "'" + mainid + "'," ) ;
insSb . Append ( "'" + item . DuiNo + "'" ) ;
insSb . Append ( ")," ) ;
//超过900行执行一次插入
if ( cnt = = 900 )
{
string sql = insSb . ToString ( ) ;
sql = sql . Substring ( 0 , sql . Length - 1 ) ;
db . ExecuteNonQuery ( CommandType . Text , sql ) ;
insSb . Clear ( ) ;
insSb . Append ( "insert into ch_dui_main_dui (dMainId,duino) values " ) ;
cnt = 0 ;
}
cnt + + ;
}
if ( newList . Count > 0 )
{
string sqlIns = insSb . ToString ( ) ;
sqlIns = sqlIns . Substring ( 0 , sqlIns . Length - 1 ) ;
db . ExecuteNonQuery ( CommandType . Text , sqlIns ) ;
}
}
public static List < MsChFeeYsAutoDuiModel > GetDataListNew ( string strCondition , int start , int limit , out int count , string sort )
{
var strSql = new StringBuilder ( ) ;
strSql . Append ( @ "SELECT
C . CUSTOMERNAME KeHuJianCheng ,
IC . DESCRIPTION KeHuQuanCheng ,
' ' LanHuoRen ,
CD . DUIDATE DuiZhangRiQi ,
IC . CHIEF DuiZhangLianXiRen ,
IC . TEL DuiZhangLianXiDianHua ,
IC . EMAIL DuiZhangLianXiYouXiang ,
SUM ( CASE WHEN C . CURRENCY = ' RMB ' AND C . FEETYPE = 1 THEN C . AMOUNT ELSE 0 END ) YingShouRMB ,
SUM ( CASE WHEN C . CURRENCY = ' USD ' AND C . FEETYPE = 1 THEN C . AMOUNT ELSE 0 END ) YingShouUSD ,
SUM ( CASE WHEN C . CURRENCY = ' RMB ' AND C . FEETYPE = 2 THEN C . AMOUNT ELSE 0 END ) YingFuRMB ,
SUM ( CASE WHEN C . CURRENCY = ' USD ' AND C . FEETYPE = 2 THEN C . AMOUNT ELSE 0 END ) YingFuUSD ,
- - 查 询 字 段
CD . OP DuiZhangRen ,
CD . DUINO DuiZhangBianHao ,
CD . DUINAME DuiZhangMingCheng ,
CD . REMARKS DuiZhangBeiZhu ,
VB . STLNAME JieFeiLeiXing
FROM ch_fee C
LEFT JOIN ch_dui CD on CD . DUINO = C . DEBITNO
LEFT JOIN v_op_bs VB on VB . BSNO = C . BSNO
LEFT JOIN info_client IC on IC . SHORTNAME = C . CUSTOMERNAME
WHERE 1 = 1 ");
if ( ! string . IsNullOrEmpty ( strCondition ) )
{
strSql . Append ( " " + strCondition ) ;
}
strSql . Append ( @ " GROUP BY C.CUSTOMERNAME,IC.DESCRIPTION,IC.CHIEF,IC.TEL,IC.EMAIL,CD.OP,CD.DUINO,CD.DUINAME,CD.REMARKS,CD.DUIDATE,VB.STLNAME
");
if ( ! string . IsNullOrEmpty ( sort ) )
{
var so = JsonConvert . Deserialize < List < SortObject > > ( sort ) ;
string orderbyStr = " ORDER BY " ;
foreach ( var s in so )
{
orderbyStr + = s . property + " " + s . direction + "," ;
}
orderbyStr = orderbyStr . Substring ( 0 , orderbyStr . Length - 1 ) ;
strSql . Append ( orderbyStr ) ;
}
else
{
strSql . Append ( " order by C.CUSTOMERNAME " ) ;
}
int totalCount = 0 ;
StringBuilder sb = PagerHelper . PageSQL ( strSql . ToString ( ) , start , limit , out totalCount ) ;
count = totalCount ;
return SetData ( sb ) ;
}
private static void InsertChDuiBill ( List < MsChFeeYsAutoDuiChDui > listdui )
{
Database db = DatabaseFactory . CreateDatabase ( ) ;
List < MsChFeeYsAutoDuiChDui > newList = listdui . Where ( ( x , i ) = > listdui . FindIndex ( z = > z . BSNO = = x . BSNO ) = = i ) . ToList ( ) ;
StringBuilder insSb = new StringBuilder ( ) ;
insSb . Append ( "insert into ch_dui_bill (DUINO,BSNO) values " ) ;
int cnt = 0 ;
foreach ( var item in newList )
{
insSb . Append ( "(" ) ;
insSb . Append ( "'" + item . DuiNo + "'," ) ;
insSb . Append ( "'" + item . BSNO + "'" ) ;
insSb . Append ( ")," ) ;
//超过900行执行一次插入
if ( cnt = = 900 )
{
string sql = insSb . ToString ( ) ;
sql = sql . Substring ( 0 , sql . Length - 1 ) ;
db . ExecuteNonQuery ( CommandType . Text , sql ) ;
insSb . Clear ( ) ;
insSb . Append ( "insert into ch_dui_bill (DUINO,BSNO) values " ) ;
cnt = 0 ;
}
cnt + + ;
}
if ( newList . Count > 0 )
{
string sqlIns = insSb . ToString ( ) ;
sqlIns = sqlIns . Substring ( 0 , sqlIns . Length - 1 ) ;
db . ExecuteNonQuery ( CommandType . Text , sqlIns ) ;
}
}
private static void InsertChDuiBill ( string dMainId )
{
Database db = DatabaseFactory . CreateDatabase ( ) ;
StringBuilder insSb = new StringBuilder ( ) ;
insSb . Append ( "insert into ch_dui_bill (DUINO,BSNO) select distinct DEBITNO,BSNO FROM CH_fEE C WHERE EXISTS (SELECT 1 FROM ch_dui_main_dui d where d.duino=c.DEBITNO AND dMainId='" + dMainId + "')" ) ;
string sql = insSb . ToString ( ) ;
db . ExecuteNonQuery ( CommandType . Text , sql ) ;
}
public static bool SaveDuiMain ( MsChFeeYsAutoDuiMainModel md , out string mainid )
{
if ( md . KaiChuanRiFrom = = "" ) md . KaiChuanRiFrom = null ;
if ( md . KaiChuanRiTo = = "" ) md . KaiChuanRiTo = null ;
if ( md . dMainId = = "" | | md . dMainId = = null )
{
md . dMainId = Guid . NewGuid ( ) . ToString ( ) ;
mainid = md . dMainId ;
StringBuilder sb = new StringBuilder ( ) ;
sb . Append ( "insert into ch_dui_main " ) ;
sb . Append ( "(dMainId,mainDuiNo,mainDuiName,duiOp,description,KaiChuanRiFrom,KaiChuanRiTo,duiDate,DuiZhangKeHu,ShouFuFangXiang,JieFeiLeiXing,ShiFouYiKaiPiao,FeiYongZhuangTai,accDate_Min,accDate_Max,SALECORPID,CORPID,bibie,FEENAME,ISCHAOQI,ISZHIQI,EXCHANGERATE)" ) ;
sb . Append ( " values (" ) ;
sb . Append ( "'" + md . dMainId + "'," ) ;
sb . Append ( "'" + md . mainDuiNo + "'," ) ;
sb . Append ( "'" + md . mainDuiName + "'," ) ;
sb . Append ( "'" + md . duiOp + "'," ) ;
sb . Append ( "'" + md . description + "'," ) ;
if ( md . KaiChuanRiFrom = = null )
sb . Append ( "null," ) ;
else
sb . Append ( "'" + md . KaiChuanRiFrom + "'," ) ;
if ( md . KaiChuanRiTo = = null )
sb . Append ( "null," ) ;
else
sb . Append ( "'" + md . KaiChuanRiTo + "'," ) ;
sb . Append ( "'" + md . duiDate + "'," ) ;
sb . Append ( "'" + md . DuiZhangKeHu + "'," ) ;
sb . Append ( "" + md . ShouFuFangXiang + "," ) ;
sb . Append ( "'" + md . JieFeiLeiXing + "'," ) ;
sb . Append ( "" + md . ShiFouYiKaiPiao + "," ) ;
sb . Append ( "" + md . FeiYongZhuangTai + "," ) ;
sb . Append ( "'" + md . accDate_Min + "'," ) ;
sb . Append ( "'" + md . accDate_Max + "'," ) ;
sb . Append ( "'" + md . SALECORPID + "'," ) ;
sb . Append ( "'" + md . CORPID + "'," ) ;
sb . Append ( "'" + md . BiBie + "'," ) ;
sb . Append ( "'" + md . FEENAME + "'," ) ;
sb . Append ( "'" + md . ISCHAOQI + "'," ) ;
sb . Append ( "'" + md . ISZHIQI + "'," ) ;
sb . Append ( "'" + md . EXCHANGERATE + "'" ) ;
sb . Append ( ")" ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
return db . ExecuteNonQuery ( CommandType . Text , sb . ToString ( ) ) > 0 ;
}
else
{
StringBuilder sb = new StringBuilder ( ) ;
sb . Append ( "update ch_dui_main set " ) ;
sb . Append ( "mainDuiNo = '" + md . mainDuiNo + "'," ) ;
sb . Append ( "mainDuiName = '" + md . mainDuiName + "'," ) ;
sb . Append ( "description = '" + md . description + "'," ) ;
sb . Append ( "duiOp = '" + md . duiOp + "'," ) ;
sb . Append ( "duiDate = '" + md . duiDate + "'," ) ;
sb . Append ( "DuiZhangKeHu = '" + md . DuiZhangKeHu + "'," ) ;
sb . Append ( "ShouFuFangXiang = " + md . ShouFuFangXiang + "," ) ;
sb . Append ( "JieFeiLeiXing = '" + md . JieFeiLeiXing + "'," ) ;
sb . Append ( "ShiFouYiKaiPiao = " + md . ShiFouYiKaiPiao + "," ) ;
sb . Append ( "FeiYongZhuangTai = " + md . FeiYongZhuangTai + "," ) ;
sb . Append ( "accDate_Min = '" + md . accDate_Min + "'," ) ;
sb . Append ( "accDate_Max = '" + md . accDate_Max + "'," ) ;
sb . Append ( "SALECORPID = '" + md . SALECORPID + "'," ) ;
sb . Append ( "CORPID = '" + md . CORPID + "'," ) ;
sb . Append ( "bibie = '" + md . BiBie + "'," ) ;
sb . Append ( "FEENAME = '" + md . FEENAME + "'," ) ;
sb . Append ( "ISCHAOQI = " + md . ISCHAOQI + "," ) ;
sb . Append ( "ISZHIQI = " + md . ISZHIQI + "," ) ;
sb . Append ( "EXCHANGERATE = " + md . EXCHANGERATE + " " ) ;
sb . Append ( " where dMainId = '" + md . dMainId + "'" ) ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
mainid = md . dMainId ;
return db . ExecuteNonQuery ( CommandType . Text , sb . ToString ( ) ) > 0 ;
}
}
public static bool CancelDui ( List < MsChFeeYsAutoDuiModel > dataList , out string msg )
{
try
{
if ( dataList . Count = = 0 )
{
msg = "无可操作数据!" ;
return false ;
}
Database db = DatabaseFactory . CreateDatabase ( ) ;
StringBuilder sbDuiNo = new StringBuilder ( ) ;
foreach ( var item in dataList )
{
sbDuiNo . Append ( "'" + item . DuiZhangBianHao + "'," ) ;
}
string duinos = sbDuiNo . ToString ( ) ;
duinos = duinos . Substring ( 0 , duinos . Length - 1 ) ;
//删除ch_dui_main_dui关系表数据
string sql1 = "delete from ch_dui_main_dui where duino in (" + duinos + ")" ;
db . ExecuteNonQuery ( CommandType . Text , sql1 ) ;
//删除ch_dui
string sql2 = "delete from ch_dui where duino in (" + duinos + ")" ;
db . ExecuteNonQuery ( CommandType . Text , sql2 ) ;
//删除ch_dui_bill
string sql3 = "delete from ch_dui_bill where duino in (" + duinos + ")" ;
db . ExecuteNonQuery ( CommandType . Text , sql3 ) ;
//更新ch_fee
string sql4 = "update ch_fee set debitno = '' , isdebit = 0 where debitno in (" + duinos + ")" ;
db . ExecuteNonQuery ( CommandType . Text , sql4 ) ;
msg = "取消成功!" ;
return true ;
}
catch ( Exception ex )
{
msg = ex . Message ;
return false ;
throw ;
}
}
public static bool UpdateReMarks ( List < MsChFeeYsAutoDuiModel > list )
{
Database db = DatabaseFactory . CreateDatabase ( ) ;
StringBuilder sb = new StringBuilder ( ) ;
foreach ( var item in list )
{
sb . Append ( "update ch_dui set REMARKS = '" + item . DuiZhangBeiZhu + "' " ) ;
sb . Append ( " where duino = '" + item . DuiZhangBianHao + "' " ) ;
db . ExecuteNonQuery ( CommandType . Text , sb . ToString ( ) ) ;
sb . Clear ( ) ;
}
return false ;
}
//DeleteMain
public static bool DeleteMain ( List < MsChFeeYsAutoDuiMainModel > list , out string msg )
{
Database db = DatabaseFactory . CreateDatabase ( ) ;
string delids = "" ;
foreach ( var item in list )
{
delids + = "'" + item . dMainId + "'," ;
}
if ( delids ! = "" )
{
delids = delids . Substring ( 0 , delids . Length - 1 ) ;
if ( checkHasDuiWithMainId ( delids ) )
{
msg = "存在已对账明细,无法删除!" ;
return false ;
}
else
{
string sql = "delete from ch_dui_main where dMainId in (" + delids + ")" ;
int cnt = db . ExecuteNonQuery ( CommandType . Text , sql ) ;
msg = cnt > 0 ? "删除成功!" : "删除失败!" ;
return cnt > 0 ;
}
}
else
{
msg = "请选择要删除的数据!" ;
return false ;
}
}
private static bool checkHasDuiWithMainId ( string mainids ) {
string sql = "select count(*) from ch_dui_main_dui where dMainId in (" + mainids + ")" ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
int cnt = Convert . ToInt32 ( db . ExecuteScalar ( CommandType . Text , sql ) ) ;
return cnt > 0 ;
}
public static string GetSign ( string userid )
{
string sql = "select mailsign from user_baseinfo where userid = '" + userid + "'" ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
var rst = db . ExecuteScalar ( CommandType . Text , sql ) ;
if ( rst = = DBNull . Value )
{
return "" ;
}
else
{
return rst . ToString ( ) ;
}
}
public static bool SaveSign ( string userid , string mailsign , out string msg )
{
string sql = "update user_baseinfo set mailsign = '" + mailsign + "' where userid = '" + userid + "'" ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
try
{
int rst = db . ExecuteNonQuery ( CommandType . Text , sql ) ;
msg = rst > 0 ? "保存成功" : "保存失败" ;
return rst > 0 ;
}
catch ( Exception e )
{
msg = e . Message ;
return false ;
throw ;
}
}
public static string GetDuiNameWithDuiNo ( string duino )
{
string sql = "select mainDuiName from ch_dui_main where dMainId = (select top 1 dMainId from ch_dui_main_dui where duino = '" + duino + "')" ;
Database db = DatabaseFactory . CreateDatabase ( ) ;
var rst = db . ExecuteScalar ( CommandType . Text , sql ) ;
if ( rst = = DBNull . Value )
{
return "" ;
}
else
{
return rst . ToString ( ) ;
}
}
}
}