导入工单
This commit is contained in:
parent
49d0af2cf7
commit
cab818ef5b
@ -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)]
|
||||
|
||||
|
||||
Binary file not shown.
@ -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)
|
||||
{
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user