|
@@ -12,6 +12,9 @@ using ZR.Admin.WebApi.Filters;
|
|
|
using ZR.Common;
|
|
|
using ZR.Service.Business.IBusinessService.OutStore;
|
|
|
using ZR.Model.Dto.OutStore;
|
|
|
+using System.Data;
|
|
|
+using ZR.Model.Dto.Inspect;
|
|
|
+using ZR.Model.Models.Inspect;
|
|
|
|
|
|
namespace ZR.Admin.WebApi.Controllers.OutStore
|
|
|
{
|
|
@@ -145,5 +148,106 @@ namespace ZR.Admin.WebApi.Controllers.OutStore
|
|
|
|
|
|
return ToResponse(response);
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 导入
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="formFile">使用IFromFile必须使用name属性否则获取不到文件</param>
|
|
|
+ /// <param name="category"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("OutTaskImportData")]
|
|
|
+ [Log(Title = "出库任务单导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false, IsSaveResponseData = false)]
|
|
|
+ [ActionPermissionFilter(Permission = "business:sapouttaskrecord:import")]
|
|
|
+ public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile)
|
|
|
+ {
|
|
|
+ DataSet dataSet = ExcelReader.ReadExcel(formFile);
|
|
|
+
|
|
|
+ if (dataSet == null)
|
|
|
+ {
|
|
|
+ return SUCCESS("导入失败。<br/><br/>导入错误。文件不是xls文件也不是xlsx文件。");
|
|
|
+ }
|
|
|
+ //简单验证表格式
|
|
|
+ if (!dataSet.Tables[0].Rows[0][1].ToString().Contains("领料单号"))
|
|
|
+ {
|
|
|
+ return SUCCESS($"导入失败。<br/>请确认文件无误。");
|
|
|
+ }
|
|
|
+ //通过领料单号,验证是否已存在出库任务单
|
|
|
+ string checkOutTaskNo = dataSet.Tables[0].Rows[1][1].ToString().Trim();
|
|
|
+ if (string.IsNullOrEmpty(checkOutTaskNo))
|
|
|
+ {
|
|
|
+ return SUCCESS($"导入失败。<br/>B列出库任务单号有误。");
|
|
|
+ }
|
|
|
+ var response = _SapOutTaskRecordService.GetList(
|
|
|
+ new SapOutTaskRecordQueryDto { OutTaskNo = checkOutTaskNo });
|
|
|
+ if (response.Result.Count > 0)
|
|
|
+ {
|
|
|
+ return SUCCESS($"导入失败。<br/><br/>导入出库任务单【{checkOutTaskNo}】已存在。");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<SapOutTaskRecord> sapOutTaskRecords = new();
|
|
|
+ //实例化交验单表对象
|
|
|
+ for (int i = 1; i < dataSet.Tables[0].Rows.Count; i++)
|
|
|
+ //去除第一行标题行
|
|
|
+ {
|
|
|
+ //row中空单元格会转化为空字符串而不是null
|
|
|
+ SapOutTaskRecord sapOutTaskRecord = new();
|
|
|
+ if (string.IsNullOrEmpty(dataSet.Tables[0].Rows[i][1].ToString().Trim()))
|
|
|
+ {
|
|
|
+ return SUCCESS($"导入失败。<br/><br/>{i + 1}行B列,领料单号有误。");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ sapOutTaskRecord.OutTaskNo = dataSet.Tables[0].Rows[i][1].ToString().Trim();//*
|
|
|
+ if (string.IsNullOrEmpty(dataSet.Tables[0].Rows[i][9]!.ToString().Trim()))
|
|
|
+ {
|
|
|
+ return SUCCESS($"导入失败。<br/><br/>{i + 1}行J列,WBS元素有误。");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ sapOutTaskRecord.BomNo = dataSet.Tables[0].Rows[i][9].ToString().Trim();//*
|
|
|
+
|
|
|
+ sapOutTaskRecord.Category = "";//暂时没用,给个空字符串
|
|
|
+
|
|
|
+ if (string.IsNullOrEmpty(dataSet.Tables[0].Rows[i][7].ToString().Trim()))
|
|
|
+ {
|
|
|
+ return SUCCESS($"导入失败。<br/><br/>{i + 1}行H列,物料编码有误。");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ sapOutTaskRecord.MaterialCode = dataSet.Tables[0].Rows[i][7].ToString().Trim();//*
|
|
|
+
|
|
|
+ if (string.IsNullOrEmpty(dataSet.Tables[0].Rows[i][20].ToString().Trim()))
|
|
|
+ {
|
|
|
+ return SUCCESS($"导入失败。<br/><br/>{i + 1}行U列,物料名称有误。");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ sapOutTaskRecord.MaterialName = dataSet.Tables[0].Rows[i][20].ToString().Trim();//*
|
|
|
+ if (string.IsNullOrEmpty(dataSet.Tables[0].Rows[i][19].ToString().Trim()))
|
|
|
+ {
|
|
|
+ return SUCCESS($"导入失败。<br/><br/>{i + 1}行T列,规格型号/图号有误。");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ sapOutTaskRecord.MaterialSpec = dataSet.Tables[0].Rows[i][19].ToString().Trim();//*
|
|
|
+
|
|
|
+ sapOutTaskRecord.Unit= dataSet.Tables[0].Rows[i][11].ToString().Trim();
|
|
|
+
|
|
|
+ if (string.IsNullOrEmpty(dataSet.Tables[0].Rows[i][12].ToString().Trim()))
|
|
|
+ {
|
|
|
+ return SUCCESS($"导入失败。<br/><br/>{i + 1}行M列,物料数量有误。");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ sapOutTaskRecord.Qty = Convert.ToInt32(dataSet.Tables[0].Rows[i][12]);//*
|
|
|
+
|
|
|
+ sapOutTaskRecord.CreateBy = HttpContext.GetName();
|
|
|
+ sapOutTaskRecord.CreateTime = DateTime.Now;
|
|
|
+ sapOutTaskRecord.Remark = "导入数据";
|
|
|
+ sapOutTaskRecords.Add(sapOutTaskRecord);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ string msg = _SapOutTaskRecordService.ImportDatas(sapOutTaskRecords);
|
|
|
+
|
|
|
+ //TODO 业务逻辑,自行插入数据到db
|
|
|
+ return SUCCESS("交验单导入成功!");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
}
|