using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using JLHHJSvr.BLL; using JLHHJSvr.Com; using JLHHJSvr.Com.Model; 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); using (cmd.Transaction = con.BeginTransaction()) { try { var dtNow = DateTime.Now; var fields = "mattressname, deptid, mattresscode, mattresstypeid, mattress_width, mattress_length, mattress_height, packtype, packqty, woodpallettype, total_hr_cost, total_material_cost, fees_dscrp, total_fees_cost, total_cost, taxrate, taxes, commissionrate, commission, fob, profitrate, dept_profitrate, moneyrate, nottax_factory_cost, nottax_dept_cost, foreign_cost, diameter, area, cabinet_type, hrcost, biandaicost, createtime, createby, mattressrelcode, other_rate, flag, dept_profitrate_rangli, profitrate_point, if_moneyrate, discount, if_m_chai, if_z_chai, if_d_chai, if_n_butao, if_w_butao, if_m_wbutao_way, s_cover_qty, z_cover_qty, x_cover_qty, biandai_qty, s_m_cover_qty, z_m_cover_qty, x_m_cover_qty, chaizhuang_point, haimian_point, if_zhedie_type, qr_auditingrep, qr_auditingdate, if_bcp_type, zhizao_amt, foreign_cost_bz, cubage"; var fieldsMx = "mattressmxid,mattressid,formulaid,formula,replace_formula,if_success,priceunit,shrinkage,mtrlid,price,gram_weight,cloth_width,if_inputqty,qty ,costamt,if_areaprice,thickness,chastr,xu,useqty,useformula,replace_useformula,gydscrp"; int currentMattressID = request.mattress.mattressid; var isNew = false; if (request.mattress.mattressid == null || request.mattress.mattressid <= 0) { isNew = true; //新建 request.mattress.createtime = dtNow; request.mattress.mattressid = BllHelper.GetID(cmd, "u_mattress"); currentMattressID = request.mattress.mattressid; fields = "mattressid," + fields; DbSqlHelper.Insert(cmd, "u_mattress", null, request.mattress, fields); } else { //修改 request.mattress.createtime = dtNow; DbSqlHelper.Update(cmd, "u_mattress", null, request.mattress, "mattressid", fields); // 删除所有明细 cmd.CommandText = @"DELETE u_mattress_mx_mtrl WHERE mattressid = @mattressid"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@mattressid", request.mattress.mattressid); cmd.ExecuteNonQuery(); } rslt.mattressid = currentMattressID; if (request.mattressMx != null && request.mattressMx.Count > 0) { foreach (var item in request.mattressMx) { item.mattressid = currentMattressID; if (item.mattressmxid == null || item.mattressmxid <= 0) { item.mattressmxid = BllHelper.GetID(cmd, "u_mattress_mx_mtrl"); } DbSqlHelper.Insert(cmd, "u_mattress_mx_mtrl", null, item, fieldsMx); } } // 更新计价历史 if (isNew) { var hisprice = new u_his_price { bednetid_mattressid = request.mattress.mattressid, typeid = 1, cmpdate = dtNow, cmpemp = tokendata.username, nottax_dept_cost = request.mattress.nottax_dept_cost, dept_cost = request.mattress.dept_cost, foreign_cost = request.mattress.foreign_cost }; var fieldsHs = "bednetid_mattressid, typeid, cmpdate, cmpemp, nottax_dept_cost, dept_cost, foreign_cost"; DbSqlHelper.Insert(cmd, "u_his_price", null, hisprice, fieldsHs); } else { cmd.CommandText = @"UPDATE u_his_price SET cmpdate = @cmpdate, cmpemp = @cmpemp, nottax_dept_cost = @nottax_dept_cost, dept_cost = @dept_cost, foreign_cost = @foreign_cost WHERE bednetid_mattressid = @bednetid_mattressid AND typeid = 1"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@bednetid_mattressid", request.mattress.mattressid); cmd.Parameters.AddWithValue("@cmpdate", dtNow); cmd.Parameters.AddWithValue("@cmpemp", tokendata.username); cmd.Parameters.AddWithValue("@nottax_dept_cost", request.mattress.nottax_dept_cost); cmd.Parameters.AddWithValue("@dept_cost", request.mattress.dept_cost); cmd.Parameters.AddWithValue("@foreign_cost", request.mattress.foreign_cost); cmd.ExecuteNonQuery(); } // 复制配置清单和物料清单 cmd.Transaction.Commit(); } catch (Exception e) { cmd.Transaction.Rollback(); rslt.ErrMsg = e.ToString(); } } } } } }