You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DS7/DSWeb/Areas/MvcShipping/DAL/MsChFeeAutoDui/MsChFeeAutoDuiDAL.cs

1037 lines
48 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Data;
using System.Data.Common;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using DSWeb.MvcShipping.Models.MsChFeeAutoDui;
using Microsoft.Practices.EnterpriseLibrary.Data;
using DSWeb.EntityDA;
using DSWeb.Areas.CommMng.Models;
using HcUtility.Comm;
using System.Data.SqlClient;
using DSWeb.DataAccess;
using System.IO;
using HcUtility.Core;
using DSWeb.Areas.CommMng.DAL;
using System.Web;
using DSWeb.TruckMng.Comm.Cookie;
using DSWeb.MvcShipping.Controllers;
using DSWeb.TruckMng.Helper.Repository;
using DSWeb.TruckMng.Helper;
using DSWeb.MvcShipping.DAL.Chfee_AuditDAL;
using DSWeb.Areas.Account.Models.MsOpBill;
using System.Linq;
using DSWeb.Common.DB;
using com.sun.tools.corba.se.idl.toJavaPortable;
namespace DSWeb.MvcShipping.DAL.MsChFeeAutoDuiDAL
{
public class MsChFeeAutoDuiDAL
{
#region 查询
static public List<MsChFeeAutoDuimb> GetDataList ( string strCondition, string sort = null )
{
var strSql = new StringBuilder();
strSql.Append(" select CH_FEE_AutoDui.GID,CUSTOMERNAME,FEETYPE,DUISTATUS,dbo.trimdate(STARTDATE) STARTDATE ");
strSql.Append(" ,dbo.trimdate(ENDDATE) ENDDATE,OP,dbo.trimtime(OPDATE) OPDATE,CH_FEE_AutoDui.REMARK,CH_FEE_AutoDui.REMARK2,STATUS,'' STATUS_REF,convert(bigint ,TimeMark) as TimeMark ");
strSql.Append(" ,isnull(HAVEDEBIT,0) HAVEDEBIT,DUINO,FEEDC,CURR,FSTATUS,DUITYPE,FEEDUITYPE,FEEDUITYPECONDIT,SALECORP,D.RMBAMOUNT,D.USDAMOUNT,D.L_RMBAMOUNT,D.L_USDAMOUNT ");
strSql.Append(" from CH_FEE_AutoDui ");
strSql.Append(" left join (select BSNO,SUM(RMBAMOUNT) RMBAMOUNT,SUM(USDAMOUNT) USDAMOUNT,SUM(L_RMBAMOUNT) L_RMBAMOUNT,SUM(L_USDAMOUNT) L_USDAMOUNT FROM CH_FEE_AutoDuiDetail GROUP BY BSNO) D ON (D.BSNO=GID) ");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" where " + strCondition);
}
else
{
}
//
var sortstring = DatasetSort.Getsortstring(sort);
if (!string.IsNullOrEmpty(sortstring))
{
strSql.Append(" order by " + sortstring);
}
else
{
strSql.Append(" order by OPDATE desc");
}
return SetData(strSql);
}
static public MsChFeeAutoDuimb GetData ( string condition )
{
var _t = "";
var list = GetDataList(condition, _t);
if (list.Count > 0)
return list[0];
return new MsChFeeAutoDuimb();
}
private static List<MsChFeeAutoDuimb> SetData ( StringBuilder strSql )
{
var headList = new List<MsChFeeAutoDuimb>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
MsChFeeAutoDuimb data = new MsChFeeAutoDuimb();
#region Set DB data to Object
data.GID = Convert.ToString(reader["GID"]);
data.CUSTOMERNAME = Convert.ToString(reader["CUSTOMERNAME"]);
data.FEETYPE = Convert.ToString(reader["FEETYPE"]);//1收 2付 3全部
data.DUISTATUS = Convert.ToString(reader["DUISTATUS"]);
data.STARTDATE = Convert.ToString(reader["STARTDATE"]);
data.ENDDATE = Convert.ToString(reader["ENDDATE"]);
data.OP = Convert.ToString(reader["OP"]);
data.OPDATE = Convert.ToString(reader["OPDATE"]);
data.REMARK = Convert.ToString(reader["REMARK"]);
data.REMARK2 = Convert.ToString(reader["REMARK2"]);
data.STATUS = Convert.ToString(reader["STATUS"]);//暂时用来存放对账编号
data.STATUS_REF = "";//暂时无用
data.TimeMark = Convert.ToString(reader["TimeMark"]);
data.HAVEDEBIT = Convert.ToString(reader["HAVEDEBIT"]);
data.DUINO = Convert.ToString(reader["DUINO"]);
data.FEEDC = Convert.ToString(reader["FEEDC"]);
data.CURR = Convert.ToString(reader["CURR"]);
data.FSTATUS = Convert.ToString(reader["FSTATUS"]);
data.DUITYPE = Convert.ToString(reader["DUITYPE"]);//1收 2付 3全部
if (data.DUITYPE == "") data.DUITYPE = "1";
data.FEEDUITYPE = Convert.ToString(reader["FEEDUITYPE"]);
data.FEEDUITYPECONDIT = Convert.ToString(reader["FEEDUITYPECONDIT"]);
data.SALECORP= Convert.ToString(reader["SALECORP"]);
data.RMBAMOUNT = Convert.ToString(reader["RMBAMOUNT"]);
data.USDAMOUNT = Convert.ToString(reader["USDAMOUNT"]);
data.L_RMBAMOUNT = Convert.ToString(reader["L_RMBAMOUNT"]);
data.L_USDAMOUNT = Convert.ToString(reader["L_USDAMOUNT"]);
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
#region 查询对账明细
static public List<CH_FEE_AutoDuiDetailmb> GetBodyList ( string strCondition, string sort = null )
{
var strSql = new StringBuilder();
strSql.Append("select dl.*,b.ETD,B.CUSTOMERNAME,B.OP,B.CARRIER,B.TEU,B.SALE,B.CUSTNO,b.DOC,b.SALEDEPT,(select name from company where gid= b.SALECORPID)SALECORP from ");
// strSql.Append("(select GID,BSNO,(select top 1 BSNO from v_op_bill where (MBLNO=D.b_mblno or HBLNO=D.MBLNO) and OPLBNAME in('海运进口','海运出口','空运进口','空运出口')) B_BSNO,MBLNO,B_MBLNO,RMBAMOUNT,USDAMOUNT,L_RMBAMOUNT,L_USDAMOUNT,ISOK,REMARK,REMARK2 ");
strSql.Append("(select GID,BSNO,B_BSNO,MBLNO,B_MBLNO,RMBAMOUNT,USDAMOUNT,L_RMBAMOUNT,L_USDAMOUNT,ISOK,REMARK,REMARK2 ");
strSql.Append(" from CH_FEE_AutoDuiDetail D ");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" where " + strCondition);
}
else
{
}
strSql.Append(") as dl left join v_op_bs B ON (B.BSNO=dl.B_BSNO) ");
//
var sortstring = DatasetSort.Getsortstring(sort);
if (!string.IsNullOrEmpty(sortstring))
{
strSql.Append(" order by " + sortstring);
}
else
{
strSql.Append(" order by ISOK,ETD,MBLNO");
}
return SetBody(strSql);
}
static public string GetBodyListStr(string strCondition, string sort = null)
{
var strSql = new StringBuilder();
strSql.Append("select dl.*,b.ETD,B.CUSTOMERNAME,B.OP,B.CARRIER,B.TEU,B.SALE,B.CUSTNO ,b.DOC,b.SALEDEPT,(select name from company where gid= b.SALECORPID)SALECORP from ");
// strSql.Append("(select GID,BSNO,(select top 1 BSNO from v_op_bill where (MBLNO=D.b_mblno or HBLNO=D.MBLNO) and OPLBNAME in('海运进口','海运出口','空运进口','空运出口')) B_BSNO,MBLNO,B_MBLNO,RMBAMOUNT,USDAMOUNT,L_RMBAMOUNT,L_USDAMOUNT,ISOK,REMARK,REMARK2 ");
strSql.Append("(select GID,BSNO,B_BSNO,MBLNO,B_MBLNO,RMBAMOUNT,USDAMOUNT,L_RMBAMOUNT,L_USDAMOUNT,ISOK,REMARK,REMARK2 ");
strSql.Append(",isnull(RMBAMOUNT,0)-isnull(L_RMBAMOUNT,0) Y_RMBAMOUNT,isnull(USDAMOUNT,0)-isnull(L_USDAMOUNT,0) Y_USDAMOUNT ");
strSql.Append(" ");
strSql.Append(" from CH_FEE_AutoDuiDetail D ");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" where " + strCondition);
}
else
{
}
strSql.Append(") as dl left join v_op_bs B ON (B.BSNO=dl.B_BSNO) ");
//
var sortstring = DatasetSort.Getsortstring(sort);
if (!string.IsNullOrEmpty(sortstring))
{
strSql.Append(" order by " + sortstring);
}
else
{
strSql.Append(" order by ISOK,ETD,MBLNO");
}
return strSql.ToString();
}
static public List<CH_FEE_AutoDuiDetailmb> GetBodyJoinList ( string strCondition, string sort = null )
{
var strSql = new StringBuilder();
strSql.Append("select D.GID,D.BSNO,B.BSNO B_BSNO,D.MBLNO,d.B_MBLNO,dbo.trimdate(B.ETD) ETD,B.CUSTOMERNAME,B.OP,B.CARRIER,B.TEU,B.SALE,B.CUSTNO,D.RMBAMOUNT,D.USDAMOUNT,D.L_RMBAMOUNT,D.L_USDAMOUNT,D.ISOK,D.REMARK,D.REMARK2 ");
strSql.Append(" ,b.DOC,b.SALEDEPT,(select name from company where gid= b.SALECORPID)SALECORP ");
strSql.Append(" from CH_FEE_AutoDuiDetail D left join V_op_bill B on B.MBLNO=D.MBLNO ");
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" where " + strCondition);
}
else
{
}
//
var sortstring = DatasetSort.Getsortstring(sort);
if (!string.IsNullOrEmpty(sortstring))
{
strSql.Append(" order by " + sortstring);
}
else
{
strSql.Append(" order by ISOK,ETD,MBLNO");
}
return SetBody(strSql);
}
static public List<CH_FEE_AutoDuiDetailmb> GetLocalList ( string CUSTOMERNAME,string AutoDui_GID, string FEETYPE,string HAVEDEBIT,string FEEDC,string CURR,string FSTATUS,string FEEDUITYPE,string FEEDUITYPECONDIT,string SALECORP)
{
var strSql = new StringBuilder();
if (FEETYPE == "2")
{
strSql.Append(" SELECT '' GID,'" + AutoDui_GID + "' BSNO,B.MBLNO,B.MBLNO B_MBLNO,'' B_BSNO,'' ETD,'' CUSTOMERNAME,'' OP,B.CARRIER,MAX(B.TEU) TEU,'' SALE,'' CUSTNO,'0' RMBAMOUNT,'0' USDAMOUNT,'0' ISOK,'' REMARK,'' REMARK2, ");
if (FSTATUS == "3" || FSTATUS == "4")
{
strSql.Append(" isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT-SETTLEMENT-isnull(f.ORDERAMOUNT,0)+isnull(f.ORDERSETTLEMENT,0),0) ELSE 0 END) ELSE 0 END),0)- ");
strSql.Append(" isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT-SETTLEMENT-isnull(f.ORDERAMOUNT,0)+isnull(f.ORDERSETTLEMENT,0),0) ELSE 0 END) ELSE 0 END),0) AS L_RMBAMOUNT, ");
strSql.Append(" isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT-SETTLEMENT-isnull(f.ORDERAMOUNT,0)+isnull(f.ORDERSETTLEMENT,0),0) ELSE 0 END)ELSE 0 END),0)- ");
strSql.Append(" isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT-SETTLEMENT-isnull(f.ORDERAMOUNT,0)+isnull(f.ORDERSETTLEMENT,0),0) ELSE 0 END)ELSE 0 END),0) AS L_USDAMOUNT ");
}
else
{
strSql.Append(" isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT-SETTLEMENT,0) ELSE 0 END) ELSE 0 END),0)- ");
strSql.Append(" isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT-SETTLEMENT,0) ELSE 0 END) ELSE 0 END),0) AS L_RMBAMOUNT, ");
strSql.Append(" isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT-SETTLEMENT,0) ELSE 0 END)ELSE 0 END),0)- ");
strSql.Append(" isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT-SETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS L_USDAMOUNT ");
}
strSql.Append(" ,b.DOC,b.SALEDEPT,(select name from company where gid= b.SALECORPID)SALECORP ");
strSql.Append(" FROM CH_FEE F ");
strSql.Append(" INNER JOIN V_OP_BILL B ON (F.BSNO=B.BSNO) ");
strSql.Append(" where F.AMOUNT<>F.SETTLEMENT and F.CUSTOMERNAME='" + CUSTOMERNAME + "' and EXISTS (select 1 from CH_FEE_AutoDuiDetail fd where (fd.MBLNO=B.MBLNO OR fd.MBLNO=B.HBLNO) and fd.BSNO='" + AutoDui_GID + "') and isnull(b.MBLNO,'')<>'' and isnull(b.iscancel,0)<>1 ");
if (HAVEDEBIT == "0") {
strSql.Append(" and isnull(f.ISDEBIT,0)=0 ");
}
if ((FEEDC != "0") && (FEEDC.Trim()!= "")){
strSql.Append(" and f.FEETYPE="+FEEDC);
}
if (CURR!= "")
{
strSql.Append(" and f.CURRENCY='" + CURR+"'");
}
if (FSTATUS =="1"|| FSTATUS == "3") {
strSql.Append(" AND (F.FEESTATUS=0 or F.FEESTATUS=8 or F.FEESTATUS=9)");
} else if (FSTATUS =="2") {
strSql.Append(" AND (F.FEESTATUS!=0 and F.FEESTATUS!=8 and F.FEESTATUS!=9) ");
}
if (FSTATUS == "3" || FSTATUS == "4")
{
strSql.Append(" AND (f.AMOUNT-isnull(f.SETTLEMENT,0)-isnull(f.ORDERAMOUNT,0)+isnull(f.ORDERSETTLEMENT,0))<>0");
}
if (SALECORP != "") {
strSql.Append(" and f.SALECORP='" + SALECORP + "'");
}
if (FEEDUITYPE != "")
{
if (FEEDUITYPECONDIT == "不等于")
{
strSql.Append(" and not EXISTS (select 1 from code_fee c where c.[NAME]=f.FEENAME and c.DUITYPE='" + FEEDUITYPE + "') ");
}
else
{
strSql.Append(" and EXISTS (select 1 from code_fee c where c.[NAME]=f.FEENAME and c.DUITYPE='" +FEEDUITYPE + "') ");
}
}
strSql.Append(" GROUP BY B.MBLNO,B.CARRIER,b.DOC,b.SALEDEPT,b.SALECORPID ");
}
else {
strSql.Append(" SELECT '' GID,'" + AutoDui_GID + "' BSNO,B.MBLNO,B.MBLNO B_MBLNO,'' B_BSNO,'' ETD,'' CUSTOMERNAME,'' OP,B.CARRIER,MAX(B.TEU) TEU,'0' RMBAMOUNT,'0' USDAMOUNT,'0' ISOK,'' REMARK,'' REMARK2, ");
if (FSTATUS == "3" || FSTATUS == "4")
{
strSql.Append(" isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT-SETTLEMENT-isnull(f.ORDERAMOUNT,0)+isnull(f.ORDERSETTLEMENT,0),0) ELSE 0 END) ELSE 0 END),0)- ");
strSql.Append(" isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT-SETTLEMENT-isnull(f.ORDERAMOUNT,0)+isnull(f.ORDERSETTLEMENT,0),0) ELSE 0 END) ELSE 0 END),0) AS L_RMBAMOUNT, ");
strSql.Append(" isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT-SETTLEMENT-isnull(f.ORDERAMOUNT,0)+isnull(f.ORDERSETTLEMENT,0),0) ELSE 0 END)ELSE 0 END),0)- ");
strSql.Append(" isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT-SETTLEMENT-isnull(f.ORDERAMOUNT,0)+isnull(f.ORDERSETTLEMENT,0),0) ELSE 0 END)ELSE 0 END),0) AS L_USDAMOUNT ");
}
else
{
strSql.Append(" isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT-SETTLEMENT,0) ELSE 0 END) ELSE 0 END),0)- ");
strSql.Append(" isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'RMB' THEN ISNULL(AMOUNT-SETTLEMENT,0) ELSE 0 END) ELSE 0 END),0) AS L_RMBAMOUNT, ");
strSql.Append(" isnull(SUM(CASE FEETYPE WHEN 1 THEN (CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT-SETTLEMENT,0) ELSE 0 END)ELSE 0 END),0)- ");
strSql.Append(" isnull(SUM(CASE FEETYPE WHEN 2 THEN (CASE CURRENCY WHEN 'USD' THEN ISNULL(AMOUNT-SETTLEMENT,0) ELSE 0 END)ELSE 0 END),0) AS L_USDAMOUNT ");
}
strSql.Append(" ,b.DOC,b.SALEDEPT,(select name from company where gid= b.SALECORPID)SALECORP ");
strSql.Append(" FROM CH_FEE F ");
strSql.Append(" INNER JOIN V_OP_BILL B ON (F.BSNO=B.BSNO) ");
strSql.Append(" where F.AMOUNT<>F.SETTLEMENT and F.CUSTOMERNAME='" + CUSTOMERNAME + "' and EXISTS (select 1 from CH_FEE_AutoDuiDetail fd where (fd.MBLNO=B.MBLNO OR fd.MBLNO=B.HBLNO) and fd.BSNO='" + AutoDui_GID + "') ");
if (HAVEDEBIT == "0")
{
strSql.Append(" and isnull(f.ISDEBIT,0)=0 ");
}
if ((FEEDC != "0") && (FEEDC.Trim()!= ""))
{
strSql.Append(" and f.FEETYPE=" + FEEDC);
}
if (CURR != "")
{
strSql.Append(" and f.CURRENCY='" + CURR + "'");
}
if (SALECORP != "")
{
strSql.Append(" and f.SALECORP='" + SALECORP + "'");
}
if (FSTATUS == "1")
{
strSql.Append(" AND (F.FEESTATUS=0 or F.FEESTATUS=8 or F.FEESTATUS=9)");
}
else if (FSTATUS == "2")
{
strSql.Append(" AND (F.FEESTATUS!=0 and F.FEESTATUS!=8 and F.FEESTATUS!=9) ");
}
if (FEEDUITYPE != "")
{
if (FEEDUITYPECONDIT == "不等于")
{
strSql.Append(" and not EXISTS (select 1 from code_fee c where c.[NAME]=f.FEENAME and c.DUITYPE='" + FEEDUITYPE + "') ");
}
else
{
strSql.Append(" and EXISTS (select 1 from code_fee c where c.[NAME]=f.FEENAME and c.DUITYPE='" + FEEDUITYPE + "') ");
}
}
strSql.Append(" GROUP BY B.MBLNO,B.CARRIER,b.DOC,b.SALEDEPT,b.SALECORPID ");
}
return SetBody(strSql);
}
private static List<CH_FEE_AutoDuiDetailmb> SetBody ( StringBuilder strSql )
{
var headList = new List<CH_FEE_AutoDuiDetailmb>();
Database db = DatabaseFactory.CreateDatabase();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = strSql.ToString();
cmd.CommandTimeout = 120000; //要加这一句
using (IDataReader reader = db.ExecuteReader(cmd))
{
while (reader.Read())
{
CH_FEE_AutoDuiDetailmb data = new CH_FEE_AutoDuiDetailmb();
#region Set DB data to Object
data.GID = Convert.ToString(reader["GID"]);
data.BSNO = Convert.ToString(reader["BSNO"]);
data.B_BSNO = Convert.ToString(reader["B_BSNO"]);
data.ETD = Convert.ToString(reader["ETD"]);
data.CUSTOMERNAME = Convert.ToString(reader["CUSTOMERNAME"]);
data.OP = Convert.ToString(reader["OP"]);
data.CARRIER = Convert.ToString(reader["CARRIER"]);
data.TEU = Convert.ToString(reader["TEU"]);
data.SALE = Convert.ToString(reader["SALE"]);
data.CUSTNO = Convert.ToString(reader["CUSTNO"]);
data.MBLNO = Convert.ToString(reader["MBLNO"]);
data.B_MBLNO = Convert.ToString(reader["B_MBLNO"]);
data.RMBAMOUNT = Convert.ToString(reader["RMBAMOUNT"]);
data.USDAMOUNT = Convert.ToString(reader["USDAMOUNT"]);
data.L_RMBAMOUNT = Convert.ToString(reader["L_RMBAMOUNT"]);
data.L_USDAMOUNT = Convert.ToString(reader["L_USDAMOUNT"]);
data.ISOK = Convert.ToString(reader["ISOK"]);
data.REMARK = Convert.ToString(reader["REMARK"]);
data.REMARK2 = Convert.ToString(reader["REMARK2"]);
try
{
data.Y_RMBAMOUNT = Convert.ToDecimal(data.RMBAMOUNT) - Convert.ToDecimal(data.L_RMBAMOUNT);
data.Y_USDAMOUNT = Convert.ToDecimal(data.USDAMOUNT) - Convert.ToDecimal(data.L_USDAMOUNT);
}
catch {
}
data.DOC = Convert.ToString(reader["DOC"]);
data.SALEDEPT = Convert.ToString(reader["SALEDEPT"]);
data.SALECORP = Convert.ToString(reader["SALECORP"]);
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
#region 导入excel
public enum RowState : uint
{
Insert,
Update,
None
}
/// <summary>
/// 处理excel导入的对账单
/// </summary>
/// <param name="request"></param>
/// <param name="table"></param>
/// <param name="msg"></param>
/// <param name="InsertCount"></param>
/// <param name="UpdateCount"></param>
/// <param name="AutoDui_GID"></param>
/// <param name="CUSTOMERNAME"></param>
/// <param name="FEETYPE"></param>
/// <param name="headList"></param>
/// <param name="userid"></param>
/// <param name="username"></param>
/// <param name="companyid"></param>
/// <returns></returns>
/// <exception cref="ArgumentNullException"></exception>
public static bool ImportExcelData ( HttpRequestBase request, DataTable table, out string msg,
out Int32 InsertCount, out Int32 UpdateCount, string AutoDui_GID, string CUSTOMERNAME, string FEETYPE, out List<CH_FEE_AutoDuiDetailmb> headList, string userid, string username, string companyid )
{
var isSucess = false;
msg = "";
headList = new List<CH_FEE_AutoDuiDetailmb>();
var headdate = GetData("GID='" + AutoDui_GID + "'");
if (table == null) throw new ArgumentNullException("table");
var billNoList = new List<string>();
Database db = DatabaseFactory.CreateDatabase();
InsertCount = 0;
UpdateCount = 0;
msg = "";
/*
var objcodename = db.ExecuteScalar(CommandType.Text, "select ISAGENTCN from Info_Client where shortname='" + AIRLINES + "'");
var ISAGENTCN = Convert.ToString(objcodename);
var AIRCODE_OBJ = db.ExecuteScalar(CommandType.Text, "select codename from Info_Client where shortname='" + AIRLINES + "'");
var AIRCODE = Convert.ToString(AIRCODE_OBJ);
*/
using (DbConnection connection = db.CreateConnection())
//using (SqlTransaction idbTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
connection.Open();
try
{
var orgCode = CookieConfig.GetCookie_OrgCode(request);
var userCode = CookieConfig.GetCookie_UserCode(request);
var userName = CookieConfig.GetCookie_UserName(request);
var _i = 0;
//var ExpDate = "";
//var headList = new List<CH_FEE_AutoDuiDetailmb>();
var _DelDetailList = new List<CH_FEE_AutoDuiDetailmb>();
var _oldDetailList_NoMBL = GetBodyList(" BSNO = '" + AutoDui_GID + "' ");
var mblnoList = _oldDetailList_NoMBL.Select(s => s.MBLNO).Distinct().ToList();
var cdc = new CommonDataContext();
//var billList = cdc.v_op_bs.Where(x => mblnoList.Contains(x.MBLNO) ).ToList();
foreach (DataRow row in table.Rows)
{
_i++;
//if (_i < 1) continue;
//var _ACCDATE = ACCDATE;
var _p = 0;
if(string.IsNullOrEmpty(Convert.ToString(row[_p + 0]).Replace(" ", "").Replace("'", "")))
{
break;
}
var _Detail = new CH_FEE_AutoDuiDetailmb();
//_Detail.GID = Guid.NewGuid().ToString();
//_Detail.MBLNO = Convert.ToString(row[_p + 0]).Replace(" ", "").Replace("'", "");//.Trim()
//20221121 保留中间的空格,去掉首尾空格
var _mblno = Convert.ToString(row[_p + 0]).Replace("'", "");
_Detail.MBLNO = _mblno.Trim();
_Detail.B_MBLNO = _Detail.MBLNO;
//20221122 增加逻辑 如果是已退舱的业务 跳过
//20221128 改为显示但不对账 在remake当中实现
//var currbs = cdc.v_op_bs.Where(x => x.MBLNO == _mblno && (x.ISCANCEL == 1 || x.ISCANCEL == 2 || x.ISCANCEL == 4)).ToList();
//if (currbs != null && currbs.Count > 0)
//{
// continue;
//}
_Detail.MBLNO = GetMBLNO(_Detail.B_MBLNO);
var RMBAMOUNT = Convert.ToDecimal(row[_p + 1]);
var USDAMOUNT = Convert.ToDecimal(row[_p + 2]);
_Detail.RMBAMOUNT= Convert.ToString(RMBAMOUNT);
_Detail.USDAMOUNT= Convert.ToString(USDAMOUNT);
// _Detail.B_MBLNO=
//var L_RMBAMOUNT = GetCustFee(CUSTOMERNAME, _Detail.MBLNO, FEETYPE, "RMB", headdate.HAVEDEBIT);
//if (L_RMBAMOUNT == "") {
//业务当中没有该提单号的业务
var =false;
var = false;
foreach (var _old in _oldDetailList_NoMBL) {
if (_old.MBLNO == _Detail.MBLNO) {
= true;
continue;
}
}
//if (已有该提单号 == false) {//如果在此次表内就有重复提单号
foreach (var _h in headList)
{
if (_h.MBLNO == _Detail.MBLNO)
{
= true;
_h.RMBAMOUNT = Convert.ToString(Convert.ToDecimal(_h.RMBAMOUNT) + Convert.ToDecimal(_Detail.RMBAMOUNT));
_h.USDAMOUNT = Convert.ToString(Convert.ToDecimal(_h.USDAMOUNT) + Convert.ToDecimal(_Detail.USDAMOUNT));
continue;
}
}
if ( || ) {
continue;
}
if ()
{//如果该自动对账当中已经存在相同提单号的记录
_Detail = _oldDetailList_NoMBL[0];
//_Detail.BSNO="";
_Detail.RMBAMOUNT = Convert.ToString(RMBAMOUNT);
_Detail.USDAMOUNT = Convert.ToString(USDAMOUNT);
_Detail.L_RMBAMOUNT = "0";
_Detail.L_USDAMOUNT = "0";
UpdateCount++;
}/*else
if (此次表内有该提单号)
{//如果该自动对账当中已经存在相同提单号的记录
_Detail = _oldDetailList_NoMBL[0];
//_Detail.BSNO="";
_Detail.RMBAMOUNT = Convert.ToString(RMBAMOUNT + Convert.ToDecimal(_Detail.RMBAMOUNT));
_Detail.USDAMOUNT = Convert.ToString(USDAMOUNT + Convert.ToDecimal(_Detail.USDAMOUNT));
_Detail.L_RMBAMOUNT = "0";
_Detail.L_USDAMOUNT = "0";
//UpdateCount++;
}
*/
else
{//如果不存在
_Detail.GID = Guid.NewGuid().ToString();
_Detail.BSNO = "";
_Detail.RMBAMOUNT = Convert.ToString(RMBAMOUNT);
_Detail.USDAMOUNT = Convert.ToString(USDAMOUNT);
_Detail.L_RMBAMOUNT = "0";
_Detail.L_USDAMOUNT = "0";
InsertCount++;
}
/*
if (msg == "")
{
//msg = "有如下提单号在系统内还不存在:" + _Detail.MBLNO;
}
else {
//msg = msg + " ; " + _Detail.MBLNO;
}*/
//_Detail.L_RMBAMOUNT="0";
//_Detail.L_USDAMOUNT="0";
headList.Add(_Detail);
//continue;
//}
//headList.Add(_Detail);
}
var duihead = GetData("GID='" + AutoDui_GID + "'");
duihead.DbOperationType = DbOperationType.DbotUpd;
duihead.ModelUIStatus = "E";
var modb = new ModelObjectRepository();
DBResult result = modb.Save(duihead,
ModelObjectConvert<CH_FEE_AutoDuiDetailmb>.ToModelObjectList(headList),
ModelObjectConvert<CH_FEE_AutoDuiDetailmb>.ToModelObjectList(_DelDetailList)
);
T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA();
//var blUpSQL = " update CH_FEE_AutoDuiDetail set B_BSNO=(select top 1 BSNO from v_op_bS where (MBLNO=D.b_mblno or HBLNO=D.MBLNO) and OPLBNAME in('海运进口','海运出口','空运进口','空运出口') ) FROM CH_FEE_AutoDuiDetail d where bsno='" + duihead.GID+"'";
var blUpSQL = " update CH_FEE_AutoDuiDetail set B_BSNO=(select top 1 BSNO from v_op_bS where (MBLNO=D.mblno or HBLNO=D.MBLNO) and isnull(MBLNO,'')<>'' and isnull(iscancel,0)<>1 ) FROM CH_FEE_AutoDuiDetail d where bsno='" + duihead.GID + "'";
bool bl = T_ALL_DA.GetExecuteSqlCommand(blUpSQL);
//
result = ReMake(duihead, userid, username, companyid);
isSucess = true;
}
catch (Exception exception)
{
//idbTran.Rollback();
isSucess = false;
msg = exception.Message;
}
}
//UnKnowenTruckNo = UnKnowenTruckNo + " " + UnKnowenAirPort;
return isSucess;
}
public static string GetMBLNO(string MBLNO)
{
Database db = DatabaseFactory.CreateDatabase();
using (DbConnection connection = db.CreateConnection())
//using (SqlTransaction idbTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
connection.Open();
try
{
var _L_RMBAMOUNT = db.ExecuteScalar(CommandType.Text, "select MBLNO FROM v_op_bill where MBLNO='"+MBLNO+"' ");
if (string.IsNullOrEmpty(Convert.ToString(_L_RMBAMOUNT)))
{
_L_RMBAMOUNT = db.ExecuteScalar(CommandType.Text, "select MBLNO FROM v_op_bill where BSNO IN (SELECT BSNO FROM op_manifest WHERE MBLNO='" + MBLNO + "') ");
if (string.IsNullOrEmpty(Convert.ToString(_L_RMBAMOUNT)))
return MBLNO;
else
return Convert.ToString(_L_RMBAMOUNT);
}
else
{
return MBLNO;
}
}
catch (Exception exception)
{
return "";
}
}
}
public static string GetCustRMBFee ( string CUSTOMERNAME, string MBLNO )
{
Database db = DatabaseFactory.CreateDatabase();
using (DbConnection connection = db.CreateConnection())
//using (SqlTransaction idbTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
connection.Open();
try
{
var _L_RMBAMOUNT = db.ExecuteScalar(CommandType.Text, "select dbo.[F_GetFee_BS_Cust_NoDui_RMB]('" + MBLNO + "','" + CUSTOMERNAME + "') ");
var L_RMBAMOUNT = "0";
if (string.IsNullOrEmpty(Convert.ToString(_L_RMBAMOUNT)))
{
}
else
{
L_RMBAMOUNT = Convert.ToString(_L_RMBAMOUNT);
}
return L_RMBAMOUNT;
}
catch (Exception exception)
{
return "0";
}
}
}
public static string GetCustUSDFee ( string CUSTOMERNAME, string MBLNO )
{
Database db = DatabaseFactory.CreateDatabase();
using (DbConnection connection = db.CreateConnection())
//using (SqlTransaction idbTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
connection.Open();
try
{
var _L_USDAMOUNT = db.ExecuteScalar(CommandType.Text, "select dbo.[F_GetFee_BS_Cust_NoDui_USD]('" + MBLNO + "','" + CUSTOMERNAME + "') ");
var L_USDAMOUNT = "0";
if (string.IsNullOrEmpty(Convert.ToString(_L_USDAMOUNT)))
{
}
else
{
L_USDAMOUNT = Convert.ToString(_L_USDAMOUNT);
}
return L_USDAMOUNT;
}
catch (Exception exception)
{
return "0";
}
}
}
public static string GetCustFee ( string CUSTOMERNAME, string MBLNO ,string TYPE,string Currency,string HAVEDEBIT )
{
Database db = DatabaseFactory.CreateDatabase();
using (DbConnection connection = db.CreateConnection())
//using (SqlTransaction idbTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
connection.Open();
try
{
var _L_AMOUNT = new object();
if (HAVEDEBIT == "0")
{//不含已对账
_L_AMOUNT = db.ExecuteScalar(CommandType.Text, "select dbo.[F_GetFee_BS_Cust_NoDui]('" + MBLNO + "','" + CUSTOMERNAME + "'," + TYPE + ",'" + Currency + "') ");
}
else {//包含已对账
_L_AMOUNT = db.ExecuteScalar(CommandType.Text, "select dbo.[F_GetFee_BS_Cust_HaveDui]('" + MBLNO + "','" + CUSTOMERNAME + "'," + TYPE + ",'" + Currency + "') ");
}
var L_AMOUNT = "0";
if (string.IsNullOrEmpty(Convert.ToString(_L_AMOUNT)))
{
L_AMOUNT = Convert.ToString(_L_AMOUNT);
}
else
{
L_AMOUNT = Convert.ToString(_L_AMOUNT);
}
return L_AMOUNT;
}
catch (Exception exception)
{
return "";
}
}
}
public static DBResult ReMake ( MsChFeeAutoDuimb _head, string userid, string username, string companyid )
{
var head = GetData("GID='" + _head.GID + "'");
var DetailList = MsChFeeAutoDuiDAL.GetBodyList("BSNO='" + head.GID + "'");
if (_head.DUITYPE!="2")
DetailList = InsertLocalDetail(head, DetailList, userid, username, companyid);
var _DelDetailList = new List<CH_FEE_AutoDuiDetailmb>();
var modb = new ModelObjectRepository();
DBResult result = modb.SaveComm("BSNO", head.GID,
ModelObjectConvert<CH_FEE_AutoDuiDetailmb>.ToModelObjectList(DetailList),
ModelObjectConvert<CH_FEE_AutoDuiDetailmb>.ToModelObjectList(_DelDetailList)
);
DetailList = GetBodyList("BSNO='" + head.GID + "'");
//var _DelDetailList = new List<CH_FEE_AutoDuiDetailmb>();
var LocalDetailList = GetLocalList(head.CUSTOMERNAME,head.GID,head.FEETYPE,head.HAVEDEBIT,head.FEEDC,head.CURR,head.FSTATUS,head.FEEDUITYPE,head.FEEDUITYPECONDIT,head.SALECORP);
//var LocalDetailList = DetailList;
var cdc = new CommonDataContext();
//var result = new DBResult();
Database db = DatabaseFactory.CreateDatabase();
using (DbConnection connection = db.CreateConnection())
//using (SqlTransaction idbTran = SqlHelper.BeginTransaction(SqlHelper.ConnectionStringLocalTransaction))
{
connection.Open();
try
{
foreach (CH_FEE_AutoDuiDetailmb _D in DetailList)
{
var currbs = cdc.v_op_bill.Where(x => x.MBLNO == _D.MBLNO && (x.ISCANCEL == 1 || x.ISCANCEL == 2 || x.ISCANCEL == 4)).ToList();
var currbs_Cando = cdc.v_op_bill.Where(x => x.MBLNO == _D.MBLNO && (x.ISCANCEL == null || x.ISCANCEL == 0 )).ToList();
if (currbs != null && currbs.Count > 0 && (currbs_Cando==null || currbs_Cando.Count==0))
{
//增加判断 如果
_D.REMARK2 = "该业务已退舱";
continue;
}
if (_D.B_BSNO == "")
{
_D.REMARK2 = "我方无此提单号";
continue;
}
else {
}
if (_D.ISOK == "1" || _D.ISOK == "True") {
//重新计算时不再跳过对账成功的业务。
//continue;
}
var _localDetail=new CH_FEE_AutoDuiDetailmb();
var get = false;
foreach (var _L in LocalDetailList) {
if (_L.MBLNO.ToUpper() == _D.MBLNO.ToUpper()) {
_localDetail = _L;
get = true;
continue;
}
}
if (get == false)
{
_D.L_RMBAMOUNT = "0";
_D.L_USDAMOUNT = "0";
}
else
{
_D.L_RMBAMOUNT = _localDetail.L_RMBAMOUNT;
_D.L_USDAMOUNT = _localDetail.L_USDAMOUNT;
}
if (_D.REMARK2 != "对方账单无此提单号")
{
if (Convert.ToDecimal(_D.RMBAMOUNT) == Convert.ToDecimal(_D.L_RMBAMOUNT) && Convert.ToDecimal(_D.USDAMOUNT) == Convert.ToDecimal(_D.L_USDAMOUNT))
{
_D.ISOK = "1";
_D.REMARK2 = "自动对账成功";
}
else
{
_D.ISOK = "0";
if (Convert.ToDecimal(_D.RMBAMOUNT) > Convert.ToDecimal(_D.L_RMBAMOUNT))
{
_D.REMARK2 = "对方RMB金额较多";
}
else if (Convert.ToDecimal(_D.RMBAMOUNT) < Convert.ToDecimal(_D.L_RMBAMOUNT))
{
_D.REMARK2 = "我方RMB金额较多";
}
if (Convert.ToDecimal(_D.USDAMOUNT) > Convert.ToDecimal(_D.L_USDAMOUNT))
{
if (_D.REMARK2.Contains("对方RMB金额较多") == true)
{
_D.REMARK2 = "对方金额较多";
}
else
{
if (_D.REMARK2.Contains("对方USD金额较多") == false)
{
_D.REMARK2 = _D.REMARK2 + "对方USD金额较多";
}
}
}
else if (Convert.ToDecimal(_D.USDAMOUNT) < Convert.ToDecimal(_D.L_USDAMOUNT))
{
if (_D.REMARK2.Contains("我方RMB金额较多")==true)
{
_D.REMARK2 = "我方金额较多";
}
else
{
if (_D.REMARK2.Contains("我方USD金额较多") == false)
{
_D.REMARK2 = _D.REMARK2 + "我方USD金额较多";
}
}
}
}
}
}
head.DbOperationType = DbOperationType.DbotUpd;
head.ModelUIStatus = "E";
head.STATUS = GetSTATUS(DetailList);
if (head.STATUS == "对账平衡")
{
head.DUISTATUS = "对账平衡";
}
else {
head.DUISTATUS = "对账不平衡";
}
//var modb = new ModelObjectRepository();
result = modb.Save(head,
ModelObjectConvert<CH_FEE_AutoDuiDetailmb>.ToModelObjectList(DetailList),
ModelObjectConvert<CH_FEE_AutoDuiDetailmb>.ToModelObjectList(_DelDetailList)
);
}
catch (Exception exception)
{
//idbTran.Rollback();
result.Success = false;
result.Message = exception.Message;
}
}
//UnKnowenTruckNo = UnKnowenTruckNo + " " + UnKnowenAirPort;
return result;
}
private static List<CH_FEE_AutoDuiDetailmb> InsertLocalDetail ( MsChFeeAutoDuimb head, List<CH_FEE_AutoDuiDetailmb> DetailList, string userid, string username, string companyid )
{
//如果有开始和结束日期查询所有结算对象中包含head.customername的业务
//然后遍历DetailList,如果提单号没有则向DetailList当中添加该业务。
var BillList = new List<MsOpBill>();
if (head.STARTDATE != "" && head.ENDDATE != "")
{
if (head.HAVEDEBIT == "0")
{
// BillList = Chfee_AuditDAL.Chfee_AuditDAL.GetBillDataList(" OPLBNAME='海运出口' and ETD between '" + head.STARTDATE + "' and '" + head.ENDDATE + "' and exists(select 1 from ch_fee where customername='" + head.CUSTOMERNAME + "' and bsno=V_op_Bill.BSNO and Amount<>settlement and isnull(ISDEBIT,0)=0) ", userid, username, companyid);
BillList = Chfee_AuditDAL.Chfee_AuditDAL.GetBillDataList(" ETD between '" + head.STARTDATE + "' and '" + head.ENDDATE + "' and exists(select 1 from ch_fee where customername='" + head.CUSTOMERNAME + "' and bsno=V_op_Bill.BSNO and Amount<>settlement and isnull(ISDEBIT,0)=0) ", userid, username, companyid);
}
else
{
BillList = Chfee_AuditDAL.Chfee_AuditDAL.GetBillDataList(" ETD between '" + head.STARTDATE + "' and '" + head.ENDDATE + "' and exists(select 1 from ch_fee where customername='" + head.CUSTOMERNAME + "' and bsno=V_op_Bill.BSNO and Amount<>settlement) ", userid, username, companyid);
}
foreach (var _bill in BillList)
{
var = true;
foreach (var _d in DetailList)
{
if (_bill.MBLNO == _d.MBLNO)
{
= false;
continue;
}
}
if ()
{
var newdetail = new CH_FEE_AutoDuiDetailmb();
newdetail.GID = Guid.NewGuid().ToString();
newdetail.MBLNO = _bill.MBLNO;
newdetail.ISOK = "0";
newdetail.BSNO = "";
newdetail.RMBAMOUNT = "0";
newdetail.USDAMOUNT = "0";
newdetail.L_RMBAMOUNT = "0";
newdetail.L_USDAMOUNT = "0";
newdetail.B_MBLNO= _bill.MBLNO;
newdetail.REMARK2 = "对方账单无此提单号";
DetailList.Add(newdetail);
}
}
}
return DetailList;
}
public static string GetSTATUS ( List<CH_FEE_AutoDuiDetailmb> DetailList ) {
var _r = "";
var _rb = true;
var _RMB=0M;
var _USD=0M;
foreach (var _D in DetailList) {
if (_D.ISOK != "1") {
_rb = false;
_RMB += Convert.ToDecimal(_D.RMBAMOUNT) - Convert.ToDecimal(_D.L_RMBAMOUNT);
_USD += Convert.ToDecimal(_D.USDAMOUNT) - Convert.ToDecimal(_D.L_USDAMOUNT);
}
}
if (_rb != true) {
_r = "对账不平衡:";
if (_RMB > 0) {
_r += "对方RMB金额较多差额" + Convert.ToString(_RMB);
}
if (_RMB < 0)
{
_r += "我方RMB金额较多差额" + Convert.ToString(_RMB);
}
if (_USD > 0)
{
if (_r != "对账不平衡:") {
_r += ",";
}
_r += "对方USD金额较多差额" + Convert.ToString(_USD);
}
if (_USD < 0)
{
if (_r != "对账不平衡:")
{
_r += ",";
}
_r += "我方USD金额较多差额" + Convert.ToString(_USD);
}
}
if (_rb == true)
{
return "对账平衡";
}
else {
return _r;
}
}
#endregion
}
}