From 376bb6cf439eaa3b2867825fe22a14e381dd9213 Mon Sep 17 00:00:00 2001
From: yl <ykxkd@outlook.com>
Date: 星期三, 14 八月 2024 17:55:48 +0800
Subject: [PATCH] 1.新增工序找设备(工位)接口 2.新增物料清单查询、新增、修改接口

---
 VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs |  680 +++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 455 insertions(+), 225 deletions(-)

diff --git a/VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs b/VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs
index 82a768b..5478ff5 100644
--- a/VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs
+++ b/VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs
@@ -24,6 +24,7 @@
         public static string strProcName = ""; //瀹氫箟鍏ㄥ眬sql鍙橀噺
         public static List<SqlParameter> listStr = new List<SqlParameter>(); //瀹氫箟鍏ㄥ眬鍙傛暟闆嗗悎
         public static SqlParameter[] parameters; //瀹氫箟鍏ㄥ眬SqlParameter鍙傛暟鏁扮粍
+        public static string sqlServerConnectString = AppSetting.GetAppSetting("DBServer");
 
 
         #region[ERP璁㈠崟鏌ヨ]
@@ -808,17 +809,50 @@
                     }
                 }
                 //鑾峰彇宸ュ簭淇℃伅
-                sql = @"select S.wo_code,S.seq,S.step_code,T.stepname,S.stepprice,(isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty,
+                sql = @"select S.id,S.wo_code,S.seq,S.step_code,T.stepname,T.flwtype,S.stepprice as unprice,(isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty,
                         S.good_qty,S.ng_qty,S.laborbad_qty,S.materielbad_qty,(isnull(S.plan_qty,0)-(isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0))) as delive_qty,S.isbott,S.isend 
                         from TK_Wrk_Step S
                         left join TStep  T on S.step_code=T.stepcode
                         where S.wo_code=@wocode order by S.seq ";
                 dynamicParams.Add("@wocode", wocode);
-                var data1 = DapperHelper.selectdata(sql, dynamicParams);
+                var parents = DapperHelper.select<WorkRouteStepEqp>(sql, dynamicParams);
+                //鑾峰彇宸ュ簭瀵瑰簲璁惧淇℃伅
+                for (int i = 0; i < parents.Count; i++)
+                {
+                    if (parents[i].flwtype == "Z")
+                    {
+                        //閫氳繃宸ヨ壓璺嚎宸ュ簭琛↖D鏌ユ壘瀵瑰簲璁惧淇℃伅
+                        sql = @"select S.eqp_code,E.name as eqp_name,S.eqpprice as unprice,'Y' as enable,
+                                (isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty, 
+                                S.good_qty,S.ng_qty,S.laborbad_qty,S.materielbad_qty 
+                                from TK_Wrk_StepEqp S
+                                inner join TEqpInfo E on S.eqp_code=E.code
+                                where S.m_id=@m_id";
+                        dynamicParams.Add("@m_id", parents[i].id);
+                        var children = DapperHelper.select<WorkRouteStepEqpSub>(sql, dynamicParams);
+                        parents[i].children = children.ToList();
+                    }
+                    else
+                    {
+                        //閫氳繃宸ヨ壓璺嚎宸ュ簭琛↖D鏌ユ壘瀵瑰簲澶栧崗渚涘簲鍟嗕俊鎭�
+                        sql = @"select S.eqp_code,E.name as eqp_name,S.eqpprice as unprice,'Y' as enable,
+                                (isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty, 
+                                S.good_qty,S.ng_qty,S.laborbad_qty,S.materielbad_qty 
+                                from TK_Wrk_StepEqp S
+                                inner join TCustomer E on S.eqp_code=E.code
+                                where S.m_id=@m_id";
+                        dynamicParams.Add("@m_id", parents[i].id);
+                        var children = DapperHelper.select<WorkRouteStepEqpSub>(sql, dynamicParams);
+                        parents[i].children = children.ToList();
+                    }
+
+                }
+
+
                 dir.Add("canupdate_qty", canupdate_qty);
-                dir.Add("stepdata", data1);
+                dir.Add("stepdata", parents);
                 mes.code = "200";
-                mes.count = data1.Rows.Count;
+                mes.count = parents.Count;
                 mes.message = "鏌ヨ鎴愬姛";
                 mes.data = dir;
             }
@@ -839,216 +873,255 @@
             string sql = "", route_code = "";
             var dynamicParams = new DynamicParameters();
             List<object> list = new List<object>();
-            try
+            using (var conn = new SqlConnection(sqlServerConnectString))
             {
-                dynamic dynObj = JObject.Parse(us.mesSetting);
-                bool route = dynObj.route;
-                if (route) //宸ヨ壓璺嚎鐗�
+                conn.Open();
+                using (var transaction = conn.BeginTransaction())
                 {
-                    route_code = json.routecode;
-                }
-                else //宸ュ簭鐗�
-                {
-                    route_code = null;
-                }
-                if (operType == "Add")
-                {
-                    //鍐欏叆宸ュ崟琛�
-                    sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,lm_user,lm_date,materiel_code,route_code,sourceid,m_po,saleOrderDeliveryDate,plan_startdate,plan_enddate,piroque,isaps,data_sources,isstep)
+                    try
+                    {
+                        dynamic dynObj = JObject.Parse(us.mesSetting);
+                        bool route = dynObj.route;
+                        if (route) //宸ヨ壓璺嚎鐗�
+                        {
+                            route_code = json.routecode;
+                        }
+                        else //宸ュ簭鐗�
+                        {
+                            route_code = null;
+                        }
+                        if (operType == "Add")
+                        {
+                            //鍐欏叆宸ュ崟琛�
+                            sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,lm_user,lm_date,materiel_code,route_code,sourceid,m_po,saleOrderDeliveryDate,plan_startdate,plan_enddate,piroque,isaps,data_sources,isstep)
                                 values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@lm_user,@lm_date,@materiel_code,@route_code,@sourceid,@m_po,@saleOrderDeliveryDate,@plan_startdate,@plan_enddate,@orderlev,@isaps,@data_sources,@isstep)";
-                    list.Add(new
-                    {
-                        str = sql,
-                        parm = new
-                        {
-                            wo_code = json.wocode,
-                            wotype = json.wotype,
-                            status = json.wostatus,
-                            wkshp_code = json.wkshopcode,
-                            plan_qty = json.woqty,
-                            lm_user = us.usercode,
-                            lm_date = DateTime.Now.ToString(),
-                            materiel_code = json.partcode,
-                            route_code = route_code,
-                            sourceid = json.sourceid == "" ? null : json.sourceid, //鏃犳簮鍗曟椂璧嬪�糔ULL
-                            m_po = json.sourcewo,
-                            saleOrderDeliveryDate = json.deliverydate,
-                            plan_startdate = json.paystartdate,
-                            plan_enddate = json.payenddate,
-                            orderlev = "3",//浼樺厛绾э細鐗圭骇锛�1锛� 绱ф�ワ紙2锛� 姝e父锛�3锛�
-                            isaps = "N", //鏄惁鎺掍骇,榛樿N  Y=鏄�   N=鍚�
-                            data_sources = json.data_sources,
-                            isstep = json.isstep  //鏄惁鍏宠仈宸ュ簭
-                        }
-                    });
-                    //鍐欏叆宸ュ簭浠诲姟琛�
-                    for (int i = 0; i < json.WorkListSub.Count; i++)
-                    {
-                        sql = @"insert into TK_Wrk_Step(wo_code,seq,step_code,route_code,stepprice,plan_qty,status,isbott,isend,lm_user,lm_date)
-                                values(@wo_code,@seq,@step_code,@route_code,@stepprice,@plan_qty,@status,@isbott,@isend,@lm_user,@lm_date)";
-                        list.Add(new
-                        {
-                            str = sql,
-                            parm = new
-                            {
-                                wo_code = json.wocode,
-                                seq = json.WorkListSub[i].stepseq,
-                                step_code = json.WorkListSub[i].stepcode,
-                                route_code = route_code,
-                                stepprice = json.WorkListSub[i].stepprice,
-                                plan_qty = json.woqty,
-                                status = json.wostatus,
-                                isbott = json.WorkListSub[i].isbott,
-                                isend = json.WorkListSub[i].isend,
-                                lm_user = us.usercode,
-                                lm_date = DateTime.Now.ToString()
-                            }
-                        });
-                    }
-                    bool aa = DapperHelper.DoTransaction(list);
-                    if (aa)
-                    {
-                        //鍐欏叆鎿嶄綔璁板綍琛�
-                        LogHelper.DbOperateLog(us.usercode, "鏂板", "鏂板浜嗗伐鍗�:" + json.wocode, us.usertype);
-                        mes.code = "200";
-                        mes.count = 0;
-                        mes.message = "MES宸ュ崟鏂板缓鎴愬姛!";
-                        mes.data = null;
-                    }
-                    else
-                    {
-                        mes.code = "300";
-                        mes.count = 0;
-                        mes.message = "MES宸ュ崟鏂板缓澶辫触!";
-                        mes.data = null;
-                    }
-                }
-                if (operType == "Update")
-                {
-                    //淇敼宸ュ崟琛�
-                    sql = @"update TK_Wrk_Man set wotype=@wotype,wkshp_code=@wkshp_code,plan_qty=@plan_qty,lm_user=@lm_user,lm_date=@lm_date,
-                            materiel_code=@materiel_code,route_code=@route_code,sourceid=@sourceid,m_po=@m_po,saleOrderDeliveryDate=@saleOrderDeliveryDate,plan_startdate=@plan_startdate,plan_enddate=@plan_enddate,isstep=@isstep
-                            where wo_code=@wo_code";
-                    list.Add(new
-                    {
-                        str = sql,
-                        parm = new
-                        {
-                            wo_code = json.wocode,
-                            wotype = json.wotype,
-                            wkshp_code = json.wkshopcode,
-                            plan_qty = json.woqty,
-                            materiel_code = json.partcode,
-                            route_code = route_code,
-                            sourceid = json.sourceid == "" ? null : json.sourceid, //鏃犳簮鍗曟椂璧嬪�糔ULL
-                            m_po = json.sourcewo,
-                            saleOrderDeliveryDate = json.deliverydate,
-                            plan_startdate = json.paystartdate,
-                            plan_enddate = json.payenddate,
-                            lm_user = us.usercode,
-                            lm_date = DateTime.Now.ToString(),
-                            isstep = json.isstep  //鏄惁鍏宠仈宸ュ簭
-                        }
-                    });
-                    //鍒犻櫎宸ュ崟宸ュ簭琛�
-                    sql = @"delete TK_Wrk_Step where wo_code=@wo_code";
-                    list.Add(new
-                    {
-                        str = sql,
-                        parm = new
-                        {
-                            wo_code = json.wocode
-                        }
-                    });
-                    //鍐欏叆宸ュ崟宸ュ簭琛�
-                    for (int i = 0; i < json.WorkListSub.Count; i++)
-                    {
-                        sql = @"insert into TK_Wrk_Step(wo_code,seq,step_code,route_code,stepprice,plan_qty,status,isbott,isend,lm_user,lm_date)
-                                values(@wo_code,@seq,@step_code,@route_code,@stepprice,@plan_qty,@status,@isbott,@isend,@lm_user,@lm_date)";
-                        list.Add(new
-                        {
-                            str = sql,
-                            parm = new
-                            {
-                                wo_code = json.wocode,
-                                seq = json.WorkListSub[i].stepseq,
-                                step_code = json.WorkListSub[i].stepcode,
-                                route_code = route_code,
-                                stepprice = json.WorkListSub[i].stepprice,
-                                plan_qty = json.woqty,
-                                status = json.wostatus,
-                                isbott = json.WorkListSub[i].isbott,
-                                isend = json.WorkListSub[i].isend,
-                                lm_user = us.usercode,
-                                lm_date = DateTime.Now.ToString()
-                            }
-                        });
-                    }
-                    //鍒ゆ柇婧愬ご鍗曟嵁鏄惁鏉ユ簮ERP
-                    if (json.data_sources == "ERP")
-                    {
-                        //鍒ゆ柇宸ュ崟淇敼鏁伴噺宸�兼槸鍚︿负0
-                        if (json.difference != "0")
-                        {
-                            string staus = "";
-                            //鏌ヨ璁㈠崟鎬绘暟,宸蹭笅杈炬暟閲�
-                            sql = @"select qty,relse_qty  from TKimp_Ewo where id=@sourceid and wo=@sourcewo";
-                            dynamicParams.Add("@sourceid", json.sourceid);
-                            dynamicParams.Add("@sourcewo", json.sourcewo);
-                            var data0 = DapperHelper.selectdata(sql, dynamicParams);
-                            //褰撳墠宸ュ崟鍙慨鏀规暟閲�=璁㈠崟鏁伴噺-闈炲綋鍓嶅伐鍗曟�讳笅杈惧伐鍗曟暟閲�
-                            decimal qty = decimal.Parse(data0.Rows[0]["qty"].ToString());//璁㈠崟鎬绘暟
-                            decimal relse_qty = decimal.Parse(data0.Rows[0]["relse_qty"].ToString());//璁㈠崟宸蹭笅杈炬�绘暟
-                            relse_qty = relse_qty + decimal.Parse(json.difference);//鏂扮殑涓嬭揪鏁伴噺=鍘熷涓嬭揪鏁伴噺+宸��(姝h礋)
-                            if (qty == relse_qty)
-                            {
-                                staus = "CREATED"; //鍏ㄩ儴涓嬭揪
-                            }
-                            else
-                            {
-                                staus = "CREATING";//閮ㄥ垎涓嬭揪
-                            }
-                            //鏇存柊璁㈠崟琛ㄧ姸鎬併�佸凡涓嬭揪鏁伴噺
-                            sql = @"update TKimp_Ewo set status=@status,relse_qty=@relse_qty where id=@sourceid and wo=@sourcewo";
                             list.Add(new
                             {
                                 str = sql,
                                 parm = new
                                 {
-                                    status = staus,
-                                    relse_qty = relse_qty,
-                                    sourceid = json.sourceid,
-                                    sourcewo = json.sourcewo
+                                    wo_code = json.wocode,
+                                    wotype = json.wotype,
+                                    status = json.wostatus,
+                                    wkshp_code = json.wkshopcode,
+                                    plan_qty = json.woqty,
+                                    lm_user = us.usercode,
+                                    lm_date = DateTime.Now.ToString(),
+                                    materiel_code = json.partcode,
+                                    route_code = route_code,
+                                    sourceid = json.sourceid == "" ? null : json.sourceid, //鏃犳簮鍗曟椂璧嬪�糔ULL
+                                    m_po = json.sourcewo,
+                                    saleOrderDeliveryDate = json.deliverydate,
+                                    plan_startdate = json.paystartdate,
+                                    plan_enddate = json.payenddate,
+                                    orderlev = "3",//浼樺厛绾э細鐗圭骇锛�1锛� 绱ф�ワ紙2锛� 姝e父锛�3锛�
+                                    isaps = "N", //鏄惁鎺掍骇,榛樿N  Y=鏄�   N=鍚�
+                                    data_sources = json.data_sources,
+                                    isstep = json.isstep  //鏄惁鍏宠仈宸ュ簭
                                 }
                             });
+                            // 鍋囪浣犲凡缁忔湁浜嗘彃鍏ヤ富琛ㄥ拰瀛愯〃鐨凷QL璇彞  
+                            string workSql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,lm_user,lm_date,materiel_code,route_code,sourceid,m_po,saleOrderDeliveryDate,plan_startdate,plan_enddate,piroque,isaps,data_sources,isstep)
+                                values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@lm_user,@lm_date,@materiel_code,@route_code,@sourceid,@m_po,@saleOrderDeliveryDate,@plan_startdate,@plan_enddate,@orderlev,@isaps,@data_sources,@isstep)";
+                            string masterInsertSql = @"insert into TK_Wrk_Step(wo_code,seq,step_code,route_code,stepprice,plan_qty,status,isbott,isend,lm_user,lm_date)
+                                values(@wo_code,@seq,@step_code,@route_code,@stepprice,@plan_qty,@status,@isbott,@isend,@lm_user,@lm_date); SELECT CAST(SCOPE_IDENTITY() AS INT)";
+                            string detailInsertSql = @"insert into TK_Wrk_StepEqp(m_id,eqp_code,eqpprice) 
+                            values(@m_id,@eqp_code,@eqpprice)";
+
+                            // 鎻掑叆宸ュ崟琛�
+                            var workParam = new DynamicParameters();
+                            workParam.Add("@wo_code", json.wocode);
+                            workParam.Add("@wotype", json.wotype);
+                            workParam.Add("@status", json.wostatus);
+                            workParam.Add("@wkshp_code", json.wkshopcode);
+                            workParam.Add("@plan_qty", json.woqty);
+                            workParam.Add("@lm_user", us.usercode);
+                            workParam.Add("@lm_date", DateTime.Now.ToString());
+                            workParam.Add("@materiel_code", json.partcode);
+                            workParam.Add("@route_code", route_code);
+                            workParam.Add("@sourceid", json.sourceid == "" ? null : json.sourceid);
+                            workParam.Add("@m_po", json.sourcewo);
+                            workParam.Add("@saleOrderDeliveryDate", json.deliverydate);
+                            workParam.Add("@plan_startdate", json.paystartdate);
+                            workParam.Add("@plan_enddate", json.payenddate);
+                            workParam.Add("@orderlev", "3");//浼樺厛绾э細鐗圭骇锛�1锛� 绱ф�ワ紙2锛� 姝e父锛�3锛�
+                            workParam.Add("@isaps", "N");//鏄惁鎺掍骇,榛樿N  Y=鏄�   N=鍚�
+                            workParam.Add("@data_sources", json.data_sources);
+                            workParam.Add("@isstep", json.isstep);//鏄惁鍏宠仈宸ュ簭
+                            conn.Execute(workSql, workParam, transaction);
+
+                            //鍐欏叆宸ュ崟宸ュ簭琛�
+                            for (int i = 0; i < json.WorkListSub.Count; i++)
+                            {
+                                // 鎻掑叆涓昏〃骞惰幏鍙栨柊鎻掑叆鐨処D  
+                                var masterParam = new DynamicParameters();
+                                masterParam.Add("@wo_code", json.wocode);
+                                masterParam.Add("@seq", json.WorkListSub[i].stepseq);
+                                masterParam.Add("@step_code", json.WorkListSub[i].stepcode);
+                                masterParam.Add("@route_code", route_code);
+                                masterParam.Add("@stepprice", json.WorkListSub[i].unprice);
+                                masterParam.Add("@plan_qty", json.woqty);
+                                masterParam.Add("@status", json.wostatus);
+                                masterParam.Add("@isbott", json.WorkListSub[i].isbott);
+                                masterParam.Add("@isend", json.WorkListSub[i].isend);
+                                masterParam.Add("@lm_user", us.usercode);
+                                masterParam.Add("@lm_date", DateTime.Now.ToString());
+
+                                int masterId = Convert.ToInt32(conn.ExecuteScalar(masterInsertSql, masterParam, transaction));
+
+                                // 鍐欏叆宸ュ簭浠诲姟琛�  
+                                foreach (var detail in json.WorkListSub[i].WorkEqpListSub)
+                                {
+                                    var detailParam = new DynamicParameters();
+                                    detailParam.Add("@m_id", masterId);
+                                    detailParam.Add("@eqp_code", detail.eqpcode);
+                                    detailParam.Add("@eqpprice", detail.unprice);
+                                    conn.Execute(detailInsertSql, detailParam, transaction);
+                                }
+                            }
+
+                            // 鎵�鏈夋彃鍏ユ垚鍔燂紝鎻愪氦浜嬪姟  
+                            transaction.Commit();
+                            mes.code = "200";
+                            mes.count = 0;
+                            mes.message = "MES宸ュ崟鏂板缓鎴愬姛!";
+                            mes.data = null;
+                            //鍐欏叆鎿嶄綔璁板綍琛�
+                            LogHelper.DbOperateLog(us.usercode, "鏂板", "鏂板浜嗗伐鍗�:" + json.wocode, us.usertype);
+                        }
+                        if (operType == "Update")
+                        {
+                            //閫氳繃宸ュ崟鏌ユ壘宸ュ簭浠诲姟
+                            sql = @"select *  from TK_Wrk_Step where wo_code=@wo_code";
+                            dynamicParams.Add("@wo_code", json.wocode);
+                            var data = DapperHelper.selectdata(sql, dynamicParams);
+                           
+                            // 鍋囪浣犲凡缁忔湁浜嗘彃鍏ヤ富琛ㄥ拰瀛愯〃鐨凷QL璇彞  
+                            string workSql = @"update TK_Wrk_Man set wotype=@wotype,wkshp_code=@wkshp_code,plan_qty=@plan_qty,lm_user=@lm_user,lm_date=@lm_date,
+                            materiel_code=@materiel_code,route_code=@route_code,sourceid=@sourceid,m_po=@m_po,saleOrderDeliveryDate=@saleOrderDeliveryDate,plan_startdate=@plan_startdate,plan_enddate=@plan_enddate,isstep=@isstep
+                            where wo_code=@wo_code";
+                            string deleteWrkStepEqp = @"delete TK_Wrk_StepEqp where m_id=@m_id";
+                            string deleteWrkStep = @"delete TK_Wrk_Step where wo_code=@wo_code";
+                            string masterInsertSql = @"insert into TK_Wrk_Step(wo_code,seq,step_code,route_code,stepprice,plan_qty,status,isbott,isend,lm_user,lm_date)
+                                values(@wo_code,@seq,@step_code,@route_code,@stepprice,@plan_qty,@status,@isbott,@isend,@lm_user,@lm_date); SELECT CAST(SCOPE_IDENTITY() AS INT)";
+                            string detailInsertSql = @"insert into TK_Wrk_StepEqp(m_id,eqp_code,eqpprice) 
+                            values(@m_id,@eqp_code,@eqpprice)";
+                            string EwoStatusSql = @"update TKimp_Ewo set status=@status,relse_qty=@relse_qty where id=@sourceid and wo=@sourcewo";
+
+                            // 淇敼宸ュ崟琛�
+                            var workParam = new DynamicParameters();
+                            workParam.Add("@wo_code", json.wocode);
+                            workParam.Add("@wotype", json.wotype);
+                            workParam.Add("@wkshp_code", json.wkshopcode);
+                            workParam.Add("@plan_qty", json.woqty);
+                            workParam.Add("@lm_user", us.usercode);
+                            workParam.Add("@lm_date", DateTime.Now.ToString());
+                            workParam.Add("@materiel_code", json.partcode);
+                            workParam.Add("@route_code", route_code);
+                            workParam.Add("@sourceid", json.sourceid == "" ? null : json.sourceid);
+                            workParam.Add("@m_po", json.sourcewo);
+                            workParam.Add("@saleOrderDeliveryDate", json.deliverydate);
+                            workParam.Add("@plan_startdate", json.paystartdate);
+                            workParam.Add("@plan_enddate", json.payenddate);
+                            workParam.Add("@isstep", json.isstep);//鏄惁鍏宠仈宸ュ簭
+                            conn.Execute(workSql, workParam, transaction);
+
+                            //鍒犻櫎宸ュ崟宸ュ簭璁惧琛�
+                            for (int i = 0; i < data.Rows.Count; i++)
+                            {
+                                var wrkStepEqpParam = new DynamicParameters();
+                                wrkStepEqpParam.Add("@m_id", data.Rows[i]["ID"].ToString());
+                                conn.Execute(deleteWrkStepEqp, wrkStepEqpParam, transaction);
+                            }
+
+
+                            //鍒犻櫎宸ュ崟宸ュ簭琛�
+                            var workStepParam = new DynamicParameters();
+                            workStepParam.Add("@wo_code", json.wocode);
+                            conn.Execute(deleteWrkStep, workStepParam, transaction);
+
+                            //鍐欏叆宸ュ崟宸ュ簭琛�
+                            for (int i = 0; i < json.WorkListSub.Count; i++)
+                            {
+                                // 鎻掑叆涓昏〃骞惰幏鍙栨柊鎻掑叆鐨処D  
+                                var masterParam = new DynamicParameters();
+                                masterParam.Add("@wo_code", json.wocode);
+                                masterParam.Add("@seq", json.WorkListSub[i].stepseq);
+                                masterParam.Add("@step_code", json.WorkListSub[i].stepcode);
+                                masterParam.Add("@route_code", route_code);
+                                masterParam.Add("@stepprice", json.WorkListSub[i].unprice);
+                                masterParam.Add("@plan_qty", json.woqty);
+                                masterParam.Add("@status", json.wostatus);
+                                masterParam.Add("@isbott", json.WorkListSub[i].isbott);
+                                masterParam.Add("@isend", json.WorkListSub[i].isend);
+                                masterParam.Add("@lm_user", us.usercode);
+                                masterParam.Add("@lm_date", DateTime.Now.ToString());
+
+                                int masterId = Convert.ToInt32(conn.ExecuteScalar(masterInsertSql, masterParam, transaction));
+
+                                // 鍐欏叆宸ュ簭浠诲姟琛�  
+                                foreach (var detail in json.WorkListSub[i].WorkEqpListSub)
+                                {
+                                    var detailParam = new DynamicParameters();
+                                    detailParam.Add("@m_id", masterId);
+                                    detailParam.Add("@eqp_code", detail.eqpcode);
+                                    detailParam.Add("@eqpprice", detail.unprice);
+                                    conn.Execute(detailInsertSql, detailParam, transaction);
+                                }
+                            }
+                            //鍒ゆ柇婧愬ご鍗曟嵁鏄惁鏉ユ簮ERP
+                            if (json.data_sources == "ERP")
+                            {
+                                //鍒ゆ柇宸ュ崟淇敼鏁伴噺宸�兼槸鍚︿负0
+                                if (json.difference != "0")
+                                {
+                                    string staus = "";
+                                    //鏌ヨ璁㈠崟鎬绘暟,宸蹭笅杈炬暟閲�
+                                    sql = @"select qty,relse_qty  from TKimp_Ewo where id=@sourceid and wo=@sourcewo";
+                                    dynamicParams.Add("@sourceid", json.sourceid);
+                                    dynamicParams.Add("@sourcewo", json.sourcewo);
+                                    var data0 = DapperHelper.selectdata(sql, dynamicParams);
+                                    //褰撳墠宸ュ崟鍙慨鏀规暟閲�=璁㈠崟鏁伴噺-闈炲綋鍓嶅伐鍗曟�讳笅杈惧伐鍗曟暟閲�
+                                    decimal qty = decimal.Parse(data0.Rows[0]["qty"].ToString());//璁㈠崟鎬绘暟
+                                    decimal relse_qty = decimal.Parse(data0.Rows[0]["relse_qty"].ToString());//璁㈠崟宸蹭笅杈炬�绘暟
+                                    relse_qty = relse_qty + decimal.Parse(json.difference);//鏂扮殑涓嬭揪鏁伴噺=鍘熷涓嬭揪鏁伴噺+宸��(姝h礋)
+                                    if (qty == relse_qty)
+                                    {
+                                        staus = "CREATED"; //鍏ㄩ儴涓嬭揪
+                                    }
+                                    else
+                                    {
+                                        staus = "CREATING";//閮ㄥ垎涓嬭揪
+                                    }
+                                    //鏇存柊璁㈠崟琛ㄧ姸鎬併�佸凡涓嬭揪鏁伴噺
+                                    var EwoStatusParam = new DynamicParameters();
+                                    EwoStatusParam.Add("@status", staus);
+                                    EwoStatusParam.Add("@relse_qty", relse_qty);
+                                    EwoStatusParam.Add("@sourceid", json.sourceid);
+                                    EwoStatusParam.Add("@sourcewo", json.sourcewo);
+                                    conn.Execute(EwoStatusSql, EwoStatusParam, transaction);
+                                }
+                            }
+                            // 鎵�鏈夋彃鍏ユ垚鍔燂紝鎻愪氦浜嬪姟  
+                            transaction.Commit();
+                            mes.code = "200";
+                            mes.count = 0;
+                            mes.message = "淇敼鎿嶄綔鎴愬姛!";
+                            mes.data = null;
+                            //鍐欏叆鎿嶄綔璁板綍琛�
+                            LogHelper.DbOperateLog(us.usercode, "淇敼", "淇敼浜嗗伐鍗�:" + json.wocode, us.usertype);
                         }
                     }
-
-                    bool aa = DapperHelper.DoTransaction(list);
-                    if (aa)
+                    catch (Exception e)
                     {
-                        //鍐欏叆鎿嶄綔璁板綍琛�
-                        LogHelper.DbOperateLog(us.usercode, "淇敼", "淇敼浜嗗伐鍗�:" + json.wocode, us.usertype);
-                        mes.code = "200";
-                        mes.count = 0;
-                        mes.message = "淇敼鎿嶄綔鎴愬姛!";
-                        mes.data = null;
-                    }
-                    else
-                    {
+                        // 鎹曡幏寮傚父锛屽洖婊氫簨鍔�  
+                        transaction.Rollback();
                         mes.code = "300";
                         mes.count = 0;
-                        mes.message = "淇敼鎿嶄綔澶辫触!";
+                        mes.message = e.Message;
                         mes.data = null;
                     }
                 }
-            }
-            catch (Exception e)
-            {
-                mes.code = "300";
-                mes.count = 0;
-                mes.message = e.Message;
-                mes.data = null;
             }
             return mes;
         }
@@ -1088,6 +1161,15 @@
                             sql = @"update TKimp_Ewo set status='CREATING',relse_qty=relse_qty-@orderqty  where wo=@m_po and id=@souceid";
                             list.Add(new { str = sql, parm = new { m_po = m_po, souceid = souceid, orderqty = decimal.Parse(orderqty) } });
                         }
+                    }
+                    //鍒犻櫎宸ュ崟宸ュ簭璁惧琛�
+                    sql = @"select *  from TK_Wrk_Step where wo_code=@wo_code";
+                    dynamicParams.Add("@wo_code", wocode);
+                    var data1 = DapperHelper.selectdata(sql, dynamicParams);
+                    for (int i = 0; i < data1.Rows.Count; i++)
+                    {
+                        sql = @"delete TK_Wrk_StepEqp  where m_id=@m_id";
+                        list.Add(new { str = sql, parm = new { m_id = data1.Rows[i]["ID"].ToString() } });
                     }
                     //鍒犻櫎宸ュ崟宸ュ簭琛�
                     sql = @"delete TK_Wrk_Step  where wo_code=@wocode";
@@ -1143,6 +1225,7 @@
             var sql = "";
             List<object> list = new List<object>();
             var dynamicParams = new DynamicParameters();
+            List<WorkRouteStepEqp> parents = new List<WorkRouteStepEqp>();
             try
             {
                 dynamic dynObj = JObject.Parse(us.mesSetting);
@@ -1150,35 +1233,182 @@
                 if (route) //宸ヨ壓璺嚎鐗�
                 {
                     //MES宸ュ崟鏌ユ壘鍘嗗彶寮曠敤鏈�鏂板伐搴忎俊鎭�
-                    sql = @"select S.wo_code,S.seq,S.step_code,S.stepprice,isbott,isend
-                        from TK_Wrk_Step S
-                        inner join (
-                        select top 1 A.wo_code,A.route_code   from TK_Wrk_Man A
-                        inner join TK_Wrk_Step S on A.wo_code=S.wo_code and A.route_code=S.route_code
-                        where A.materiel_code=@partcode and A.wkshp_code=@wkshopcode and A.route_code=@routecode
-                        order by A.lm_date desc
-                        ) as W on S.wo_code=W.wo_code and S.route_code=W.route_code
-                        left join TStep  T on S.step_code=T.stepcode
-                        order by S.seq";
+                    sql = @"select S.id,S.wo_code,S.seq,S.step_code,T.stepname,T.flwtype,S.stepprice as unprice,'0' as produceq_qty,
+                           '0' as good_qty,'0' as ng_qty,'0' as laborbad_qty,'0' as materielbad_qty,'0' as delive_qty,isbott,isend
+                           from TK_Wrk_Step S
+                           inner join (
+                           select top 1 S.id,A.wo_code,A.route_code   from TK_Wrk_Man A
+                           inner join TK_Wrk_Step S on A.wo_code=S.wo_code and A.route_code=S.route_code
+                           where A.materiel_code=@partcode and A.wkshp_code=@wkshopcode and A.route_code=@routecode
+                           order by A.lm_date desc
+                           ) as W on S.wo_code=W.wo_code and S.route_code=W.route_code
+                           left join TStep  T on S.step_code=T.stepcode
+                           order by S.seq";
                     dynamicParams.Add("@wkshopcode", wkshopcode);
                     dynamicParams.Add("@partcode", partcode);
                     dynamicParams.Add("@routecode", routecode);
+                    parents = DapperHelper.select<WorkRouteStepEqp>(sql, dynamicParams);
+                    //鑾峰彇宸ュ簭瀵瑰簲璁惧淇℃伅
+                    for (int i = 0; i < parents.Count; i++)
+                    {
+                        if (parents[i].flwtype == "Z")
+                        {
+                            //閫氳繃宸ヨ壓璺嚎宸ュ簭琛↖D鏌ユ壘瀵瑰簲璁惧淇℃伅
+                            sql = @"select S.eqp_code,E.name as eqp_name,S.eqpprice as unprice,'Y' as enable,
+                                (isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty, 
+                                S.good_qty,S.ng_qty,S.laborbad_qty,S.materielbad_qty 
+                                from TK_Wrk_StepEqp S
+                                inner join TEqpInfo E on S.eqp_code=E.code
+                                where S.m_id=@m_id";
+                            dynamicParams.Add("@m_id", parents[i].id);
+                            var children = DapperHelper.select<WorkRouteStepEqpSub>(sql, dynamicParams);
+                            parents[i].children = children.ToList();
+                        }
+                        else
+                        {
+                            //閫氳繃宸ヨ壓璺嚎宸ュ簭琛↖D鏌ユ壘瀵瑰簲澶栧崗渚涘簲鍟嗕俊鎭�
+                            sql = @"select S.eqp_code,E.name as eqp_name,S.eqpprice as unprice,'Y' as enable,
+                                (isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty, 
+                                S.good_qty,S.ng_qty,S.laborbad_qty,S.materielbad_qty 
+                                from TK_Wrk_StepEqp S
+                                inner join TCustomer E on S.eqp_code=E.code
+                                where S.m_id=@m_id";
+                            dynamicParams.Add("@m_id", parents[i].id);
+                            var children = DapperHelper.select<WorkRouteStepEqpSub>(sql, dynamicParams);
+                            parents[i].children = children.ToList();
+                        }
+                    }
                 }
                 else
                 {
                     //MES宸ュ崟鏌ユ壘鍘嗗彶寮曠敤鏈�鏂板伐搴忎俊鎭�
-                    sql = @"select S.wo_code,S.seq,S.step_code,S.stepprice,isbott,isend
-                        from TK_Wrk_Step S
-                        inner join (
-                        select top 1 A.wo_code   from TK_Wrk_Man A
-                        inner join TK_Wrk_Step S on A.wo_code=S.wo_code
-                        where A.materiel_code=@partcode and A.wkshp_code=@wkshopcode
-                        order by A.lm_date desc
-                        ) as W on S.wo_code=W.wo_code
-                        left join TStep  T on S.step_code=T.stepcode
-                        order by S.seq";
+                    sql = @"select S.id,S.wo_code,S.seq,S.step_code,T.stepname,T.flwtype,S.stepprice as unprice,'0' as produceq_qty,
+                            '0' as good_qty,'0' as ng_qty,'0' as laborbad_qty,'0' as materielbad_qty,'0' as delive_qty,isbott,isend
+                            from TK_Wrk_Step S
+                            inner join (
+                            select top 1 A.wo_code   from TK_Wrk_Man A
+                            inner join TK_Wrk_Step S on A.wo_code=S.wo_code
+                            where A.materiel_code=@partcode and A.wkshp_code=@wkshopcode
+                            order by A.lm_date desc
+                            ) as W on S.wo_code=W.wo_code
+                            left join TStep  T on S.step_code=T.stepcode
+                            order by S.seq";
                     dynamicParams.Add("@wkshopcode", wkshopcode);
                     dynamicParams.Add("@partcode", partcode);
+                    parents = DapperHelper.select<WorkRouteStepEqp>(sql, dynamicParams);
+                    //鑾峰彇宸ュ簭瀵瑰簲璁惧淇℃伅
+                    for (int i = 0; i < parents.Count; i++)
+                    {
+                        if (parents[i].flwtype == "Z")
+                        {
+                            //閫氳繃宸ヨ壓璺嚎宸ュ簭琛↖D鏌ユ壘瀵瑰簲璁惧淇℃伅
+                            sql = @"select S.eqp_code,E.name as eqp_name,S.eqpprice as unprice,'Y' as enable,
+                                (isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty, 
+                                S.good_qty,S.ng_qty,S.laborbad_qty,S.materielbad_qty 
+                                from TK_Wrk_StepEqp S
+                                inner join TEqpInfo E on S.eqp_code=E.code
+                                where S.m_id=@m_id";
+                            dynamicParams.Add("@m_id", parents[i].id);
+                            var children = DapperHelper.select<WorkRouteStepEqpSub>(sql, dynamicParams);
+                            parents[i].children = children.ToList();
+                        }
+                        else
+                        {
+                            //閫氳繃宸ヨ壓璺嚎宸ュ簭琛↖D鏌ユ壘瀵瑰簲澶栧崗渚涘簲鍟嗕俊鎭�
+                            sql = @"select S.eqp_code,E.name as eqp_name,S.eqpprice as unprice,'Y' as enable,
+                                (isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty, 
+                                S.good_qty,S.ng_qty,S.laborbad_qty,S.materielbad_qty 
+                                from TK_Wrk_StepEqp S
+                                inner join TCustomer E on S.eqp_code=E.code
+                                where S.m_id=@m_id";
+                            dynamicParams.Add("@m_id", parents[i].id);
+                            var children = DapperHelper.select<WorkRouteStepEqpSub>(sql, dynamicParams);
+                            parents[i].children = children.ToList();
+                        }
+                    }
+                }
+                mes.code = "200";
+                mes.count = parents.Count;
+                mes.data = parents;
+                mes.message = "鏌ヨ鎴愬姛!";
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
+
+        #region[MES宸ュ崟鏌ョ湅宸ュ崟SOP]
+        public static ToMessage MesOrderSopSearch(string wocode, string materielcode)
+        {
+            string sql = "";
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                //鑾峰彇SOP鏂囦欢淇℃伅
+                sql = @"select filename,filepath,version from TWrkOrderSop
+                        where wo=@wocode and materielcode=@materielcode
+                        order by version";
+                dynamicParams.Add("@wocode", wocode);
+                dynamicParams.Add("@materielcode", materielcode);
+                var data = DapperHelper.selectdata(sql, dynamicParams);
+                if (data.Rows.Count > 0)
+                {
+                    mes.code = "200";
+                    mes.message = "鏌ヨ鎴愬姛!";
+                    mes.data = data;
+                }
+                else
+                {
+                    mes.code = "300";
+                    mes.message = "褰撳墠宸ュ崟浜у搧鏆傛棤SOP鏂囦欢!";
+                    mes.data = null;
+                }
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
+
+        #region[MES宸ュ崟鏌ョ湅宸ヨ壓SOP]
+        public static ToMessage MesOrderProcessSopSearch(string materielcode, string routecode, string stepcode, User us)
+        {
+            var sql = "";
+            List<object> list = new List<object>();
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                dynamic dynObj = JObject.Parse(us.mesSetting);
+                bool route = dynObj.route;
+                if (route) //宸ヨ壓璺嚎鐗�
+                {
+                    //鑾峰彇SOP鏂囦欢淇℃伅
+                    sql = @"select filename,filepath,version from TProcessSop
+                        where  materielcode=@materielcode and routecode=@routecode and stepcode=@stepcode
+                        order by version";
+                    dynamicParams.Add("@materielcode", materielcode);
+                    dynamicParams.Add("@routecode", routecode);
+                    dynamicParams.Add("@stepcode", stepcode);
+                }
+                else
+                {
+                    //鑾峰彇SOP鏂囦欢淇℃伅
+                    sql = @"select filename,filepath,version from TProcessSop
+                        where  materielcode=@materielcode and stepcode=@stepcode
+                        order by version";
+                    dynamicParams.Add("@materielcode", materielcode);
+                    dynamicParams.Add("@stepcode", stepcode);
                 }
 
                 var data = DapperHelper.selectdata(sql, dynamicParams);
@@ -1838,7 +2068,7 @@
                         else //涓嶆寜搴忔敹鍙戞枡
                         {
                             mes = ScanStartReport.NoWXEncodingSeach(SelectType, wocode, stepcode);
-                        } 
+                        }
                         break;
                     default:
                         break;
@@ -3297,7 +3527,7 @@
                                     }
                                 }
                             }
-                        }  
+                        }
                     }
                 }
                 else //涓嶆寜搴�
@@ -3305,10 +3535,10 @@
                     //鎺у埗閫昏緫锛氬綋鍓嶅伐搴忔姤宸ヨ皟鏁�-> (鏈亾宸ュ簭褰撳墠璋冩暣鍚堟牸鏁�+鏈亾宸ュ簭闈炲綋鍓嶆姤宸ュ悎鏍兼�绘暟)<涓嬮亾宸ュ簭鎶ュ伐鎬绘暟(鍚堟牸+涓嶈壇+鎶ュ簾)   ==涓嶈兘灏忎簬涓嬮亾鎶ュ伐鎬绘暟
                     list.Clear();
                     //鍒ゆ柇褰撳墠宸ュ簭鏄嚜鍒跺伐搴忚繕鏄鍗忓伐搴�
-                    if (json[0].flw_type.ToString() == "Z") 
+                    if (json[0].flw_type.ToString() == "Z")
                     {
-                        
-                       //鏌ヨ褰撳墠鎶ュ伐宸ュ簭闈炴娆℃姤宸ワ細鎬绘姤宸ユ暟閲忋�佹�讳笉鑹暟閲忋�佹�诲伐搴熸暟閲忋�佹�绘枡搴熸暟閲�
+
+                        //鏌ヨ褰撳墠鎶ュ伐宸ュ簭闈炴娆℃姤宸ワ細鎬绘姤宸ユ暟閲忋�佹�讳笉鑹暟閲忋�佹�诲伐搴熸暟閲忋�佹�绘枡搴熸暟閲�
                         sql = @"select isnull(sum(good_qty),0) as good_qty,isnull(sum(ng_qty),0) as ng_qty,isnull(sum(laborbad_qty),0) as laborbad_qty,isnull(sum(materielbad_qty),0) as materielbad_qty   
                                 from TK_Wrk_Record where wo_code=@wo_code and style='B' and id<>@id and step_code=@step_code";
                         dynamicParams.Add("@wo_code", json[0].wo_code);
@@ -3330,7 +3560,7 @@
                             return mes;
                         }
                     }
-                    if (json[0].flw_type.ToString() == "W") 
+                    if (json[0].flw_type.ToString() == "W")
                     {
                         //鑾峰彇褰撳墠宸ュ簭銆佷緵搴斿晢瀵瑰簲鐨勬�诲彂鏂欐暟閲�
                         sql = @"select isnull(sum(fqty),0) as fqty
@@ -3352,7 +3582,7 @@
                         decimal notthis_ngqty = decimal.Parse(dt.Rows[0]["ng_qty"].ToString());  //褰撳墠鏈亾宸ュ簭闈炴湰娆℃姤宸ユ�绘暟
                         decimal notthis_laborbad_qty = decimal.Parse(dt.Rows[0]["laborbad_qty"].ToString());  //褰撳墠鏈亾宸ュ簭闈炴湰娆℃姤宸ュ伐搴熸�绘暟
                         decimal notthis_materielbad_qty = decimal.Parse(dt.Rows[0]["materielbad_qty"].ToString());  //褰撳墠鏈亾宸ュ簭闈炴湰娆℃姤宸ユ枡搴熸�绘暟
-                       //鑾峰彇褰撳墠鏈亾宸ュ簭鏀舵枡鎬绘暟閲忥細鏈淇敼鏀舵枡鏁伴噺+鏈淇敼涓嶈壇鏁伴噺+鏈淇敼宸ュ簾鏁伴噺+鏈淇敼鎶ュ伐鏂欏簾鏁伴噺+褰撳墠宸ュ簭闈炴湰娆℃敹鏂欐�绘暟+褰撳墠宸ュ簭闈炴湰娆′笉鑹�绘暟+褰撳墠宸ュ簭闈炴湰娆″伐搴熸�绘暟+褰撳墠宸ュ簭闈炴湰娆℃枡搴熸�绘暟
+                                                                                                                    //鑾峰彇褰撳墠鏈亾宸ュ簭鏀舵枡鎬绘暟閲忥細鏈淇敼鏀舵枡鏁伴噺+鏈淇敼涓嶈壇鏁伴噺+鏈淇敼宸ュ簾鏁伴噺+鏈淇敼鎶ュ伐鏂欏簾鏁伴噺+褰撳墠宸ュ簭闈炴湰娆℃敹鏂欐�绘暟+褰撳墠宸ュ簭闈炴湰娆′笉鑹�绘暟+褰撳墠宸ュ簭闈炴湰娆″伐搴熸�绘暟+褰撳墠宸ュ簭闈炴湰娆℃枡搴熸�绘暟
                         decimal updatereportsumqty = this_reportqty + this_ngqty + this_laborbadqty + this_materielbadqty + notthis_reportqty + notthis_ngqty + notthis_laborbad_qty + notthis_materielbad_qty;
                         //鍒ゆ柇褰撳墠宸ュ簭渚涘簲鍟嗘敹鏂欐�绘暟>褰撳墠宸ュ簭渚涘簲鍟嗗搴斿彂鏂欐暟閲�
                         if (updatereportsumqty > decimal.Parse(dt_0.Rows[0]["fqty"].ToString()))
@@ -3400,7 +3630,7 @@
                             str = sql,
                             parm = new
                             {
-                                step_price=decimal.Parse(json[0].unprice),
+                                step_price = decimal.Parse(json[0].unprice),
                                 good_qty = decimal.Parse(json[0].report_dvalue),
                                 ng_qty = this_ng_dvalue,
                                 laborbad_qty = this_laborbad_dvalue,
@@ -3503,7 +3733,7 @@
                             str = sql,
                             parm = new
                             {
-                                step_price=decimal.Parse(json[0].unprice),
+                                step_price = decimal.Parse(json[0].unprice),
                                 good_qty = decimal.Parse(json[0].report_dvalue),
                                 ng_qty = this_ng_dvalue,
                                 laborbad_qty = this_laborbad_dvalue,

--
Gitblit v1.9.3