现象1:通过一个定时任务找到文件夹的pdf文件名更新数据库中表的字段信息。
现象2:定时任务找到这个文件下的生成时间,并根据生成文件的时间差进行更新数据库中表的信息。
这是我写的
iCertPrint.UpEditPDFileName(Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")))
public int UpEditPDFileName(DateTime dateTime)
{
using (DataContext FdataContext = new DataContext())
{
string querySql = @"select id,PrintFileName,PrintTime from t where operateType='1' and PrintTime!='';";
IQuery query = FdataContext.CreateQuery(querySql);
DataTable Fdt = query.ToTable();
for (int i = 0; i < Fdt.Rows.Count; i++)
{
DateTime PrintTime = Convert.ToDateTime(Fdt.Rows[i]["PrintTime"].ToString());
TimeSpan d3 = PrintTime.Subtract(dateTime);
if (Convert.ToInt32(d3.Minutes.ToString()) < 2)
{
//MessageBox.Show(CurrentUser.Brand + "合格证打印更新日志信息!");
var files = GetAllFiles(@"D:\BackPDF\other");
foreach (var fileInfo in files)
{
var FileName = fileInfo.FullName.IndexOf(@"D:\BackPDF\other");
var str = fileInfo.Name;
using (DataContext dataContext = new DataContext())
{
IDbTransaction tr = dataContext.BeginTransaction();
StringBuilder sb = new StringBuilder();
sb.AppendFormat(" UPDATE t SET PrintFileName='{0}' WHERE id='{1}';", str.ToString(), Fdt.Rows[i]["id"].ToString());
IDbExecutor executor = dataContext.CreateExecutor(sb.ToString());
int k = executor.ExecuteNonQuery(null);
if (k> 0)
{
tr.Commit();
}
else
{
tr.Rollback();
}
}
}
}
}
}
return 1;
}
/// <summary>
/// 获取文件夹下所有的文件
/// </summary>
/// <author>2022-11-11</author>
/// <param name="path"></param>
/// <returns></returns>
public static FileInfo[] GetAllFiles(string path)
{
try
{
var files = new List<FileInfo>();
files.AddRange(new DirectoryInfo(path).GetFiles());//获取文件夹下所有文件
var tmpdics = new DirectoryInfo(path).GetDirectories();//获取文件夹下所有子文件夹
foreach (var dic in tmpdics)
{
files.AddRange(GetAllFiles(dic.FullName));//递归获取文件
}
return files.ToArray();
}
catch (Exception)
{
return null;
}
}

达不到想要的结果 在进行更新的时候很慢 导致打印文件的时候时间太长了。
编写一个定时任务进行更新 根据当前打印时间跟数据库中的打印时间作对比小于2分钟的文件 就获取文件夹下所有的文件 找到这个一分钟内打印的文件 并把这个文件的文件名更新到数据库。
打印pdf的时候生成文件后找到这个文件名并更新到数据库中。
一个订单打印多次 也就是多个文件 我要把这个多个文件的pdf的文件名 更新到数据库中,以逗号隔开的形式进行保存到数据库中。
编写一个定时任务进行更新 实现一分钟更新一次或者找到这个文件下所有的文件 根据文件的生成时间进行更新。(一个订单有多个pdf 我要把这多个pdf的文件更新到这个数据库中日志表中,存储的格式为:字段等于=1pdf,2pdf,3pdf)
我要实现的效果:
编写一个定时任务找到这个文件夹下所有的文件,取到这些文件一分钟内打印成功的文件名称,并更新到数据库中的,存储格式为:1pdf,2pdf,pdfn,...
以逗号隔开的形式进行存储。
问题过于笼统,很难猜测你有啥问题。不过大概意思我可以弄明白
所以我不根据你具体实现写,只说按照你要实现的目标,我们可以避免进入你觉得不好弄的的地方
比如我可以准备3个文件夹: 原始存放,待入库,已入库
当你扫描到文件后,把文件移动到待入库目录(可以生成一个批次目录),已入库后把文件重待入库目录移动到已入库目录
这样处理就没你上面那些问题了,反正定时器获取的永远都是没处理过的