Explorar o código

完成交验单和关键件清单导入功能

zhaoyaxiong %!s(int64=2) %!d(string=hai) anos
pai
achega
e87d51e3e7
Modificáronse 54 ficheiros con 428 adicións e 5 borrados
  1. 57 0
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/Controllers/SapBomRecordController.cs
  2. 80 0
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/Controllers/SapDeliverRecordController.cs
  3. 75 0
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/ZRModel.xml
  4. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/字典04-11-104803.xlsx
  5. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/字典04-19-170101.xlsx
  6. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/字典04-20-093538.xlsx
  7. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/岗位列表04-19-171728.xlsx
  8. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/岗位列表04-20-094215.xlsx
  9. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库位04-24-151105.xlsx
  10. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库位04-24-151152.xlsx
  11. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库位04-24-153805.xlsx
  12. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库位04-25-150753.xlsx
  13. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库位05-15-161625.xlsx
  14. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-162032.xlsx
  15. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-163751.xlsx
  16. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-164549.xlsx
  17. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-164600.xlsx
  18. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-164803.xlsx
  19. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-164935.xlsx
  20. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-165043.xlsx
  21. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-165452.xlsx
  22. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-165500.xlsx
  23. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-170204.xlsx
  24. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-170425.xlsx
  25. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-170509.xlsx
  26. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-170536.xlsx
  27. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-171504.xlsx
  28. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-171829.xlsx
  29. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-172004.xlsx
  30. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-172108.xlsx
  31. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-091624.xlsx
  32. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-091640.xlsx
  33. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-091740.xlsx
  34. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-092734.xlsx
  35. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-092742.xlsx
  36. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-093136.xlsx
  37. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-093209.xlsx
  38. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-095403.xlsx
  39. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-095411.xlsx
  40. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-095424.xlsx
  41. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-102502.xlsx
  42. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-102525.xlsx
  43. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-102618.xlsx
  44. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-102643.xlsx
  45. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/importTemplate/交验单模板.xlsx
  46. BIN=BIN
      ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/importTemplate/库位列表模板.xlsx
  47. 15 0
      ZrAdminNetCore-net7.0/ZR.Model/Dto/SapBomRecordDto.cs
  48. 17 0
      ZrAdminNetCore-net7.0/ZR.Model/Dto/SapDeliverRecordDto.cs
  49. 86 0
      ZrAdminNetCore-net7.0/ZR.Model/Models/SapDeliverRecord.cs
  50. 0 4
      ZrAdminNetCore-net7.0/ZR.Service/Business/BasBinService.cs
  51. 1 0
      ZrAdminNetCore-net7.0/ZR.Service/Business/IBusinessService/ISapBomRecordService.cs
  52. 7 0
      ZrAdminNetCore-net7.0/ZR.Service/Business/IBusinessService/ISapDeliverRecordService.cs
  53. 45 1
      ZrAdminNetCore-net7.0/ZR.Service/Business/SapBomRecordService.cs
  54. 45 0
      ZrAdminNetCore-net7.0/ZR.Service/Business/SapDeliverRecordService.cs

+ 57 - 0
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/Controllers/SapBomRecordController.cs

@@ -10,6 +10,8 @@ using ZR.Service.Business.IBusinessService;
 using ZR.Admin.WebApi.Extensions;
 using ZR.Admin.WebApi.Filters;
 using ZR.Common;
+using MiniExcelLibs;
+using ZR.Service.Business;
 
 namespace ZR.Admin.WebApi.Controllers
 {
@@ -119,7 +121,62 @@ namespace ZR.Admin.WebApi.Controllers
             return ToResponse(response);
         }
 
+        /// <summary>
+        /// 导入
+        /// </summary>
+        /// <param name="formFile">使用IFromFile必须使用name属性否则获取不到文件</param>
+        /// <returns></returns>
+        [HttpPost("importData")]
+        [Log(Title = "关键件导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false, IsSaveResponseData = false)]
+        [ActionPermissionFilter(Permission = "business:sapbomrecord:import")]
+        public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile)
+        {
+            List<dynamic>? list = new();
+            //读取上传文件内容。
+            using (var stream = formFile.OpenReadStream())
+            {
+                list = stream.Query().ToList();
+            }
+            string bomNo = list[2].H;
+            if (string.IsNullOrEmpty(bomNo))
+            {
+                return SUCCESS("未找到生产令号,导入文件格式错误");
+            }
+            string equipmentName = list[2].D;
+            string makeBy = list[3].D;
+            DateTime makeTime = list[3].H;
+            List<SapBomRecord> sapBomRecords = new();
+            for (int i = 5; i < list.Count; i++)
+            {
+                if (string.IsNullOrEmpty($"{list[i].B}"))
+                {
+                    break;//序号一列出现空,即表单内容结束
+                }
+                SapBomRecord sapBomRecord = new()
+                {
+                    BomNo = bomNo,
+                    EquipmentName = equipmentName,
+                    MakeBy = makeBy,
+                    MakeTime = makeTime,
+                    Category = list[i].C,
+                    MaterialCode = list[i].D,
+                    MaterialName = list[i].E,
+                    MaterialSpec = list[i].F,
+                    KeyFlag = (i % 2) > 0,//非空 模拟数据
+                    Qty = Convert.ToInt32(list[i].H),
+                    Result = 99,//非空 模拟数据
+
+                    CreateBy = HttpContext.GetName(),
+                    CreateTime = DateTime.Now,
+                    Remark = "导入数据"
+                };
+                sapBomRecords.Add(sapBomRecord);
+            }
+            string msg = _SapBomRecordService.ImportDatas(sapBomRecords);
 
+            //TODO 业务逻辑,自行插入数据到db
+            return SUCCESS(list);
+        }
 
     }
 }

+ 80 - 0
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/Controllers/SapDeliverRecordController.cs

@@ -10,6 +10,9 @@ using ZR.Service.Business.IBusinessService;
 using ZR.Admin.WebApi.Extensions;
 using ZR.Admin.WebApi.Filters;
 using ZR.Common;
+using Microsoft.AspNetCore.Authorization;
+using MiniExcelLibs;
+using ZR.Service.Business;
 
 namespace ZR.Admin.WebApi.Controllers
 {
@@ -119,7 +122,84 @@ namespace ZR.Admin.WebApi.Controllers
             return ToResponse(response);
         }
 
+        /// <summary>
+        /// 导入
+        /// </summary>
+        /// <param name="formFile">使用IFromFile必须使用name属性否则获取不到文件</param>
+        /// <returns></returns>
+        [HttpPost("importData")]
+        [Log(Title = "交验单导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false, IsSaveResponseData = false)]
+        [ActionPermissionFilter(Permission = "business:sapdeliverrecord:import")]
+        public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile)
+        {
+            List<dynamic>? list = new();
+            //读取上传文件内容。
+            using (var stream = formFile.OpenReadStream())
+            {
+                //list = stream.Query<SapDeliverRecord>(startCell:"A6").ToList();
+                list = stream.Query().ToList();
 
+                //var test= stream.Query(sheetName:"sheet1");
+            }
+            string deliverNo = list[2].M;
+            if (string.IsNullOrEmpty(deliverNo))
+            {
+                return SUCCESS("未找到交验单编号,导入文件格式错误");
+            }
+            deliverNo = deliverNo.Replace("编号", "").Replace(":", "").Replace(":", "");
+            string checkName = list[3].A;
+            checkName = string.IsNullOrEmpty(checkName) ? "" : checkName.Replace("送检人员", "").Replace(":", "").Replace(":", "");
+            List<SapDeliverRecord> sapDeliverRecords = new();
+            for (int i = 6; i < list.Count; i++)
+            {
+                if (string.IsNullOrEmpty($"{list[i].A}"))
+                {
+                    break;//序号一列出现空,即交验单内容结束
+                }
+                SapDeliverRecord sapDeliverRecord = new()
+                {
+                    DeliverNo = deliverNo,
+                    CheckName = checkName,
+                    BomNo = list[i].B,
+                    RowNo = Convert.ToInt32(list[i].D),
+                    MaterialCode = $"MAT{list[i].F}",//非空 模拟数据
+                    MaterialName = list[i].E,
+                    MaterialSpec = list[i].F,
+                    Category = (i % 2) > 0 ? "外协件" : "外购件",//非空 模拟数据
+                    KeyFlag = (i % 2) > 0,//非空 模拟数据
+                    Qty = Convert.ToInt32(list[i].H),
+                    SpotCheckQty = Convert.ToInt32(list[i].I),
+                    CheckQty = Convert.ToInt32(list[i].M),
+                    CheckResult = "OK",//非空 模拟数据
+                    InstoreResult = 99,//非空 模拟数据
+
+                    CreateBy=HttpContext.GetName(),
+                    CreateTime = DateTime.Now,
+                    Remark = "导入数据"
+                };
+                sapDeliverRecords.Add(sapDeliverRecord);
+            }
+            string msg = _SapDeliverRecordService.ImportDatas(sapDeliverRecords);
+
+            //TODO 业务逻辑,自行插入数据到db
+            return SUCCESS(list);
+        }
+
+        /// <summary>
+        /// 用户导入模板下载  //这里是根据对象字段自动生成的模板,不符合实际使用需要。
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("importTemplate")]
+        [Log(Title = "交验单模板", BusinessType = BusinessType.EXPORT, IsSaveRequestData = false, IsSaveResponseData = false)]
+        [AllowAnonymous]
+        public IActionResult ImportTemplateExcel()
+        {
+            List<SapDeliverRecordImportTemplete> list = new();
+            MemoryStream stream = new();
+
+            var fileInfo = DownloadImportTemplate(list, stream, "交验单");
+            return ExportExcel(fileInfo.Item1, fileInfo.Item2);
+        }
 
     }
 }

+ 75 - 0
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/ZRModel.xml

@@ -879,6 +879,81 @@
             入库结果(0未入库,99入库完成) 
             </summary>
         </member>
+        <member name="P:ZR.Model.Models.SapDeliverRecordImportTemplete.DeliverNo">
+            <summary>
+            交验单号 
+            </summary>
+        </member>
+        <member name="P:ZR.Model.Models.SapDeliverRecordImportTemplete.CheckName">
+            <summary>
+            送检人员 
+            </summary>
+        </member>
+        <member name="P:ZR.Model.Models.SapDeliverRecordImportTemplete.BomNo">
+            <summary>
+            生产令号 
+            </summary>
+        </member>
+        <member name="P:ZR.Model.Models.SapDeliverRecordImportTemplete.RowNo">
+            <summary>
+            行项目 
+            </summary>
+        </member>
+        <member name="P:ZR.Model.Models.SapDeliverRecordImportTemplete.Category">
+            <summary>
+            物料类型(外协件,外购件) 
+            </summary>
+        </member>
+        <member name="P:ZR.Model.Models.SapDeliverRecordImportTemplete.MaterialCode">
+            <summary>
+            物料编码 
+            </summary>
+        </member>
+        <member name="P:ZR.Model.Models.SapDeliverRecordImportTemplete.MaterialName">
+            <summary>
+            物料名称 
+            </summary>
+        </member>
+        <member name="P:ZR.Model.Models.SapDeliverRecordImportTemplete.MaterialSpec">
+            <summary>
+            规格型号/图号 
+            </summary>
+        </member>
+        <member name="P:ZR.Model.Models.SapDeliverRecordImportTemplete.KeyFlag">
+            <summary>
+            关键件标识(0非关键件,1关键件) 
+            </summary>
+        </member>
+        <member name="P:ZR.Model.Models.SapDeliverRecordImportTemplete.Qty">
+            <summary>
+            交验单数量 
+            </summary>
+        </member>
+        <member name="P:ZR.Model.Models.SapDeliverRecordImportTemplete.SpotCheckQty">
+            <summary>
+            抽检数量 
+            </summary>
+        </member>
+        <member name="P:ZR.Model.Models.SapDeliverRecordImportTemplete.CheckQty">
+            <summary>
+            质量合格数量 
+            </summary>
+        </member>
+        <member name="P:ZR.Model.Models.SapDeliverRecordImportTemplete.CheckResult">
+            <summary>
+            质检结果(Wait未质检,OK质检合格,NG质检不合格,PartOK部分质检通过) 
+            </summary>
+        </member>
+        <member name="P:ZR.Model.Models.SapDeliverRecordImportTemplete.InstoreQty">
+            <summary>
+            入库数量 
+            </summary>
+        </member>
+        <member name="P:ZR.Model.Models.SapDeliverRecordImportTemplete.InstoreResult">
+            <summary>
+            入库结果(0未入库,99入库完成) 
+            </summary>
+        </member>
         <member name="T:ZR.Model.Models.StkBalanceDtl">
              <summary>
              库存管理/库存明细表,数据实体对象

BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/字典04-11-104803.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/字典04-19-170101.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/字典04-20-093538.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/岗位列表04-19-171728.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/岗位列表04-20-094215.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库位04-24-151105.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库位04-24-151152.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库位04-24-153805.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库位04-25-150753.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库位05-15-161625.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-162032.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-163751.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-164549.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-164600.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-164803.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-164935.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-165043.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-165452.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-165500.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-170204.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-170425.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-170509.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-170536.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-171504.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-171829.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-172004.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-19-172108.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-091624.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-091640.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-091740.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-092734.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-092742.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-093136.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-093209.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-095403.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-095411.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-095424.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-102502.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-102525.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-102618.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/export/库区04-20-102643.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/importTemplate/交验单模板.xlsx


BIN=BIN
ZrAdminNetCore-net7.0/ZR.Admin.WebApi/wwwroot/importTemplate/库位列表模板.xlsx


+ 15 - 0
ZrAdminNetCore-net7.0/ZR.Model/Dto/SapBomRecordDto.cs

@@ -12,6 +12,21 @@ namespace ZR.Model.Dto
     /// </summary>
     public class SapBomRecordQueryDto : PagerInfo
     {
+        //物料名称
+        public string MaterialName { get; set; }
+        //物料编码
+        public string MaterialCode { get; set; }
+        //物料类型
+        public string Category { get; set; }
+        //规格型号
+        public string MaterialSpec { get; set; }
+        //关键件标识
+        public bool? KeyFlag { get; set; }
+        //生产令号
+        public string BomNo { get; set; }
+        //创建时间
+        public DateTime? BeginTime { get; set; }
+        public DateTime? EndTime { get; set; }
     }
 
     /// <summary>

+ 17 - 0
ZrAdminNetCore-net7.0/ZR.Model/Dto/SapDeliverRecordDto.cs

@@ -12,6 +12,23 @@ namespace ZR.Model.Dto
     /// </summary>
     public class SapDeliverRecordQueryDto : PagerInfo
     {
+        //物料名称
+        public string MaterialName { get; set; }
+        //物料编码
+        public string MaterialCode { get; set; }
+        //物料类型
+        public string Category { get; set; }
+        //规格型号
+        public string MaterialSpec { get; set; }
+        //关键件标识
+        public bool? KeyFlag { get; set; }
+        //交验单号
+        public string DeliverNo { get; set; }
+        //生产令号
+        public string BomNo { get; set; }
+        //创建时间
+        public DateTime? BeginTime { get; set; }
+        public DateTime? EndTime { get; set; }
     }
 
     /// <summary>

+ 86 - 0
ZrAdminNetCore-net7.0/ZR.Model/Models/SapDeliverRecord.cs

@@ -101,4 +101,90 @@ namespace ZR.Model.Models
 
 
     }
+
+    public class SapDeliverRecordImportTemplete
+    {
+        ///// <summary>
+        ///// 主键ID 
+        ///// </summary>
+        //public int Id { get; set; }
+
+        /// <summary>
+        /// 交验单号 
+        /// </summary>
+        public string DeliverNo { get; set; }
+
+        /// <summary>
+        /// 送检人员 
+        /// </summary>
+        public string CheckName { get; set; }
+
+        /// <summary>
+        /// 生产令号 
+        /// </summary>
+        public string BomNo { get; set; }
+
+        /// <summary>
+        /// 行项目 
+        /// </summary>
+        public int RowNo { get; set; }
+
+        /// <summary>
+        /// 物料类型(外协件,外购件) 
+        /// </summary>
+        public string Category { get; set; }
+
+        /// <summary>
+        /// 物料编码 
+        /// </summary>
+        public string MaterialCode { get; set; }
+
+        /// <summary>
+        /// 物料名称 
+        /// </summary>
+        public string MaterialName { get; set; }
+
+        /// <summary>
+        /// 规格型号/图号 
+        /// </summary>
+        public string MaterialSpec { get; set; }
+
+        /// <summary>
+        /// 关键件标识(0非关键件,1关键件) 
+        /// </summary>
+        public bool KeyFlag { get; set; }
+
+        /// <summary>
+        /// 交验单数量 
+        /// </summary>
+        public int Qty { get; set; }
+
+        /// <summary>
+        /// 抽检数量 
+        /// </summary>
+        public int SpotCheckQty { get; set; }
+
+        /// <summary>
+        /// 质量合格数量 
+        /// </summary>
+        public int? CheckQty { get; set; }
+
+        /// <summary>
+        /// 质检结果(Wait未质检,OK质检合格,NG质检不合格,PartOK部分质检通过) 
+        /// </summary>
+        public string CheckResult { get; set; }
+
+        /// <summary>
+        /// 入库数量 
+        /// </summary>
+        public int? InstoreQty { get; set; }
+
+        /// <summary>
+        /// 入库结果(0未入库,99入库完成) 
+        /// </summary>
+        public int InstoreResult { get; set; }
+
+
+    }
+
 }

+ 0 - 4
ZrAdminNetCore-net7.0/ZR.Service/Business/BasBinService.cs

@@ -120,10 +120,6 @@ namespace ZR.Service.Business
             });
             var x = Context.Storageable(bins)
                 .SplitInsert(it => !it.Any())
-                //.SplitIgnore(it => it.Item.UserName == GlobalConstant.AdminRole)
-                //.SplitError(x => x.Item.UserName.IsEmpty(), "用户名不能为空")
-                //.SplitError(x => !Tools.CheckUserName(x.Item.UserName), "用户名不符合规范")
-                //.WhereColumns(it => it.UserName)//如果不是主键可以这样实现(多字段it=>new{it.x1,it.x2})
                 .ToStorage();
             var result = x.AsInsertable.ExecuteCommand();//插入可插入部分;
 

+ 1 - 0
ZrAdminNetCore-net7.0/ZR.Service/Business/IBusinessService/ISapBomRecordService.cs

@@ -21,5 +21,6 @@ namespace ZR.Service.Business.IBusinessService
         int UpdateSapBomRecord(SapBomRecord parm);
 
         void TruncateSapBomRecord();
+        string ImportDatas(List<SapBomRecord> list);
     }
 }

+ 7 - 0
ZrAdminNetCore-net7.0/ZR.Service/Business/IBusinessService/ISapDeliverRecordService.cs

@@ -21,5 +21,12 @@ namespace ZR.Service.Business.IBusinessService
         int UpdateSapDeliverRecord(SapDeliverRecord parm);
 
         void TruncateSapDeliverRecord();
+        
+        /// <summary>
+        /// 导入
+        /// </summary>
+        /// <param name="list"></param>
+        /// <returns></returns>
+        string ImportDatas(List<SapDeliverRecord> list);
     }
 }

+ 45 - 1
ZrAdminNetCore-net7.0/ZR.Service/Business/SapBomRecordService.cs

@@ -7,6 +7,8 @@ using ZR.Model.Models;
 using ZR.Repository;
 using ZR.Service.Business.IBusinessService;
 using System.Linq;
+using Infrastructure;
+using System.Collections.Generic;
 
 namespace ZR.Service.Business
 {
@@ -30,7 +32,18 @@ namespace ZR.Service.Business
         {
             //开始拼装查询条件
             var predicate = Expressionable.Create<SapBomRecord>();
-
+            if (parm.BeginTime != null && parm.EndTime != null)
+            {
+                parm.BeginTime = DateTimeHelper.GetBeginTime(parm.BeginTime, -1);
+                parm.EndTime = DateTimeHelper.GetBeginTime(parm.EndTime, 1);
+                predicate.And(d => d.CreateTime >= parm.BeginTime && d.CreateTime <= parm.EndTime);
+            }
+            predicate.AndIF(!string.IsNullOrEmpty(parm.BomNo), d => d.BomNo.Contains(parm.BomNo));
+            predicate.AndIF(!string.IsNullOrEmpty(parm.MaterialCode), d => d.MaterialCode.Contains(parm.MaterialCode));
+            predicate.AndIF(!string.IsNullOrEmpty(parm.MaterialName), d => d.MaterialName.Contains(parm.MaterialName));
+            predicate.AndIF(!string.IsNullOrEmpty(parm.MaterialSpec), d => d.MaterialSpec.Contains(parm.MaterialSpec));
+            predicate.AndIF(!string.IsNullOrEmpty(parm.Category), d => d.Category == parm.Category);
+            predicate.AndIF(parm.KeyFlag != null, d => d.KeyFlag == parm.KeyFlag);
             //搜索条件查询语法参考Sqlsugar
             var response = Queryable()
                 .Where(predicate.ToExpression())
@@ -87,6 +100,37 @@ namespace ZR.Service.Business
         {
             Truncate();
         }
+
+        /// <summary>
+        /// 导入数据
+        /// </summary>
+        /// <param name="list"></param>
+        /// <returns></returns>
+        public string ImportDatas(List<SapBomRecord> list)
+        {
+            var x = Context.Storageable(list)
+                .SplitInsert(it => !it.Any())
+                .ToStorage();
+            var result = x.AsInsertable.ExecuteCommand();//插入可插入部分;
+
+            string msg = string.Format(" 插入{0} 更新{1} 错误数据{2} 不计算数据{3} 删除数据{4},总共{5}",
+                               x.InsertList.Count,
+                               x.UpdateList.Count,
+                               x.ErrorList.Count,
+                               x.IgnoreList.Count,
+                               x.DeleteList.Count,
+                               x.TotalList.Count);
+            //输出统计                      
+            Console.WriteLine(msg);
+
+            //输出错误信息               
+            foreach (var item in x.ErrorList)
+            {
+                Console.WriteLine("关键件清单ID:" + item.Item.Id + " : " + item.StorageMessage);
+            }
+
+            return msg;
+        }
         #endregion
     }
 }

+ 45 - 0
ZrAdminNetCore-net7.0/ZR.Service/Business/SapDeliverRecordService.cs

@@ -7,6 +7,8 @@ using ZR.Model.Models;
 using ZR.Repository;
 using ZR.Service.Business.IBusinessService;
 using System.Linq;
+using Infrastructure;
+using System.Collections.Generic;
 
 namespace ZR.Service.Business
 {
@@ -31,6 +33,19 @@ namespace ZR.Service.Business
             //开始拼装查询条件
             var predicate = Expressionable.Create<SapDeliverRecord>();
 
+            if (parm.BeginTime != null && parm.EndTime != null)
+            {
+                parm.BeginTime = DateTimeHelper.GetBeginTime(parm.BeginTime, -1);
+                parm.EndTime = DateTimeHelper.GetBeginTime(parm.EndTime, 1);
+                predicate.And(d => d.CreateTime >= parm.BeginTime && d.CreateTime <= parm.EndTime);
+            }
+            predicate.AndIF(!string.IsNullOrEmpty(parm.DeliverNo), d => d.DeliverNo.Contains(parm.DeliverNo));
+            predicate.AndIF(!string.IsNullOrEmpty(parm.BomNo), d => d.BomNo.Contains(parm.BomNo));
+            predicate.AndIF(!string.IsNullOrEmpty(parm.MaterialCode), d => d.MaterialCode.Contains(parm.MaterialCode));
+            predicate.AndIF(!string.IsNullOrEmpty(parm.MaterialName), d => d.MaterialName.Contains(parm.MaterialName));
+            predicate.AndIF(!string.IsNullOrEmpty(parm.MaterialSpec), d => d.MaterialSpec.Contains(parm.MaterialSpec));
+            predicate.AndIF(!string.IsNullOrEmpty(parm.Category), d => d.Category == parm.Category);
+            predicate.AndIF(parm.KeyFlag != null, d => d.KeyFlag == parm.KeyFlag);
             //搜索条件查询语法参考Sqlsugar
             var response = Queryable()
                 .Where(predicate.ToExpression())
@@ -90,6 +105,36 @@ namespace ZR.Service.Business
         {
             Truncate();
         }
+        /// <summary>
+        /// 导入数据
+        /// </summary>
+        /// <param name="list"></param>
+        /// <returns></returns>
+        public string ImportDatas(List<SapDeliverRecord> list)
+        {
+            var x = Context.Storageable(list)
+                .SplitInsert(it => !it.Any())
+                .ToStorage();
+            var result = x.AsInsertable.ExecuteCommand();//插入可插入部分;
+
+            string msg = string.Format(" 插入{0} 更新{1} 错误数据{2} 不计算数据{3} 删除数据{4},总共{5}",
+                               x.InsertList.Count,
+                               x.UpdateList.Count,
+                               x.ErrorList.Count,
+                               x.IgnoreList.Count,
+                               x.DeleteList.Count,
+                               x.TotalList.Count);
+            //输出统计                      
+            Console.WriteLine(msg);
+
+            //输出错误信息               
+            foreach (var item in x.ErrorList)
+            {
+                Console.WriteLine("交验单号为:" + item.Item.DeliverNo + " : " + item.StorageMessage);
+            }
+
+            return msg;
+        }
         #endregion
     }
 }