c#后端 保存 复杂写法

      /// <summary>
        ///描述:保存其它收支信息
        ///作者:许珈宁
        ///时间:2018-04-28
        /// </summary>
        /// 
        [Log("保存")]
        private string SaveOtherInout()
        {
            int int_otherInoutNo = int.Parse(pi.PPV("str_otherInoutNo", "0"));
            string str_remark = pi.PPV("str_remark");/*备注*/
            string str_no = pi.PPV("VC_NO");/*单号*/
       
            DateTime Dt_indate = Convert.ToDateTime(pi.PPV("DT_MONEY"));/*日期*/
       //     string str_nvcname = pi.PPV("NVC_NAME");
            string str_supply = pi.PPV("I_ID_SUPPLY");
            string array_GoodsData = pi.PPV("array_GoodsData", "0");
            string str_delgoodsIds = pi.PPV("str_delgoodsIds");


            var list_goodsdetail = Json.ToObject<List<T_CW_OTHERINOUTDETAIL>>(array_GoodsData);
          
            if (str_supply == null || str_supply == "undefined" || str_supply == "") {


                JsonValue.msg = "供应商为空";
                JsonValue.success = false;
                return Value = JsonValue.ToJson();
            }


            BLL_T_CW_OTHERINOUT bll_goodsout = new BLL_T_CW_OTHERINOUT(this.ol);
            BLL_T_CW_OTHERINOUTDETAIL bll_goodsdetail = new BLL_T_CW_OTHERINOUTDETAIL(this.ol);


            T_CW_OTHERINOUT t_goodsout ;
            List<T_CW_OTHERINOUTDETAIL> list_detail = new List<T_CW_OTHERINOUTDETAIL>();
            string str_actiontype = int_otherInoutNo == -1 ? "add" : "edit";
           




           
            var trans = bll_goodsout.BeginTrans();
            try
            {
                if (str_actiontype == "add")
                {
                    t_goodsout = new T_CW_OTHERINOUT();
                    int ID= bll_goodsout.GetNextId();
                    t_goodsout.ID = ID;
                    t_goodsout.I_STATE = 0;
                    t_goodsout.I_ID_SUPPLY = decimal.Parse(str_supply);
                    t_goodsout.VC_NO = str_no;
                    t_goodsout.VC_REMARK = str_remark;
                    t_goodsout.DT_MONEY = Dt_indate;
                    t_goodsout.N_MONEY = 0;


                    foreach (var item in list_goodsdetail)
                    {
                        
                        T_CW_OTHERINOUTDETAIL tDetail = new T_CW_OTHERINOUTDETAIL();
                        int idNew = bll_goodsdetail.GetNextId();
                        tDetail.ID = idNew;
                        tDetail.I_ID_SUPPLY = item.I_ID_SUPPLY;
                        tDetail.I_ID_MAIN = ID;
                        tDetail.I_TYPE = item.I_TYPE; 
                        tDetail.N_MONEY = item.N_MONEY;
                        tDetail.VC_MONEY = item.VC_MONEY;
                        tDetail.VC_REMARK = item.VC_REMARK;
                        if (item.I_TYPE < 0)
                        {
                            t_goodsout.N_MONEY -= item.N_MONEY;
                        }
                        else
                        {
                            t_goodsout.N_MONEY += item.N_MONEY;
                        }
                        list_detail.Add(tDetail);
                       
                    }
                    JsonValue.success = bll_goodsdetail.InsertMore(list_detail) && bll_goodsout.Insert(t_goodsout);
                }
                else
                {
                    if (!string.IsNullOrWhiteSpace(str_delgoodsIds)&& str_delgoodsIds!="0")
                    {
                        var list_delDetailIds = str_delgoodsIds.Split(',').Select(e => int.Parse(e)).ToList();


                        foreach (var item in list_delDetailIds)
                        {
                            bll_goodsdetail.Delete(item);
                        }
                    }




                    t_goodsout = bll_goodsout.FindByKey(int_otherInoutNo);
                    t_goodsout.I_STATE = 0;
                    t_goodsout.I_ID_SUPPLY = decimal.Parse(str_supply);
                    t_goodsout.VC_NO = str_no;
                    t_goodsout.VC_REMARK = str_remark;
                    t_goodsout.DT_MONEY = Dt_indate;
                    t_goodsout.N_MONEY = 0;


                    var listOld = bll_goodsdetail.Find(e => e.I_ID_MAIN == t_goodsout.ID).ToList();
                    List<T_CW_OTHERINOUTDETAIL> list_goodsDetail = new List<T_CW_OTHERINOUTDETAIL>();


                    foreach (var item in list_goodsdetail)
                    {
                        if (item.I_TYPE < 0)
                        {
                            t_goodsout.N_MONEY -= item.N_MONEY;
                        }
                        else
                        {
                            t_goodsout.N_MONEY += item.N_MONEY;
                        }
                        var tDetail = listOld.Where(e => e.ID == item.ID).FirstOrDefault();
                        if (tDetail == null)
                        {
                            item.ID = bll_goodsdetail.GetNextId();
                            item.I_ID_MAIN = t_goodsout.ID;


                            bll_goodsdetail.Insert(item);


                        }
                        else
                        {
                            tDetail.I_ID_MAIN = t_goodsout.ID;
                            tDetail.I_ID_SUPPLY = item.I_ID_SUPPLY;
                            tDetail.I_TYPE = item.I_TYPE;
                            tDetail.N_MONEY = item.N_MONEY;
                            tDetail.VC_MONEY = item.VC_MONEY;
                            tDetail.VC_REMARK = item.VC_REMARK;
 
                            bll_goodsdetail.Update(tDetail);
                        }
                    }
                    
                    JsonValue.success = bll_goodsout.Update(t_goodsout);
                }
               trans.Commit(); /*事务完成*/
            
                JsonValue.msg = "操作成功";
              
            }
            catch (Exception ex)
            {
               trans.Rollback();
              
                var aa = ex.Message;
                JsonValue.msg = "操作失败,原因:"+ aa;
                JsonValue.success = false;
            }
            finally
            {
               trans.Dispose(); /*释放事务*/
            }
            return Value = JsonValue.ToJson();
        
    }

猜你喜欢

转载自blog.csdn.net/qq_41597349/article/details/80283691