using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using DirectService.Tools; using JLHHJSvr.BLL; using JLHHJSvr.Com; using JLHHJSvr.Com.Model; using JLHHJSvr.Helper; using JLHHJSvr.LJException; using JLHHJSvr.Tools; using LJLib.DAL.SQL; using LJLib.Net.SPI.Server; namespace JLHHJSvr.Excutor { internal sealed class SaveMattressExcutor : ExcutorBase { protected override void ExcuteInternal(SaveMattressRequest request, object state, SaveMattressResponse rslt) { var tokendata = BllHelper.GetToken(request.token); if (tokendata == null) { rslt.ErrMsg = "会话已经中断,请重新登录"; return; } if (request.mattress == null) { rslt.ErrMsg = "缺少主表信息"; return; } using (var con = new SqlConnection(GlobalVar.ConnectionString)) using (var cmd = con.CreateCommand()) { con.Open(); // 初始化属性 AutoInit.AutoInitS(cmd, request.mattress); if(request.mattress.copy_id != null && request.mattress.copy_id > 0) { request.mattress.mattressid = 0; request.mattress.mattresscode = string.Empty; foreach (var mx in request.mattressMx) { mx.mattressid = 0; mx.mattressmxid = 0; } } foreach(var mx in request.mattressMx) { AutoInit.AutoInitS(cmd, mx); } using (cmd.Transaction = con.BeginTransaction()) { var helper = HelperBase.GetHelper(cmd, new HelperBase.Context() { tokendata = tokendata }); //try //{ // helper.CalCulateFormula(request.mattress, request.mattressMx); //} //catch (Exception e) //{ // rslt.message = e.Message; //} //var mxmessageList = request.mattressMx.Where(item => !string.IsNullOrEmpty(item.message)).ToList(); //if (mxmessageList.Any()) //{ // rslt.mxmessage = new List(); // foreach (var mx in mxmessageList) // { // rslt.mxmessage.Add(mx.message); // } //} //try //{ // helper.SaveMattress(request.mattress, request.mattressMx); // if(request.mattress.copy_id != null && request.mattress.copy_id > 0) // { // helper.CopyMattressInterface(request.mattress.copy_id.Value, request.mattress.mattressid); // } // cmd.Transaction.Commit(); // rslt.mattressid = request.mattress.mattressid; // rslt.mattresscode = request.mattress.mattresscode; //} //catch (Exception e) //{ // cmd.Transaction.Rollback(); // rslt.ErrMsg = e.Message; //} try { rslt.mxmessage = new List(); rslt.mxmessage = toSaveMattress(cmd, request.mattress, request.mattressMx, tokendata); rslt.mattressid = request.mattress.mattressid; rslt.mattresscode = request.mattress.mattresscode; var subspecsList = helper.GetMattressSubspecs(request.mattress.mattressid); if (subspecsList.Count > 0) { foreach(var submx in subspecsList) { // 删除副规格明细 cmd.CommandText = @"DELETE u_mattress_mx_mtrl WHERE mattressid = @mattressid"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@mattressid", submx.mattressid); cmd.ExecuteNonQuery(); // 删除副规格 cmd.CommandText = @"DELETE u_mattress WHERE mattressid = @mattressid"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@mattressid", submx.mattressid); cmd.ExecuteNonQuery(); } } if (request.subspecs != null && request.subspecs.Count > 0) { // 副规格 foreach (var submx in request.subspecs) { var _mattress = ObjectHelper.DeepCopy(request.mattress); _mattress.parentid = request.mattress.mattressid; _mattress.mattressid = 0; _mattress.mattresscode = ""; _mattress.mattress_width = submx.mattress_width; _mattress.mattress_length = submx.mattress_length; _mattress.mattress_height = submx.mattress_height; var _mattressMx = new List(); if (request.mattressMx != null && request.mattressMx.Any()) { foreach (var item in request.mattressMx) { item.mattressid = _mattress.mattressid; item.mattressmxid = 0; item.message = ""; _mattressMx.Add(item); } } toSaveMattress(cmd, _mattress, _mattressMx, tokendata); } } cmd.Transaction.Commit(); } catch (Exception e) { cmd.Transaction.Rollback(); rslt.ErrMsg = e.Message; } } } } public List toSaveMattress(SqlCommand cmd, u_mattress mattress, List mattressMx, TokenData tokendata) { var helper = HelperBase.GetHelper(cmd, new HelperBase.Context() { tokendata = tokendata }); List message = new List(); try { helper.CalCulateFormula(mattress, mattressMx); } catch (Exception e) { throw new LJCommonException(e.Message); } var mxmessageList = mattressMx.Where(item => !string.IsNullOrEmpty(item.message)).ToList(); if (mxmessageList.Any()) { foreach (var mx in mxmessageList) { message.Add(mx.message); } } try { helper.SaveMattress(mattress, mattressMx); if (mattress.copy_id != null && mattress.copy_id > 0) { helper.CopyMattressInterface(mattress.copy_id.Value, mattress.mattressid); } } catch (Exception e) { throw new LJCommonException(e.Message); } return message; } } }