导入导出
This commit is contained in:
35
.vscode/launch.json
vendored
Normal file
35
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
// 使用 IntelliSense 找出 C# 调试存在哪些属性
|
||||
// 将悬停用于现有属性的说明
|
||||
// 有关详细信息,请访问 https://github.com/dotnet/vscode-csharp/blob/main/debugger-launchjson.md。
|
||||
"name": ".NET Core Launch (web)",
|
||||
"type": "coreclr",
|
||||
"request": "launch",
|
||||
"preLaunchTask": "build",
|
||||
// 如果已更改目标框架,请确保更新程序路径。
|
||||
"program": "${workspaceFolder}/DOAN.Admin.WebApi/bin/Debug/net8.0/DOAN.Admin.WebApi.dll",
|
||||
"args": [],
|
||||
"cwd": "${workspaceFolder}/DOAN.Admin.WebApi",
|
||||
"stopAtEntry": false,
|
||||
// 启用在启动 ASP.NET Core 时启动 Web 浏览器。有关详细信息: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser
|
||||
"serverReadyAction": {
|
||||
"action": "openExternally",
|
||||
"pattern": "\\bNow listening on:\\s+(https?://\\S+)"
|
||||
},
|
||||
"env": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
},
|
||||
"sourceFileMap": {
|
||||
"/Views": "${workspaceFolder}/Views"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": ".NET Core Attach",
|
||||
"type": "coreclr",
|
||||
"request": "attach"
|
||||
}
|
||||
]
|
||||
}
|
||||
41
.vscode/tasks.json
vendored
Normal file
41
.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "build",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"build",
|
||||
"${workspaceFolder}/DOAN.Admin.WebApi/DOAN.Admin.WebApi.csproj",
|
||||
"/property:GenerateFullPaths=true",
|
||||
"/consoleloggerparameters:NoSummary;ForceNoAlign"
|
||||
],
|
||||
"problemMatcher": "$msCompile"
|
||||
},
|
||||
{
|
||||
"label": "publish",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"publish",
|
||||
"${workspaceFolder}/DOAN.Admin.WebApi/DOAN.Admin.WebApi.csproj",
|
||||
"/property:GenerateFullPaths=true",
|
||||
"/consoleloggerparameters:NoSummary;ForceNoAlign"
|
||||
],
|
||||
"problemMatcher": "$msCompile"
|
||||
},
|
||||
{
|
||||
"label": "watch",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"watch",
|
||||
"run",
|
||||
"--project",
|
||||
"${workspaceFolder}/DOAN.Admin.WebApi/DOAN.Admin.WebApi.csproj"
|
||||
],
|
||||
"problemMatcher": "$msCompile"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -138,7 +138,7 @@ namespace DOAN.Admin.WebApi.Controllers.BZFM
|
||||
{
|
||||
return SUCCESS(null);
|
||||
}
|
||||
int response = _MmMaterialService.Importmaterial(formFile, HttpContext.GetName());
|
||||
ImportResultDto response = _MmMaterialService.Importmaterial(formFile, HttpContext.GetName());
|
||||
|
||||
return SUCCESS(response);
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace DOAN.Service.BZFM.IBZFMService
|
||||
/// </summary>
|
||||
/// <param name="material"></param>
|
||||
/// <returns></returns>
|
||||
int Importmaterial(IFormFile formFile, string username);
|
||||
ImportResultDto Importmaterial(IFormFile formFile, string username);
|
||||
|
||||
public PagedInfo<MmMaterialExcelDto> SelectMaterialList(MmMaterialQueryDto material, PagerInfo pager);
|
||||
|
||||
|
||||
@@ -147,14 +147,7 @@ namespace DOAN.Service.BZFM
|
||||
{
|
||||
|
||||
// TODO 1.构建空的待导入数据集合MmMaterialExcelDto,多余部分删除
|
||||
int result = 0;
|
||||
List<ProWorkorder> materialList = new();
|
||||
DateTime dateValue = DateTime.MinValue;
|
||||
// 获取 产品代号
|
||||
List<MmMaterialExcelDto> ProductCodeList = Context
|
||||
.Queryable<MmMaterialExcelDto>()
|
||||
.Where(it => it.Type == "type")
|
||||
.ToList();
|
||||
List<MmMaterialExcelDto> materialList = new();
|
||||
// TODO 2.使用NPOI读取Excel内容,填充到MmMaterialExcelDto集合中,注意列的对应关系,id不要忘,且跳过标题行,目前需要从第2行开始读取注意修改row
|
||||
using (var stream = formFile.OpenReadStream())
|
||||
{
|
||||
@@ -167,8 +160,6 @@ namespace DOAN.Service.BZFM
|
||||
IRow secondRow = sheet.GetRow(1);
|
||||
NPOI.SS.UserModel.ICell cell = secondRow.GetCell(0);
|
||||
|
||||
// 将单元格的数字值转换为DateTime
|
||||
dateValue = cell.DateCellValue.Value;
|
||||
#region 读取excel
|
||||
|
||||
// 遍历每一行
|
||||
@@ -179,6 +170,10 @@ namespace DOAN.Service.BZFM
|
||||
{
|
||||
MmMaterial material = new MmMaterial();
|
||||
|
||||
//00 ID
|
||||
NPOI.SS.UserModel.ICell currentCell_00 = currentRow.GetCell(0);
|
||||
material.Id = (int)currentCell_00?.NumericCellValue;
|
||||
|
||||
//01 物料标号
|
||||
NPOI.SS.UserModel.ICell currentCell_01 = currentRow.GetCell(1);
|
||||
material.Type = currentCell_01?.ToString();
|
||||
@@ -295,7 +290,7 @@ namespace DOAN.Service.BZFM
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//return -1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@@ -303,7 +298,7 @@ namespace DOAN.Service.BZFM
|
||||
// TODO 3.调用SplitInsert方法实现导入操作,注意主键列的配置(建议优化为,ID相同则修改,不同则新增)
|
||||
|
||||
var x = Context
|
||||
.Storageable(material)
|
||||
.Storageable(materialList)
|
||||
.SplitInsert(it => !it.Any())
|
||||
.WhereColumns(it => new { it.Id, it.MaterialCode }) //如果不是主键可以这样实现(多字段it=>new{it.x1,it.x2})
|
||||
.ToStorage();
|
||||
|
||||
Reference in New Issue
Block a user