初始化

This commit is contained in:
2025-11-20 16:20:04 +08:00
commit 4230fa4d27
777 changed files with 232488 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
using BLW_Log.Models;
using DAL.PGModels;
using Microsoft.EntityFrameworkCore;
using Quartz;
namespace BLW_Log.services
{
public class DelLogJob : IJob
{
public readonly PostgresContext DbContext;
public DelLogJob(PostgresContext db) { this.DbContext = db; }
public async Task Execute(IJobExecutionContext context)
{
//using (var a = new LowmachinelogContext())
//{
string ti = DateTime.Now.AddDays(-90).ToString("yyyy-MM-dd HH:mm:ss");
string sql = string.Format(@"delete from dev_monitorlog where CreateTime<='{0}';
DELETE from iot_monitorlog where TriggerTime<='{0}';
delete from webapi_monitorlog where InvokStart_Time<='{0}';", ti);
await DbContext.Database.ExecuteSqlRawAsync(sql);
//}
}
}
}

View File

@@ -0,0 +1,32 @@
using Commonlib;
using System.Data;
using Quartz;
using NLog;
namespace BLW_Log.services
{
public class DelSucess_Fault_File : IJob
{
private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
public Task Execute(IJobExecutionContext context)
{
string[] dealwith_files = Directory.GetFiles(ExcelScan.DealWithDir);
_logger.Info("开始读取 各个文件数据");
List<DataTable> list_table = new List<DataTable>();
foreach (var item in dealwith_files)
{
string fileName = Path.GetFileName(item);
bool bbb = fileName.StartsWith(ExcelScan.);
bool ccc = fileName.StartsWith(ExcelScan.);
bool ddd = bbb || ccc;
if (ddd == false)
{
File.Delete(item);
}
}
return Task.CompletedTask;
}
}
}

View File

@@ -0,0 +1,15 @@

namespace BLW_Log.services
{
public class ExcelGenerate : BackgroundService
{
public ExcelGenerate()
{
}
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,115 @@
using System.Data;
using Commonlib;
using Microsoft.Extensions.Logging;
using NLog;
using Quartz;
namespace BLW_Log.services
{
public class ExcelScan : IJob
{
private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
public static string sourceDir = @"Excel\上传目录"; // 上传的目录路径
public static string DealWithDir = @"Excel\处理"; // 处理的目录路径
public static string targetDir = @"Excel\target_jindie"; // 马丽要使用的目录路径
public static string JinDieBakDir = @"Excel\target_jindie_bak"; // 马丽要使用的目录路径
public static string KongBaiDir = @"Excel\空白"; // 马丽要使用的目录路径
public static string = "[上传成功]";
public static string = "[上传失败]";
public Task Execute(IJobExecutionContext context)
{
try
{
string = DateTime.Now.ToString("yyyyMMddHHmmss");
string _天 = DateTime.Now.ToString("yyyyMMdd");
// 获取源目录所有文件
string[] files = Directory.GetFiles(sourceDir);
_logger.Info("移动文件到各自的目录");
foreach (string file in files)
{
string fileNameGGG = Path.GetFileName(file);
string ssk = Path.GetExtension(fileNameGGG);
if (ssk.Equals(".xls") || ssk.Equals(".xlsx"))
{
if (!fileNameGGG.StartsWith() && fileNameGGG.StartsWith() == false)
{
string fileName = Path.GetFileName(file);
DataTable DT = null;
try
{
DT = ExcelHelper.ReadExcelToDataTable(file);
}
catch (Exception ex)
{
string Fault_Src_File = Path.Combine(sourceDir, + "_错误03_" + fileName);
File.Copy(file, Fault_Src_File, true);
File.Delete(file);
return Task.CompletedTask;
}
//01 文件缺少必要列
//02 文件格式错误
//03 文件损坏
//8 さ8
//文件内容格式错误←
//未知错误,请联系管理员←
bool hasColumn0 = DT.Columns.Contains("项目名称");
bool hasColumn1 = DT.Columns.Contains("产品料号");
bool hasColumn2 = DT.Columns.Contains("产品名称");
bool hasColumn3 = DT.Columns.Contains("发货数量");
bool hasColumn4 = DT.Columns.Contains("单价");
bool hasColumn5 = DT.Columns.Contains("销售");
//bool hasColumn6 = DT.Columns.Contains("单位");
bool bf = hasColumn0 && hasColumn1 && hasColumn2 && hasColumn3 && hasColumn4 && hasColumn5;
//&&hasColumn6;
if (bf == false)
{
string Fault_Src_File = Path.Combine(sourceDir, + "_错误01_" + fileName);
File.Copy(file, Fault_Src_File, true);
File.Delete(file);
}
else
{
string Success_Src_File = Path.Combine(sourceDir, + "_" + fileName);
File.Copy(file, Success_Src_File, true);
//File.Copy(ExcelScan.KongBaiDir + "\\空白文件.xlsx", Success_Src_File, true);
string bak_Dir = @"Excel\bak\" + ; // 备份的目录路径
if (!Directory.Exists(bak_Dir))
{
Directory.CreateDirectory(bak_Dir);
}
string bakFile = Path.Combine(bak_Dir, fileName);
// 移动文件(覆盖已存在文件)
File.Copy(file, bakFile, true);
string destFile = Path.Combine(DealWithDir, fileName);
File.Move(file, destFile, true);
//File.Move(file, destFile, true);
_logger.Info("复制文件" + fileName + "到" + bakFile);
_logger.Info("移动文件" + fileName + "到" + destFile);
}
}
}
}
_logger.Info("移动文件完成");
}
catch (Exception ex)
{
_logger.Error("Excel 预检失败: " + ex.Message);
}
return Task.CompletedTask;
}
}
}

93
BLW_Log/services/Id_G.cs Normal file
View File

@@ -0,0 +1,93 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Common
{
public class IdWorker
{
//起始的时间戳
private static long START_STMP = 1480166465631L;
//每一部分占用的位数
private static int SEQUENCE_BIT = 12; //序列号占用的位数
private static int MACHINE_BIT = 5; //机器标识占用的位数
private static int DATACENTER_BIT = 5;//数据中心占用的位数
//每一部分的最大值
private static long MAX_DATACENTER_NUM = -1L ^ (-1L << DATACENTER_BIT);
private static long MAX_MACHINE_NUM = -1L ^ (-1L << MACHINE_BIT);
private static long MAX_SEQUENCE = -1L ^ (-1L << SEQUENCE_BIT);
//每一部分向左的位移
private static int MACHINE_LEFT = SEQUENCE_BIT;
private static int DATACENTER_LEFT = SEQUENCE_BIT + MACHINE_BIT;
private static int TIMESTMP_LEFT = DATACENTER_LEFT + DATACENTER_BIT;
private long datacenterId = 1; //数据中心
private long machineId = 1; //机器标识
private long sequence = 0L; //序列号
private long lastStmp = -1L;//上一次时间戳
#region :
private static readonly Lazy<IdWorker> lazy = new Lazy<IdWorker>(() => new IdWorker());
public static IdWorker Singleton { get { return lazy.Value; } }
private IdWorker() { }
#endregion
public IdWorker(long cid, long mid)
{
if (cid > MAX_DATACENTER_NUM || cid < 0) throw new Exception($"中心Id应在(0,{MAX_DATACENTER_NUM})之间");
if (mid > MAX_MACHINE_NUM || mid < 0) throw new Exception($"机器Id应在(0,{MAX_MACHINE_NUM})之间");
datacenterId = cid;
machineId = mid;
}
/// <summary>
/// 产生下一个ID
/// </summary>
/// <returns></returns>
public long nextId()
{
long currStmp = getNewstmp();
if (currStmp < lastStmp) throw new Exception("时钟倒退Id生成失败");
if (currStmp == lastStmp)
{
//相同毫秒内,序列号自增
sequence = (sequence + 1) & MAX_SEQUENCE;
//同一毫秒的序列数已经达到最大
if (sequence == 0L) currStmp = getNextMill();
}
else
{
//不同毫秒内序列号置为0
sequence = 0L;
}
lastStmp = currStmp;
return (currStmp - START_STMP) << TIMESTMP_LEFT //时间戳部分
| datacenterId << DATACENTER_LEFT //数据中心部分
| machineId << MACHINE_LEFT //机器标识部分
| sequence; //序列号部分
}
private long getNextMill()
{
long mill = getNewstmp();
while (mill <= lastStmp)
{
mill = getNewstmp();
}
return mill;
}
private long getNewstmp()
{
return (long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
}
}
}

View File

@@ -0,0 +1,11 @@

namespace BLW_Log.services
{
public class LogRecord : BackgroundService
{
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
return Task.CompletedTask;
}
}
}

461
BLW_Log/services/MyExcel.cs Normal file
View File

@@ -0,0 +1,461 @@
using System.Data;
using System.Transactions;
using ChinhDo.Transactions;
using Common;
using Commonlib;
using LiteDB;
using NLog;
using NPOI.POIFS.Crypt.Dsig;
using Quartz;
namespace BLW_Log.services
{
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}
public class MyExcel : IJob
{
private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
public static void ExcelDealWith()
{
NewMethod(true);
}
public static void NewMethod(bool Is_Auto = true)
{
string _天 = DateTime.Now.ToString("yyyy/MM/dd");
string = DateTime.Now.ToString("yyyy-MM-dd");
if (Is_Auto == false)
{
= DateTime.Now.ToString("yyyy-MM-dd#HH:mm:ss:fff");
}
try
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]单据编号(*)", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]日期(*)", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]购货单位(*)", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头][自定义]项目名称:", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]币别(*)", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]汇率(*)", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]结算日期(*)", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]销售方式", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]交货方式", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]发货地点", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]收货地址", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]结算方式", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]摘要", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]业务员", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头][自定义]技术员", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "物料代码(*)", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "物料名称", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "规格型号", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "单位(*)", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "数量(*)", DataType = typeof(string) });
dt.Columns.Add(new DataColumn() { ColumnName = "税率(%)(*)", DataType = typeof(decimal) });
dt.Columns.Add(new DataColumn() { ColumnName = "折扣率(%)(*)", DataType = typeof(decimal) });
dt.Columns.Add(new DataColumn() { ColumnName = "交货日期(*)", DataType = typeof(string) });
dt.Columns.Add(new DataColumn() { ColumnName = "辅助属性", DataType = typeof(string) });
dt.Columns.Add(new DataColumn() { ColumnName = "备注", DataType = typeof(string) });
dt.Columns.Add(new DataColumn() { ColumnName = "客户料号", DataType = typeof(string) });
dt.Columns.Add(new DataColumn() { ColumnName = "客户商品名称", DataType = typeof(string) });
dt.Columns.Add(new DataColumn() { ColumnName = "单价", DataType = typeof(string) });
//获取需要处理的所有文件
string[] dealwith_files = Directory.GetFiles(ExcelScan.DealWithDir);
_logger.Info("开始读取 各个文件数据");
List<DataTable> list_table = new List<DataTable>();
foreach (var item in dealwith_files)
{
string fileName = Path.GetFileName(item);
bool bbb = fileName.StartsWith(ExcelScan.);
bool ccc = fileName.StartsWith(ExcelScan.);
bool ddd = bbb && ccc;
if (ddd == false)
{
_logger.Info("读取文件" + fileName + "的数据");
var DT = ExcelHelper.ReadExcelToDataTable(ExcelScan.DealWithDir + "\\" + fileName);
DataTable NewDt = removeEmpty(DT);
list_table.Add(NewDt);
}
}
_logger.Info("合并各个文件数据");
DataTable BigTable = MergeDataTables(list_table);
_logger.Info("合并件数据完成");
_logger.Info("生成 金蝶系统需要的数据 ");
var QQ = BigTable.Rows.Cast<DataRow>();
var QQ1 = QQ.GroupBy(A => A.Field<string>("项目名称"));
IdWorker idworker = IdWorker.Singleton;
using var db = new LiteDatabase(@"MyData.db");
foreach (var item in QQ1)
{
string? = item.Key;
//string currentdate = DateTime.Now.ToString("yyyyMMddHHmmssfff");
//S1123698807356395520
//S1123698807356395520
//S1123698807444475904
//string idaaaa = idworker.nextId().ToString();
//idaaaa = idaaaa.Substring(10, idaaaa.Length - 10);
// 获得 customer 集合
var col = db.GetCollection<Customer>("customers");
// 创建你的新 customer 实例
var customer = new Customer
{
Name = Guid.NewGuid().ToString(),
};
col.EnsureIndex(x => x.Name, true);
// 插入新的 customer 文档 (Id 是自增的)
col.Insert(customer);
//col.DeleteMany(A=>A.Id<=2000);
string idaaaa = customer.Id.ToString();
idaaaa = idaaaa.PadLeft(10, '0');
string = "S" + idaaaa;
Thread.Sleep(20);
string = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
foreach (var item1 in item)
{
string? = item1["产品料号"]?.ToString();
string? = item1["产品名称"]?.ToString();
string? = item1["发货数量"]?.ToString();
string? = item1["单价"]?.ToString();
string? = item1["销售"]?.ToString();
string? = item1["客户名称"]?.ToString();
//string? 单位 = item1["单位"]?.ToString();
= ?.Replace(" ", "");
DataRow dr = dt.NewRow();
dr["[表头]单据编号(*)"] = ;
dr["[表头]日期(*)"] = ;
/*dr["[表头]购货单位(*)"] = 项目名称;*/
dr["[表头]购货单位(*)"] = ;
dr["[表头][自定义]项目名称:"] = ;
dr["[表头]币别(*)"] = "人民币";
dr["[表头]汇率(*)"] = "1";
dr["[表头]结算日期(*)"] = _天;
dr["[表头]销售方式"] = "";
dr["[表头]交货方式"] = "";
dr["[表头]发货地点"] = "";
dr["[表头]收货地址"] = "";
dr["[表头]结算方式"] = "";
dr["[表头]摘要"] = "";
dr["[表头]业务员"] = ;
dr["[表头][自定义]技术员"] = "邹竟";
dr["物料代码(*)"] = ;
dr["物料名称"] = "";
dr["规格型号"] = "";
dr["单位(*)"] = "个";
dr["数量(*)"] = ;
dr["税率(%)(*)"] = "0";
dr["折扣率(%)(*)"] = "0";
dr["交货日期(*)"] = _天;
dr["辅助属性"] = "";
dr["备注"] = "";
dr["客户料号"] = "";
dr["客户商品名称"] = "";
if (!string.IsNullOrWhiteSpace())
{
dr["单价"] = ;
}
else
{
dr["单价"] = "0";
}
dt.Rows.Add(dr);
}
}
_logger.Info("生成 Excel 数据完成 ");
string FinalFileResult = string.Format("{0}\\{1}.xlsx", ExcelScan.targetDir, );
//创建新的Excel
ExcelHelper.CreateNewExcel(FinalFileResult, dt);
_logger.Info("生成 Excel 完成。Excel的名字为" + FinalFileResult);
string fileNameFFF = Path.GetFileName(FinalFileResult);
string bakDirFFF = ExcelScan.JinDieBakDir + "\\" + ;
if (!Directory.Exists(bakDirFFF))
{
Directory.CreateDirectory(bakDirFFF);
}
string bakname = bakDirFFF + "\\" + fileNameFFF;
File.Copy(FinalFileResult, bakname, true);
_logger.Info("生成 Excel 备份完成。Excel的名字为" + FinalFileResult);
foreach (var item in dealwith_files)
{
File.Delete(item);
}
string[] source_files = Directory.GetFiles(ExcelScan.sourceDir);
foreach (var item in source_files)
{
File.Delete(item);
}
}
catch (Exception ex)
{
_logger.Error("生成财务需要的数据出错:" + ex.Message);
}
}
public static void TempNewMethod(bool Is_Auto = true)
{
string _天 = DateTime.Now.ToString("yyyy/MM/dd");
string = DateTime.Now.ToString("yyyy-MM-dd");
if (Is_Auto == false)
{
= DateTime.Now.ToString("yyyy-MM-dd#HH:mm:ss:fff");
}
try
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]单据编号(*)", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]日期(*)", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]购货单位(*)", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头][自定义]项目名称:", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]币别(*)", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]汇率(*)", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]结算日期(*)", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]销售方式", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]交货方式", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]发货地点", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]收货地址", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]结算方式", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]摘要", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头]业务员", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "[表头][自定义]技术员", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "物料代码(*)", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "物料名称", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "规格型号", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "单位(*)", DataType = typeof(string), MaxLength = 225 });
dt.Columns.Add(new DataColumn() { ColumnName = "数量(*)", DataType = typeof(string) });
dt.Columns.Add(new DataColumn() { ColumnName = "税率(%)(*)", DataType = typeof(decimal) });
dt.Columns.Add(new DataColumn() { ColumnName = "折扣率(%)(*)", DataType = typeof(decimal) });
dt.Columns.Add(new DataColumn() { ColumnName = "交货日期(*)", DataType = typeof(string) });
dt.Columns.Add(new DataColumn() { ColumnName = "辅助属性", DataType = typeof(string) });
dt.Columns.Add(new DataColumn() { ColumnName = "备注", DataType = typeof(string) });
dt.Columns.Add(new DataColumn() { ColumnName = "客户料号", DataType = typeof(string) });
dt.Columns.Add(new DataColumn() { ColumnName = "客户商品名称", DataType = typeof(string) });
dt.Columns.Add(new DataColumn() { ColumnName = "单价", DataType = typeof(string) });
//获取需要处理的所有文件
string[] dealwith_files = Directory.GetFiles(ExcelScan.DealWithDir);
_logger.Info("开始读取 各个文件数据");
List<DataTable> list_table = new List<DataTable>();
foreach (var item in dealwith_files)
{
string fileName = Path.GetFileName(item);
bool bbb = fileName.StartsWith(ExcelScan.);
bool ccc = fileName.StartsWith(ExcelScan.);
bool ddd = bbb && ccc;
if (ddd == false)
{
_logger.Info("读取文件" + fileName + "的数据");
var DT = ExcelHelper.ReadExcelToDataTable(ExcelScan.DealWithDir + "\\" + fileName);
DataTable NewDt = removeEmpty(DT);
list_table.Add(NewDt);
}
}
_logger.Info("合并各个文件数据");
DataTable BigTable = MergeDataTables(list_table);
_logger.Info("合并件数据完成");
_logger.Info("生成 金蝶系统需要的数据 ");
var QQ = BigTable.Rows.Cast<DataRow>();
var QQ1 = QQ.GroupBy(A => A.Field<string>("项目名称"));
IdWorker idworker = IdWorker.Singleton;
using var db = new LiteDatabase(@"MyData.db");
foreach (var item in QQ1)
{
string? = item.Key;
//string currentdate = DateTime.Now.ToString("yyyyMMddHHmmssfff");
//S1123698807356395520
//S1123698807356395520
//S1123698807444475904
//string idaaaa = idworker.nextId().ToString();
//idaaaa = idaaaa.Substring(10, idaaaa.Length - 10);
// 获得 customer 集合
var col = db.GetCollection<Customer>("customers");
// 创建你的新 customer 实例
var customer = new Customer
{
Name = Guid.NewGuid().ToString(),
};
col.EnsureIndex(x => x.Name, true);
// 插入新的 customer 文档 (Id 是自增的)
col.Insert(customer);
//col.DeleteMany(A=>A.Id<=2000);
string idaaaa = customer.Id.ToString();
idaaaa = idaaaa.PadLeft(10, '0');
string = "S" + idaaaa;
Thread.Sleep(20);
string = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
foreach (var item1 in item)
{
string? = item1["产品料号"]?.ToString();
string? = item1["产品名称"]?.ToString();
string? = item1["发货数量"]?.ToString();
string? = item1["单价"]?.ToString();
string? = item1["销售"]?.ToString();
string? = item1["客户名称"]?.ToString();
//string? 单位 = item1["单位"]?.ToString();
= ?.Replace(" ", "");
DataRow dr = dt.NewRow();
dr["[表头]单据编号(*)"] = ;
dr["[表头]日期(*)"] = ;
/*dr["[表头]购货单位(*)"] = 项目名称;*/
dr["[表头]购货单位(*)"] = ;
dr["[表头][自定义]项目名称:"] = ;
dr["[表头]币别(*)"] = "人民币";
dr["[表头]汇率(*)"] = "1";
dr["[表头]结算日期(*)"] = _天;
dr["[表头]销售方式"] = "";
dr["[表头]交货方式"] = "";
dr["[表头]发货地点"] = "";
dr["[表头]收货地址"] = "";
dr["[表头]结算方式"] = "";
dr["[表头]摘要"] = "";
dr["[表头]业务员"] = ;
dr["[表头][自定义]技术员"] = "邹竟";
dr["物料代码(*)"] = ;
dr["物料名称"] = "";
dr["规格型号"] = "";
dr["单位(*)"] = "个";
dr["数量(*)"] = ;
dr["税率(%)(*)"] = "0";
dr["折扣率(%)(*)"] = "0";
dr["交货日期(*)"] = _天;
dr["辅助属性"] = "";
dr["备注"] = "";
dr["客户料号"] = "";
dr["客户商品名称"] = "";
if (!string.IsNullOrWhiteSpace())
{
dr["单价"] = ;
}
else
{
dr["单价"] = "0";
}
dt.Rows.Add(dr);
}
}
_logger.Info("生成 Excel 数据完成 ");
string namesss = + "-" + DateTime.Now.ToString("mmss");
string FinalFileResult = string.Format("{0}\\{1}.xlsx", ExcelScan.targetDir, namesss);
//创建新的Excel
ExcelHelper.CreateNewExcel(FinalFileResult, dt);
_logger.Info("生成 Excel 完成。Excel的名字为" + FinalFileResult);
string fileNameFFF = Path.GetFileName(FinalFileResult);
string bakDirFFF = ExcelScan.JinDieBakDir + "\\" + ;
if (!Directory.Exists(bakDirFFF))
{
Directory.CreateDirectory(bakDirFFF);
}
string bakname = bakDirFFF + "\\" + fileNameFFF;
File.Copy(FinalFileResult, bakname, true);
_logger.Info("生成 Excel 备份完成。Excel的名字为" + FinalFileResult);
foreach (var item in dealwith_files)
{
File.Delete(item);
}
string[] source_files = Directory.GetFiles(ExcelScan.sourceDir);
foreach (var item in source_files)
{
File.Delete(item);
}
}
catch (Exception ex)
{
_logger.Error("生成财务需要的数据出错:" + ex.Message);
}
}
protected static DataTable removeEmpty(DataTable dt)
{
List<DataRow> rows = new List<DataRow>();
for (int i = 0; i < dt.Rows.Count; i++)
{
string sss = dt.Rows[i]["项目名称"].ToString();
if (string.IsNullOrWhiteSpace(sss))
{
rows.Add(dt.Rows[i]);
}
}
foreach (DataRow row in rows)
{
dt.Rows.Remove(row);
}
return dt;
}
public static DataTable MergeDataTables(List<DataTable> tables)
{
if (tables == null || tables.Count == 0)
return new DataTable();
DataTable mergedTable = tables[0].Clone();
foreach (DataTable table in tables)
{
if (table != null)
{
mergedTable.Merge(table);
}
}
return mergedTable;
}
public Task Execute(IJobExecutionContext context)
{
ExcelDealWith();
return Task.CompletedTask;
}
}
}

View File

@@ -0,0 +1,19 @@

namespace BLW_Log.services
{
public class MyTimer : IHostedService
{
public Task StartAsync(CancellationToken cancellationToken)
{
throw new NotImplementedException();
}
public Task StopAsync(CancellationToken cancellationToken)
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,53 @@
using System.Collections.Concurrent;
using BLW_Log.Models;
using Common;
using Commonlib;
using DAL.PGModels;
using Microsoft.Extensions.Caching.Memory;
using Newtonsoft.Json;
using static BLW_Log.Controllers.LowerMachineLogController;
namespace BLW_Log.services
{
public record N
{
public string DeviceName { get; set; }
public string DeviceType { get; set; }
public string Address { get; set; }
public ushort Status { get; set; }
}
public class TaskQueue
{
public readonly ConcurrentQueue<string> _tasks = new ConcurrentQueue<string>();
private readonly SemaphoreSlim _signal = new(0);
public void EnqueueTask(string task)
{
_tasks.Enqueue(task);
_signal.Release();
}
public async Task<string> DequeueAsync()
{
await _signal.WaitAsync();
_tasks.TryDequeue(out var task);
return task!;
}
}
public class BackgroundTaskService : BackgroundService
{
private readonly TaskQueue _queue;
public readonly IMemoryCache _memoryCache;
public BackgroundTaskService(TaskQueue queue, IMemoryCache cache)
{
this._queue = queue;
this._memoryCache = cache;
}
async protected override Task ExecuteAsync(CancellationToken ct)
{
await Task.CompletedTask;
}
}
}