From 54bfe544f50d0933ebc27583decb9ab61e01146f Mon Sep 17 00:00:00 2001
From: yl <ykxkd@outlook.com>
Date: 星期五, 14 六月 2024 16:05:16 +0800
Subject: [PATCH] 1.SOP管理,工单SOP功能接口开发

---
 VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs            |    7 +
 VueWebCoreApi/VueWebCoreApi.csproj                      |    1 
 VueWebCoreApi/Controllers/GeneralBasicDataController.cs |   10 +
 VueWebCoreApi/DLL/BLL/SopManageMentBLL.cs               |   34 ++++
 VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs            |   25 +++
 VueWebCoreApi/Controllers/SopManageMentController.cs    |   84 ++++++++++++
 VueWebCoreApi/DLL/DAL/SopManageMentDAL.cs               |  223 +++++++++++++++++++++++++++++++
 7 files changed, 379 insertions(+), 5 deletions(-)

diff --git a/VueWebCoreApi/Controllers/GeneralBasicDataController.cs b/VueWebCoreApi/Controllers/GeneralBasicDataController.cs
index b96dc8e..0c183c1 100644
--- a/VueWebCoreApi/Controllers/GeneralBasicDataController.cs
+++ b/VueWebCoreApi/Controllers/GeneralBasicDataController.cs
@@ -320,5 +320,15 @@
             return Json(mes);
         }
         #endregion
+
+        #region[鏌ヨ宸ュ崟鍩虹璧勬枡]
+        [Route(template: "WrkOrderDataSelect")]
+        [HttpGet]
+        public JsonResult WrkOrderDataSelect()
+        {
+            mes = GeneralBasicDataBLL.WrkOrderDataSelect();
+            return Json(mes);
+        }
+        #endregion
     }
 }
diff --git a/VueWebCoreApi/Controllers/SopManageMentController.cs b/VueWebCoreApi/Controllers/SopManageMentController.cs
index e8ea25c..d3a3985 100644
--- a/VueWebCoreApi/Controllers/SopManageMentController.cs
+++ b/VueWebCoreApi/Controllers/SopManageMentController.cs
@@ -168,5 +168,89 @@
             return Json(mes);
         }
         #endregion
+
+
+        #region[绯荤粺璁剧疆,宸ュ崟SOP鏌ヨ]
+        /// <summary>
+        /// 绯荤粺璁剧疆,宸ュ崟SOP鏌ヨ
+        /// </summary>
+        /// <param name="search">鎼滅储鍏抽敭瀛�</param>
+        /// <param name="check">鏄惁閫変腑鏈�楂樼増鏈�</param>
+        /// <param name="page">椤电爜</param>
+        /// <param name="rows">姣忛〉鏄剧ず鏉℃暟</param>
+        /// <param name="prop">鎺掑簭瀛楁</param>
+        /// <param name="order">鎺掑簭瑙勫垯</param>
+        /// <returns></returns>
+        [Route(template: "WrkOrderSearch")]
+        [HttpGet]
+        public JsonResult WrkOrderSearch(string search = null, string check = null, int page = 0, int rows = 0, string prop = null, string order = null)
+        {
+            int startNum = rows * (page - 1) + 1;  //璧峰璁板綍rowNum
+            int endNum = rows * page;   //缁撴潫璁板綍 rowNum
+            mes = SopManageMentBLL.WrkOrderSearch(search, check, startNum, endNum, prop, order);
+            return Json(mes);
+        }
+        #endregion
+
+        #region[绯荤粺璁剧疆,宸ュ崟SOP涓婁紶鑾峰彇鏈�澶х増鏈彿]
+        /// <summary>
+        /// 绯荤粺璁剧疆,宸ュ崟SOP涓婁紶鑾峰彇鏈�澶х増鏈彿
+        /// </summary>
+        /// <param name="wocode">宸ュ崟缂栧彿</param>
+        /// <param name="partcode">鐗╂枡缂栫爜</param>
+        /// <param name="filetypecode">鏂囦欢绫诲瀷缂栫爜</param>
+        /// <returns></returns>
+        [Route(template: "WrkOrderSopMaxVersion")]
+        [HttpGet]
+        public JsonResult WrkOrderSopMaxVersion(string wocode, string partcode, string filetypecode)
+        {
+            var token = HttpContext.Request.Headers["Token"].ToString();
+            User us = JwtTools.Denocode(token.ToString());
+            mes = SopManageMentBLL.WrkOrderSopMaxVersion(wocode, partcode, filetypecode, us);
+            return Json(mes);
+        }
+        #endregion
+
+        #region[绯荤粺璁剧疆,宸ュ崟SOP鏂板]
+        /// <summary>
+        /// 绯荤粺璁剧疆,宸ュ崟SOP鏂板
+        /// </summary>
+        /// <param name="wocode">宸ュ崟缂栧彿</param>
+        /// <param name="partcode">鐗╂枡缂栫爜</param>
+        /// <param name="filename">鏂囦欢鍚嶇О</param>
+        /// <param name="filetypecode">鏂囦欢绫诲瀷缂栫爜</param>
+        /// <param name="file">涓婁紶鏂囦欢</param>
+        /// <param name="version">鐗堟湰鍙�</param>
+        /// <returns></returns>
+        [Route(template: "WrkOrderSopAddSeave")]
+        [HttpPost]
+        public JsonResult WrkOrderSopAddSeave([FromForm] string wocode, [FromForm] string partcode, [FromForm] string filename, [FromForm] string filetypecode, [FromForm] string version, IFormFile file)
+        {
+            var token = HttpContext.Request.Headers["Token"].ToString();
+            User us = JwtTools.Denocode(token.ToString());
+            mes = SopManageMentBLL.WrkOrderSopAddSeave(wocode, partcode, filename, filetypecode, version, file, us);
+            return Json(mes);
+        }
+        #endregion
+
+        #region[绯荤粺璁剧疆,宸ュ崟SOP鍒犻櫎]
+        /// <summary>
+        /// 绯荤粺璁剧疆,宸ュ崟SOP鍒犻櫎
+        /// </summary>
+        /// <param name="id">鏁版嵁id</param>
+        /// <param name="wocode">宸ュ崟缂栧彿</param>
+        /// <param name="partcode">鐗╂枡缂栫爜</param>
+        /// <param name="filepath">鏂囦欢璺緞</param>
+        /// <returns></returns>
+        [Route(template: "WrkOrderSopDeleteSeave")]
+        [HttpPost]
+        public JsonResult WrkOrderSopDeleteSeave(string id, string wocode, string partcode, string filepath)
+        {
+            var token = HttpContext.Request.Headers["Token"].ToString();
+            User us = JwtTools.Denocode(token.ToString());
+            mes = SopManageMentBLL.WrkOrderSopDeleteSeave(id, wocode, partcode, filepath, us);
+            return Json(mes);
+        }
+        #endregion
     }
 }
diff --git a/VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs b/VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs
index dd9173c..f772eed 100644
--- a/VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs
+++ b/VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs
@@ -164,5 +164,12 @@
             return GeneralBasicDataDAL.MouldRepairItemSelect();
         }
         #endregion
+
+        #region[鏌ヨ宸ュ崟/浜у搧鍩虹璧勬枡]
+        public static ToMessage WrkOrderDataSelect()
+        {
+            return GeneralBasicDataDAL.WrkOrderDataSelect();
+        }
+        #endregion
     }
 }
diff --git a/VueWebCoreApi/DLL/BLL/SopManageMentBLL.cs b/VueWebCoreApi/DLL/BLL/SopManageMentBLL.cs
index f83cb60..03aaa09 100644
--- a/VueWebCoreApi/DLL/BLL/SopManageMentBLL.cs
+++ b/VueWebCoreApi/DLL/BLL/SopManageMentBLL.cs
@@ -41,7 +41,6 @@
         }
         #endregion
 
-
         #region[绯荤粺璁剧疆,宸ヨ壓SOP涓婁紶鑾峰彇鏈�澶х増鏈彿]
         public static ToMessage ProcessSopMaxVersion(string partcode, string routecode, string stepcode, string filetypecode, User us)
         {
@@ -49,18 +48,47 @@
         }
         #endregion
 
-        #region[绯荤粺璁剧疆,璁惧SOP鏂板]
+        #region[绯荤粺璁剧疆,宸ヨ壓SOP鏂板]
         public static ToMessage ProcessSopAddSeave(string partcode, string routecode, string stepcode, string filename, string filetypecode,string version, IFormFile file, User us)
         {
             return SopManageMentDAL.ProcessSopAddSeave(partcode, routecode, stepcode, filename, filetypecode, version, file, us);
         }
         #endregion
 
-        #region[绯荤粺璁剧疆,璁惧SOP鍒犻櫎]
+        #region[绯荤粺璁剧疆,宸ヨ壓SOP鍒犻櫎]
         public static ToMessage ProcessSopDeleteSeave(string id, string partcode,string routecode,string stepcode, string filepath, User us)
         {
             return SopManageMentDAL.ProcessSopDeleteSeave(id, partcode, routecode, stepcode, filepath, us);
         }
         #endregion
+
+
+        #region[绯荤粺璁剧疆,宸ュ崟SOP鏌ヨ]
+        public static ToMessage WrkOrderSearch(string search, string check, int startNum, int endNum, string prop, string order)
+        {
+            return SopManageMentDAL.WrkOrderSearch(search, check, startNum, endNum, prop, order);
+        }
+        #endregion
+
+        #region[绯荤粺璁剧疆,宸ュ崟SOP涓婁紶鑾峰彇鏈�澶х増鏈彿]
+        public static ToMessage WrkOrderSopMaxVersion(string wocode, string partcode, string filetypecode, User us)
+        {
+            return SopManageMentDAL.WrkOrderSopMaxVersion(wocode, partcode, filetypecode, us);
+        }
+        #endregion
+
+        #region[绯荤粺璁剧疆,宸ュ崟SOP鏂板]
+        public static ToMessage WrkOrderSopAddSeave(string wocode, string partcode, string filename, string filetypecode, string version, IFormFile file, User us)
+        {
+            return SopManageMentDAL.WrkOrderSopAddSeave(wocode, partcode, filename, filetypecode, version, file, us);
+        }
+        #endregion
+
+        #region[绯荤粺璁剧疆,宸ュ崟SOP鍒犻櫎]
+        public static ToMessage WrkOrderSopDeleteSeave(string id, string wocode, string partcode, string filepath, User us)
+        {
+            return SopManageMentDAL.WrkOrderSopDeleteSeave(id, wocode, partcode, filepath, us);
+        }
+        #endregion
     }
 }
diff --git a/VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs b/VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs
index 26d0d40..ae4fc9d 100644
--- a/VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs
+++ b/VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs
@@ -643,5 +643,30 @@
             return mes;
         }
         #endregion
+
+        #region[鏌ヨ宸ュ崟/浜у搧鍩虹璧勬枡]
+        public static ToMessage WrkOrderDataSelect()
+        {
+            string sql = "";
+            try
+            {
+                sql = @"select P.wo_code,P.materiel_code,M.partname as materiel_name   
+                        from TK_Wrk_Man P
+                        left join TMateriel_Info M on P.materiel_code=M.partcode";
+                var data = DapperHelper.selecttable(sql);
+                mes.code = "200";
+                mes.message = "鏌ヨ鎴愬姛!";
+                mes.data = data;
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
     }
 }
diff --git a/VueWebCoreApi/DLL/DAL/SopManageMentDAL.cs b/VueWebCoreApi/DLL/DAL/SopManageMentDAL.cs
index e1fe62e..f2233ab 100644
--- a/VueWebCoreApi/DLL/DAL/SopManageMentDAL.cs
+++ b/VueWebCoreApi/DLL/DAL/SopManageMentDAL.cs
@@ -384,14 +384,14 @@
                         LogHelper.DbOperateLog(us.usercode, "鏂板宸ヨ壓SOP", "浜у搧锛�"+partcode+" SOP鏂囦欢:" + file.FileName + " 宸ヨ壓璺嚎:" + routecode ?? "" + " 宸ュ簭:" + stepcode.ToString(), us.usertype);
                         mes.code = "200";
                         mes.count = 0;
-                        mes.message = "鏂板璁惧SOP鎴愬姛!";
+                        mes.message = "鏂板宸ヨ壓SOP鎴愬姛!";
                         mes.data = null;
                     }
                     else
                     {
                         mes.code = "300";
                         mes.count = 0;
-                        mes.message = "鏂板璁惧SOP澶辫触!";
+                        mes.message = "鏂板宸ヨ壓SOP澶辫触!";
                         mes.data = null;
                     }
                 }
@@ -459,5 +459,224 @@
         }
         #endregion
 
+
+
+        #region[绯荤粺璁剧疆,宸ュ崟SOP鏌ヨ]
+        public static ToMessage WrkOrderSearch(string search, string check, int startNum, int endNum, string prop, string order)
+        {
+            var dynamicParams = new DynamicParameters();
+            string sech = "";
+            try
+            {
+                if (search != "" && search != null)
+                {
+                    sech += "and concat(isnull(AA.wo,''),isnull(AA.materielcode,''),isnull(AA.materielname,''),isnull(AA.filetypecode,''),isnull(AA.filetypename,''),isnull(AA.filename,''),isnull(AA.version,''),isnull(AA.username,'')) like '%'+@search+'%' ";
+                    dynamicParams.Add("@search", search);
+                }
+                if (check == "Y")
+                {
+                    sech += "and AA.rn=1 ";
+                    dynamicParams.Add("@rn", 1);
+                }
+
+                if (sech == "")
+                {
+                    sech = "and 1=1 ";
+                }
+                sech = sech.Substring(3);//鎴彇绱㈠紩2鍚庨潰鐨勫瓧绗�
+                // --------------鏌ヨ鎸囧畾鏁版嵁--------------
+                var total = 0; //鎬绘潯鏁�
+                var sql = @"select AA.id,AA.wo,AA.materielcode,AA.materielname,AA.filetypecode,AA.filetypename,AA.filename,AA.version,AA.filepath,
+                            AA.username,AA.lm_date,AA.rn  from(
+                            select top 100  A.id,A.wo,A.materielcode,M.partname as materielname,A.filetypecode,
+                            (case when A.filetypecode='P001' then '浣滀笟鎸囧涔�' when A.filetypecode='P002' then '妫�楠屾寚瀵间功' when A.filetypecode='P003' then '鍥剧焊'  end) as filetypename,
+                            A.filename,A.version,A.filepath,U.username,A.lm_date,
+                            row_number() over(partition by A.wo,A.materielcode,A.filetypecode order by replace(A.version,'V','') desc) rn  
+                            from  TWrkOrderSop A
+                            left  join TMateriel_Info M on A.materielcode=M.partcode
+                            left  join TUser U on A.lm_user=U.usercode
+                            ) as AA  where  " + sech + "";
+                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
+                mes.code = "200";
+                mes.message = "鏌ヨ鎴愬姛!";
+                mes.count = total;
+                mes.data = data.ToList();
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
+
+        #region[绯荤粺璁剧疆,宸ュ崟SOP涓婁紶鑾峰彇鏈�澶х増鏈彿]
+        public static ToMessage WrkOrderSopMaxVersion(string wocode, string partcode, string filetypecode, User us)
+        {
+            string sql = "";
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                //鑾峰彇SOP鏂囦欢浣滀笟鏂囦欢涓婁紶鑾峰彇鏈�澶х増鏈彿
+                sql = @"select isnull(max(substring(version,charindex('V',version)+1,len(version)-charindex('V',version))),0)+1 as file_version    
+                        from TWrkOrderSop where wo=@wo and materielcode=@materielcode and filetypecode=@filetypecode ";
+                dynamicParams.Add("@wo", wocode);
+                dynamicParams.Add("@materielcode", partcode);
+                dynamicParams.Add("@filetypecode", filetypecode);
+                var data = DapperHelper.selectdata(sql, dynamicParams);
+                if (data.Rows.Count > 0)
+                {
+                    mes.code = "200";
+                    mes.message = "鑾峰彇鐗堟湰鍙锋垚鍔�!";
+                    mes.data = "V" + data.Rows[0]["file_version"].ToString();
+                }
+                else
+                {
+                    mes.code = "300";
+                    mes.message = "鑾峰彇鐗堟湰鍙峰け璐�!";
+                    mes.data = null;
+                }
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
+
+        #region[绯荤粺璁剧疆,宸ュ崟SOP鏂板]
+        public static ToMessage WrkOrderSopAddSeave(string wocode, string partcode, string filename, string filetypecode, string version, IFormFile file, User us)
+        {
+            string sql = "";
+            var dynamicParams = new DynamicParameters();
+            List<object> list = new List<object>();
+            try
+            {
+                list.Clear();
+                if (file == null || file.Length <= 0)
+                {
+                    mes.code = "300";
+                    mes.message = "鏂囦欢涓嶈兘涓虹┖锛�";
+                }
+                else
+                {
+                    //鑾峰彇涓婁紶鏂囦欢,缁勫悎瀛樺偍璺緞
+                    string FileName = "SOP" + DateTime.Now.ToString("yyyyMMddhhmmss");
+                    string filePath = "wwwroot/WrkOrderSopFile/" + FileName + file.FileName;     //閫氳繃姝ゅ璞¤幏鍙栨枃浠跺悕(瀛樻枃浠跺湴鍧�)
+                    string filePath1 = "WrkOrderSopFile/" + FileName + file.FileName;     //閫氳繃姝ゅ璞¤幏鍙栨枃浠跺悕(瀛樻暟鎹〃鍦板潃)
+
+                    // 淇濆瓨鏂囦欢var stream = new FileStream(filePath, FileMode.Create)
+                    using (var stream = new FileStream(filePath, FileMode.Create))
+                    {
+                        file.CopyTo(stream);
+                    }
+                    //鍐欏叆璁惧SOP琛�
+                    sql = @"insert into  TWrkOrderSop(wo,materielcode,filetypecode,filename,filepath,version,lm_user,lm_date) 
+                                values(@wo,@materielcode,@filetypecode,@filename,@filepath,@version,@lm_user,@lm_date)";
+                    list.Add(new
+                    {
+                        str = sql,
+                        parm = new
+                        {
+                            wo=wocode,
+                            materielcode = partcode,
+                            filetypecode = filetypecode,
+                            filename = file.FileName,
+                            filepath = filePath1,
+                            version = version,
+                            lm_user = us.usercode,
+                            lm_date = DateTime.Now.ToString()
+                        }
+                    });
+
+                    bool aa = DapperHelper.DoTransaction(list);
+                    if (aa)
+                    {
+                        //鍐欏叆鎿嶄綔璁板綍琛�
+                        LogHelper.DbOperateLog(us.usercode, "鏂板宸ュ崟SOP", "宸ュ崟锛�" + wocode + "浜у搧锛�" + partcode + " SOP鏂囦欢:" + file.FileName, us.usertype);
+                        mes.code = "200";
+                        mes.count = 0;
+                        mes.message = "鏂板宸ュ崟SOP鎴愬姛!";
+                        mes.data = null;
+                    }
+                    else
+                    {
+                        mes.code = "300";
+                        mes.count = 0;
+                        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[绯荤粺璁剧疆,宸ュ崟SOP鍒犻櫎]
+        public static ToMessage WrkOrderSopDeleteSeave(string id, string wocode, string partcode, string filepath, User us)
+        {
+            var sql = "";
+            var dynamicParams = new DynamicParameters();
+            List<object> list = new List<object>();
+            try
+            {
+                list.Clear();
+                //鏌ヨ褰撳墠鏂囦欢鍑哄幓褰撳墠鍒犻櫎鐨�,鏄惁杩樿鍏朵粬寮曠敤
+                sql = @"select *  from TWrkOrderSop  where id<>@id  and filepath=@filepath";
+                dynamicParams.Add("@id", id);
+                dynamicParams.Add("@filepath", filepath);
+                var data = DapperHelper.selectdata(sql, dynamicParams);
+                if (data.Rows.Count <= 0)
+                {
+                    // 鏋勫缓瀹屾暣鐨勬枃浠惰矾寰�  
+                    var filePath = Path.Combine("wwwroot", filepath);
+                    // 鍒犻櫎鏂囦欢  
+                    System.IO.File.Delete(filePath);
+                }
+                sql = @"delete TWrkOrderSop where id=@id";
+                list.Add(new { str = sql, parm = new { id = id } });
+                bool aa = DapperHelper.DoTransaction(list);
+                if (aa)
+                {
+                    //鍐欏叆鎿嶄綔璁板綍琛�
+                    LogHelper.DbOperateLog(us.usercode, "鍒犻櫎宸ヨ壓SOP", "宸ュ崟:" + wocode + "浜у搧:" + partcode + " SOP鏂囦欢鍦板潃锛�" + filepath, us.usertype);
+                    mes.code = "200";
+                    mes.count = 0;
+                    mes.message = "鍒犻櫎鎴愬姛!";
+                    mes.data = null;
+                }
+                else
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.message = "鍒犻櫎澶辫触!";
+                    mes.data = null;
+                }
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
+
     }
 }
diff --git a/VueWebCoreApi/VueWebCoreApi.csproj b/VueWebCoreApi/VueWebCoreApi.csproj
index ffa8872..c086036 100644
--- a/VueWebCoreApi/VueWebCoreApi.csproj
+++ b/VueWebCoreApi/VueWebCoreApi.csproj
@@ -57,6 +57,7 @@
 		<Folder Include="wwwroot\MouldRecordImage\" />
 		<Folder Include="wwwroot\DeviceSopFile\" />
 		<Folder Include="wwwroot\ProcessSopFile\" />
+		<Folder Include="wwwroot\WrkOrderSopFile\" />
 	</ItemGroup>
 
 	<ItemGroup>

--
Gitblit v1.9.3