diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Dtos/ImportNoteCreateDto.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Dtos/ImportNoteCreateDto.cs
new file mode 100644
index 0000000..f9dc6e7
--- /dev/null
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Dtos/ImportNoteCreateDto.cs
@@ -0,0 +1,84 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WY.NewJit.EdiReceive.Dtos
+{
+ public class ImportNoteCreateDto
+ {
+ ///
+ /// 底盘号
+ ///
+ public virtual string Vin { get; set; }
+
+ ///
+ /// 物流配货顺序号
+ ///
+ public virtual int HostSN { get; set; }
+
+ ///
+ /// 序列号 #
+ ///
+ public virtual string SerialNum { get; set; }
+
+ ///
+ /// 车型代码
+ ///
+ public virtual string VehicleModelCode { get; set; }
+
+ ///
+ /// 车型名称
+ ///
+ public virtual string VehicleModelName { get; set; }
+
+ ///
+ /// 上级产品系列(规格说明)
+ ///
+ public virtual string SpecDesc { get; set; }
+
+ ///
+ /// 车型
+ ///
+ public virtual string VehicleModel { get; set; }
+
+ ///
+ /// 公告车型
+ ///
+ public virtual string AfficheVehicleModel { get; set; }
+
+ ///
+ /// 特殊车标识
+ ///
+ public virtual string SpecialCarLogo { get; set; }
+
+ ///
+ /// 涂装下线时间
+ ///
+ public virtual DateTime? PaintOfflineTime { get; set; }
+
+ ///
+ /// 总装上线时间
+ ///
+ public virtual DateTime? OnlineTime { get; set; }
+
+ ///
+ /// 备注
+ ///
+ public virtual string Remark { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ public virtual DateTime? CreateTime { get; set; }
+
+ ///
+ /// 创建人
+ ///
+ public virtual string CreatePerson { get; set; }
+
+ public virtual DateTime? ImportTime { get; set; }
+
+ public virtual string ImportPerson { get; set; }
+
+ }
+}
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Dtos/ImportNoteDto.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Dtos/ImportNoteDto.cs
new file mode 100644
index 0000000..1193b15
--- /dev/null
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Dtos/ImportNoteDto.cs
@@ -0,0 +1,127 @@
+using Magicodes.ExporterAndImporter.Core;
+using Magicodes.ExporterAndImporter.Excel;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WY.NewJit.EdiReceive.Dtos
+{
+ ///
+ /// 导入记录表
+ ///
+ [ExcelExporter(Name = "导入记录表V2", AutoFitAllColumn = true, MaxRowNumberOnASheet = 50000)] //一个Sheet最大允许的行数,设置了之后将输出多个Sheet
+ [Serializable]
+ public class ImportNoteDto
+ {
+ [ExporterHeader(IsIgnore = true)]
+ [ImporterHeader(IsIgnore = true)]
+ public Guid Id { get; set; }
+
+ ///
+ /// 底盘号
+ ///
+ [ExporterHeader(DisplayName = "底盘号")]
+ [ImporterHeader(Name = "底盘号")]
+ public virtual string Vin { get; set; }
+
+ ///
+ /// 物流配货顺序号
+ ///
+ [ExporterHeader(DisplayName = "物流配货顺序号")]
+ [ImporterHeader(Name = "物流配货顺序号")]
+ public virtual int HostSN { get; set; }
+
+ ///
+ /// 序列号 #
+ ///
+ [ExporterHeader(DisplayName = "#")]
+ [ImporterHeader(Name = "#")]
+ public virtual string SerialNum { get; set; }
+
+ ///
+ /// 车型代码
+ ///
+ [ExporterHeader(DisplayName = "车型代码")]
+ [ImporterHeader(Name = "车型代码")]
+ public virtual string VehicleModelCode { get; set; }
+
+ ///
+ /// 车型名称
+ ///
+ [ExporterHeader(DisplayName = "车型名称")]
+ [ImporterHeader(Name = "车型名称")]
+ public virtual string VehicleModelName { get; set; }
+
+ ///
+ /// 上级产品系列(规格说明)
+ ///
+ [ExporterHeader(DisplayName = "上级产品系列")]
+ [ImporterHeader(Name = "上级产品系列")]
+ public virtual string SpecDesc { get; set; }
+
+ ///
+ /// 车型
+ ///
+ [ExporterHeader(DisplayName = "车型")]
+ [ImporterHeader(Name = "车型")]
+ public virtual string VehicleModel { get; set; }
+
+ ///
+ /// 公告车型
+ ///
+ [ExporterHeader(DisplayName = "公告车型")]
+ [ImporterHeader(Name = "公告车型")]
+ public virtual string AfficheVehicleModel { get; set; }
+
+ ///
+ /// 特殊车标识
+ ///
+ [ExporterHeader(DisplayName = "特殊车标识")]
+ [ImporterHeader(Name = "特殊车标识")]
+ public virtual string SpecialCarLogo { get; set; }
+
+ ///
+ /// 涂装下线时间
+ ///
+ [ExporterHeader(DisplayName = "涂装下线EA1", Format = "yyyy-MM-dd HH:mm:ss")]
+ [ImporterHeader(Name = "涂装下线EA1", Format = "yyyy-MM-dd HH:mm:ss")]
+ public virtual DateTime? PaintOfflineTime { get; set; }
+
+ ///
+ /// 总装上线时间
+ ///
+ [ExporterHeader(DisplayName = "总装上线EA2", Format = "yyyy-MM-dd HH:mm:ss")]
+ [ImporterHeader(Name = "总装上线EA2", Format = "yyyy-MM-dd HH:mm:ss")]
+ public virtual DateTime? OnlineTime { get; set; }
+
+ ///
+ /// 备注
+ ///
+ [ExporterHeader(DisplayName = "备注")]
+ [ImporterHeader(Name = "备注")]
+ public virtual string Remark { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ [ExporterHeader(DisplayName = "创建时间", Format = "yyyy-MM-dd HH:mm:ss")]
+ [ImporterHeader(Name = "创建时间", Format = "yyyy-MM-dd HH:mm:ss")]
+ public virtual DateTime? CreateTime { get; set; }
+
+ ///
+ /// 创建人
+ ///
+ [ExporterHeader(DisplayName = "创建人")]
+ [ImporterHeader(Name = "创建人")]
+ public virtual string CreatePerson { get; set; }
+
+ [ExporterHeader(IsIgnore = true)]
+ [ImporterHeader(IsIgnore = true)]
+ public virtual DateTime? ImportTime { get; set; }
+
+ [ExporterHeader(IsIgnore = true)]
+ [ImporterHeader(IsIgnore = true)]
+ public virtual string ImportPerson { get; set; }
+
+ }
+}
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Dtos/ImportNoteHisCreateDto.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Dtos/ImportNoteHisCreateDto.cs
new file mode 100644
index 0000000..7794c0a
--- /dev/null
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Dtos/ImportNoteHisCreateDto.cs
@@ -0,0 +1,84 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WY.NewJit.EdiReceive.Dtos
+{
+ public class ImportNoteHisCreateDto
+ {
+ ///
+ /// 底盘号
+ ///
+ public virtual string Vin { get; set; }
+
+ ///
+ /// 物流配货顺序号
+ ///
+ public virtual int HostSN { get; set; }
+
+ ///
+ /// 序列号 #
+ ///
+ public virtual string SerialNum { get; set; }
+
+ ///
+ /// 车型代码
+ ///
+ public virtual string VehicleModelCode { get; set; }
+
+ ///
+ /// 车型名称
+ ///
+ public virtual string VehicleModelName { get; set; }
+
+ ///
+ /// 上级产品系列(规格说明)
+ ///
+ public virtual string SpecDesc { get; set; }
+
+ ///
+ /// 车型
+ ///
+ public virtual string VehicleModel { get; set; }
+
+ ///
+ /// 公告车型
+ ///
+ public virtual string AfficheVehicleModel { get; set; }
+
+ ///
+ /// 特殊车标识
+ ///
+ public virtual string SpecialCarLogo { get; set; }
+
+ ///
+ /// 涂装下线时间
+ ///
+ public virtual DateTime? PaintOfflineTime { get; set; }
+
+ ///
+ /// 总装上线时间
+ ///
+ public virtual DateTime? OnlineTime { get; set; }
+
+ ///
+ /// 备注
+ ///
+ public virtual string Remark { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ public virtual DateTime? CreateTime { get; set; }
+
+ ///
+ /// 创建人
+ ///
+ public virtual string CreatePerson { get; set; }
+
+ public virtual DateTime? ImportTime { get; set; }
+
+ public virtual string ImportPerson { get; set; }
+
+ }
+}
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Dtos/ImportNoteHisDto.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Dtos/ImportNoteHisDto.cs
new file mode 100644
index 0000000..7638b9e
--- /dev/null
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Dtos/ImportNoteHisDto.cs
@@ -0,0 +1,86 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WY.NewJit.EdiReceive.Dtos
+{
+ public class ImportNoteHisDto
+ {
+ public Guid Id { get; set; }
+
+ ///
+ /// 底盘号
+ ///
+ public virtual string Vin { get; set; }
+
+ ///
+ /// 物流配货顺序号
+ ///
+ public virtual int HostSN { get; set; }
+
+ ///
+ /// 序列号 #
+ ///
+ public virtual string SerialNum { get; set; }
+
+ ///
+ /// 车型代码
+ ///
+ public virtual string VehicleModelCode { get; set; }
+
+ ///
+ /// 车型名称
+ ///
+ public virtual string VehicleModelName { get; set; }
+
+ ///
+ /// 上级产品系列(规格说明)
+ ///
+ public virtual string SpecDesc { get; set; }
+
+ ///
+ /// 车型
+ ///
+ public virtual string VehicleModel { get; set; }
+
+ ///
+ /// 公告车型
+ ///
+ public virtual string AfficheVehicleModel { get; set; }
+
+ ///
+ /// 特殊车标识
+ ///
+ public virtual string SpecialCarLogo { get; set; }
+
+ ///
+ /// 涂装下线时间
+ ///
+ public virtual DateTime? PaintOfflineTime { get; set; }
+
+ ///
+ /// 总装上线时间
+ ///
+ public virtual DateTime? OnlineTime { get; set; }
+
+ ///
+ /// 备注
+ ///
+ public virtual string Remark { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ public virtual DateTime? CreateTime { get; set; }
+
+ ///
+ /// 创建人
+ ///
+ public virtual string CreatePerson { get; set; }
+
+ public virtual DateTime? ImportTime { get; set; }
+
+ public virtual string ImportPerson { get; set; }
+
+ }
+}
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Dtos/ImportNoteInputDto.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Dtos/ImportNoteInputDto.cs
new file mode 100644
index 0000000..357153d
--- /dev/null
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Dtos/ImportNoteInputDto.cs
@@ -0,0 +1,81 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using WY.NewJit.Common;
+
+namespace WY.NewJit.EdiReceive.Dtos
+{
+ public class ImportNoteInputDto : PagedAndSortedBase
+ {
+
+ ///
+ /// 底盘号
+ ///
+ public virtual string Vin { get; set; }
+
+
+ ///
+ /// 车型代码
+ ///
+ public virtual string VehicleModelCode { get; set; }
+
+ ///
+ /// 涂装下线时间起
+ ///
+ public virtual DateTime? PaintOfflineTimeBegin { get; set; }
+
+ ///
+ /// 涂装下线时间止
+ ///
+ public virtual DateTime? PaintOfflineTimeEnd { get; set; }
+
+ ///
+ /// 总装上线时间起
+ ///
+ public virtual DateTime? OnlineTimeBegin { get; set; }
+
+ ///
+ /// 总装上线时间止
+ ///
+ public virtual DateTime? OnlineTimeEnd { get; set; }
+
+ ///
+ /// 序列号起
+ ///
+ public virtual string SerialNumBegin { get; set; }
+
+ ///
+ /// 序列号止
+ ///
+ public virtual string SerialNumEnd { get; set; }
+
+ ///
+ /// 流水号起
+ ///
+ public virtual int? HostSNBegin { get; set; }
+
+ ///
+ /// 流水号止
+ ///
+ public virtual int? HostSNEnd { get; set; }
+
+ ///
+ /// 生产线:A/B
+ ///
+ public virtual string ProductLine { get; set; }
+
+ ///
+ /// 创建时间起
+ ///
+ public virtual DateTime? CreateTimeBegin { get; set; }
+
+ ///
+ /// 创建时间止
+ ///
+ public virtual DateTime? CreateTimeEnd { get; set; }
+
+ public virtual DateTime? ImportTimeBegin { get; set; }
+ public virtual DateTime? ImportTimeEnd { get; set; }
+
+ }
+}
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Interfaces/IImportNoteAppService.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Interfaces/IImportNoteAppService.cs
new file mode 100644
index 0000000..31951b8
--- /dev/null
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/EdiReceive/V2Interfaces/IImportNoteAppService.cs
@@ -0,0 +1,70 @@
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Application.Services;
+using WY.NewJit.EdiReceive.Dtos;
+
+namespace WY.NewJit.EdiReceive.Interfaces
+{
+ public interface IImportNoteAppService : IApplicationService
+ {
+ #region 接口方法
+
+ /// 根据筛选条件获取分页实体列表
+ ///
+ /// 输入查询条件
+ /// 输入分页条件
+ /// 返回符合条件的排序分页列表
+ Task> GetListAsync(ImportNoteInputDto input);
+
+ ///
+ /// 按主键获取唯一实体
+ ///
+ /// 主键
+ /// 实体信息
+ Task> GetAsync(Guid id);
+
+ ///
+ /// 添加实体
+ ///
+ /// 添加内容
+ /// 执行成功返回真
+ Task> CreateAsync(ImportNoteCreateDto input);
+
+ ///
+ /// 修改实体
+ ///
+ /// 更新主键
+ /// 修改内容
+ /// 执行成功返回真
+ Task UpdateAsync(Guid id, ImportNoteCreateDto input);
+
+ ///
+ /// 删除实体
+ ///
+ /// 删除主键
+ /// 执行成功返回真
+ Task DeleteAsync(string id);
+
+ ///
+ /// 导出信息
+ ///
+ /// 导出查询条件
+ /// 执行成功返回真
+ Task> ExportAsync(ImportNoteInputDto input);
+
+ ///
+ /// 导入信息
+ ///
+ /// 导入文件流
+ /// 是否强制执行
+ /// 执行成功返回真
+ Task ImportAsync([FromForm] IFormFileCollection files, bool forceExecute = false);
+ #endregion
+ }
+
+}
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/WY.NewJit.Application.Contracts.xml b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/WY.NewJit.Application.Contracts.xml
index 6d70b10..12a21ef 100644
--- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/WY.NewJit.Application.Contracts.xml
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/WY.NewJit.Application.Contracts.xml
@@ -519,6 +519,356 @@
创建时间止
+
+
+ 底盘号
+
+
+
+
+ 物流配货顺序号
+
+
+
+
+ 序列号 #
+
+
+
+
+ 车型代码
+
+
+
+
+ 车型名称
+
+
+
+
+ 上级产品系列(规格说明)
+
+
+
+
+ 车型
+
+
+
+
+ 公告车型
+
+
+
+
+ 特殊车标识
+
+
+
+
+ 涂装下线时间
+
+
+
+
+ 总装上线时间
+
+
+
+
+ 备注
+
+
+
+
+ 创建时间
+
+
+
+
+ 创建人
+
+
+
+
+ 导入记录表
+
+
+
+
+ 底盘号
+
+
+
+
+ 物流配货顺序号
+
+
+
+
+ 序列号 #
+
+
+
+
+ 车型代码
+
+
+
+
+ 车型名称
+
+
+
+
+ 上级产品系列(规格说明)
+
+
+
+
+ 车型
+
+
+
+
+ 公告车型
+
+
+
+
+ 特殊车标识
+
+
+
+
+ 涂装下线时间
+
+
+
+
+ 总装上线时间
+
+
+
+
+ 备注
+
+
+
+
+ 创建时间
+
+
+
+
+ 创建人
+
+
+
+
+ 底盘号
+
+
+
+
+ 物流配货顺序号
+
+
+
+
+ 序列号 #
+
+
+
+
+ 车型代码
+
+
+
+
+ 车型名称
+
+
+
+
+ 上级产品系列(规格说明)
+
+
+
+
+ 车型
+
+
+
+
+ 公告车型
+
+
+
+
+ 特殊车标识
+
+
+
+
+ 涂装下线时间
+
+
+
+
+ 总装上线时间
+
+
+
+
+ 备注
+
+
+
+
+ 创建时间
+
+
+
+
+ 创建人
+
+
+
+
+ 底盘号
+
+
+
+
+ 物流配货顺序号
+
+
+
+
+ 序列号 #
+
+
+
+
+ 车型代码
+
+
+
+
+ 车型名称
+
+
+
+
+ 上级产品系列(规格说明)
+
+
+
+
+ 车型
+
+
+
+
+ 公告车型
+
+
+
+
+ 特殊车标识
+
+
+
+
+ 涂装下线时间
+
+
+
+
+ 总装上线时间
+
+
+
+
+ 备注
+
+
+
+
+ 创建时间
+
+
+
+
+ 创建人
+
+
+
+
+ 底盘号
+
+
+
+
+ 车型代码
+
+
+
+
+ 涂装下线时间起
+
+
+
+
+ 涂装下线时间止
+
+
+
+
+ 总装上线时间起
+
+
+
+
+ 总装上线时间止
+
+
+
+
+ 序列号起
+
+
+
+
+ 序列号止
+
+
+
+
+ 流水号起
+
+
+
+
+ 流水号止
+
+
+
+
+ 生产线:A/B
+
+
+
+
+ 创建时间起
+
+
+
+
+ 创建时间止
+
+
@@ -564,6 +914,51 @@
是否强制执行
执行成功返回真
+
+
+
+ 按主键获取唯一实体
+
+ 主键
+ 实体信息
+
+
+
+ 添加实体
+
+ 添加内容
+ 执行成功返回真
+
+
+
+ 修改实体
+
+ 更新主键
+ 修改内容
+ 执行成功返回真
+
+
+
+ 删除实体
+
+ 删除主键
+ 执行成功返回真
+
+
+
+ 导出信息
+
+ 导出查询条件
+ 执行成功返回真
+
+
+
+ 导入信息
+
+ 导入文件流
+ 是否强制执行
+ 执行成功返回真
+
门板装箱单打印主实体
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/EdiReceive/ImportNoteAppService.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/EdiReceive/ImportNoteAppService.cs
new file mode 100644
index 0000000..7e827cc
--- /dev/null
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/EdiReceive/ImportNoteAppService.cs
@@ -0,0 +1,563 @@
+using Magicodes.ExporterAndImporter.Core;
+using Magicodes.ExporterAndImporter.Core.Models;
+using Magicodes.ExporterAndImporter.Excel;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Logging;
+using Shouldly;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Application.Services;
+using Volo.Abp.BlobStoring;
+using Volo.Abp.Domain.Repositories;
+using Volo.Abp.Uow;
+using WY.NewJit.Common;
+using WY.NewJit.EdiReceive.Dtos;
+using WY.NewJit.EdiReceive.Entitys;
+using WY.NewJit.EdiReceive.Interfaces;
+using WY.NewJit.EdiReceive.Services;
+using WY.NewJit.EntityFrameworkCore;
+using WY.NewJit.MsgBaseData;
+using WY.NewJit.MsgCheck;
+
+namespace WY.NewJit.EdiReceive
+{
+ ///
+ /// 零件管理应用服务实现
+ ///
+ [Microsoft.AspNetCore.Mvc.Route("api/newjit/import-note")]
+ [ApiExplorerSettings(GroupName = SwaggerGroupConsts.报文接收)]
+ public class ImportNoteAppService : ApplicationService, IImportNoteAppService
+ {
+ #region 成员
+ ///
+ /// 零件仓储
+ ///
+ private readonly IRepository _importNoteRepository;
+
+ ///
+ /// 日志
+ ///
+ private ILogger _logger;
+
+ ///
+ /// Dapper仓储
+ ///
+ private readonly NewJitDapperRepository _newJitDapperRepository;
+
+ ///
+ /// BLOB存储
+ ///
+ private readonly IBlobContainer _blobContainer;
+
+ ///
+ /// 字典领域服务
+ ///
+ private readonly DicDomainService _dicDomainService;
+
+ private readonly EdiParseDomainSrvV2 _ediParseDomainService;
+
+ ///
+ /// 配置
+ ///
+ private readonly Microsoft.Extensions.Configuration.IConfiguration _configuration;
+
+ ///
+ /// 错误信息前缀
+ ///
+ private string _errorMessagePrefix
+ {
+ get
+ {
+ return System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + ".";
+ }
+ }
+
+ private readonly IUnitOfWorkManager _unitOfWorkManager;
+
+
+
+ #endregion
+
+ ///
+ /// 构造函数
+ ///
+ public ImportNoteAppService(
+ IRepository importNoteRepository,
+ ILogger logger,
+ NewJitDapperRepository newJitDapperRepository,
+ IBlobContainer blobContainer,
+ DicDomainService dicDomainService,
+ EdiParseDomainSrvV2 ediParseDomainService,
+ Microsoft.Extensions.Configuration.IConfiguration configuration,
+ IUnitOfWorkManager unitOfWorkManager)
+ {
+ _importNoteRepository = importNoteRepository;
+ _logger = logger;
+ _newJitDapperRepository = newJitDapperRepository;
+ _blobContainer = blobContainer;
+ _dicDomainService = dicDomainService;
+ _ediParseDomainService = ediParseDomainService;
+ _configuration = configuration;
+ _unitOfWorkManager = unitOfWorkManager;
+ }
+
+ #region 私有方法
+ private static string GetWhere(ImportNoteInputDto input)
+ {
+ string where = "";
+ //if (input.Factory.HasValue())
+ //{
+ // where += string.Format(" and Factory = '{0}'", input.Factory);
+ //}
+ if (input.Vin.HasValue())
+ {
+ where += string.Format(" and Vin = '{0}'", input.Vin);
+ }
+ if (input.VehicleModelCode.HasValue())
+ {
+ where += string.Format(" and VehicleModelCode = '{0}'", input.VehicleModelCode);
+ }
+ if (input.PaintOfflineTimeBegin.HasValue())
+ {
+ where += string.Format(" and PaintOfflineTime >= '{0}'", input.PaintOfflineTimeBegin?.ToString("yyyy-MM-dd HH:mm:ss"));
+ }
+ if (input.PaintOfflineTimeEnd.HasValue())
+ {
+ where += string.Format(" and PaintOfflineTime <= '{0}'", input.PaintOfflineTimeEnd?.ToString("yyyy-MM-dd HH:mm:ss"));
+ }
+ if (input.OnlineTimeBegin.HasValue())
+ {
+ where += string.Format(" and OnlineTime >= '{0}'", input.OnlineTimeBegin?.ToString("yyyy-MM-dd HH:mm:ss"));
+ }
+ if (input.OnlineTimeEnd.HasValue())
+ {
+ where += string.Format(" and OnlineTime <= '{0}'", input.OnlineTimeEnd?.ToString("yyyy-MM-dd HH:mm:ss"));
+ }
+ if (input.OnlineTimeBegin.HasValue())
+ {
+ where += string.Format(" and OnlineTime >= '{0}'", input.OnlineTimeBegin?.ToString("yyyy-MM-dd HH:mm:ss"));
+ }
+ if (input.OnlineTimeEnd.HasValue())
+ {
+ where += string.Format(" and OnlineTime <= '{0}'", input.OnlineTimeEnd?.ToString("yyyy-MM-dd HH:mm:ss"));
+ }
+ if (input.SerialNumBegin.HasValue())
+ {
+ where += string.Format(" and SerialNum >= '{0}'", input.SerialNumBegin);
+ }
+ if (input.SerialNumEnd.HasValue())
+ {
+ where += string.Format(" and SerialNum <= '{0}'", input.SerialNumEnd);
+ }
+ if (input.HostSNBegin.HasValue())
+ {
+ where += string.Format(" and HostSN >= '{0}'", input.HostSNBegin);
+ }
+ if (input.HostSNEnd.HasValue())
+ {
+ where += string.Format(" and HostSN <= '{0}'", input.HostSNEnd);
+ }
+ //if (input.ProductLine.HasValue())
+ //{
+ // where += string.Format(" and ProductLine = '{0}'", input.ProductLine);
+ //}
+ if (input.CreateTimeBegin.HasValue())
+ {
+ where += string.Format(" and CreateTime >= '{0}'", input.CreateTimeBegin?.ToString("yyyy-MM-dd HH:mm:ss"));
+ }
+ if (input.CreateTimeEnd.HasValue())
+ {
+ where += string.Format(" and CreateTime <= '{0}'", input.CreateTimeEnd?.ToString("yyyy-MM-dd HH:mm:ss"));
+ }
+ if (input.ImportTimeBegin.HasValue())
+ {
+ where += string.Format(" and ImportTime >= '{0}'", input.ImportTimeBegin?.ToString("yyyy-MM-dd HH:mm:ss"));
+ }
+ if (input.ImportTimeEnd.HasValue())
+ {
+ where += string.Format(" and ImportTime <= '{0}'", input.ImportTimeEnd?.ToString("yyyy-MM-dd HH:mm:ss"));
+ }
+ return where;
+ }
+
+ ///
+ /// 取单表记录总数
+ ///
+ ///
+ ///
+ ///
+ private async Task GetEntityCountAsync(string tableName, string where)
+ {
+ string sql = $"select count(*) from {tableName} where 1=1 {where}";
+ var ret = await _newJitDapperRepository.GetSingleBySqlAsync(sql);
+ return ret;
+ }
+
+ ///
+ /// 取单表当前页数据
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ private async Task> GetEntityListAsync(string tableName, string where, string orderFieldName, int pageSize, int pageIndex)
+ {
+ int takeNum = pageSize;
+ int skipNum = (pageIndex - 1) * pageSize;
+ string sql = $"select * from {tableName} where 1=1 {where} order by {orderFieldName} offset {skipNum} rows fetch next {takeNum} rows only";
+ var ret = await _newJitDapperRepository.GetListBySqlAsync(sql);
+ return ret;
+ }
+
+ private async Task> GetEntityListFromToAsync(string tableName, string where, string orderFieldName, int skipNum, int takeNum)
+ {
+ string sql = $"select * from {tableName} where 1=1 {where} order by {orderFieldName} offset {skipNum} rows fetch next {takeNum} rows only";
+ var ret = await _newJitDapperRepository.GetListBySqlAsync(sql);
+ return ret;
+ }
+
+
+ ///
+ /// 根据筛选条件获取实体列表
+ ///
+ private async Task> QueryByConditionAsync(ImportNoteInputDto input, PagedAndSortedBase page)
+ {
+ PagedResultDto ret = new PagedResultDto();
+ string where = GetWhere(input);
+
+ ret.TotalCount = await GetEntityCountAsync("FisImportNote", where);
+
+ //计算分页
+ int skipNum = page.SkipCount;
+ int takeNum = page.MaxResultCount;
+
+ var lst = await GetEntityListFromToAsync("FisImportNote", where, "HostSN", skipNum, takeNum);
+ ret.Items = lst;
+ return ret;
+ }
+
+ #endregion
+
+
+ #region 公有方法
+ ///
+ /// 根据筛选条件获取分页实体列表
+ ///
+ /// 输入查询条件
+ /// 返回符合条件的排序分页列表
+ [HttpGet]
+ [UnitOfWork(false)]
+ [Route("list")]
+ public async Task> GetListAsync(ImportNoteInputDto input)
+ {
+ _logger.LogDebug(_errorMessagePrefix + "GetListAsync 进入");
+ PagedResultDto ret = new PagedResultDto();
+ try
+ {
+ ret = await QueryByConditionAsync(input, (PagedAndSortedBase)input);
+ return ret;
+ }
+ catch (Exception ex)
+ {
+ var msg = _errorMessagePrefix + "GetListAsync 执行出错:" + ex.Message;
+ _logger.LogError(msg);
+ return ret;
+ }
+ }
+
+ ///
+ /// 按主键获取唯一实体
+ ///
+ /// 主键
+ /// 实体信息
+ [HttpGet]
+ [Route("{id}")]
+ public async Task> GetAsync(Guid id)
+ {
+ _logger.LogDebug(_errorMessagePrefix + "GetAsync 进入");
+ ObjectResultDto ret = new ObjectResultDto();
+ try
+ {
+ ImportNote sourceObj = await _importNoteRepository.GetAsync(id);
+ ImportNoteDto targetObj = ObjectMapper.Map(sourceObj);
+ ret.Item = targetObj;
+ return ret;
+ }
+ catch (Exception ex)
+ {
+ ret.Status = false;
+ ret.Message = _errorMessagePrefix + "GetAsync 执行出错:" + ex.Message;
+ _logger.LogError(ret.Message);
+ return ret;
+ }
+ }
+
+ ///
+ /// 添加实体
+ ///
+ /// 添加内容
+ /// 执行成功返回真
+ [HttpPost]
+ [UnitOfWork]
+ [Route("")]//create
+ public async Task> CreateAsync(ImportNoteCreateDto input)
+ {
+ _logger.LogDebug(_errorMessagePrefix + "CreateAsync 进入");
+ ObjectResultDto ret = new ObjectResultDto();
+ try
+ {
+ ImportNote obj = ObjectMapper.Map(input);
+ ImportNote obj2 = await _importNoteRepository.InsertAsync(obj);
+ ret.Item = obj2.Id; //返回添加对象的主键
+ return ret;
+ }
+ catch (Exception ex)
+ {
+ ret.Status = false;
+ ret.Message = _errorMessagePrefix + "CreateAsync 执行出错:" + ex.Message;
+ _logger.LogError(ret.Message);
+ return ret;
+ }
+ }
+
+ ///
+ /// 修改实体
+ ///
+ /// 更新主键
+ /// 修改内容
+ /// 执行成功返回真
+ [HttpPut]
+ [UnitOfWork]
+ [Route("{id}")]//update/
+ public async Task UpdateAsync(Guid id, ImportNoteCreateDto input)
+ {
+ _logger.LogDebug(_errorMessagePrefix + "UpdateAsync 进入");
+ ObjectResultDto ret = new ObjectResultDto();
+ try
+ {
+ ImportNote targetObj = await _importNoteRepository.GetAsync(id);
+ ObjectMapper.Map(input, targetObj);
+ await _importNoteRepository.UpdateAsync(targetObj);
+ return ret;
+ }
+ catch (Exception ex)
+ {
+ ret.Status = false;
+ ret.Message = _errorMessagePrefix + "UpdateAsync 执行出错:" + ex.Message;
+ _logger.LogError(ret.Message);
+ return ret;
+ }
+ }
+
+ ///
+ /// 删除实体
+ ///
+ /// 删除主键
+ /// 执行成功返回真
+ [UnitOfWork]
+ [HttpDelete]
+ [Route("{id}")]//delete/
+ public async Task DeleteAsync(string id)
+ {
+ _logger.LogDebug(_errorMessagePrefix + "DeleteAsync 进入");
+ ObjectResultDto ret = new ObjectResultDto();
+ try
+ {
+ Guid guid = Guid.Parse(id);
+ await _importNoteRepository.DeleteAsync(guid);
+
+ return ret;
+ }
+ catch (Exception ex)
+ {
+ ret.Status = false;
+ ret.Message = _errorMessagePrefix + "DeleteAsync 执行出错:" + ex.Message;
+ _logger.LogError(ret.Message);
+ return ret;
+ }
+ }
+
+ ///
+ /// 导出信息
+ ///
+ /// 导出查询条件
+ /// 执行成功返回真
+ [UnitOfWork(false)]
+ [HttpPost]
+ [Route("export")]
+ public async Task> ExportAsync(ImportNoteInputDto input)
+ {
+ _logger.LogDebug(_errorMessagePrefix + "ExportAsync 进入");
+ ObjectResultDto ret = new ObjectResultDto();
+ try
+ {
+ PagedResultDto pageLst = await QueryByConditionAsync(input, (PagedAndSortedBase)input);
+ var items = pageLst.Items.AsEnumerable().ToList();
+ //将实体列表转换成excel文件流
+ IExporter exporter = new ExcelExporter();
+ byte[] byteArr = await exporter.ExportAsByteArray(items);
+ byteArr.ShouldNotBeNull();
+ //将excel文件流保存到服务器端文件系统
+ string fileName = string.Format("导入记录_{0}.xlsx", Guid.NewGuid().ToString());
+ await _blobContainer.SaveAsync(fileName, byteArr);
+
+ ret.Item = fileName;
+ return ret;
+ }
+ catch (Exception ex)
+ {
+ ret.Status = false;
+ ret.Message = _errorMessagePrefix + "ExportAsync 执行出错:" + ex.Message;
+ _logger.LogError(ret.Message);
+ return ret;
+ }
+ }
+
+ ///
+ /// 导入
+ ///
+ /// 导入文件
+ /// 校验出错时,是否强制执行
+ /// 执行成功返回真
+ //[UnitOfWork(IsDisabled =true)]
+ //[UnitOfWork(isTransactional: false)] //[UnitOfWork(false)]
+ [UnitOfWork]
+ [HttpPost]
+ [Route("import")]
+ [DisableRequestSizeLimit]
+ public virtual async Task ImportAsync([FromForm] IFormFileCollection files, bool forceExecute = false)
+ {
+
+ _logger.LogDebug(_errorMessagePrefix + "ImportAsync 进入");
+ ObjectResultDto ret = new ObjectResultDto();
+ try
+ {
+ ImportResult impResult;
+ using (var memoryStream = new MemoryStream())
+ {
+ //保存到内存流
+ IFormFile file = files[0];
+ await file.CopyToAsync(memoryStream);
+ memoryStream.Seek(0, SeekOrigin.Begin);
+ IImporter importer = new ExcelImporter();
+ impResult = await importer.Import(memoryStream);
+ }
+
+ if (impResult.HasError)
+ {
+ string rowErrStr = "";
+ foreach (var rowErr in impResult.RowErrors)
+ {
+ string fieldErr = string.Concat(rowErr.FieldErrors.Select(itm => $"字段:{itm.Key},错误信息:{itm.Value}"));
+ rowErrStr += $"行号:{rowErr.RowIndex},{fieldErr}\r\n";
+ }
+ string templateErrStr = "";
+ foreach (var templateErr in impResult.TemplateErrors)
+ {
+ string errorLevel = templateErr.ErrorLevel == ErrorLevels.Error ? "错误" : "警告";
+ templateErrStr += $"错误等级:{errorLevel},列名:{templateErr.ColumnName},需要列:{templateErr.RequireColumnName},错误消息:{templateErr.Message}\r\n";
+ }
+ ret.Message = rowErrStr + templateErrStr;
+ ret.Status = false;
+ return ret;
+ }
+
+ //using (var uow = _unitOfWorkManager.Begin())
+ //{
+ var srcLst = impResult.Data.AsEnumerable().ToList();
+
+ #region 校验重复报文(本次导入内部重复)
+ string msg = "";
+ var groupLst = srcLst.GroupBy(itm => new { itm.Vin, itm.HostSN }).Select(itm => new
+ {
+ Vin = itm.Key.Vin,
+ HostSN = itm.Key.HostSN,
+ Count = itm.Count()
+ });
+ var tempLst = groupLst.Where(itm => itm.Count > 1).ToList();
+ foreach (var temp in tempLst)
+ {
+ msg += $"底盘{temp.Vin}、顺序号{temp.HostSN}记录重复\r\n";
+ }
+ if (msg.Length > 0)
+ {
+ ret.Message = msg;
+ ret.Status = false;
+ return ret;
+ }
+ #endregion
+
+ var tarLst = ObjectMapper.Map, List>(srcLst);
+ foreach (var tar in tarLst)
+ {
+ tar.CreateTime = ServerHelper.CurrentDateTime;
+ if (tar.OnlineTime == null)
+ {
+ tar.OnlineTime = tar.PaintOfflineTime; //导入文件时 总装上线时间 为空,使用 涂装下线时间 代替 总装上线时间
+ }
+ }
+ //报文解析
+ ObjectResultDto ret2 = await _ediParseDomainService.ParseEdi(tarLst, forceExecute);
+ if (ret2.Status == false)
+ {
+ return ret2;
+ }
+ if (ret2.Status == true && ret2.Message.HasValue())
+ {
+ return ret2;
+ }
+ //await uow.CompleteAsync();
+ ret.Status = true;
+
+ return ret;
+ //}
+ }
+ catch (Exception ex)
+ {
+ ret.Status = false;
+ ret.Message = _errorMessagePrefix + "ImportAsync 执行出错:" + ex.Message;
+ _logger.LogError(ret.Message);
+ throw new BusinessException("1001", ret.Message);
+ //return ret;
+ }
+ }
+
+ ///
+ /// 打印时间提醒
+ ///
+ ///
+ ///
+ [UnitOfWork]
+ [HttpPost]
+ [Route("print-timeout-remind")]
+ public virtual async Task PrintTimeoutRemind()
+ {
+ //return new TimeOutRemindResultDto();
+ TimeOutRemindResultDto retObj = new TimeOutRemindResultDto();
+ retObj.ConfigMinutes = _configuration[$"ConfigDic:ProductLineTimeoutRemind_New:{"Record"}"].TryToInt() ?? 40;
+ var qry = await _importNoteRepository.MaxAsync(itm => itm.CreateTime);
+ retObj.LastReceiveTime = qry != null ? Convert.ToDateTime(qry) : ServerHelper.CurrentDateTime;
+ retObj.TimeoutMinutes = MinuteDiff(retObj.LastReceiveTime, ServerHelper.CurrentDateTime);
+ return retObj;
+ }
+
+ private int MinuteDiff(DateTime beginTime, DateTime endTime)
+ {
+ TimeSpan beginSpan = new TimeSpan(beginTime.Ticks);
+ TimeSpan endSpan = new TimeSpan(endTime.Ticks);
+ TimeSpan diffSpan = endSpan.Subtract(beginSpan).Duration();
+ return (int)(diffSpan.TotalMinutes);
+ }
+ #endregion
+ }
+}
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/EdiReceive/ImportRecordAppService.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/EdiReceive/ImportRecordAppService.cs
index 39da2f0..79b7552 100644
--- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/EdiReceive/ImportRecordAppService.cs
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/EdiReceive/ImportRecordAppService.cs
@@ -126,27 +126,27 @@ namespace WY.NewJit.EdiReceive
}
if (input.PaintOfflineTimeBegin.HasValue())
{
- where += string.Format(" and PaintOfflineTime >= '{0}'", input.PaintOfflineTimeBegin);
+ where += string.Format(" and PaintOfflineTime >= '{0}'", input.PaintOfflineTimeBegin?.ToString("yyyy-MM-dd HH:mm:ss"));
}
if (input.PaintOfflineTimeEnd.HasValue())
{
- where += string.Format(" and PaintOfflineTime <= '{0}'", input.PaintOfflineTimeEnd);
+ where += string.Format(" and PaintOfflineTime <= '{0}'", input.PaintOfflineTimeEnd?.ToString("yyyy-MM-dd HH:mm:ss"));
}
if (input.OnlineTimeBegin.HasValue())
{
- where += string.Format(" and OnlineTime >= '{0}'", input.OnlineTimeBegin);
+ where += string.Format(" and OnlineTime >= '{0}'", input.OnlineTimeBegin?.ToString("yyyy-MM-dd HH:mm:ss"));
}
if (input.OnlineTimeEnd.HasValue())
{
- where += string.Format(" and OnlineTime <= '{0}'", input.OnlineTimeEnd);
+ where += string.Format(" and OnlineTime <= '{0}'", input.OnlineTimeEnd?.ToString("yyyy-MM-dd HH:mm:ss"));
}
if (input.OnlineTimeBegin.HasValue())
{
- where += string.Format(" and OnlineTime >= '{0}'", input.OnlineTimeBegin);
+ where += string.Format(" and OnlineTime >= '{0}'", input.OnlineTimeBegin?.ToString("yyyy-MM-dd HH:mm:ss"));
}
if (input.OnlineTimeEnd.HasValue())
{
- where += string.Format(" and OnlineTime <= '{0}'", input.OnlineTimeEnd);
+ where += string.Format(" and OnlineTime <= '{0}'", input.OnlineTimeEnd?.ToString("yyyy-MM-dd HH:mm:ss"));
}
if (input.SerialNumBegin.HasValue())
{
@@ -170,19 +170,19 @@ namespace WY.NewJit.EdiReceive
}
if (input.CreateTimeBegin.HasValue())
{
- where += string.Format(" and CreateTime >= '{0}'", input.CreateTimeBegin);
+ where += string.Format(" and CreateTime >= '{0}'", input.CreateTimeBegin?.ToString("yyyy-MM-dd HH:mm:ss"));
}
if (input.CreateTimeEnd.HasValue())
{
- where += string.Format(" and CreateTime <= '{0}'", input.CreateTimeEnd);
+ where += string.Format(" and CreateTime <= '{0}'", input.CreateTimeEnd?.ToString("yyyy-MM-dd HH:mm:ss"));
}
if (input.ImportTimeBegin.HasValue())
{
- where += string.Format(" and ImportTime >= '{0}'", input.ImportTimeBegin);
+ where += string.Format(" and ImportTime >= '{0}'", input.ImportTimeBegin?.ToString("yyyy-MM-dd HH:mm:ss"));
}
if (input.ImportTimeEnd.HasValue())
{
- where += string.Format(" and ImportTime <= '{0}'", input.ImportTimeEnd);
+ where += string.Format(" and ImportTime <= '{0}'", input.ImportTimeEnd?.ToString("yyyy-MM-dd HH:mm:ss"));
}
return where;
}
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/UnknownAssemblys/UnknownAssemblyAppService.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/UnknownAssemblys/UnknownAssemblyAppService.cs
index 5d6b35e..7967453 100644
--- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/UnknownAssemblys/UnknownAssemblyAppService.cs
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/UnknownAssemblys/UnknownAssemblyAppService.cs
@@ -887,9 +887,13 @@ select * from
{
throw new Exception("M100表的MessageFileReceiveID字段值不能为空:" + m100Obj.HostSN2.ToString());
}
- ImportRecord impRecObj = await _importRecordRepository.GetAsync((Guid)(m100Obj.MessageFileReceiveID));
- string specExplain = impRecObj.SpecDesc;
- string colorExplain = impRecObj.VehicleModelDesc.Trim().Right(7);
+ //ImportRecord impRecObj = await _importRecordRepository.GetAsync((Guid)(m100Obj.MessageFileReceiveID));
+ //string specExplain = impRecObj.SpecDesc;
+ //string colorExplain = impRecObj.VehicleModelDesc.Trim().Right(7);
+ string specExplain = m100Obj.SpecExplain;
+ string colorExplain = m100Obj.ColorExplain;
+
+
ObjectResultDto repasingRet = await _ediParseDomainService.ReParsing(m100Obj, specExplain, colorExplain);
if (repasingRet.Status == false)
{
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/NewJitApplicationAutoMapperProfile.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/NewJitApplicationAutoMapperProfile.cs
index e807c4c..17f616c 100644
--- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/NewJitApplicationAutoMapperProfile.cs
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/NewJitApplicationAutoMapperProfile.cs
@@ -123,6 +123,14 @@ namespace WY.NewJit
CreateMap().ReverseMap();
#endregion
+ #region 红旗新车型FIS系统升级
+ CreateMap().ReverseMap();
+ CreateMap().ReverseMap();
+ CreateMap().ReverseMap();
+ CreateMap().ReverseMap();
+ #endregion
+
+
}
}
}
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/WY.NewJit.Application.xml b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/WY.NewJit.Application.xml
index 3d76aab..2e9ecf3 100644
--- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/WY.NewJit.Application.xml
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/WY.NewJit.Application.xml
@@ -9,6 +9,134 @@
BookAppService使用IObjectMapper将Book对象转换为BookDto对象, 将CreateUpdateBookDto对象转换为Book对象
+
+
+ 零件管理应用服务实现
+
+
+
+
+ 零件仓储
+
+
+
+
+ 日志
+
+
+
+
+ Dapper仓储
+
+
+
+
+ BLOB存储
+
+
+
+
+ 字典领域服务
+
+
+
+
+ 配置
+
+
+
+
+ 错误信息前缀
+
+
+
+
+ 构造函数
+
+
+
+
+ 取单表记录总数
+
+
+
+
+
+
+
+ 取单表当前页数据
+
+
+
+
+
+
+
+
+
+
+
+ 根据筛选条件获取实体列表
+
+
+
+
+ 根据筛选条件获取分页实体列表
+
+ 输入查询条件
+ 返回符合条件的排序分页列表
+
+
+
+ 按主键获取唯一实体
+
+ 主键
+ 实体信息
+
+
+
+ 添加实体
+
+ 添加内容
+ 执行成功返回真
+
+
+
+ 修改实体
+
+ 更新主键
+ 修改内容
+ 执行成功返回真
+
+
+
+ 删除实体
+
+ 删除主键
+ 执行成功返回真
+
+
+
+ 导出信息
+
+ 导出查询条件
+ 执行成功返回真
+
+
+
+ 导入
+
+ 导入文件
+ 校验出错时,是否强制执行
+ 执行成功返回真
+
+
+
+ 打印时间提醒
+
+
+
+
零件管理应用服务实现
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.DbMigrator/appsettings.json b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.DbMigrator/appsettings.json
index cae4e39..b2cfc60 100644
--- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.DbMigrator/appsettings.json
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.DbMigrator/appsettings.json
@@ -1,6 +1,10 @@
{
"ConnectionStrings": {
- "Default": "Server=dev.ccwin-in.com,6208;Database=NewJitPG_HQ_Temp;uid=sa;pwd=ChangkeTec@2021;"
+ //"Default": "Server=dev.ccwin-in.com,6208;Database=NewJitPG_HQ_Temp;uid=sa;pwd=ChangkeTec@2021;",
+ //"Default": "server=WenYin618\\MyServer;Database=NewJitPG_HQ;uid=sa;pwd=1;Encrypt=True;TrustServerCertificate=True",
+ "Default": "server=192.168.1.228;Database=NewJitPG_HQ;uid=sa;pwd=ChangkeTec@2021;"
+
+
/*"Default": "Server=192.168.0.213;Database=NewJitPG;uid=sa;pwd=Microsoft@2021"*/
/*"Default": "Server=LAPTOP-4TE7UPMR\\MYSQLSERVER;Database=NewJit;uid=sa;pwd=1"*/
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Entitys/ImportNote.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Entitys/ImportNote.cs
new file mode 100644
index 0000000..379e7ab
--- /dev/null
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Entitys/ImportNote.cs
@@ -0,0 +1,87 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Entities;
+
+namespace WY.NewJit.EdiReceive.Entitys
+{
+ public class ImportNote : Entity
+ {
+ ///
+ /// 底盘号
+ ///
+ public virtual string Vin { get; set; }
+
+ ///
+ /// 物流配货顺序号
+ ///
+ public virtual int HostSN { get; set; }
+
+ ///
+ /// 序列号 #
+ ///
+ public virtual string SerialNum { get; set; }
+
+ ///
+ /// 车型代码
+ ///
+ public virtual string VehicleModelCode { get; set; }
+
+ ///
+ /// 车型名称
+ ///
+ public virtual string VehicleModelName { get; set; }
+
+ ///
+ /// 上级产品系列(规格说明)
+ ///
+ public virtual string SpecDesc { get; set; }
+
+ ///
+ /// 车型
+ ///
+ public virtual string VehicleModel { get; set; }
+
+ ///
+ /// 公告车型
+ ///
+ public virtual string AfficheVehicleModel { get; set; }
+
+ ///
+ /// 特殊车标识
+ ///
+ public virtual string SpecialCarLogo { get; set; }
+
+ ///
+ /// 涂装下线时间
+ ///
+ public virtual DateTime? PaintOfflineTime { get; set; }
+
+ ///
+ /// 总装上线时间
+ ///
+ public virtual DateTime? OnlineTime { get; set; }
+
+ ///
+ /// 备注
+ ///
+ public virtual string Remark { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ public virtual DateTime? CreateTime { get; set; }
+
+ ///
+ /// 创建人
+ ///
+ public virtual string CreatePerson { get; set; }
+
+ public virtual DateTime? ImportTime { get; set; }
+
+ public virtual string ImportPerson { get; set; }
+ }
+
+}
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Entitys/ImportNoteHis.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Entitys/ImportNoteHis.cs
new file mode 100644
index 0000000..63de779
--- /dev/null
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Entitys/ImportNoteHis.cs
@@ -0,0 +1,87 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Entities;
+
+namespace WY.NewJit.EdiReceive.Entitys
+{
+ public class ImportNoteHis : Entity
+ {
+ ///
+ /// 底盘号
+ ///
+ public virtual string Vin { get; set; }
+
+ ///
+ /// 物流配货顺序号
+ ///
+ public virtual int HostSN { get; set; }
+
+ ///
+ /// 序列号 #
+ ///
+ public virtual string SerialNum { get; set; }
+
+ ///
+ /// 车型代码
+ ///
+ public virtual string VehicleModelCode { get; set; }
+
+ ///
+ /// 车型名称
+ ///
+ public virtual string VehicleModelName { get; set; }
+
+ ///
+ /// 上级产品系列(规格说明)
+ ///
+ public virtual string SpecDesc { get; set; }
+
+ ///
+ /// 车型
+ ///
+ public virtual string VehicleModel { get; set; }
+
+ ///
+ /// 公告车型
+ ///
+ public virtual string AfficheVehicleModel { get; set; }
+
+ ///
+ /// 特殊车标识
+ ///
+ public virtual string SpecialCarLogo { get; set; }
+
+ ///
+ /// 涂装下线时间
+ ///
+ public virtual DateTime? PaintOfflineTime { get; set; }
+
+ ///
+ /// 总装上线时间
+ ///
+ public virtual DateTime? OnlineTime { get; set; }
+
+ ///
+ /// 备注
+ ///
+ public virtual string Remark { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ public virtual DateTime? CreateTime { get; set; }
+
+ ///
+ /// 创建人
+ ///
+ public virtual string CreatePerson { get; set; }
+
+ public virtual DateTime? ImportTime { get; set; }
+
+ public virtual string ImportPerson { get; set; }
+ }
+
+}
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Services/EdiParseDomainService.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Services/EdiParseDomainService.cs
index c5ef30d..19fd2ee 100644
--- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Services/EdiParseDomainService.cs
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Services/EdiParseDomainService.cs
@@ -198,6 +198,12 @@ namespace WY.NewJit.EdiReceive.Services
int idx = 0;
foreach (ImportRecord orderItem in paigeOrderLst)
{
+ Guid importRecordId = orderItem.Id;
+ int hostSN = orderItem.HostSN;
+ string vin = orderItem.Vin;
+ string specExplain = orderItem.SpecDesc;
+ string colorExplain = orderItem.VehicleModelDesc.Trim().Right(7);
+
idx++;
if (idx % 10 == 0)
{
@@ -209,20 +215,18 @@ namespace WY.NewJit.EdiReceive.Services
UpdateProductLine(m100Obj);
//重复报文
- bool isRepeat = await _billM100Repository.AnyAsync(itm => itm.HostSN == orderItem.HostSN && itm.VIN == orderItem.Vin);
+ bool isRepeat = await _billM100Repository.AnyAsync(itm => itm.HostSN == hostSN && itm.VIN == vin);
if (isRepeat == true)
{
#region 重复报文
- var succObj = await InsertM100RepeatBill(orderItem, m100Obj, autoSave);
- _logger.LogDebug(_errorMessagePrefix + $"流水号{orderItem.HostSN}是重复报文");
+ var succObj = await InsertM100RepeatBill(importRecordId, m100Obj, autoSave);
+ _logger.LogDebug(_errorMessagePrefix + $"流水号{hostSN}是重复报文");
ret.Status = (succObj != null);
return ret;
#endregion
}
//绑定总成分组
- string specExplain = orderItem.SpecDesc;
- string colorExplain = orderItem.VehicleModelDesc.Trim().Right(7);
Group_Assembly groupAssemblyObj = HQ_CacheManagerDomainService._groupAssemblyList.FirstOrDefault(itm => itm.SpecExplain == specExplain && itm.ColorExplain == colorExplain);
if (groupAssemblyObj != null)
{
@@ -254,7 +258,7 @@ namespace WY.NewJit.EdiReceive.Services
else
{
//未知总成
- _logger.LogDebug(_errorMessagePrefix + $"未匹配总成,插入未知总成开始:{orderItem.HostSN}");
+ _logger.LogDebug(_errorMessagePrefix + $"未匹配总成,插入未知总成开始:{hostSN}");
//更新单据表
m100Obj.SetAssemblyID(null);
m100Obj.SetBillStatus(BillStatusEnum.NotMatch);
@@ -264,7 +268,7 @@ namespace WY.NewJit.EdiReceive.Services
//不匹配时,插入未知总成
var succObj2 = await InsertUnknownAssembly(m100Obj, autoSave);
- _logger.LogDebug(_errorMessagePrefix + $"未匹配总成,插入未知总成完成:{orderItem.HostSN}");
+ _logger.LogDebug(_errorMessagePrefix + $"未匹配总成,插入未知总成完成:{hostSN}");
ret.Status = (succObj1 != null && succObj2 != null);
}
@@ -489,13 +493,13 @@ namespace WY.NewJit.EdiReceive.Services
}
}
- private async Task InsertM100RepeatBill(ImportRecord impordRec, BillM100 m100Bill, bool autoSave = false)
+ private async Task InsertM100RepeatBill(Guid impordRecId, BillM100 m100Bill, bool autoSave = false)
{
RepeatM100 ret = null;
int newSN = ServerHelper.VinToSN(m100Bill.VIN);
RepeatM100 repeatBill = new RepeatM100(
GuidGenerator.Create(),
- impordRec.Id,
+ impordRecId,
newSN,
m100Bill.HostSN,
m100Bill.KNR,
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Services/EdiParseDomainSrvV2.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Services/EdiParseDomainSrvV2.cs
new file mode 100644
index 0000000..772ad69
--- /dev/null
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Services/EdiParseDomainSrvV2.cs
@@ -0,0 +1,557 @@
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Logging;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp;
+using Volo.Abp.Domain.Repositories;
+using Volo.Abp.Domain.Services;
+using WY.NewJit.EdiReceive.Entitys;
+using WY.NewJit.IRepositories;
+using WY.NewJit.MsgBaseData;
+using WY.NewJit.MsgCheck;
+using WY.NewJit.Common;
+using WY.NewJit.MsgBaseData.Entitys;
+
+namespace WY.NewJit.EdiReceive.Services
+{
+ ///
+ /// 红旗报文接收
+ ///
+ public class EdiParseDomainSrvV2 : DomainService
+ {
+ #region 成员
+ ///
+ /// 日志
+ ///
+ private readonly ILogger _logger;
+
+ ///
+ /// Dapper仓储
+ ///
+ private readonly INewJitDapperRepository _newJitDapperRepository;
+
+ ///
+ /// 字典领域服务
+ ///
+ private readonly DicDomainService _dicDomainService;
+
+ ///
+ /// 导入记录仓储
+ ///
+ private readonly IRepository _importNoteRepository;
+
+ ///
+ /// M100单据
+ ///
+ private readonly IRepository _billM100Repository;
+
+ ///
+ /// 整车总成配置仓库
+ ///
+ private readonly IRepository _assemblyCfgVehicleRepository;
+
+ ///
+ /// 导入最大流水号 领域服务
+ ///
+ private readonly LastImportHostSNDomainService _lastImportHostSNDomainService;
+
+ ///
+ /// 缓存管理 领域服务
+ ///
+ private readonly HQ_CacheManagerDomainService _hqCacheManagerDomainService;
+
+ ///
+ /// 插入M100、未打印表 领域服务
+ ///
+ private readonly HQ_M100DomainService _hqM100DomainServie;
+
+ ///
+ /// 重复报文仓库
+ ///
+ private readonly IRepository _repeatM100Repository;
+
+ ///
+ /// 未知总成仓库
+ ///
+ private readonly IRepository _unknownAssemblyRepository;
+
+ ///
+ /// 根据车型代码中的前两位(HS),过滤属于派格的订单;只针对派格的订单进行报文解析
+ ///
+ private string[] _vehicleModelPrefix = new string[2] { "D077", "E007" };
+
+ ///
+ /// 错误信息前缀
+ ///
+ private string _errorMessagePrefix
+ {
+ get
+ {
+ return System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + ".";
+ }
+ }
+
+ private const string _productLineCode = "12";
+
+
+ #endregion
+ public EdiParseDomainSrvV2(ILogger logger, INewJitDapperRepository newJitDapperRepository, DicDomainService dicDomainService, IRepository importNoteRepository, IRepository billM100Repository, LastImportHostSNDomainService lastImportHostSNDomainService, IRepository assemblyCfgGroupRepository = null, IRepository assemblyCfgErpRepository = null, IRepository assemblyCfgVehicleRepository = null, HQ_CacheManagerDomainService hqCacheManagerDomainService = null, HQ_M100DomainService hqM100DomainServie = null, IRepository repeatM100Repository = null, IRepository unknownAssemblyRepository = null)
+ {
+ _logger = logger;
+ _newJitDapperRepository = newJitDapperRepository;
+ _dicDomainService = dicDomainService;
+ _importNoteRepository = importNoteRepository;
+ _billM100Repository = billM100Repository;
+ _lastImportHostSNDomainService = lastImportHostSNDomainService;
+
+ _assemblyCfgVehicleRepository = assemblyCfgVehicleRepository;
+ _hqCacheManagerDomainService = hqCacheManagerDomainService;
+ _hqM100DomainServie = hqM100DomainServie;
+ _repeatM100Repository = repeatM100Repository;
+ _unknownAssemblyRepository = unknownAssemblyRepository;
+ }
+
+ ///
+ /// 解析报文
+ /// 一、导入记录表
+ /// 1. 从客户网站导出EXCEL格式的订单列表
+ /// 2. 校验 本次导入的最小HostSN必须<= 上次导入的最大HostSN + 1 (上次是10, 本次可以是 9 10 11,不能是12)
+ /// 3. 根据VIN和HostSN,扣除重复导入的记录
+ /// 4. 断号提醒:导入Excel时,如果系统中的流水号不能顺序连接,需要给出提醒,是否继续导入,如果选择继续导入,仍可以导入到系统中
+ /// 5. 最后导入到本系统中 input
+ ///
+ /// 二、插入M100
+ /// 1. 根据车型名称 前4位等于D077或E007,过滤属于派格的订单;只针对派格的订单进行报文解析
+ /// 2. 根据VIN判断是否重复报文,将重复报文放到“重复报文表”
+ /// 3. 通过车型名称中的颜色(条件一)和上级产线系列(条件二)两个字段能够定位到该底盘对应哪个总成组(4个总成一组)。如果匹配将订单和总成组进行绑定;如果不匹配将订单放入未知总成
+ /// 4. 插入M100 (更新派格车型、 生产线)
+ /// 5. 插入WaitPrint
+ ///
+ /// 导入Excel内容
+ /// 校验不通过时,是否强制执行通过
+ public virtual async Task ParseEdi(List input, bool forceExecute = false)
+ {
+ ObjectResultDto ret = new ObjectResultDto();
+ bool autoSave = false;
+
+ //扣除重复导入的订单(和数据库对比)
+ List notRepeatOrder = await GetNotRepeatOrder(input);
+ if (notRepeatOrder.Count == 0)
+ {
+ ret.Status = false;
+ ret.Message = $"本次导入Excel文件中{input.Count}条记录,重复订单数量{input.Count- notRepeatOrder.Count},都是重复的订单、无法导入!";
+ return ret;
+ }
+ #region 断号提醒
+ //校验两次导入之间是否断号
+ int priorMaxHostSN = await _lastImportHostSNDomainService.GetLastImportMaxHostSN(_productLineCode);
+ string betweenBreakNumMsg = await CheckBetweenBreakNum(input, priorMaxHostSN);
+ //校验本次导入数据是否断号
+ string breakNumMsg = CheckBreakNum(ref notRepeatOrder);
+
+ if (betweenBreakNumMsg.HasValue() || breakNumMsg.HasValue())
+ {
+ if (forceExecute == false)
+ {
+ //断号提醒
+ ret.Status = true;
+ ret.Message = betweenBreakNumMsg + breakNumMsg;
+ return ret;
+ }
+ }
+ #endregion
+
+ //初始化缓存
+ _hqCacheManagerDomainService.InitLoadCache();
+
+ //批量插入 导入记录
+ await _importNoteRepository.InsertManyAsync(notRepeatOrder, autoSave);
+
+ //过滤掉其它厂家的订单,只取派格订单
+ //车型名称 前4位等于D077或E007
+ var paigeOrderLst = notRepeatOrder.Where(itm => _vehicleModelPrefix.Contains(itm.VehicleModelName?.Substring(0, 4))).OrderBy(itm => itm.HostSN).ToList();
+ int idx = 0;
+ foreach (ImportNote orderItem in paigeOrderLst)
+ {
+ Guid importNoteId = orderItem.Id;
+ int hostSN = orderItem.HostSN;
+ string vin = orderItem.Vin;
+ string specExplain = orderItem.SpecDesc;
+ string colorExplain = GetColor(orderItem.VehicleModelName);
+
+ idx++;
+ if (idx % 10 == 0)
+ {
+ _logger.LogDebug(_errorMessagePrefix + $"循环中:{idx}/{paigeOrderLst.Count}");
+ }
+ //构建M100实体
+ BillM100 m100Obj = BuildM100Entity(orderItem);
+ //更新车型、产线
+ UpdateProductLine(m100Obj);
+
+ //重复报文
+ bool isRepeat = await _billM100Repository.AnyAsync(itm => itm.HostSN == hostSN && itm.VIN == vin);
+ if (isRepeat == true)
+ {
+ #region 重复报文
+ var succObj = await InsertM100RepeatBill(importNoteId, m100Obj, autoSave);
+ _logger.LogDebug(_errorMessagePrefix + $"流水号{hostSN}是重复报文");
+ ret.Status = (succObj != null);
+ return ret;
+ #endregion
+ }
+
+ //绑定总成分组
+ Group_Assembly groupAssemblyObj = HQ_CacheManagerDomainService._groupAssemblyList.FirstOrDefault(itm => itm.SpecExplain == specExplain && itm.ColorExplain == colorExplain);
+ if (groupAssemblyObj != null)
+ {
+ #region 插入整车总成
+ Guid vehicleAssemblyId = GuidGenerator.Create();
+ AssemblyCfgVehicle vehicleAssemblyCfgObj = new AssemblyCfgVehicle(vehicleAssemblyId, null, m100Obj.VehicleModelCode, null, true);
+ foreach (OnlyAssemblyInfo assemblyItem in groupAssemblyObj.AssemblyDetails) //插入子表
+ {
+ vehicleAssemblyCfgObj.AddChildObj(GuidGenerator.Create(), assemblyItem.Id);
+ }
+ var vehicleAssemblyResu = await _assemblyCfgVehicleRepository.InsertAsync(vehicleAssemblyCfgObj, autoSave);
+ if (vehicleAssemblyResu == null)
+ {
+ throw new Exception("插入整车总成返回结果为空InsertAsync!");
+ }
+ #endregion
+
+ //插入M100、未打印表
+ m100Obj.SetAssemblyID(vehicleAssemblyResu.Id);
+ m100Obj.SetBillStatus(BillStatusEnum.Match);
+ m100Obj.SpecExplain = specExplain;
+ m100Obj.ColorExplain = colorExplain;
+ var insM100Ret = await _hqM100DomainServie.InsertM100(m100Obj, autoSave);
+ if (insM100Ret == null)
+ {
+ throw new Exception("插入M100返回结果为空InsertAsync!");
+ }
+ }
+ else
+ {
+ //未知总成
+ _logger.LogDebug(_errorMessagePrefix + $"未匹配总成,插入未知总成开始:{hostSN}");
+ //更新单据表
+ m100Obj.SetAssemblyID(null);
+ m100Obj.SetBillStatus(BillStatusEnum.NotMatch);
+ m100Obj.SpecExplain = specExplain;
+ m100Obj.ColorExplain = colorExplain;
+ var succObj1 = await _hqM100DomainServie.InsertM100(m100Obj, autoSave);
+
+ //不匹配时,插入未知总成
+ var succObj2 = await InsertUnknownAssembly(m100Obj, autoSave);
+ _logger.LogDebug(_errorMessagePrefix + $"未匹配总成,插入未知总成完成:{hostSN}");
+ ret.Status = (succObj1 != null && succObj2 != null);
+ }
+
+ } //foreach
+
+ //更新本次导入的最大HostSN
+ int curMaxHostSN = input.Max(itm => itm.HostSN);
+ await _lastImportHostSNDomainService.SetCurrentImportMaxHostSN(_productLineCode, curMaxHostSN, true); //取最大号必须缓存autoSave = true
+
+ if (notRepeatOrder.Count < input.Count)
+ {
+ int repeatCount = input.Count - notRepeatOrder.Count;
+
+ ret.Message = $"本次导入Excel文件中{input.Count}条记录,上次导入最大流水号是{priorMaxHostSN},本次导入重复记录{repeatCount}";
+ ret.Status = false;
+ return ret;
+ }
+
+ ret.Status = true;
+ return ret;
+ }
+
+ ///
+ /// 从车型名称中取颜色:截取车型名称最后一个逗号右侧的部分
+ ///
+ ///
+ ///
+ private string GetColor(string vehicleName)
+ {
+ if (vehicleName.IsNullOrEmpty() || vehicleName.Trim() == "")
+ {
+ return "";
+ }
+ int lastIdx = vehicleName.Replace(",", ",").LastIndexOf(",");
+ // 如果找不到逗号,则返回原字符串
+ if (lastIdx == -1)
+ {
+ return "";
+ }
+
+ // 返回最后一个逗号后面的部分
+ return vehicleName.Substring(lastIdx + 1).Trim();
+ }
+
+ ///
+ /// 未知总成-重新解析
+ ///
+ ///
+ ///
+ ///
+ ///
+ //public virtual async Task> ReParsing(BillM100 m100Obj, string specExplain, string colorExplain)
+ //{
+ // ObjectResultDto ret = new ObjectResultDto();
+ // Group_Assembly groupAssemblyObj = HQ_CacheManagerDomainService._groupAssemblyList.FirstOrDefault(itm => itm.SpecExplain == specExplain && itm.ColorExplain == colorExplain);
+ // if (groupAssemblyObj != null)
+ // {
+ // #region 插入整车总成
+ // Guid vehicleAssemblyId = GuidGenerator.Create();
+ // AssemblyCfgVehicle vehicleAssemblyCfgObj = new AssemblyCfgVehicle(vehicleAssemblyId, null, m100Obj.VehicleModelCode, null, true);
+ // foreach (OnlyAssemblyInfo assemblyItem in groupAssemblyObj.AssemblyDetails) //插入子表
+ // {
+ // vehicleAssemblyCfgObj.AddChildObj(GuidGenerator.Create(), assemblyItem.Id);
+ // }
+ // var vehicleAssemblyResu = await _assemblyCfgVehicleRepository.InsertAsync(vehicleAssemblyCfgObj, true);
+ // if (vehicleAssemblyResu == null)
+ // {
+ // throw new Exception($"{_errorMessagePrefix}插入整车总成失败:{m100Obj.HostSN2}");
+ // }
+ // #endregion
+
+ // //更新M100
+ // m100Obj.SetAssemblyID(vehicleAssemblyResu.Id);
+ // m100Obj.SetBillStatus(BillStatusEnum.Match);
+ // var m100Ret = await _billM100Repository.UpdateAsync(m100Obj);
+ // if (m100Ret == null)
+ // {
+ // throw new Exception($"{_errorMessagePrefix}更新M100失败:{m100Obj.HostSN2}");
+ // }
+
+ // //bool hasBeforeNotPrint = await _hqM100DomainServie.BeforeNotPrint((int)(m100Obj.HostSN2));
+ // //bool isReplenishPrint = hasBeforeNotPrint ? false : true; //未打印表包含重新解析之前的记录,设置成正常打印,否则设置成补打
+ // bool isReplenishPrint = await _hqM100DomainServie.JugdeIsReplenishPrint(m100Obj.ProductLine, (int)(m100Obj.HostSN2));
+
+ // //判断未打印表是否有数据,有则更新,没有则插入
+ // ObjectResultDto wpRet = await _hqM100DomainServie.InsertOrUpdateWaitPrintByM100(m100Ret, false, isReplenishPrint);
+ // if (wpRet.Status == false)
+ // {
+ // throw new Exception(wpRet.Message);
+ // }
+ // //var updM100Ret = await _hqM100DomainServie.UpdateM100(m100Obj);
+ // ret.Status = true;
+ // ret.Item = true;
+ // return ret;
+ // }
+ // else
+ // {
+ // ret.Status = true;
+ // ret.Item = false;
+ // ret.Message = $"重新解析失败:流水号{m100Obj.HostSN2},规格说明:{specExplain},颜色说明:{colorExplain}";
+ // return ret;
+ // }
+ //}
+
+
+ ///
+ /// 上次导入和本次导入之间的流水号是否连续
+ ///
+ ///
+ ///
+ private async Task CheckBetweenBreakNum(List input, int priorMaxHostSN)
+ {
+ string ret = "";
+ //取本次导入的最小HostSN
+ int curMinHostSN = input.Min(itm => itm.HostSN);
+ //上次导入的最大HostSN
+ //int priorMaxHostSN = await _lastImportHostSNDomainService.GetLastImportMaxHostSN();
+ if (priorMaxHostSN > 0) //第一次导入时(priorMaxHostSN = 0),不需要校验两次导入之间的断号
+ {
+ if (curMinHostSN <= priorMaxHostSN + 1)
+ {
+ }
+ else
+ {
+ //两次导入断号提醒
+ ret = $"两次导入断号提醒:本次导入的最小流水号是:{curMinHostSN},上次导入的最大流水号是:{priorMaxHostSN},两者不连续\r\n";
+ }
+ }
+
+ return ret;
+ }
+
+ private BillM100 BuildM100Entity(ImportNote orderItem)
+ {
+ BillM100 m100Obj = new BillM100(GuidGenerator.Create());
+ m100Obj.MessageFileReceiveID = orderItem.Id;
+ m100Obj.SerialNum = orderItem.SerialNum.TryToInt(); //ServerHelper.VinToSN(orderItem.Vin);
+ m100Obj.SerialNumStr = ServerHelper.ToSerialNumStr(orderItem.OnlineTime, orderItem.HostSN);
+ m100Obj.HostSN = orderItem.HostSN;
+ m100Obj.HostSN2 = orderItem.HostSN; //流水号
+ m100Obj.KNR = null; // orderItem.VehicleBodyCode;
+ m100Obj.VIN = orderItem.Vin;
+ m100Obj.AssemblyID = null;
+ m100Obj.OnlineTime = orderItem.OnlineTime;
+ m100Obj.VehicleModelCode = orderItem.VehicleModelName.Substring(0, 4); //orderItem.VehicleModelCode.Substring(0, 2);
+ m100Obj.ProductLine = null;
+ m100Obj.Version = "";
+ m100Obj.ReceiveTime = ServerHelper.CurrentDateTime;
+ m100Obj.BillStatus = BillStatusEnum.NotMatch;
+ m100Obj.Description = "";
+ //m100Obj.OperationType = operationType;
+ //m100Obj.Operator = @operator;
+ //m100Obj.OperationTime = operationTime;
+ m100Obj.CanNotPrint = false;
+ m100Obj.NeedReplenishPrint = 0;
+ m100Obj.IsPartSwitch = false;
+ return m100Obj;
+ }
+
+ ///
+ /// 校验本次导入数据断号
+ ///
+ ///
+ ///
+ private static string CheckBreakNum(ref List notRepeatOrder)
+ {
+ StringBuilder sb = new StringBuilder();
+ notRepeatOrder = notRepeatOrder.OrderBy(itm => itm.HostSN).ToList();
+ for (int curIdx = 1; curIdx < notRepeatOrder.Count; curIdx++)
+ {
+ int curVal = notRepeatOrder[curIdx].HostSN;
+ int priorIdx = curIdx - 1;
+ int priorVal = notRepeatOrder[priorIdx].HostSN;
+ if (curVal - priorVal > 1)
+ {
+ sb.AppendLine($"流水号{priorVal}和{curVal}之间存在断号");
+ }
+ else if (curVal - priorVal == 0)
+ {
+ sb.AppendLine($"流水号{priorVal}和{curVal}之间存在重复");
+ }
+ }
+ return sb.ToString();
+ }
+
+ ///
+ /// 根据流水号、VIN 扣除重复导入的订单
+ ///
+ ///
+ ///
+ private async Task> GetNotRepeatOrder(List input)
+ {
+ List notRepeatLst = new List();
+ List importHistoryLst = await _importNoteRepository.GetPagedListAsync(0, 10000, "HostSN desc");
+
+ foreach (ImportNote item in input)
+ {
+ bool hasData = importHistoryLst.Any(itm => itm.HostSN == item.HostSN && itm.Vin == item.Vin);
+ if (hasData)
+ {
+ }
+ else
+ {
+ notRepeatLst.Add(item);
+ }
+ }
+ return notRepeatLst;
+ }
+
+ ///
+ /// 更新车型、生产线
+ ///
+ ///
+ private void UpdateProductLine(BillM100 bill)
+ {
+ string ediVehicleModel = bill.VehicleModelCode; //报文车型
+ //车型转换:3H 转 CC
+ var obj1 = HQ_CacheManagerDomainService._msgToPaiGeVehicleModelList.FirstOrDefault(itm => itm.DicItemCode == ediVehicleModel);
+ if (obj1 != null)
+ {
+ string paigeVehicleModel = obj1.DicItemName; // CC
+ if (paigeVehicleModel.Contains('-')) //去掉B8L-PHEV中的-PHEV
+ {
+ paigeVehicleModel = paigeVehicleModel.Split('-')[0];
+ }
+ bill.SetVehicleModelCode(paigeVehicleModel);
+ //根据车型取对应生产线
+ var obj2 = HQ_CacheManagerDomainService._m100VehicleModelProductLineList.FirstOrDefault(itm => itm.DicItemCode == paigeVehicleModel);
+ if (obj2 != null)
+ {
+ string productLine = obj2.DicItemName;
+ bill.SetProductLine(productLine);
+ }
+ else
+ {
+ string errorMsg = $"零件生产工厂车型{paigeVehicleModel}没有对应的生产线!";
+ _logger.LogError(errorMsg);
+ }
+ }
+ else //报文车型 没有对应的 派格车型
+ {
+ string errorMsg = $"报文车型{ediVehicleModel}没有对应的零件生产工厂车型!";
+ _logger.LogError(errorMsg);
+ }
+ }
+
+ private async Task InsertM100RepeatBill(Guid impordRecId, BillM100 m100Bill, bool autoSave = false)
+ {
+ RepeatM100 ret = null;
+ int newSN = ServerHelper.VinToSN(m100Bill.VIN);
+ RepeatM100 repeatBill = new RepeatM100(
+ GuidGenerator.Create(),
+ impordRecId,
+ newSN,
+ m100Bill.HostSN,
+ m100Bill.KNR,
+ m100Bill.VIN,
+ null,
+ m100Bill.OnlineTime,
+ ServerHelper.CurrentDateTime,
+ m100Bill.VehicleModelCode,
+ m100Bill.ProductLine,
+ ((DateTime)m100Bill.OnlineTime).ToString("yyyyMM"),
+ BillStatusEnum.None
+ );
+
+ //零件子表赋值【红旗版没有子零件表数据】
+ //foreach (BillM100Part m100Part in m100Bill.BillM100Parts)
+ //{
+ // repeatBill.AddChildObj(GuidGenerator.Create(), m100Part.PartCode, m100Part.PartNum, m100Part.Description);
+ //}
+ //插入重复单据
+ ret = await _repeatM100Repository.InsertAsync(repeatBill, autoSave);
+ return ret;
+ }
+
+ ///
+ /// 不匹配时,插入未知总成,写提醒日志
+ ///
+ ///
+ private async Task InsertUnknownAssembly(BillM100 bill, bool autoSave = false)
+ {
+ UnknownAssembly ret = null;
+ try
+ {
+ //插入未知总成
+ UnknownAssembly unknownAssemblyObj = new UnknownAssembly(GuidGenerator.Create(), bill.Id, "M100");
+ //预批量赋值
+ unknownAssemblyObj.Description = bill.Description; //描述字段保存预批量信息
+
+ //foreach (BillM100Part billPart in bill.BillM100Parts)
+ //{
+ // unknownAssemblyObj.AddChildObj(GuidGenerator.Create(), billPart.PartCode, billPart.PartNum, billPart.Description);
+ //}
+ //var partNumSum = unknownAssemblyObj.UnknownAssemblyParts.Sum(itm => (int)itm.PartNum);
+ //unknownAssemblyObj.SetPartNum(partNumSum);
+ ret = await _unknownAssemblyRepository.InsertAsync(unknownAssemblyObj, autoSave);
+ return ret;
+ }
+ catch (Exception ex)
+ {
+ throw new Exception($"InsertUnknownAssembly方法报错:" + ex.Message);
+ }
+ }
+
+
+ }
+}
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Services/LastImportHostSNDomainService.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Services/LastImportHostSNDomainService.cs
index 12df25f..349408c 100644
--- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Services/LastImportHostSNDomainService.cs
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/EdiReceive/Services/LastImportHostSNDomainService.cs
@@ -33,10 +33,16 @@ namespace WY.NewJit.EdiReceive.Services
private readonly DicDomainService _dicDomainService;
///
- /// 零件仓储
+ /// E001导入记录
///
private readonly IRepository _importRecordRepository;
+ ///
+ /// E001导入记录
+ ///
+ private readonly IRepository _importNoteRepository;
+
+
///
/// M100单据
///
@@ -45,7 +51,9 @@ namespace WY.NewJit.EdiReceive.Services
private readonly IRepository _lastImportHostSNRepository;
#endregion
- public LastImportHostSNDomainService(ILogger logger, INewJitDapperRepository newJitDapperRepository, DicDomainService dicDomainService, IRepository importRecordRepository, IRepository billM100Repository, IRepository lastImportHostSNRepository)
+ public LastImportHostSNDomainService(ILogger logger, INewJitDapperRepository newJitDapperRepository, DicDomainService dicDomainService, IRepository importRecordRepository, IRepository billM100Repository, IRepository lastImportHostSNRepository
+ , IRepository importNoteRepository
+ )
{
_logger = logger;
_newJitDapperRepository = newJitDapperRepository;
@@ -53,6 +61,7 @@ namespace WY.NewJit.EdiReceive.Services
_importRecordRepository = importRecordRepository;
_billM100Repository = billM100Repository;
_lastImportHostSNRepository = lastImportHostSNRepository;
+ _importNoteRepository = importNoteRepository;
}
///
@@ -62,7 +71,7 @@ namespace WY.NewJit.EdiReceive.Services
///
public virtual async Task GetLastImportMaxHostSN()
{
- var lst = await _lastImportHostSNRepository.GetListAsync();
+ var lst = await _lastImportHostSNRepository.GetListAsync(itm => string.IsNullOrEmpty(itm.ProductLineCode) || itm.ProductLineCode == "11");
if (lst.Count > 0)
{
return lst[0].HostSN;
@@ -84,7 +93,70 @@ namespace WY.NewJit.EdiReceive.Services
public async Task SetCurrentImportMaxHostSN(int maxHostSN, bool autoSave = false)
{
- var obj = await _lastImportHostSNRepository.FirstOrDefaultAsync();
+ var obj = await _lastImportHostSNRepository.Where(itm => string.IsNullOrEmpty(itm.ProductLineCode) || itm.ProductLineCode == "11").FirstOrDefaultAsync();
+ if (obj != null)
+ {
+ obj.HostSN = maxHostSN;
+ await _lastImportHostSNRepository.UpdateAsync(obj, autoSave);
+ }
+ else
+ {
+ LastImportHostSN newObj = new LastImportHostSN(GuidGenerator.Create());
+ newObj.ProductLineCode = "11";
+ newObj.HostSN = maxHostSN;
+ var insRet = await _lastImportHostSNRepository.InsertAsync(newObj, autoSave);
+ }
+ }
+
+ #region 红旗新车型FIS系统升级
+ public virtual async Task GetLastImportMaxHostSN(string productLineCode)
+ {
+ var lst = await _lastImportHostSNRepository.GetListAsync(itm => itm.ProductLineCode == productLineCode);
+ if (lst.Count > 0)
+ {
+ return lst[0].HostSN;
+ }
+ else
+ {
+ if (productLineCode == "12")
+ {
+ bool hasData = await _importNoteRepository.AnyAsync();
+ if (hasData)
+ {
+ int maxSN = await _importNoteRepository.MaxAsync(itm => itm.HostSN);
+ return maxSN;
+ }
+ else
+ {
+ return 0;
+ }
+
+ }
+ else if (productLineCode == "11")
+ {
+ bool hasData = await _importRecordRepository.AnyAsync();
+ if (hasData)
+ {
+ int maxSN = await _importRecordRepository.MaxAsync(itm => itm.HostSN);
+ return maxSN;
+ }
+ else
+ {
+ return 0;
+ }
+
+ }
+ else
+ {
+ throw new Exception("生产线不存在:" + productLineCode);
+ }
+
+ }
+ }
+
+ public async Task SetCurrentImportMaxHostSN(string productLineCode, int maxHostSN, bool autoSave = false)
+ {
+ var obj = await _lastImportHostSNRepository.Where(itm => itm.ProductLineCode == productLineCode).FirstOrDefaultAsync();
if (obj != null)
{
obj.HostSN = maxHostSN;
@@ -93,10 +165,13 @@ namespace WY.NewJit.EdiReceive.Services
else
{
LastImportHostSN newObj = new LastImportHostSN(GuidGenerator.Create());
+ newObj.ProductLineCode = productLineCode;
newObj.HostSN = maxHostSN;
var insRet = await _lastImportHostSNRepository.InsertAsync(newObj, autoSave);
}
}
+ #endregion
+
}
}
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.EntityFrameworkCore/EntityFrameworkCore/NewJitDbContext.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.EntityFrameworkCore/EntityFrameworkCore/NewJitDbContext.cs
index afd6f2a..19611e5 100644
--- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.EntityFrameworkCore/EntityFrameworkCore/NewJitDbContext.cs
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.EntityFrameworkCore/EntityFrameworkCore/NewJitDbContext.cs
@@ -162,6 +162,12 @@ namespace WY.NewJit.EntityFrameworkCore
#endregion
+ #region 红旗新车型FIS系统升级
+ public DbSet ImportNotes { get; set; }
+
+ public DbSet ImportNoteHiss { get; set; }
+ #endregion
+
/* Add DbSet properties for your Aggregate Roots / Entities here.
* Also map them inside NewJitDbContextModelCreatingExtensions.ConfigureNewJit
*/
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.EntityFrameworkCore/EntityFrameworkCore/NewJitDbContextModelCreatingExtensions.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.EntityFrameworkCore/EntityFrameworkCore/NewJitDbContextModelCreatingExtensions.cs
index 377ffaa..b68156f 100644
--- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.EntityFrameworkCore/EntityFrameworkCore/NewJitDbContextModelCreatingExtensions.cs
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.EntityFrameworkCore/EntityFrameworkCore/NewJitDbContextModelCreatingExtensions.cs
@@ -684,6 +684,43 @@ namespace WY.NewJit.EntityFrameworkCore
});
+ #endregion
+
+ #region 红旗新车型FIS系统升级
+ builder.Entity(b =>
+ {
+ b.ToTable(NewJitConsts.DbTablePrefix + nameof(ImportNote));
+ b.ConfigureByConvention();
+ b.Property(e => e.Vin).HasColumnType("varchar").HasMaxLength(50);
+ b.Property(e => e.SerialNum).HasColumnType("varchar").HasMaxLength(50);
+ b.Property(e => e.VehicleModelCode).HasColumnType("varchar").HasMaxLength(50);
+ b.Property(e => e.VehicleModelName).HasColumnType("nvarchar").HasMaxLength(200);
+ b.Property(e => e.SpecDesc).HasColumnType("varchar").HasMaxLength(50);
+ b.Property(e => e.VehicleModel).HasColumnType("varchar").HasMaxLength(200);
+ b.Property(e => e.AfficheVehicleModel).HasColumnType("nvarchar").HasMaxLength(200);
+ b.Property(e => e.SpecialCarLogo).HasColumnType("nvarchar").HasMaxLength(200);
+ b.Property(e => e.Remark).HasColumnType("nvarchar").HasMaxLength(500);
+ b.Property(e => e.CreatePerson).HasColumnType("nvarchar").HasMaxLength(50);
+ b.Property(e => e.ImportPerson).HasColumnType("nvarchar").HasMaxLength(50);
+ });
+
+ builder.Entity(b =>
+ {
+ b.ToTable(NewJitConsts.DbTablePrefix + nameof(ImportNoteHis));
+ b.ConfigureByConvention();
+ b.Property(e => e.Vin).HasColumnType("varchar").HasMaxLength(50);
+ b.Property(e => e.SerialNum).HasColumnType("varchar").HasMaxLength(50);
+ b.Property(e => e.VehicleModelCode).HasColumnType("varchar").HasMaxLength(50);
+ b.Property(e => e.VehicleModelName).HasColumnType("nvarchar").HasMaxLength(200);
+ b.Property(e => e.SpecDesc).HasColumnType("varchar").HasMaxLength(50);
+ b.Property(e => e.VehicleModel).HasColumnType("varchar").HasMaxLength(200);
+ b.Property(e => e.AfficheVehicleModel).HasColumnType("nvarchar").HasMaxLength(200);
+ b.Property(e => e.SpecialCarLogo).HasColumnType("nvarchar").HasMaxLength(200);
+ b.Property(e => e.Remark).HasColumnType("nvarchar").HasMaxLength(500);
+ b.Property(e => e.CreatePerson).HasColumnType("nvarchar").HasMaxLength(50);
+ b.Property(e => e.ImportPerson).HasColumnType("nvarchar").HasMaxLength(50);
+ });
+
#endregion
}
}
diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.EntityFrameworkCore/Migrations/20250217060059_2025021702.Designer.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.EntityFrameworkCore/Migrations/20250217060059_2025021702.Designer.cs
new file mode 100644
index 0000000..7fe9172
--- /dev/null
+++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.EntityFrameworkCore/Migrations/20250217060059_2025021702.Designer.cs
@@ -0,0 +1,4063 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Volo.Abp.EntityFrameworkCore;
+using WY.NewJit.EntityFrameworkCore;
+
+namespace WY.NewJit.Migrations
+{
+ [DbContext(typeof(NewJitDbContext))]
+ [Migration("20250217060059_2025021702")]
+ partial class _2025021702
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer)
+ .HasAnnotation("Relational:MaxIdentifierLength", 128)
+ .HasAnnotation("ProductVersion", "5.0.17")
+ .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+ modelBuilder.Entity("WY.NewJit.Books.Book", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("nvarchar(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("CreatorId");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("nvarchar(max)")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("LastModifierId");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)");
+
+ b.Property("Price")
+ .HasColumnType("real");
+
+ b.Property("PublishDate")
+ .HasColumnType("datetime2");
+
+ b.Property("Type")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("FisBooks");
+ });
+
+ modelBuilder.Entity("WY.NewJit.Commons.SequenceInfo", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("nvarchar(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("nvarchar(max)")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("SequenceNum")
+ .HasColumnType("bigint");
+
+ b.Property("SequenceType")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("FisSequenceInfo");
+ });
+
+ modelBuilder.Entity("WY.NewJit.EdiReceive.Entitys.ImportRecord", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("CreatePerson")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("ExteriorTrimmingColor")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("Factory")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("HostSN")
+ .HasColumnType("int");
+
+ b.Property("ImportPerson")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("ImportTime")
+ .HasMaxLength(50)
+ .HasColumnType("datetime2");
+
+ b.Property("InteriorColor")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("OnlineTime")
+ .HasColumnType("datetime");
+
+ b.Property("PaintOfflineTime")
+ .HasColumnType("datetime");
+
+ b.Property("ProductLine")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("Remark")
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("Remark2")
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("Remark3")
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("Remark4")
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("Remark5")
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("SerialNum")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("Spec")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("SpecDesc")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("Target")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("Type")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("VehicleBodyCode")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("VehicleLocation")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("VehicleModelCode")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("VehicleModelDesc")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("VehicleModelName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("Vin")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("WorkLocation")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.HasKey("Id");
+
+ b.ToTable("FisImportRecord");
+ });
+
+ modelBuilder.Entity("WY.NewJit.EdiReceive.Entitys.ImportRecordHis", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("CreatePerson")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("ExteriorTrimmingColor")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("Factory")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("HostSN")
+ .HasColumnType("int");
+
+ b.Property("ImportPerson")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("ImportTime")
+ .HasMaxLength(50)
+ .HasColumnType("datetime2");
+
+ b.Property("InteriorColor")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("OnlineTime")
+ .HasColumnType("datetime");
+
+ b.Property("PaintOfflineTime")
+ .HasColumnType("datetime");
+
+ b.Property("ProductLine")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("Remark")
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("Remark2")
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("Remark3")
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("Remark4")
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("Remark5")
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("SerialNum")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("Spec")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("SpecDesc")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("Target")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("Type")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("VehicleBodyCode")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("VehicleLocation")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("VehicleModelCode")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("VehicleModelDesc")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("VehicleModelName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("Vin")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("WorkLocation")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("HostSN")
+ .HasDatabaseName("IX_ImportRecHis_HostSN");
+
+ b.ToTable("FisImportRecordHis");
+ });
+
+ modelBuilder.Entity("WY.NewJit.EdiReceive.Entitys.ImportNoteHis", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("AfficheVehicleModel")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("CreatePerson")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("HostSN")
+ .HasColumnType("int");
+
+ b.Property("ImportPerson")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ImportTime")
+ .HasColumnType("datetime2");
+
+ b.Property("OnlineTime")
+ .HasColumnType("datetime2");
+
+ b.Property("PaintOfflineTime")
+ .HasColumnType("datetime2");
+
+ b.Property("Remark")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)");
+
+ b.Property("SerialNum")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("SpecDesc")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("SpecialCarLogo")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("VehicleModel")
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("VehicleModelCode")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("VehicleModelName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("Vin")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.HasKey("Id");
+
+ b.ToTable("FisImportNoteHis");
+ });
+
+ modelBuilder.Entity("WY.NewJit.EdiReceive.Entitys.ImportNote", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("AfficheVehicleModel")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("CreatePerson")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("CreateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("HostSN")
+ .HasColumnType("int");
+
+ b.Property("ImportPerson")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ImportTime")
+ .HasColumnType("datetime2");
+
+ b.Property("OnlineTime")
+ .HasColumnType("datetime2");
+
+ b.Property("PaintOfflineTime")
+ .HasColumnType("datetime2");
+
+ b.Property("Remark")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)");
+
+ b.Property("SerialNum")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("SpecDesc")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("SpecialCarLogo")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("VehicleModel")
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("VehicleModelCode")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("VehicleModelName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("Vin")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.HasKey("Id");
+
+ b.ToTable("FisImportNote");
+ });
+
+ modelBuilder.Entity("WY.NewJit.EdiReceive.Entitys.LastImportHostSN", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("HostSN")
+ .HasColumnType("int");
+
+ b.Property("ProductLineCode")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.HasKey("Id");
+
+ b.ToTable("FisLastImportHostSN");
+ });
+
+ modelBuilder.Entity("WY.NewJit.Extends.MenBanPackingList", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("BeginHostSN")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("BeginVin")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("BillLocation")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("BillNum")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("BillSerialNum")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Capacity")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("nvarchar(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("CreatorId");
+
+ b.Property("DeleterId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("DeleterId");
+
+ b.Property("DeletionTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("DeletionTime");
+
+ b.Property("EndHostSN")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("EndVin")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("nvarchar(max)")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("IsDeleted")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bit")
+ .HasDefaultValue(false)
+ .HasColumnName("IsDeleted");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("LastModifierId");
+
+ b.Property("MinOnlineTime")
+ .HasColumnType("datetime2");
+
+ b.Property("PartType")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("PrintDate")
+ .HasColumnType("datetime2");
+
+ b.Property("PrintType")
+ .HasColumnType("int");
+
+ b.Property("ProductLine")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ProviderCode")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ReportStatus")
+ .HasColumnType("int");
+
+ b.Property("SortId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.ToTable("FisMenBanPackingList");
+ });
+
+ modelBuilder.Entity("WY.NewJit.Extends.MenBanPackingRec", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("BelowMaterialDescription")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("BelowSAPMaterialNum")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("nvarchar(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("CreatorId");
+
+ b.Property("DeleterId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("DeleterId");
+
+ b.Property("DeletionTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("DeletionTime");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("nvarchar(max)")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("HostSN")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("HostSN2")
+ .HasColumnType("int");
+
+ b.Property("IsDeleted")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bit")
+ .HasDefaultValue(false)
+ .HasColumnName("IsDeleted");
+
+ b.Property("KNR")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("LastModifierId");
+
+ b.Property("M100BillId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("MenBanPackingListId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("TopBoxPositionNum")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("TopMaterialDescription")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("TopSAPMaterialNum")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("VIN")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("VehicleModel_DoorPlankCode")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("VehicleModel_DoorPlankCode2")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("MenBanPackingListId");
+
+ b.ToTable("FisMenBanPackingRec");
+ });
+
+ modelBuilder.Entity("WY.NewJit.Extends.PaiGe.MaterialExt", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("nvarchar(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("CreatorId");
+
+ b.Property("DeleterId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("DeleterId");
+
+ b.Property("DeletionTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("DeletionTime");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("nvarchar(max)")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("IsDeleted")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bit")
+ .HasDefaultValue(false)
+ .HasColumnName("IsDeleted");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("datetime2")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("uniqueidentifier")
+ .HasColumnName("LastModifierId");
+
+ b.Property("MaterialDescription")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("MaterialDescription2")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("MaterialGroup")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("MaterialMemo")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("MaterialNum")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("MaterialType")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("MaterialType2")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("MaterialType3")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("RelationKey")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("UpdateTime")
+ .HasColumnType("datetime2");
+
+ b.Property("VehicleModel")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("promo")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("MaterialNum")
+ .HasDatabaseName("IX_MaterialExt_MaterialNum");
+
+ b.HasIndex("MaterialType")
+ .HasDatabaseName("IX_MaterialExt_MaterialType");
+
+ b.HasIndex("MaterialType2")
+ .HasDatabaseName("IX_MaterialExt_MaterialType2");
+
+ b.HasIndex("MaterialType3")
+ .HasDatabaseName("IX_MaterialExt_MaterialType3");
+
+ b.HasIndex("RelationKey")
+ .HasDatabaseName("IX_MaterialExt_RelationKey");
+
+ b.HasIndex("VehicleModel")
+ .HasDatabaseName("IX_MaterialExt_VehicleModel");
+
+ b.ToTable("FisMaterialExt");
+ });
+
+ modelBuilder.Entity("WY.NewJit.Extends.PaiGe.WMS.FisTB_BILL", b =>
+ {
+ b.Property("BillNum")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("AccountDate")
+ .HasColumnType("datetime2");
+
+ b.Property("BillTime")
+ .HasColumnType("datetime2");
+
+ b.Property("BillType")
+ .HasColumnType("int");
+
+ b.Property("CustId")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("DetailQty")
+ .HasColumnType("int");
+
+ b.Property("DockCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ExecuteRemark")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)");
+
+ b.Property("FinishTime")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("GUID")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property