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.

271 lines
9.4 KiB
C#

10 months ago
using System;
using System.Web;
using DSWeb.MvcShipping.Comm.Cookie;
using HcUtility.Comm;
using HcUtility.Core;
using System.Collections.Generic;
namespace DSWeb.MvcShipping.Helper.Repository
{
/// wuwei 2011-01-25 CMP-8856 中石化:webpos保存数据报错导致数据保存重复的问题
public class ModelObjectRepository
{
public HttpRequestBase Request { get; set; }
public DBResult Save(ModelObjectBillHead headdata, List<ModelObjectBase> bodylist, List<ModelObjectBase> bodylistDel)
{
return Save(headdata, bodylist, bodylistDel, null, null);
}
public DBResult Save(ModelObjectBillHead headdata, List<ModelObjectBase> bodylist1, List<ModelObjectBase> bodylistDel1
, List<ModelObjectBase> bodylist2, List<ModelObjectBase> bodylistDel2)
{
DBResult result = null;
try
{
result = HandleHeadData(headdata);
if (!result.Success)
return result;
AddBodyToHead(headdata, bodylist1, bodylistDel1);
AddBodyToHead(headdata, bodylist2, bodylistDel2);
result = Save(headdata);
return result;
}
catch (Exception e)
{
if(result==null)
result=new DBResult();
result.Success = false;
result.Message = e.Message;
return result;
}
}
public DBResult Save(ModelObjectBillHead headdata, List<ModelObjectBase> bodylist1, List<ModelObjectBase> bodylistDel1
, List<ModelObjectBase> bodylist2, List<ModelObjectBase> bodylistDel2, List<ModelObjectBase> bodylist3, List<ModelObjectBase> bodylistDel3)
{
DBResult result = null;
try
{
result = HandleHeadData(headdata);
if (!result.Success)
return result;
AddBodyToHead(headdata, bodylist1, bodylistDel1);
AddBodyToHead(headdata, bodylist2, bodylistDel2);
AddBodyToHead(headdata, bodylist3, bodylistDel3);
result = Save(headdata);
return result;
}
catch (Exception e)
{
if (result == null)
result = new DBResult();
result.Success = false;
result.Message = e.Message;
return result;
}
}
//4个子表
public DBResult Save(ModelObjectBillHead headdata,
List<ModelObjectBase> bodylist1, List<ModelObjectBase> bodylistDel1,
List<ModelObjectBase> bodylist2, List<ModelObjectBase> bodylistDel2,
List<ModelObjectBase> bodylist3, List<ModelObjectBase> bodylistDel3,
List<ModelObjectBase> bodylist4, List<ModelObjectBase> bodylistDel4
)
{
DBResult result = null;
try
{
result = HandleHeadData(headdata);
if (!result.Success)
return result;
AddBodyToHead(headdata, bodylist1, bodylistDel1);
AddBodyToHead(headdata, bodylist2, bodylistDel2);
AddBodyToHead(headdata, bodylist3, bodylistDel3);
AddBodyToHead(headdata, bodylist4, bodylistDel4);
result = Save(headdata);
return result;
}
catch (Exception e)
{
if (result == null)
result = new DBResult();
result.Success = false;
result.Message = e.Message;
return result;
}
}
//5
public DBResult Save(ModelObjectBillHead headdata,
List<ModelObjectBase> bodylist1, List<ModelObjectBase> bodylistDel1,
List<ModelObjectBase> bodylist2, List<ModelObjectBase> bodylistDel2,
List<ModelObjectBase> bodylist3, List<ModelObjectBase> bodylistDel3,
List<ModelObjectBase> bodylist4, List<ModelObjectBase> bodylistDel4,
List<ModelObjectBase> bodylist5, List<ModelObjectBase> bodylistDel5
)
{
DBResult result = null;
try
{
result = HandleHeadData(headdata);
if (!result.Success)
return result;
AddBodyToHead(headdata, bodylist1, bodylistDel1);
AddBodyToHead(headdata, bodylist2, bodylistDel2);
AddBodyToHead(headdata, bodylist3, bodylistDel3);
AddBodyToHead(headdata, bodylist4, bodylistDel4);
AddBodyToHead(headdata, bodylist5, bodylistDel5);
result = Save(headdata);
return result;
}
catch (Exception e)
{
if (result == null)
result = new DBResult();
result.Success = false;
result.Message = e.Message;
return result;
}
}
public DBResult Save(ModelObjectBase data)
{
HanderDataCookie(data);
List<ModelObjectBase> list = new List<ModelObjectBase>();
list.Add(data);
return Save(list);
}
public DBResult Save(List<ModelObjectBase> dataList)
{
ModelObjectDBBill dbBill = new ModelObjectDBBill();
foreach (ModelObjectBase mob in dataList)
{
HanderDataCookie(mob);
}
return dbBill.Save(dataList);
}
public DBResult SaveComm(List<ModelObjectBase> dataList)
{
var dbModel = new ModelObjectDB();
foreach (ModelObjectBase mob in dataList)
{
HanderDataCookie(mob);
}
return dbModel.Save(dataList);
}
#region Private Function
private void HanderDataCookie(ModelObjectBase data)
{
if (Request != null)
{
if (data is ModelObjectBillHead)
{
ModelObjectBillHead headdata = (ModelObjectBillHead)data;
// headdata.LoginUserID = CookieConfig.GetCookie_UserId(Request);
headdata.LoginUserCode = CookieConfig.GetCookie_UserCode(Request);
headdata.LoginUserName = CookieConfig.GetCookie_UserName(Request);
}
}
}
private DBResult HandleHeadData(ModelObjectBillHead headdata)
{
var result = new DBResult();
string headBillno = headdata.GetBillNoValue().ToString();
if(String.IsNullOrEmpty(headBillno)||headBillno=="*")
{
result.Success = false;
result.Message = "单据没有相应的单据号,不允许保存";
return result;
}
if (headdata.ModelUIStatus == "0")
{
result.Success = false;
result.Message = "数据为浏览状态不允许保存!";
return result;
}
if(headdata.ModelUIStatus=="I")
{
headdata.DbOperationType = DbOperationType.DbotIns;
}
else if(headdata.ModelUIStatus=="E")
{
headdata.DbOperationType = DbOperationType.DbotUpd;
}
else
{
headdata.DbOperationType = DbOperationType.DbotDel;
}
result.Success = true;
result.Message = "处理主表数据成功";
return result;
}
private void AddBodyToHead(ModelObjectBillHead headdata, List<ModelObjectBase> bodylist, List<ModelObjectBase> bodylistDel)
{
List<ModelObjectBase> bodyListAll = new List<ModelObjectBase>();
//更加billno是否为空置更新或新增标志.
if (bodylist != null)
{
foreach (ModelObjectBillBody modbody in bodylist)
{
string bodyBillNo = modbody.GetBillNoValue().ToString();
if (bodyBillNo == String.Empty || bodyBillNo == "*")
modbody.DbOperationType = DbOperationType.DbotIns;
else
modbody.DbOperationType = DbOperationType.DbotUpd;
}
bodyListAll.AddRange(bodylist);
}
//置删除标志
if (bodylistDel != null)
{
foreach (ModelObjectBillBody modbodydel in bodylistDel)
{
modbodydel.DbOperationType = DbOperationType.DbotDel;
}
bodyListAll.AddRange(bodylistDel);
}
if (bodyListAll.Count > 0)
headdata.BodyList.Add(bodyListAll);
}
#endregion
}
public class ModelHeadConvert<T> where T : ModelObjectBillHead
{
private static ModelObjectBillHead Converter ( T inputObject )
{
return inputObject;
}
public static List<ModelObjectBillHead> ToModelObjectList ( List<T> objList )
{
if (objList == null)
return null;
return objList.ConvertAll<ModelObjectBillHead>(new Converter<T, ModelObjectBillHead>(Converter));
}
}
}