using System;
|
using System.Collections.Generic;
|
using System.Data;
|
using WebAPI.Models;
|
|
namespace WebAPI.DLL
|
{
|
public class ClsQC_RequestCheckBill : DBUtility.ClsXt_BaseBill
|
{
|
public Models.ClsQC_RequestCheckBillMain omodel = new Models.ClsQC_RequestCheckBillMain();
|
public List<Models.ClsQC_RequestCheckBillSub> DetailColl = new List<Models.ClsQC_RequestCheckBillSub>();
|
|
public ClsQC_RequestCheckBill()
|
{
|
base.MvarItemKeySub = "QC_RequestCheckBillSub";
|
base.MvarItemKeySub2 = "";
|
base.MvarItemKeySub3 = "";
|
base.MvarItemKeySub4 = "";
|
base.MvarItemKey = "QC_RequestCheckBillMain";
|
base.MvarReportTitle = "检验申请单";
|
base.BillType = "7525";
|
base.HBillSubType = "7525";
|
}
|
|
#region 固定代码
|
~ClsQC_RequestCheckBill()
|
{
|
DetailColl = null;
|
}
|
|
#endregion
|
|
//修改单据
|
public override bool ModifyBill(Int64 lngBillKey, ref string sReturn)
|
{
|
try
|
{
|
oCn.BeginTran();
|
|
string mainSql = "UpDate QC_RequestCheckBillMain set " +
|
" HBillNo='" + omodel.HBillNo + "'" +
|
",HDate='" + omodel.HDate.ToString("yyyy-MM-dd HH:mm:ss") + "'" +
|
",HYear='" + omodel.HYear.ToString() + "'" +
|
",HPeriod='" + omodel.HPeriod.ToString() + "'" +
|
",HRemark='" + omodel.HRemark + "'" +
|
",HUpDater='" + DBUtility.ClsPub.CurUserName + "'" +
|
",HUpDateDate=getdate()" +
|
",HDeptID=" + omodel.HDeptID.ToString() +
|
",HBatchNo='" + omodel.HBatchNo + "'" +
|
",HCheckEmp=" + omodel.HCheckEmp.ToString() +
|
",HProcID=" + omodel.HProcID.ToString() +
|
",HGroupID=" + omodel.HGroupID.ToString() +
|
",HShiftsID=" + omodel.HShiftsID.ToString() +
|
",HTestType='" + omodel.HTestType + "'" +
|
",HSourceOrgID=" + omodel.HSourceOrgID.ToString() +
|
",HInspectOrgID=" + omodel.HInspectOrgID.ToString() +
|
",HSourceID=" + omodel.HSourceID.ToString() +
|
",HBackRemark='" + omodel.HBackRemark + "'" +
|
" where HInterID=" + lngBillKey.ToString();
|
|
//更新主表
|
oCn.RunProc(mainSql);
|
|
//删除关联
|
DeleteRelation(ref sReturn, lngBillKey);
|
//删除子表
|
DeleteBillSub(lngBillKey);
|
|
//插入子表
|
omodel.HInterID = (int)lngBillKey;
|
foreach (Models.ClsQC_RequestCheckBillSub oSub in DetailColl)
|
{
|
string entryCloseDate = oSub.HEntryCloseDate.HasValue ?
|
"'" + oSub.HEntryCloseDate.Value.ToString("yyyy-MM-dd HH:mm:ss") + "'" : "NULL";
|
|
string subSql = "Insert into QC_RequestCheckBillSub " +
|
" (HInterID,HEntryID,HCloseMan,HEntryCloseDate,HCloseType,HRemark" +
|
",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney" +
|
",HMaterID,HUnitID,HQty,HSampleDamageQty" +
|
") values("
|
+ omodel.HInterID.ToString() + "," + oSub.HEntryID.ToString() +
|
",'" + oSub.HCloseMan + "'," + entryCloseDate +
|
"," + Convert.ToString(oSub.HCloseType ? 1 : 0) + ",'" + oSub.HRemark + "'" +
|
"," + oSub.HSourceInterID.ToString() + "," + oSub.HSourceEntryID.ToString() +
|
",'" + oSub.HSourceBillNo + "','" + oSub.HSourceBillType +
|
"'," + oSub.HRelationQty.ToString() + "," + oSub.HRelationMoney.ToString() +
|
"," + oSub.HMaterID.ToString() + "," + oSub.HUnitID.ToString() +
|
"," + oSub.HQty.ToString() + "," + oSub.HSampleDamageQty.ToString() +
|
") ";
|
|
oCn.RunProc(subSql);
|
}
|
|
sReturn = "修改单据成功!";
|
oCn.Commit();
|
return true;
|
}
|
catch (Exception e)
|
{
|
sReturn = e.Message;
|
oCn.RollBack();
|
throw;
|
}
|
}
|
|
//新增单据
|
public override bool AddBill(ref string sReturn)
|
{
|
try
|
{
|
//检查单据号和ID是否重复
|
if (IsExistBillNo(ref DBUtility.ClsPub.sExeReturnInfo, omodel.HBillNo,
|
Pub_Class.ClsPub.Enum_BillStatus.BillStatus_AddNew, omodel.HInterID))
|
{
|
omodel.HBillNo = DBUtility.ClsPub.CreateBillCode(BillType, ref DBUtility.ClsPub.sExeReturnInfo, true);
|
}
|
if (IsExistMainID(ref DBUtility.ClsPub.sExeReturnInfo, omodel.HInterID,
|
Pub_Class.ClsPub.Enum_BillStatus.BillStatus_AddNew))
|
{
|
omodel.HInterID = (int)DBUtility.ClsPub.CreateBillID(BillType, ref DBUtility.ClsPub.sExeReturnInfo);
|
}
|
|
oCn.BeginTran();
|
|
string mainSql = "Insert Into QC_RequestCheckBillMain " +
|
"(HBillType,HBillSubType,HInterID,HBillNo,HDate" +
|
",HYear,HPeriod,HRemark,HMaker,HMakeDate" +
|
",HBillStatus,HDeptID,HBatchNo,HCheckEmp,HProcID,HGroupID" +
|
",HShiftsID,HTestType,HSourceOrgID,HInspectOrgID,HSourceID" +
|
",HMainSourceBillType,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillNo,HBackRemark" +
|
") " +
|
" values('" + this.BillType + "','" + omodel.HBillSubType + "'," + omodel.HInterID.ToString() +
|
",'" + omodel.HBillNo + "','" + omodel.HDate.ToString("yyyy-MM-dd HH:mm:ss") + "'" +
|
", " + omodel.HYear.ToString() + "," + omodel.HPeriod.ToString() + ",'" + omodel.HRemark +
|
"','" + DBUtility.ClsPub.CurUserName + "',getdate()" +
|
", 1" +
|
", " + omodel.HDeptID.ToString() + ",'" + omodel.HBatchNo + "'," + omodel.HCheckEmp.ToString() +
|
"," + omodel.HProcID.ToString() + "," + omodel.HGroupID.ToString() +
|
", " + omodel.HShiftsID.ToString() + ",'" + omodel.HTestType + "'," + omodel.HSourceOrgID.ToString() +
|
"," + omodel.HInspectOrgID.ToString() + "," + omodel.HSourceID.ToString() +
|
",'" + omodel.HMainSourceBillType + "'," + omodel.HMainSourceInterID.ToString() +
|
"," + omodel.HMainSourceEntryID.ToString() + ",'" + omodel.HMainSourceBillNo + "','" + omodel.HBackRemark + "'" +
|
") ";
|
|
//主表
|
oCn.RunProc(mainSql);
|
|
//插入子表
|
foreach (Models.ClsQC_RequestCheckBillSub oSub in DetailColl)
|
{
|
string entryCloseDate = oSub.HEntryCloseDate.HasValue ?
|
"'" + oSub.HEntryCloseDate.Value.ToString("yyyy-MM-dd HH:mm:ss") + "'" : "NULL";
|
|
string subSql = "Insert into QC_RequestCheckBillSub " +
|
" (HInterID,HEntryID,HCloseMan,HEntryCloseDate,HCloseType,HRemark" +
|
",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney" +
|
",HMaterID,HUnitID,HQty,HSampleDamageQty" +
|
") values("
|
+ omodel.HInterID.ToString() + "," + oSub.HEntryID.ToString() +
|
",'" + oSub.HCloseMan + "'," + entryCloseDate +
|
"," + Convert.ToString(oSub.HCloseType ? 1 : 0) + ",'" + oSub.HRemark + "'" +
|
"," + oSub.HSourceInterID.ToString() + "," + oSub.HSourceEntryID.ToString() +
|
",'" + oSub.HSourceBillNo + "','" + oSub.HSourceBillType +
|
"'," + oSub.HRelationQty.ToString() + "," + oSub.HRelationMoney.ToString() +
|
"," + oSub.HMaterID.ToString() + "," + oSub.HUnitID.ToString() +
|
"," + oSub.HQty.ToString() + "," + oSub.HSampleDamageQty.ToString() +
|
") ";
|
|
oCn.RunProc(subSql);
|
}
|
|
sReturn = "新增单据成功!";
|
oCn.Commit();
|
return true;
|
}
|
catch (Exception e)
|
{
|
sReturn = e.Message;
|
oCn.RollBack();
|
throw;
|
}
|
}
|
|
//显示单据
|
public override bool ShowBill(Int64 lngBillKey, ref string sReturn)
|
{
|
try
|
{
|
//查询主表
|
DataSet Ds = oCn.RunProcReturn("Select * from QC_RequestCheckBillMain Where HInterID=" + lngBillKey.ToString(), "QC_RequestCheckBillMain");
|
if (Ds.Tables[0].Rows.Count == 0)
|
{
|
sReturn = "单据未找到!";
|
return false;
|
}
|
|
//固定赋值
|
omodel.HYear = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HYear"]);
|
omodel.HPeriod = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HPeriod"]);
|
omodel.HBillType = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HBillType"]);
|
omodel.HBillSubType = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HBillSubType"]);
|
omodel.HInterID = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HInterID"]);
|
omodel.HDate = DBUtility.ClsPub.isDate(Ds.Tables[0].Rows[0]["HDate"]);
|
omodel.HBillNo = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HBillNo"]);
|
omodel.HBillStatus = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HBillStatus"]);
|
omodel.HCheckItemNowID = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HCheckItemNowID"]);
|
omodel.HCheckItemNextID = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HCheckItemNextID"]);
|
omodel.HCheckFlowID = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HCheckFlowID"]);
|
omodel.HRemark = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HRemark"]);
|
omodel.HBacker = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HBacker"]);
|
omodel.HBackDate = DBUtility.ClsPub.isDate(Ds.Tables[0].Rows[0]["HBackDate"]);
|
omodel.HBackRemark = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HBackRemark"]);
|
omodel.HChecker = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HChecker"]);
|
omodel.HCheckDate = DBUtility.ClsPub.isDate(Ds.Tables[0].Rows[0]["HCheckDate"]);
|
omodel.HMaker = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMaker"]);
|
omodel.HMakeDate = DBUtility.ClsPub.isDate(Ds.Tables[0].Rows[0]["HMakeDate"]);
|
omodel.HUpDater = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HUpDater"]);
|
omodel.HUpDateDate = DBUtility.ClsPub.isDate(Ds.Tables[0].Rows[0]["HUpDateDate"]);
|
omodel.HCloseMan = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HCloseMan"]);
|
omodel.HCloseDate = DBUtility.ClsPub.isDate(Ds.Tables[0].Rows[0]["HCloseDate"]);
|
omodel.HCloseType = DBUtility.ClsPub.isBool(Ds.Tables[0].Rows[0]["HCloseType"]);
|
omodel.HDeleteMan = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HDeleteMan"]);
|
omodel.HDeleteDate = DBUtility.ClsPub.isDate(Ds.Tables[0].Rows[0]["HDeleteDate"]);
|
omodel.HMainSourceBillType = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMainSourceBillType"]);
|
omodel.HMainSourceInterID = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HMainSourceInterID"]);
|
omodel.HMainSourceEntryID = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HMainSourceEntryID"]);
|
omodel.HMainSourceBillNo = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HMainSourceBillNo"]);
|
omodel.HPrintQty = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HPrintQty"]);
|
|
//自定义字段赋值
|
omodel.HSourceID = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HSourceID"]);
|
omodel.HDeptID = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HDeptID"]);
|
omodel.HBatchNo = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HBatchNo"]);
|
omodel.HCheckEmp = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HCheckEmp"]);
|
omodel.HProcID = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HProcID"]);
|
omodel.HGroupID = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HGroupID"]);
|
omodel.HShiftsID = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HShiftsID"]);
|
omodel.HTestType = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HTestType"]);
|
omodel.HSourceOrgID = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HSourceOrgID"]);
|
omodel.HInspectOrgID = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HInspectOrgID"]);
|
|
//查询子表
|
DataSet DsSub = oCn.RunProcReturn("Select * from QC_RequestCheckBillSub Where HInterID=" + lngBillKey.ToString(), "QC_RequestCheckBillSub");
|
DetailColl.Clear();
|
for (int i = 0; i < DsSub.Tables[0].Rows.Count; i++)
|
{
|
Models.ClsQC_RequestCheckBillSub oSub = new Models.ClsQC_RequestCheckBillSub();
|
|
oSub.HInterID = DBUtility.ClsPub.isInt(DsSub.Tables[0].Rows[i]["HInterID"]);
|
oSub.HBillNo_bak = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HBillNo_bak"]);
|
oSub.HEntryID = DBUtility.ClsPub.isInt(DsSub.Tables[0].Rows[i]["HEntryID"]);
|
oSub.HSourceInterID = DBUtility.ClsPub.isInt(DsSub.Tables[0].Rows[i]["HSourceInterID"]);
|
oSub.HSourceEntryID = DBUtility.ClsPub.isInt(DsSub.Tables[0].Rows[i]["HSourceEntryID"]);
|
oSub.HSourceBillType = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HSourceBillType"]);
|
oSub.HSourceBillNo = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HSourceBillNo"]);
|
oSub.HRelationQty = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationQty"]); // 使用 isDoule
|
oSub.HRelationMoney = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HRelationMoney"]);
|
oSub.HCloseMan = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HCloseMan"]);
|
oSub.HCloseType = DBUtility.ClsPub.isBool(DsSub.Tables[0].Rows[i]["HCloseType"]);
|
oSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DsSub.Tables[0].Rows[i]["HEntryCloseDate"]);
|
oSub.HRemark = DBUtility.ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HRemark"]);
|
oSub.HMaterID = DBUtility.ClsPub.isInt(DsSub.Tables[0].Rows[i]["HMaterID"]);
|
oSub.HUnitID = DBUtility.ClsPub.isInt(DsSub.Tables[0].Rows[i]["HUnitID"]);
|
oSub.HQty = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HQty"]);
|
oSub.HSampleDamageQty = DBUtility.ClsPub.isDoule(DsSub.Tables[0].Rows[i]["HSampleDamageQty"]);
|
|
DetailColl.Add(oSub);
|
}
|
sReturn = "显示单据成功!";
|
return true;
|
}
|
catch (Exception e)
|
{
|
sReturn = e.Message;
|
throw;
|
}
|
}
|
|
//删除单据
|
public override bool DeleteBill(Int64 lngBillKey, ref string sReturn)
|
{
|
try
|
{
|
oCn.BeginTran();
|
|
//检查是否可以删除
|
if (!CanDeleteBill(lngBillKey, ref sReturn))
|
{
|
oCn.RollBack();
|
return false;
|
}
|
|
//删除关联表数据
|
DeleteRelation(ref sReturn, lngBillKey);
|
|
//删除子表
|
oCn.RunProc("DELETE FROM QC_RequestCheckBillSub WHERE HInterID = " + lngBillKey);
|
|
//删除主表
|
oCn.RunProc("DELETE FROM QC_RequestCheckBillMain WHERE HInterID = " + lngBillKey);
|
|
sReturn = "删除单据成功!";
|
oCn.Commit();
|
return true;
|
}
|
catch (Exception e)
|
{
|
sReturn = e.Message;
|
oCn.RollBack();
|
throw;
|
}
|
}
|
|
//检查是否可以删除
|
private bool CanDeleteBill(Int64 lngBillKey, ref string sReturn)
|
{
|
DataSet ds = oCn.RunProcReturn(
|
"SELECT HBillStatus, HChecker FROM QC_RequestCheckBillMain WHERE HInterID = " + lngBillKey,
|
"QC_RequestCheckBillMain");
|
|
if (ds.Tables[0].Rows.Count == 0)
|
{
|
sReturn = "单据不存在!";
|
return false;
|
}
|
|
int billStatus = DBUtility.ClsPub.isInt(ds.Tables[0].Rows[0]["HBillStatus"]);
|
string checker = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HChecker"]);
|
|
if (billStatus > 1)
|
{
|
sReturn = "单据当前处于不能删除状态!";
|
return false;
|
}
|
|
if (!string.IsNullOrEmpty(checker))
|
{
|
sReturn = "单据已经审核,不能删除!";
|
return false;
|
}
|
|
return true;
|
}
|
|
// 注意:以下方法需要检查基类是否是 virtual 或 abstract
|
// 如果基类没有这些方法,需要删除或添加 new 关键字
|
|
// 审核单据
|
public new bool CheckBill(Int64 lngBillKey, ref string sReturn)
|
{
|
try
|
{
|
string sql = "Update QC_RequestCheckBillMain " +
|
" Set HChecker = '" + DBUtility.ClsPub.CurUserName +
|
"', HCheckDate = getdate(), HBillStatus = 2 " +
|
" Where HInterID = " + lngBillKey.ToString();
|
|
oCn.RunProc(sql);
|
|
sReturn = "审核单据成功!";
|
return true;
|
}
|
catch (Exception e)
|
{
|
sReturn = "审核单据失败:" + e.Message;
|
return false;
|
}
|
}
|
|
// 反审核单据
|
public new bool AbandonCheck(Int64 lngBillKey, ref string sReturn)
|
{
|
try
|
{
|
string sql = "Update QC_RequestCheckBillMain " +
|
" Set HChecker = '', HCheckDate = NULL, HBillStatus = 1 " +
|
" Where HInterID = " + lngBillKey.ToString();
|
|
oCn.RunProc(sql);
|
|
sReturn = "反审核单据成功!";
|
return true;
|
}
|
catch (Exception e)
|
{
|
sReturn = "反审核单据失败:" + e.Message;
|
return false;
|
}
|
}
|
|
// 关闭单据
|
public new bool CloseBill(Int64 lngBillKey, ref string sReturn)
|
{
|
try
|
{
|
string sql = "Update QC_RequestCheckBillMain " +
|
" Set HCloseMan = '" + DBUtility.ClsPub.CurUserName +
|
"', HCloseDate = getdate(), HBillStatus = 3 " +
|
" Where HInterID = " + lngBillKey.ToString();
|
|
oCn.RunProc(sql);
|
|
sReturn = "关闭单据成功!";
|
return true;
|
}
|
catch (Exception e)
|
{
|
sReturn = "关闭单据失败:" + e.Message;
|
return false;
|
}
|
}
|
|
// 反关闭单据
|
public new bool CancelClose(Int64 lngBillKey, ref string sReturn)
|
{
|
try
|
{
|
string sql = "Update QC_RequestCheckBillMain " +
|
" Set HCloseMan = '', HCloseDate = NULL, HBillStatus = 2 " +
|
" Where HInterID = " + lngBillKey.ToString();
|
|
oCn.RunProc(sql);
|
|
sReturn = "反关闭单据成功!";
|
return true;
|
}
|
catch (Exception e)
|
{
|
sReturn = "反关闭单据失败:" + e.Message;
|
return false;
|
}
|
}
|
|
// 作废单据
|
public new bool Cancelltion(Int64 lngBillKey, ref string sReturn)
|
{
|
try
|
{
|
string sql = "Update QC_RequestCheckBillMain " +
|
" Set HDeleteMan = '" + DBUtility.ClsPub.CurUserName +
|
"', HDeleteDate = getdate(), HBillStatus = 4 " +
|
" Where HInterID = " + lngBillKey.ToString();
|
|
oCn.RunProc(sql);
|
|
sReturn = "作废单据成功!";
|
return true;
|
}
|
catch (Exception e)
|
{
|
sReturn = "作废单据失败:" + e.Message;
|
return false;
|
}
|
}
|
|
// 反作废单据
|
public new bool AbandonCancelltion(Int64 lngBillKey, ref string sReturn)
|
{
|
try
|
{
|
string sql = "Update QC_RequestCheckBillMain " +
|
" Set HDeleteMan = '', HDeleteDate = NULL, HBillStatus = 1 " +
|
" Where HInterID = " + lngBillKey.ToString();
|
|
oCn.RunProc(sql);
|
|
sReturn = "反作废单据成功!";
|
return true;
|
}
|
catch (Exception e)
|
{
|
sReturn = "反作废单据失败:" + e.Message;
|
return false;
|
}
|
}
|
}
|
}
|