导入工单

This commit is contained in:
qianhao.xu 2024-07-17 14:02:54 +08:00
parent 49d0af2cf7
commit cab818ef5b
4 changed files with 167 additions and 44 deletions

View File

@ -177,7 +177,7 @@ namespace DOAN.Admin.WebApi.Controllers
/// 导入
/// </summary>
/// <param name="formFile">使用IFromFile必须使用name属性否则获取不到文件</param>
/// <returns>导入成功数</returns>
/// <returns>导入成功数 若-1 则excel读取异常</returns>
[HttpPost("importData")]
[Log(Title = "生产工单导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false, IsSaveResponseData = true)]

View File

@ -17,7 +17,15 @@ namespace DOAN.Repository
/// <typeparam name="T"></typeparam>
public class BaseRepository<T> : SimpleClient<T> where T : class, new()
{
public string XueHua=SnowFlakeSingle.Instance.NextId().ToString();
public string XueHua
{
get
{
return SnowFlakeSingle.Instance.NextId().ToString();
}
}
public ITenant itenant = null;//多租户事务
public BaseRepository(ISqlSugarClient context = null) : base(context)
{

View File

@ -24,6 +24,7 @@ using NPOI.XWPF.UserModel;
using NPOI.HSSF.UserModel;
using Microsoft.AspNetCore.Components.Forms;
using System.Globalization;
using System.ComponentModel;
namespace DOAN.Service.MES.product
{
@ -185,6 +186,7 @@ namespace DOAN.Service.MES.product
.SetColumns(it => new ProWorkorder() { Sort = it.Sort + 10 })
.ExecuteCommand();
proWorkorder.Sort = sortNum;
proWorkorder.Status = 1;
Context.Insertable(proWorkorder).ExecuteCommand();
@ -252,7 +254,7 @@ namespace DOAN.Service.MES.product
/// </summary>
/// <param name="formFile"></param>
/// <returns></returns>
public int ImportData(IFormFile formFile,string username)
public int ImportData2(IFormFile formFile, string username)
{
int result = 0;
List<ProWorkorder> workorderList = new();
@ -260,36 +262,24 @@ namespace DOAN.Service.MES.product
using (var stream = formFile.OpenReadStream())
{
IWorkbook workbook = new XSSFWorkbook(stream);
ISheet sheet = workbook.GetSheetAt(1);
ISheet sheet = workbook.GetSheetAt(0);
// 处理第2行 获取日期
IRow secondRow = sheet.GetRow(1);
NPOI.SS.UserModel.ICell cell = secondRow.GetCell(0);
if (cell.CellType == CellType.Numeric) // 检查单元格是否为数字类型
{
if (HSSFDateUtil.IsCellDateFormatted(cell)) // 判断是否为日期格式
{
// 将单元格的数字值转换为DateTime
dateValue = cell.DateCellValue.Value;
}
}
else if (cell.CellType == CellType.String)
{
// 处理字符串类型的日期,如果有的话
string textValue = cell.StringCellValue;
if (DateTime.TryParse(textValue, out DateTime parsedDate))
{
dateValue = parsedDate;
// 将单元格的数字值转换为DateTime
dateValue = cell.DateCellValue.Value;
}
}
// 遍历每一行
for (int row = 2; row <= sheet.LastRowNum; row++)
for (int row = 3; row <= sheet.LastRowNum; row++)
{
IRow currentRow = sheet.GetRow(row);
if (currentRow != null) // 确保行不为空
@ -333,50 +323,175 @@ namespace DOAN.Service.MES.product
}
}
List<ProWorkorder> updates = new();
List<ProWorkorder> inserts = new();
if (workorderList.Count > 0&& dateValue> DateTime.MinValue)
try
{
List<ProWorkorder> Exists= Context.Queryable<ProWorkorder>().Where(it => it.WorkorderDate == dateValue).Where(it=>it.Status==0).ToList();
foreach (ProWorkorder item in Exists)
if (workorderList.Count > 0 && dateValue > DateTime.MinValue)
{
List<ProWorkorder> Exists = Context.Queryable<ProWorkorder>().Where(it => it.WorkorderDate == dateValue).Where(it => it.Status == 0).ToList();
foreach (ProWorkorder item2 in workorderList)
{
if(item.ProductionCode==item2.ProductionCode)
int index = 0;
foreach (ProWorkorder item in Exists)
{
if (item.ProductionCode == item2.ProductionCode)
{
item2.Id = item.Id;
item2.UpdatedBy = username;
item2.UpdatedTime = DateTime.Now;
item2.WorkorderDate = dateValue;
item2.Year = dateValue.Year;
CultureInfo culture = CultureInfo.CurrentCulture;
item2.Week = culture.Calendar.GetWeekOfYear(dateValue, culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek);
item2.Date = (int)dateValue.DayOfWeek;
updates.Add(item2);
index++;
}
continue;
}
if (index == 0)
{
item2.Id = XueHua;
item2.CreatedBy = username;
item2.CreatedTime = DateTime.Now;
item2.WorkorderDate = dateValue;
item.Status = 0;
item.Year = dateValue.Year;
item2.Status = 1;
item2.Year = dateValue.Year;
CultureInfo culture = CultureInfo.CurrentCulture;
item.Week = culture.Calendar.GetWeekOfYear(dateValue, culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek);
item.Date =(int) dateValue.DayOfWeek;
item2.Week = culture.Calendar.GetWeekOfYear(dateValue, culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek);
item2.Date = (int)dateValue.DayOfWeek;
inserts.Add(item2);
}
}
}
if (inserts.Count > 0 || updates.Count > 0)
{
UseTran2(() =>
{
//string[] codes = inserts.Select(it => it.ProductionCode).ToArray();
//Context.Deleteable<ProWorkorder>().Where(it => it.WorkorderDate == dateValue)
//.Where(it => it.Status == 0).Where(it => codes.Contains(it.ProductionCode))
//.ExecuteCommand();
result += Context.Insertable(inserts).ExecuteCommand();
result += Context.Updateable(updates).IgnoreColumns(true).ExecuteCommand();
});
}
}
catch (Exception ex)
{
result = -1;
}
if (inserts.Count > 0) {
UseTran2(() =>
return result;
}
/// <summary>
/// 导入工单 必须整删除 整改
/// </summary>
/// <param name="formFile"></param>
/// <returns></returns>
public int ImportData(IFormFile formFile, string username)
{
int result = 0;
List<ProWorkorder> workorderList = new();
DateTime dateValue = DateTime.MinValue;
using (var stream = formFile.OpenReadStream())
{
IWorkbook workbook = new XSSFWorkbook(stream);
ISheet sheet = workbook.GetSheetAt(0);
// 处理第2行 获取日期
IRow secondRow = sheet.GetRow(1);
NPOI.SS.UserModel.ICell cell = secondRow.GetCell(0);
// 将单元格的数字值转换为DateTime
dateValue = cell.DateCellValue.Value;
// 遍历每一行
for (int row = 3; row <= sheet.LastRowNum; row++)
{
string[] codes= inserts.Select(it => it.ProductionCode).ToArray();
Context.Deleteable<ProWorkorder>().Where(it => it.WorkorderDate == dateValue)
.Where(it => it.Status == 0).Where(it => codes.Contains(it.ProductionCode))
.ExecuteCommand();
result= Context.Insertable(inserts).ExecuteCommand();
IRow currentRow = sheet.GetRow(row);
if (currentRow != null) // 确保行不为空
{
ProWorkorder workorder = new ProWorkorder();
NPOI.SS.UserModel.ICell currentCell_01 = currentRow.GetCell(0);
workorder.ProductionCode = currentCell_01.ToString();
NPOI.SS.UserModel.ICell currentCell_02 = currentRow.GetCell(1);
workorder.ProductionName = currentCell_02.ToString();
NPOI.SS.UserModel.ICell currentCell_03 = currentRow.GetCell(2);
workorder.CustomCode = currentCell_03.ToString();
NPOI.SS.UserModel.ICell currentCell_04 = currentRow.GetCell(3);
workorder.Unit = currentCell_04.ToString();
NPOI.SS.UserModel.ICell currentCell_05 = currentRow.GetCell(4);
workorder.DeliveryNum = (int)currentCell_05.NumericCellValue;
});
NPOI.SS.UserModel.ICell currentCell_06 = currentRow.GetCell(5);
workorder.PackageNum = (int)currentCell_06.NumericCellValue;
NPOI.SS.UserModel.ICell currentCell_07 = currentRow.GetCell(6);
workorder.GroupId = (int)currentCell_07.NumericCellValue;
NPOI.SS.UserModel.ICell currentCell_08 = currentRow.GetCell(7);
workorder.LineId = (int)currentCell_08.NumericCellValue;
NPOI.SS.UserModel.ICell currentCell_09 = currentRow.GetCell(8);
workorder.Remark = currentCell_09.StringCellValue;
workorder.Id = XueHua;
workorder.CreatedBy = username;
workorder.CreatedTime = DateTime.Now;
workorder.WorkorderDate = dateValue;
workorder.Status = 1;
workorder.Year = dateValue.Year;
CultureInfo culture = CultureInfo.CurrentCulture;
workorder.Week = culture.Calendar.GetWeekOfYear(dateValue, culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek);
workorder.Date = (int)dateValue.DayOfWeek;
workorderList.Add(workorder);
}
}
}
UseTran2(() =>
{
Context.Deleteable<ProWorkorder>().Where(it => it.WorkorderDate == dateValue).ExecuteCommand();
result = Context.Insertable(workorderList).ExecuteCommand();
});
return result;
}