|
@@ -0,0 +1,185 @@
|
|
|
+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.LJFramework.Tools;
|
|
|
+using JLHHJSvr.Tools;
|
|
|
+using LJLib.DAL.SQL;
|
|
|
+using LJLib.Net.SPI.Server;
|
|
|
+
|
|
|
+namespace JLHHJSvr.Excutor
|
|
|
+{
|
|
|
+ internal sealed class CreatMtrlPfExcutor : ExcutorBase<CreatMtrlPfRequest, CreatMtrlPfResponse>
|
|
|
+ {
|
|
|
+ Dictionary<string, object> replacements = new Dictionary<string, object>();
|
|
|
+
|
|
|
+ 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<string, object>() { { "mattressid", request.mattressid } }, mattress, "erp_mtrlid") != 1)
|
|
|
+ {
|
|
|
+ rslt.ErrMsg = "床垫报价单匹配失败";
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (mattress.erp_mtrlid <= 0)
|
|
|
+ {
|
|
|
+ rslt.ErrMsg = "床垫清单还没匹配L1成品";
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ using (var erp_con = new SqlConnection(BllHelper.GetERPConnectString(cmd)))
|
|
|
+ using (var erp_cmd = erp_con.CreateCommand())
|
|
|
+ {
|
|
|
+ erp_con.Open();
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var erpMtrldef = new erp_mtrldef();
|
|
|
+ if (DbSqlHelper.SelectOne(erp_cmd, "u_mtrldef", "mtrlid = @mtrlid", new Dictionary<string, object>() { { "mtrlid", mattress.erp_mtrlid } }, erpMtrldef, "") != 1)
|
|
|
+ {
|
|
|
+ throw new LJCommonException("erp中没有对应的物料,erp_mtrlid=" + mattress.erp_mtrlid);
|
|
|
+ }
|
|
|
+
|
|
|
+ var mattress_interface_qd_list = new List<u_mattress_interface_qd>();
|
|
|
+
|
|
|
+ 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<string, object>() { { "@mattressid", request.mattressid } }, "printid", outputFields, 0, 0, mattress_interface_qd_list);
|
|
|
+
|
|
|
+ // 删除原来的清单主表
|
|
|
+ erp_cmd.CommandText = @"DELETE u_mtrl_pf WHERE mtrlid = @mtrlid";
|
|
|
+ erp_cmd.Parameters.Clear();
|
|
|
+ erp_cmd.Parameters.AddWithValue("@mtrlid", mattress.erp_mtrlid.Value);
|
|
|
+ erp_cmd.ExecuteNonQuery();
|
|
|
+
|
|
|
+ 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 mtrlpf = 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
|
|
|
+ };
|
|
|
+ var fields = "mtrlid,pfcode,ifdft,inuse,opemp,opdate,flag,auditdate,auditemp,wrkid";
|
|
|
+ if (DbSqlHelper.Insert(cmd, mtrlpf, fields) != 1)
|
|
|
+ {
|
|
|
+ throw new LJCommonException(string.Format("物料编码[{0}]建立物料清单[{1}]失败", mattress.erp_mtrlid, mtrlpf.pfcode));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 删除原来的清单主表
|
|
|
+ erp_cmd.CommandText = @"DELETE u_PrdPF WHERE mtrlid = @mtrlid";
|
|
|
+ erp_cmd.Parameters.Clear();
|
|
|
+ erp_cmd.Parameters.AddWithValue("@mtrlid", mattress.erp_mtrlid.Value);
|
|
|
+ erp_cmd.ExecuteNonQuery();
|
|
|
+
|
|
|
+ var i = 0;
|
|
|
+ var fields_prdpf = "mtrlid, pfcode, pfgroup, SonMtrlid, wrkgrpid, sonpfcode, dscrp, pfgroupqty, Sonscale, pfklmode, printid, azcode, promode, sonloss";
|
|
|
+ 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
|
|
|
+ };
|
|
|
+ if (DbSqlHelper.Insert(cmd, prdpf, fields_prdpf) != 1)
|
|
|
+ {
|
|
|
+ throw new LJCommonException(string.Format("物料编码[{0}]建立物产品清单[{1}]失败", mattress.erp_mtrlid, i));
|
|
|
+ }
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ cmd.Transaction.Rollback();
|
|
|
+ rslt.ErrMsg = e.Message;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|