yl
2024-06-14 54bfe544f50d0933ebc27583decb9ab61e01146f
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
    }
}