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/Import/DAL/ReceiptIO/ReceiptIODAL.cs

435 lines
19 KiB
C#

2 years ago
using System;
using System.Data;
using System.Data.Common;
using System.Collections.Generic;
using System.Text;
using DSWeb.Areas.Import.Models.ReceiptIO;
using DSWeb.Areas.OA.Models.Baoxiao;
using DSWeb.Areas.OA.Models.Comm;
using Microsoft.Practices.EnterpriseLibrary.Data;
using HcUtility.Comm;
using DSWeb.Areas.CommMng.DAL;
using DSWeb.EntityDA;
namespace DSWeb.Areas.Import.DAL.ReceiptIO
{
public partial class ReceiptIODAL
{
#region 快递列表
//报销单列表
static public List<ReceiptIOmb> GetDataList ( string strCondition,string USERID )
{
var strSql = new StringBuilder();
strSql.Append(" select GID,TRANCNO,CORPID,DEPTGID,OP,RecvCompany,RecvName ");
strSql.Append(" ,convert(varchar,createtime,20) CREATETIME ");
//strSql.Append(" ,dbo.trimdate(createtime) CREATETIME ");
strSql.Append(" ,REMARK,IOTYPE,case IOTYPE when 1 then '收' else '发' end IOTYPERef ");
strSql.Append(" FROM OP_Receipt_IO RI ");
strSql.Append(" where isnull(isdelete,0)<>1 ");
if (USERID!=""){
strSql.Append(GetRangStr(USERID));
}
if (!string.IsNullOrEmpty(strCondition))
{
strSql.Append(" and " + strCondition);
}
return SetData(strSql);
}
public static string GetRangStr ( string userid )
{
string str = "";
var strSql = new StringBuilder();
strSql.Append("SELECT VISIBLERANGE,OPERATERANGE from VW_User_Authority where [NAME]='modOpReceiptManagement' and USERID='" + userid + "' and ISDELETE=0");
string visiblerange = "4";
string operaterange = "4";
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
visiblerange = Convert.ToString(reader["VISIBLERANGE"]);
operaterange = Convert.ToString(reader["OPERATERANGE"]);
break;
}
reader.Close();
}
var rangeDa = new RangeDA();
if (visiblerange == "4")
{
str = " and OP=(select SHOWNAME from [user] where GID='" + userid + "')";
}
else if (visiblerange == "3")
{
var companyid = rangeDa.GetCORPID(userid);
var deptname = rangeDa.GetDEPTNAME(userid);
str = " and OP in(select SHOWNAME from [vw_user] where DEPTNAME='" + deptname + "' and companyid='" + companyid + "')";
}
else if (visiblerange == "2")
{
var companyid = rangeDa.GetCORPID(userid);
//var deptname = rangeDa.GetDEPTNAME(userid);
str = " and OP in(select SHOWNAME from [vw_user] where companyid='" + companyid + "')";
}
else if (visiblerange == "1")
{
var companyid = rangeDa.GetCORPID(userid);
str = " ";
}
else { str = " "; }
return str;
}
static public ReceiptIOmb GetData ( string condition )
{
var list = GetDataList(condition,"");
if (list.Count > 0)
return list[0];
return new ReceiptIOmb();
}
private static List<ReceiptIOmb> SetData ( StringBuilder strSql )
{
var headList = new List<ReceiptIOmb>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
ReceiptIOmb data = new ReceiptIOmb();
#region Set DB data to Object
data.GID = Convert.ToString(reader["GID"]);
data.TRANCNO = Convert.ToString(reader["TRANCNO"]);
data.CORPID = Convert.ToString(reader["CORPID"]);
data.DEPTGID = Convert.ToString(reader["DEPTGID"]);
data.OP = Convert.ToString(reader["OP"]);
data.CREATETIME = Convert.ToString(reader["CREATETIME"]);
data.REMARK = Convert.ToString(reader["REMARK"]);
data.IOTYPE = Convert.ToString(reader["IOTYPE"]);
data.IOTYPERef = Convert.ToString(reader["IOTYPERef"]);
data.RecvCompany = Convert.ToString(reader["RecvCompany"]);
data.RecvName = Convert.ToString(reader["RecvName"]);
//data.Remark = Convert.ToString(reader["Remark"]);
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#endregion
#region 查询快递内单据数据
static public List<ReceiptIOBodymb> GetBodyList ( string strCondition )
{
var strSql = new StringBuilder();
strSql.Append(" SELECT B.SEQUENCE,b.GID,b.IO_GID,b.BSNO,(select Custno from v_op_bs where BSNO=B.bsno) CUSTNO ");
strSql.Append(" ,vb.MBLNO,vb.HBLNO,vb.CUSTOMERNAME ,Receipt_GID,ReceiptName,NeedType ");
strSql.Append(" ,case (select oplb from v_op_bs where bsno=b.BSNO) when 'import_main' then (select receiptremark from import_main where contractno=b.bsno) else '' end remark ");
strSql.Append(" ,(select oplb from v_op_bs where bsno=b.BSNO) OPLB ");
strSql.Append(" ,vb.PORTDISCHARGE,vb.HBLNO ");
strSql.Append(" ,case (select oplb from v_op_bs where bsno=b.BSNO) when 'import_main' then (select BillType from import_main where contractno=b.bsno) else '' end BillType ");
strSql.Append(" ,case (select oplb from v_op_bs where bsno=b.BSNO) when 'import_main' then (select (select EnumValueName from tSysEnumValue where LangId=0 and EnumTypeID=6 and EnumValueID=BillType) from import_main where contractno=b.bsno) else '' end BillTypeREF ");
strSql.Append(" ,case (select oplb from v_op_bs where bsno=b.BSNO) when 'import_main' then (select dbo.trimdate(ArrivalDate) from import_main where contractno=b.bsno) else '' end ArrivalDate ");
strSql.Append(" ,vb.OP ");
strSql.Append(" from op_Receipt_IO_Body B ");
strSql.Append(" left join v_op_bs vb on vb.BSNO=b.bsno ");
if (strCondition.Trim() != String.Empty)
{
strSql.Append(" where " + strCondition);
}
strSql.Append(" order by SEQUENCE ");
return SetBodyData(strSql);
}
private static List<ReceiptIOBodymb> SetBodyData ( StringBuilder strSql )
{
var bodyList = new List<ReceiptIOBodymb>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
ReceiptIOBodymb data = new ReceiptIOBodymb();
#region Set DB data to Object
data.GID = Convert.ToString(reader["GID"]);
data.SEQUENCE = Convert.ToString(reader["SEQUENCE"]);
data.IO_GID = Convert.ToString(reader["IO_GID"]);
data.ReceiptName = Convert.ToString(reader["ReceiptName"]);
data.NeedType = Convert.ToString(reader["NeedType"]);
data.BSNO = Convert.ToString(reader["BSNO"]);
data.Receipt_GID = Convert.ToString(reader["Receipt_GID"]);
data.CUSTNO = Convert.ToString(reader["CUSTNO"]);
data.MBLNO = Convert.ToString(reader["MBLNO"]);
data.HBLNO = Convert.ToString(reader["HBLNO"]);
data.Remark = Convert.ToString(reader["Remark"]);
data.OPLB = Convert.ToString(reader["OPLB"]);
data.CUSTOMERNAME = Convert.ToString(reader["CUSTOMERNAME"]);
data.PORTDISCHARGE = Convert.ToString(reader["PORTDISCHARGE"]);
//data.HBLNO = Convert.ToString(reader["HBLNO"]);
data.BillType = Convert.ToString(reader["BillType"]);
data.BillTypeREF = Convert.ToString(reader["BillTypeREF"]);
data.ArrivalDate = Convert.ToString(reader["ArrivalDate"]);
data.OP = Convert.ToString(reader["OP"]);
#endregion
bodyList.Add(data);
}
reader.Close();
}
return bodyList;
}
#endregion
#region 删除快递单下的明细
static public int DELBody ( string GID )
{
var strSql = new StringBuilder();
strSql.Append(" delete from OP_Receipt_IO_Body where IO_GID =( '" + GID + "')");
var _count = 0;
Database db = DatabaseFactory.CreateDatabase();
_count = db.ExecuteNonQuery(CommandType.Text, strSql.ToString());
return _count;
}
#endregion
#region 查询快递单明细看是否有重复
static public int SearchBody(ReceiptIOBodymb Body)
{
var strSql = new StringBuilder();
strSql.Append(" select count(*) _count from OP_Receipt_IO_Body where BSNO='" + Body.BSNO
+ "' and ReceiptName='" + Body.ReceiptName
+ "' and Needtype='" + Body.NeedType + "'"
);
if (Body.GID != "") {
strSql.Append(" and GID<>'" + Body.GID + "'");
}
var _count = 0;
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
_count = Convert.ToInt16(reader["_count"]);
}
reader.Close();
}
return _count;
}
#endregion
#region 处理明细
//增加 修改
static public int WriteBody(List<ReceiptIOBodymb> BodyList, string UserID, ReceiptIOmb head)
{
var strSql = new StringBuilder();
var _count = 0;
foreach (var Body in BodyList){
var GID = SearchReceipt(Body);
if (GID == "")
{
GID = Guid.NewGuid().ToString();
strSql.Append(" INSERT INTO [op_receipt] ");
strSql.Append(" ([GID],[BSNO],[RECEIPTNO],[RECEIPTTYPE],[RECEIVE_MAN],[RECEIVE_DATE],[SEND_MAN],[SEND_DATE] ");
strSql.Append(" ,[TRANCER],[TRANCNO],[ISREPEAT],[REPEAT_MAN],[REPEAT_DATE],[ISRECEIVE] ");
strSql.Append(" ,[RETURN_MAN],[RETURN_DATE],[RETURN_TRANCER],[RETURN_TRANCNO] ");
strSql.Append(" ,[REMARK],[CORPID],[CREATEUSER],[CREATETIME],[MODIFIEDUSER],[MODIFIEDTIME]) ");
strSql.Append(" VALUES ");
strSql.Append(" ('" + GID + "','" + Body.BSNO + "','','" + Body.ReceiptName + "','','','','' ");
strSql.Append(" ,'','" + head.TRANCNO + "','','','','' ");
strSql.Append(" ,'','','','' ");
strSql.Append(" ,'',(select companyid from vw_user where userid='" + UserID + "'),'" + UserID + "',getdate(),'" + UserID + "',getdate()) ");
}
if (Body.NeedType == "接单") {
strSql.Append(" Update op_receipt set RECEIVE_TRANCNO='" + head.TRANCNO + "' , RECEIVE_MAN='" + head.OP + "', RECEIVE_DATE='" + head.CREATETIME + "' ");
strSql.Append(" ,MODIFIEDUSER='" + UserID + "',MODIFIEDTIME=getdate() where GID='" + GID + "' ");
}
if (Body.NeedType == "送单") {
strSql.Append(" Update op_receipt set Trancno='" + head.TRANCNO + "' , SEND_MAN='" + head.OP + "', SEND_DATE='" + head.CREATETIME + "' ");
strSql.Append(" ,MODIFIEDUSER='" + UserID + "',MODIFIEDTIME=getdate() where GID='" + GID + "' ");
}
if (Body.NeedType == "回单") {
strSql.Append(" Update op_receipt set REPEAT_TRANCNO='" + head.TRANCNO + "' , REPEAT_MAN='" + head.OP + "', REPEAT_DATE='" + head.CREATETIME + "' ");
strSql.Append(" ,MODIFIEDUSER='" + UserID + "',MODIFIEDTIME=getdate() where GID='" + GID + "' ");
}
if (Body.NeedType == "还单") {
strSql.Append(" Update op_receipt set RETURN_TRANCNO='" + head.TRANCNO + "' , RETURN_MAN='" + head.OP + "', RETURN_DATE='" + head.CREATETIME + "' ");
strSql.Append(" ,MODIFIEDUSER='" + UserID + "',MODIFIEDTIME=getdate() where GID='" + GID + "' ");
}
Database db = DatabaseFactory.CreateDatabase();
_count = _count+db.ExecuteNonQuery(CommandType.Text, strSql.ToString());
strSql.Clear();
}
return _count;
}
//删除
static public int DelBody ( List<ReceiptIOBodymb> BodyList, string UserID, ReceiptIOmb head )
{
var strSql = new StringBuilder();
var _count = 0;
foreach (var Body in BodyList)
{
var GID = SearchReceipt(Body);
if (GID == "")
{
return 0;
}
else
{
if (Body.NeedType == "接单")
{
strSql.Append(" Update op_receipt set RECEIVE_DATE=null,TRANCNO=replace(TRANCNO,'" + head.TRANCNO + "','') ");
strSql.Append(" where BSNO='" + Body.BSNO + "' and ReceiptType='"+Body.ReceiptName+"' ");
}
if (Body.NeedType == "送单")
{
strSql.Append(" Update op_receipt set SEND_DATE=null,REMARK=replace(REMARK,' 送单快递号" + head.TRANCNO + "','')");
strSql.Append(" where BSNO='" + Body.BSNO + "' and ReceiptType='" + Body.ReceiptName + "' ");
}
if (Body.NeedType == "回单")
{
strSql.Append(" Update op_receipt set REPEAT_DATE=null,REMARK=replace(REMARK,' 回单快递号" + head.TRANCNO + "','') ");
strSql.Append(" where BSNO='" + Body.BSNO + "' and ReceiptType='" + Body.ReceiptName + "' ");
}
if (Body.NeedType == "还单")
{
strSql.Append(" Update op_receipt set RETURN_DATE=null,RETURN_TRANCNO=replace(RETURN_TRANCNO,'" + head.TRANCNO + "','') ");
strSql.Append(" where BSNO='" + Body.BSNO + "' and ReceiptType='" + Body.ReceiptName + "' ");
}
}
Database db = DatabaseFactory.CreateDatabase();
_count = _count + db.ExecuteNonQuery(CommandType.Text, strSql.ToString());
}
return _count;
}
#endregion
#region 查找是否有该种单据
static public string SearchReceipt(ReceiptIOBodymb Body)
{
var strSql = new StringBuilder();
strSql.Append(" select GID from OP_receipt where BSNO='" + Body.BSNO + "' and ReceiptType='" + Body.ReceiptName + "' ");
/*if (Body.NeedType == "接单")
{
strSql.Append(" and isnull(RECEIVE_DATE,'')<>'' ");
}
if (Body.NeedType == "送单")
{
strSql.Append(" and isnull(SEND_DATE,'')<>'' ");
}
if (Body.NeedType == "回单")
{
strSql.Append(" and isnull(REPEAT_DATE,'')<>'' ");
}
if (Body.NeedType == "还单")
{
strSql.Append(" and isnull(RETURN_DATE,'')<>'' ");
}*/
var GID = "";
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
GID = Convert.ToString(reader["GID"]);
}
reader.Close();
}
return GID;
}
#endregion
static public List<BSNOmb> GetRemark ( string BSNO )
{
var strSql = new StringBuilder();
strSql.Append(" select receiptremark Remark from import_main where Contractno='" + BSNO + "' ");
//feestatus=0 and
//strSql.Append(" union all ");
//strSql.Append(" select bsno,CUSTNO+'_'+mblno code,mblno from op_seai ");
//strSql.Append(" where feestatus=0 and inputby in (select showname from [user] where gid in(select userid from user_company where companyid='" + COMPANYID + "' )) ");
//strSql.Append(" FROM OA_Baoxiao BX ");
return SetDataBSNO(strSql);
}
private static List<BSNOmb> SetDataBSNO ( StringBuilder strSql )
{
var headList = new List<BSNOmb>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader reader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (reader.Read())
{
BSNOmb data = new BSNOmb();
#region Set DB data to Object
data.Remark = Convert.ToString(reader["Remark"]);
#endregion
headList.Add(data);
}
reader.Close();
}
return headList;
}
#region 写寄单情况
static public int InsertRemark ( List<ReceiptIOBodymb> BodyList, ReceiptIOmb head )
{
var strSql = new StringBuilder();
var _count = 0;
foreach (var Body in BodyList)
{
var BSNO = Body.BSNO;
var Remark = Body.Remark;
var BillType = Body.BillType;
if (!string.IsNullOrEmpty(Remark))
{
strSql.Append(" update import_main set ReceiptRemark='" + Remark + "',BillType=" + BillType + " ");
strSql.Append(" where contractno= '" + BSNO + "'");
Database db = DatabaseFactory.CreateDatabase();
if (Body.OPLB == "import_main")
{
_count = _count + db.ExecuteNonQuery(CommandType.Text, strSql.ToString());
}
}
}
return _count;
}
#endregion
}
}