using System; using System.Collections.Generic; using System.Data.SqlClient; using JLHHJSvr.BLL; using JLHHJSvr.Com; using JLHHJSvr.Com.Model; using JLHHJSvr.Helper; using LJLib.DAL.SQL; using LJLib.Net.SPI.Server; using Newtonsoft.Json.Linq; namespace JLHHJSvr.Excutor { internal sealed class CreatMtrlPfExcutor : ExcutorBase { Dictionary replacements = new Dictionary(); protected override void ExcuteInternal(CreatMtrlPfRequest request, object state, CreatMtrlPfResponse rslt) { var tokendata = BllHelper.GetToken(request.token); if (tokendata == null) { rslt.ErrMsg = "会话已经中断,请重新登录"; return; } if (request.mattressid <= 0) { rslt.ErrMsg = "床垫id参数为空!"; return; } using (var con = new SqlConnection(GlobalVar.ConnectionString)) using (var cmd = con.CreateCommand()) { con.Open(); var mattress = new u_mattress(); if (DbSqlHelper.SelectOne(cmd, "u_mattress", "mattressid = @mattressid", new Dictionary() { { "mattressid", request.mattressid } }, mattress, "erp_mtrlid,erp_mtrlcode, erp_mtrlname, erp_mtrlmode, erp_mtrltypeid, erp_mtrltype, erp_mtrlunit, erp_mtrlengname") != 1) { rslt.ErrMsg = "床垫报价单匹配失败"; return; } var l1Helper = HelperBase.GetHelper(cmd); l1Helper.context = new HelperBase.Context() { tokendata = tokendata }; l1Helper.CheckLogin(); if (mattress.erp_mtrlid <= 0) { var errMsg = l1Helper.SaveMtrldef(mattress); if (!string.IsNullOrEmpty(errMsg)) { rslt.ErrMsg = errMsg; return; } } var mattress_interface_qd_list = new List(); var selectStr = @"SELECT u_mattress_interface_qd.mattressid ,u_mattress_interface_qd.printid ,u_mattress_interface_qd.itemname ,u_mattress_interface_qd.bj_pzname ,u_mattress_interface_qd.bj_pzname_mx ,u_mattress_interface_qd.bj_pzname_mx_mx ,u_mattress_interface_qd.mtrlid ,u_mattress_interface_qd.erp_mtrlid ,u_mattress_interface_qd.useqty ,u_mattress_interface_qd.dscrp ,u_mtrl_price.name AS mtrlname ,u_mattress_interface_qd.actual_useqty ,u_mattress_interface_qd.qd_actual_size ,u_mattress_interface_qd.qd_pfgroupqty ,u_mattress_interface_qd.wrkgrpid ,u_mattress_interface_qd.ss_rate ,u_mattress_interface_qd.ls_rate ,u_mattress_interface_qd.sh_rate FROM u_mattress_interface_qd LEFT JOIN u_mtrl_price ON u_mtrl_price.mtrlid = u_mattress_interface_qd.mtrlid"; var outputFields = "mattressid,printid,itemname,bj_pzname,bj_pzname_mx,bj_pzname_mx_mx,mtrlid,erp_mtrlid,useqty,dscrp,mtrlname,actual_useqty,qd_actual_size,qd_pfgroupqty,wrkgrpid,ss_rate,ls_rate,sh_rate"; DbSqlHelper.SelectJoin(cmd, selectStr, "mattressid = @mattressid", new Dictionary() { { "@mattressid", request.mattressid } }, "printid", outputFields, 0, 0, mattress_interface_qd_list); var ll_temp_dftwrkgrpid = 0; // var ErpMtrl = new erp_mtrldef() { mtrlid = mattress.erp_mtrlid }; // if (DbSqlHelper.SelectOne(erp_cmd, ErpMtrl, "dftwrkgrpid") == 1) // { // ll_temp_dftwrkgrpid = ErpMtrl.dftwrkgrpid.Value; // } var l1Req = new SavePrdPfRequest() { mtrl_pf = new u_mtrl_pf() { mtrlid = mattress.erp_mtrlid.Value, pfcode = "[常规]", ifdft = 1, inuse = 1, opemp = tokendata.usercode, opdate = DateTime.Now, flag = 1, auditdate = DateTime.Now, auditemp = tokendata.usercode, wrkid = ll_temp_dftwrkgrpid }, prdPfs = new List() }; var i = 0; foreach (var mx in mattress_interface_qd_list) { var ls_temp_pfgroup = mx.itemname + '-' + mx.bj_pzname; var ll_cnt_temp = 0; for (var j = 0; j < i - 1; j++) { if (ls_temp_pfgroup == mattress_interface_qd_list[j].itemname + '-' + mattress_interface_qd_list[j].bj_pzname) { ll_cnt_temp++; } } if (ll_cnt_temp > 0) { ls_temp_pfgroup = ls_temp_pfgroup + (ll_cnt_temp).ToString(); } string ls_azcode = i.ToString("D3"); var prdpf = new u_PrdPF() { mtrlid = mattress.erp_mtrlid.Value, pfcode = "[常规]", pfgroup = ls_temp_pfgroup, SonMtrlid = mx.mtrlid, wrkgrpid = mx.wrkgrpid, sonpfcode = "[常规]", dscrp = mx.bj_pzname_mx_mx, pfgroupqty = mx.qd_pfgroupqty, Sonscale = mx.actual_useqty, pfklmode = mx.qd_actual_size, printid = mx.printid, azcode = ls_azcode, promode = mx.ss_rate.ToString(), SonLoss = mx.sh_rate, SonDECLosS = 0, }; l1Req.prdPfs.Add(prdpf); i++; } l1Req.token = GlobalVar.ERP_TOKEN; var l1Rslt = l1Helper.DoExecute("SavePrdPf", JObject.FromObject(l1Req)); rslt.ErrMsg = $"{l1Rslt.GetValue("ErrMsg")}"; } } /// /// 保存物料清单请求参数,没有传入的参数按默认值 /// private class SavePrdPfRequest { public string token { get; set; } /// /// 物料清单主表 mtrlid,pfcode,flag,affirmflag,Ifdft,inuse,wrkid /// public u_mtrl_pf mtrl_pf { get; set; } /// /// 物料清单明细表 mtrlid,pfcode,sonmtrlid,printid,wrkgrpid,sonpfcode,Sonscale,sonloss,sondecloss /// pfgroup,dscrp,pfgroupqty,pfklmode,azcode,promode /// public List prdPfs { get; set; } } } }