/// <summary> /// 补录情况 /// </summary> /// <param name="para"></param> private static void TotalUp2_BuLu(AssetM para) { // 查询最后更新资产日期 DateTimeOffset lastUpDay = AssetDal.GetLastUpDay(); // 表里没有有效更新数据,这种情况也不更新总值. if (lastUpDay == default) { para.ErrorCode = 302; para.ErrorMsg = "没有任何更新记录,不可更新总值!"; return; } // 如果日期不是今天,(也就是今天没有更新过资产).再查询这个日期的总值记录, // 如果没有记录,那么补录(总值日期为这天). // 如果有记录,那么不可以更新. int lastday = int.Parse(lastUpDay.ToString("yyyyMMdd")); if (lastday < int.Parse(DateTimeOffset.Now.ToString("yyyyMMdd"))) { AssetM totalByDay = TotalDayDal.GetLastValue(lastday); if (totalByDay == null) { // 补录 AssetM totalVal = ValueTotal(); if (totalVal.ErrorCode != 200) { para.ErrorCode = 304; para.ErrorMsg = "补录失败,获取总值出错!"; return; } para.Id = RandHelp.NewGuid(); para.Value = totalVal.Value; para.Ctime = DateTimeOffset.Now; para.TotalDate = lastday; TotalDayDal.UpdateVal(para); if (para.ErrorCode == 200) { para.ErrorCode = 201; para.ErrorMsg = "补录成功!"; } } else { para.ErrorCode = 303; para.ErrorMsg = "今天没更新资产,不可更新总值!"; } } // }
/// <summary> /// ItemCode值标识同一个资产的更新周期,从首次添加起到清仓止,首次添加资产时生成. /// 以后更新这个资产时会传来资产Id,据此查得ItemCode值. /// 举例说明:510300这个资产,在第一次添加时生成ItemCode "xxx",后续更新资产时, /// 此值都是"xxx",一直到清仓都是. /// 假如下一次又添加510300时,会生成新的ItemCode "xxx2". /// </summary> /// <param name="data"></param> private static bool AssetItemCode(AssetM data) { if (string.IsNullOrWhiteSpace(data.Id)) { data.ItemCode = RandHelp.NewGuid(); return(true); } string sql = "SELECT itemCode FROM Asset WHERE Id=@Id"; SQLServer db = new SQLServer(); object itemcode = db.ExecuteScalar(sql, data.Id, 1); if (itemcode == null || string.IsNullOrWhiteSpace(itemcode.ToString())) { return(false); } data.ItemCode = itemcode.ToString(); return(true); }
/// <summary> /// 新增资产 资产id设置在para.id,成功返回true,失败返回false /// </summary> /// <param name="para"></param> /// <returns></returns> public static void Add(AssetM para) { if (FormCheck(para) == false) { return; } // para.Id = RandHelp.NewGuid(); para.Ctime = DateTime.Now; para.Status = 1; // string sql = "INSERT INTO Asset(id,title,code,amount,value,positions,price,risk,remark,profit,excorg,kind,valuedate,expdate,rate,action,ctime,itemCode,status)"; SQLServer db = new SQLServer(); int re = db.Insert <AssetM>(sql, para); if (re == 1) { para.ErrorCode = 200; } }
/// <summary> /// 更新总资产数据表 /// </summary> /// <returns></returns> public static AssetM TotalUp() { AssetM m = new AssetM(); // 1.过时检查 TotalUp1_LastTime(m); if (m.ErrorCode > 300) { return(m); } // 2.补录情况 TotalUp2_BuLu(m); if (m.ErrorCode > 300) { return(m); } // 2.1补录成功情况 if (m.ErrorCode == 201) { return(m); } // 写入数据 AssetM totalVal = ValueTotal(); if (totalVal.ErrorCode != ErrCode.Success) { m.ErrorCode = 306; m.ErrorMsg = "更新失败,获取总值出错!"; return(m); } m.Id = RandHelp.NewGuid(); m.Value = totalVal.Value; m.Ctime = DateTimeOffset.Now; m.TotalDate = int.Parse(DateTimeOffset.Now.ToString("yyyyMMdd")); TotalDayDal.UpdateVal(m); return(m); }