【易飞】易飞ERP全能WebAPI更新日志

【易飞】易飞ERP全能WebAPI更新日志
系统更新日志Change Log版本 [5.5.2] - 2026-07-13独立项目职责重复主项目 YiFeiWebApi 内部存在与独立项目职责重复的目录解决方案采用 依赖倒置 原则通过 YiFeiWebApi.Common 作为中介层打破循环YiFeiWebApi (Controllers) │ ├──→ YiFeiWebApi.Interface (接口定义) │ ├──→ YiFeiWebApi.Service (服务实现) │ │ │ └──→ YiFeiWebApi.Common (通用配置/工具) │ │ │ └──→ YiFeiWebApi.Entity (实体模型) │ └──→ YiFeiWebApi.Common整合后的优势职责清晰 每个项目职责单一便于维护和扩展消除重复 避免代码重复统一管理配置和工具类解耦合 通过接口和依赖注入实现松耦合提高可测试性可复用性 Common 项目可被其他模块复用版本 [5.4.7] - 2026-07-10Attributes创建自定义验证特性类可复用提高可维护性。AccountingSourceCodeAttribute(来源码)ApprovalStatusCodeAttribute(签核状态码)ApprovalValidStatusAttribute(核准状况1)ApprovalValidStatusCodeAttribute(核准状况2)ApproveStatusCodeAttribute(审核码)IsEndStatusAttribute(结束码)ItemTypeCodeAttribute(品号类型)PayableObjectCodeAttribute(应付对象)SubItemRelationCodeAttribute(自件关系)TaxTypeCodeAttribute(税种代码)VerificationStatusCodeAttribute(核销状态)版本 [5.4.6] - 2026-06-26AutoMapper 映射修复新增Moctm → Wo_split_data映射解决缺失的 AutoMapper 配置创建CheckAutoMapperMappings.ps1静态分析脚本用于扫描映射完整性安全修复修复RateLimitFilter返回中文纯文本您访问太频繁了改为 JSON 格式StdResult 英文描述修复LicenseMiddleware中Invalid customer ID返回纯文本改为统一 JSON 格式修复DscsysDbContext中Debug.WriteLine(connectionString)打印含密码连接字符串的调试代码异步阻塞修复修复MachineInfo.cs中 CPU/磁盘信息采集的.Result同步阻塞新增Initialize()方法在启动时预采集在Program.cs启动流程中集成MachineInfo.Initialize()调用修复Copi07Controller中cacheTasks[0].Result同步阻塞改为直接await异步调用调试代码清理移除DscsysDbContext中Console.WriteLineEF Core SQL 日志输出移除RMBConverter中残留的测试Main方法含Console.WriteLine移除SysDocDate.cs中空try-catch块含被注释的Console.WriteLine移除BitmapLicenseService中 2 处Console.WriteLine调试注释移除SysInvalidService中 7 行Console.WriteLine调试注释移除SysDocStateService中 2 处Console.WriteLine调试注释注释代码清理7 个文件共 35 行清理DscsysDbContext中旧版连接字符串获取方式注释7 行清理LicenseMiddleware中 3 处旧版纯文本返回注释9 行清理BaseController中被注释的HandleException方法32 行清理BaseController中被注释的审批状态旧值2 行清理CmsmoProfile中被注释的旧版 AutoMapper 映射13 行代码规范提取 6 个 Controller 中 18 处硬编码单别前缀为常量统一管理在AppConstants中Invi05Controller— 库存交易单113 处Invi08Controller— 调拨单123 处Qmsi07Controller— 进货检验单343 处Qmsi14Controller— 到货检验单373 处Qmsi08Controller— 委外进货检验单593 处Qmsi15Controller— 委外到货单5D3 处版本 [5.4.5] - 2026-06-26 优化主项目Common目录独立到项目.Common类库项目结构优化项目解耦结构清晰。提高测试覆盖率单元测试主要核心业务测试覆盖率达到80%抽取QueryService查询接口优化抽取查询接口服务,所有查询接口代码量预计减少38%可维护性提高修复BUG到货单接口异常修复DTO未映射。版本 [5.4.3] - 2026-06-24 新增属性校验字段校验规则默认值发票种类必填可选值S/B/T/N/A/G/W/Z-品号类型必填可选值1/2-税种必填可选值1/2/3/4/9-来源必填可选值1/2/3/4/5/6/7/9-单据类型必填可选值1/2-生成分录必填可选值Y/N/VN核销状态必填可选值1/2/31审核码必填可选值Y/NN状态码必填可选值1/2/3/Y/y1取数方式必填可选值Y/NY生成按序必填可选值1/21供应商编号必填-结束必填可选值N/Y/yN单位必填-客户编号必填- 新增校验器供应商、 客户、仓库、部门、币别、付款条件、工作中心校验器版本 [5.4.2] - 2026-06-23 优化全新注释规范注释规范适用于所有控制器方法功能简要描述参数详细说明必填字段标注返回值描述HTTP响应码及含义200/401/400/403包含业务规则、状态限制、数据变更、授权码所有注释保持统一的缩进风格4空格和术语规范确保文档一致性。回参【重要】返回指定选择字段回参只会回selectedColumns指定的字段节点selectedColumns“production_line_code,production_line_name”返回指定列结果集,增加调用的灵活性版本 [5.3] - 2026-06-22 新增功能缓存管理后台精准清理缓存支持按「公司 缓存类型」组合条件清除指定缓存数据。租户级批量清理支持一键清除指定公司下的全部缓存。全量清理缓存支持清空整个缓存存储池含二次确认机制。缓存类型列表查询支持获取系统当前所有可用的缓存类型枚举。手动缓存预热支持针对指定缓存键手动触发数据预加载。缓存健康状态监控支持实时检测缓存服务的连接状态与响应延迟。 优化改进1. 请求前置校验将Datakeys有效性校验前移至Action执行前统一拦截提前过滤非法请求降低业务层无效负载。2. 统一错误响应格式统一授权验证与机器验证的异常返回结构确保所有错误响应遵循相同的数据格式规范提升前端对接效率。3. 冗余参数校验清理移除读取和查询接口中「公司」参数及datakeys[0]为null的冗余重复判断逻辑统一收敛至前置校验层处理简化业务代码降低维护成本。4.属性校验部分单据类型字段校验工单、生产入库单、领退料单、进货单、采购单、请购单、工单变更单、采购变更单等单据的类型必填而且只允许1.工程品号 2.正式品号[DEF:“2”]5.取消重试策略取消重试因为网络不稳定存在事务管理的作业导致错误暂时取消重试待后续更新重试机制。因涉及单据较多风险高4. WMI 性能优化CPU 读取超时处理问题描述读取 WMI CPU 值时偶发超时导致系统卡顿。优化方案在AuthorizeFilter中设置超时管理机制控制 WMI 读取操作的最大等待时间避免无限阻塞。引入 CPU 值缓存机制缓存有效期为5 分钟后续请求直接从缓存读取大幅降低高频 I/O 操作带来的性能开销。 影响范围模块影响说明拦截器/过滤器新增Datakeys前置校验逻辑AuthorizeFilter增加 WMI 超时控制异常处理授权与机器验证错误返回格式调整缓存管理新增后台管理接口及运维能力读取/查询接口移除冗余的company与datakeys[0]空值判断统一由前置校验接管WMI 读取增加超时控制与 5 分钟本地缓存减少 I/O 阻塞风险⚠️ 升级注意事项全量清理接口建议配置操作权限管控仅限管理员角色调用。缓存预热接口调用前请确认缓存键存在且数据源可用避免预热空数据。统一错误格式前端如有自定义错误处理逻辑需同步适配新的返回结构。冗余校验移除各业务接口中若存在自定义的空值校验逻辑需同步清理避免重复拦截导致异常。CPU 缓存时效当前 CPU 值缓存时间为 5 分钟如有更高实时性要求请评估后调整配置。2026-06-21 缺陷修复分页逻辑请求的页面超出范围时返回最后一页的数据自动填充服务修复支持复合主键模式和单一主键模式(普通模式) 优化错误信息冗余错误信息冗余1551处变更与单据验收抽取通用审核和撤审 作废的通用方法。公司参数校验重复校验剔除冗余代码。2026-06-20 缺陷修复分页逻辑请求的页面超出范围时返回最后一页的数据自动填充服务修复支持复合主键模式和单一主键模式(普通模式) 性能与架构优化控制器横切关注点增强实现全局 Action Filter 自动服务填充机制通过依赖注入在请求预处理阶段完成用户身份、租户ID等上下文参数的自动装配减少控制器重复代码DTO 结构优化库存交易单与调拨单 DTO 独立拆分避免业务耦合提升可维护性 缺陷修复接口异常修复修复copi10/puri10接口在特定边界条件下触发未捕获异常导致 HTTP 500 的问题数据库连接异常增强当获取数据库名称或ID时连接失败现明确抛出包含上下文诊断信息的DatabaseConnectionException自定义异常便于问题定位2026-06-19 基础设施重构DbContext 依赖注入改造消除 DbContext 直接实例化全面实施IDbContextFactory依赖注入方案新增IErpDbContextFactory接口及实现改造BaseController支持 DbContext 工厂注入重构SysDocStateService使用工厂创建 DbContext为全部约 50 个业务控制器构造函数统一添加IErpDbContextFactory依赖注入⚡ 性能与安全优化序列化优化DTO 主档列表属性添加[JsonProperty(NullValueHandling NullValueHandling.Ignore)]确保查询接口不返回空明细字段减少网络传输安全增强CORS 跨域策略支持来源地址可配置BaseDataCacheService调整为单例模式确保缓存一致性缓存架构升级BaseController合并构造函数剔除内存缓存服务全面迁移至分布式缓存Redis2026-06-18️ 基础数据缓存全面加固防护维度实现方案效果缓存穿透空值缓存 布隆过滤器防止恶意查询穿透至数据库缓存击穿分布式锁IDistributedLock互斥重建防止热点 Key 过期时并发查询击穿缓存雪崩缓存过期时间随机偏移±10%避免同一时间大量 Key 集中失效缓存预热启动后延迟5秒异步预热服务启动性能提升40-60%修复与 IIS 启动进程冲突问题内存管控内存缓存大小限制 LRU 淘汰策略达阈值时压缩20%防止内存溢出调试支持开发环境支持缓存禁用开关便于本地调试⚡ 性能优化解决 N1 查询问题批量校验品号、单位成本时将循环逐条查询优化为单次批量查询数据库访问次数从 O(n) 降为 O(1)全面排查对部分控制器中存在的 N1 查询进行全面治理2026-06-17️ 架构与规范优化全局异常处理以全局异常过滤器IExceptionFilter替代各控制器中散落的try-catch实现异常统一捕获、分类处理和标准化错误响应代码冗余减少70%代码质量提升消除魔法字符串提取为常量或枚举增强可维护性查询与读取接口响应格式与官方 JSON 规范完全对齐2026-06-16✨ 新功能发布新增录入 EBOM工程物料清单新增 EBOM 变更单新增组合单、拆解单新增工单拆分功能2026-05-18✨ 新功能发布新增录入 BOM 变更单全套接口查询、读取、新增、修改、更新2026-04-18⚡ 核心业务逻辑增强成本计算自动化库存交易单中影响成本码的单据自动获取移动加权平均单位成本并同步计算金额审核逻辑统一所有审核接口的审核日期依据审核日 vs 单据日期统一遵从 ERP 系统共用参数中的「审核日设定」异步化改造所有审核接口和撤审接口全面切换为异步模式async/await提升并发吞吐量2026-04-13️ 框架升级与代码质量框架升级从 .NET 8 升级至 .NET 10为确保 Swagger UI 正常使用Swashbuckle.AspNetCore降级至 7.3.2抽象复用将品号验证逻辑抽象至BaseController所有 Create 方法统一调用消除重复代码单元测试覆盖为SysInvalidService、BaseDataCacheService、Sys01Controller编写单元测试代码清理移除被注释冗余代码移除重复数据库查询Swagger 文档增强补全 API 文档注释提升可读性和可维护性2026-04-12 查询性能大幅优化O(n) → O(1)数据结构优化将FirstOrDefault线性查找O(n)全面替换为字典TryGetValueO(1)并行化处理使用Task.WhenAll并行执行最多 12 个缓存服务调用数据获取时间显著降低分布式缓存集成基于查询参数 公司别生成缓存键设置60秒绝对过期30秒滑动过期动态排序应用ApplyDynamicSorting支持灵活排序 缺陷修复修复新增接口中公司编号误用账套名称的问题统一使用CompanyId修复来源单据单别为空时的异常返回补全try-catch块及错误日志记录缓存策略精细化基础数据根据异动频率区分缓存失效时间1-12小时2026-04-08⚡ 异步与缓存架构升级同步操作全面改造为异步async/await内存缓存替换为 Redis 分布式缓存支持多实例共享2026-04-07️ 开发体验与规范性提升优化项具体措施统一响应格式所有 API 返回相同 JSON 结构{ code, msg, data }便于前端统一处理统一错误处理异常自动捕获并转换为标准化错误响应内置日志记录控制器简化基类封装通用逻辑控制器代码量平均减少40%类型安全使用泛型确保响应类型安全自动序号生成所有单据新增接口单身明细序号0001~9999由系统自动补齐接口无需传递缓存键优化修复缓存键粒度过细问题原包含完整参数序列化采用精简键策略2026-04-01 缺陷修复修复新增接口因目标表存在触发器导致的新增异常问题2026-03-03✨ 功能增强采购变更单、订单变更单、工单变更单变更版本号自动获取无需人工传入上述变更单单身序号自动补充0001、0002…2026-01-02️ 接口规范统一参数格式标准化所有 DTO 统一添加字段company、creator、usr_group、create_date、modifier、modi_date、flag便于异构系统调用 PredicateBuilder 查询增强修复操作符不支持 OR 条件的 BUG空操作符默认使用 AND新增过滤操作符IN、NOT IN、BETWEEN、EXISTS、NOT EXISTS所有查询接口支持用户自定义二次排序逻辑抽象至BaseController2026-01-01️ BaseController 基类抽象重大架构调整所有控制器继承 BaseController基类统一封装公司数据库账套管理分页参数标准化DbContext 创建与管理单据状态判断未审核/已审核DTO 自动映射AutoMapper日志记录、作废逻辑基础数据缓存服务程序ID与程序名称上下文效果各控制器代码量平均减少60%一致性大幅提升。✨ 功能增强补充其他应收款单新增和更新接口新增单据支持前端审核码未填或错误时后台默认单头和单身审核码为N2025-12-30 缺陷修复修复采购发票接口中project_no字段映射 Tb046 表导致读取失败的问题2025-12-29 性能与代码质量优化优化项优化前优化后品号验证循环中逐个调用IsValidItemN次查询一次性批量验证1次查询线程安全使用全局变量globalVariables改用局部变量totalQty、totalPackageQty等消除数据竞争JSON 处理不必要的序列化/反序列化直接使用匿名对象返回减少 CPU 开销基础数据缓存每次关联查询访问数据库统一走基础数据缓存服务缓存策略低频率 8h / 中频率 4h / 高频率 1h变量命名S1-S9 无意义命名可读性强、业务语义明确的规范命名2025-12-28 安全与框架升级IP 白名单支持 IP 地址白名单可配置框架升级.NET 8 → .NET 9提升运行时性能驱动替换System.Data.SqlClient→Microsoft.Data.SqlClient提升兼容性与未来支持2025-12-27✅ 接口校验增强品号不存在或未核准时拦截并返回明确错误校验单据性质设置来源订单单别、单号、行号不允许为空2025-12-26✨ 自动单号生成所有单据新增接口单别或单号为空时系统依据单据性质设置自动产生新单别单号2025-12-21✅ 业务规则校验增强采购变更单新增订单数量不允许小于已交货数量所有新增接口增加品号有效性校验2025-11-21✨ 新功能发布工单变更单补全查询、读取、新增、更新、删除接口2025-11-20✨ 新功能发布采购变更单、订单变更单补全查询、读取、新增、更新、删除接口2025-09-27 性能与规范性优化优化项具体措施连接管理using声明确保 DbContext 及时释放杜绝连接泄露查询优化增加.AsNoTracking()避免不必要的实体状态跟踪分页上限page_size设置上限10000条全量查询conditions: {}时允许查询全部数据异常捕获调整 try-catch 顺序扩大捕获范围错误响应设计标准错误返回格式提升可读性✅ 参数校验规范统一标准字段约束单别必填长度 ≤ 4单号必填长度 ≤ 11数字序号必填长度 4数字汇率必填范围 0.01 ~ 100税率必填范围 0 ~ 0.2单据日期必填长度 8 位数字品号必填长度 ≤ 20仓库必填2025-09-26✨ 功能增强核价单 报价单接口优化读取、新增、更新、删除增加子单身功能2025-09-25✨ 新功能发布新增工单工艺接口新增报工单接口新增转移单接口2025-09-24✨ 新功能发布新增退回委外验退件接口新增预付款单接口2025-09-23✨ 新功能发布新增报价单接口新增验退件退回接口新增工艺信息接口2025-09-22 安全架构升级安全措施实现方案授权配置独立授权码从appsettings.json迁移至独立 JSON 文件配置热更新授权过滤器注入IOptionsSnapshot支持配置重载双重授权校验增加注册授权客户 ID 与接口授权客户 ID 比对消除魔法字符串增加HttpContextKeys常量类提升可维护性降低数据库暴露URL 中取消传递账套名称改为请求头X-API-CompanyId公司账号 ID接口授权增强新增请求头X-API-License采用位图压缩算法减少网络传输有效期控制授权码增加有效期待评估是否纳入2025-09-21 新功能发布API 接口授权机制上线增强接口安全性支持客户按需定制授权2025-09-18️ 代码复用优化抽象单据审核状态服务抽象通用作废服务大幅降低业务控制器代码冗余2025-09-17✅ 业务逻辑增强更新所有审核/撤审核/删除/作废接口增加单据状态判断逻辑控制防止非法操作2025-09-16 ~ 2025-09-04✨ 大批量新接口发布功能模块补全日期新增接口2025-09-16询价单2025-09-15销毁单、借出/入单、借出/入归还单2025-09-12委外价格、委外核价单、委外进货单验收、委外到货单、委外到货单验收2025-09-10进货检验单、委外进货检验单、生产入库检验单、销退检验单、到货检验单、委外到货检验单2025-09-09抽查基础、品管类别、检验项目、不良原因、品号检验项目2025-09-08出货通知单、报价单2025-09-04到货单2025-09-07 ~ 2025-09-05️ 基础设施完善全局异常中间件早期捕获异常并结构化记录2025-09-07Serilog 结构化日志替换默认日志支持链路追踪2025-09-06内存缓存机制基础信息资料及计算量大数据缓存降低数据库压力2025-09-052025-08-03 ~ 2025-07-28✨ 功能与质量优化新增作废接口全部单据含变更单2025-08-03新增采购变更单、订单变更单、工单变更单、BOM 变更单接口2025-08-02修复审核领料单接口数组与字符串类型转换失败异常2025-08-01DTO 字段补充说明、主键添加[Required]特性2025-07-30新增异常信息抛出提升可读性2025-07-29新增与更新接口调整为异步批量添加实体提升效率2025-07-282025-06-27 ~ 2025-06-26✨ 功能增强全部接口添加易飞标准自定义字段24个2025-06-27主要单据新增和修改时单头汇总数据自动重算2025-06-262025-05-25 ~ 2025-04-02✨ 功能与安全持续交付日期内容2025-05-25修复客户订单金额字段缺失2025-05-20新增进货验收 变更单版本审核2025-05-14新增客户品号接口、报废单接口2025-05-05新增根据 ERP 单据性质设定自动生成单号2025-04-08新增机器码授权、WebAPI 部署安装文档2025-04-05优化审核和撤审接口支持全部版本2025-04-02新增 API 接口限流Rate Limiting2025-03-30 ~ 2025-03-20 安全与身份认证新增审核和撤审接口最高支持易飞 9.0.82025-03-30新增 JWT 身份验证2025-03-202025-02-10 ~ 2025-03-10✨ 核心业务模块大规模交付应收管理模块接口应付管理模块接口总账管理模块接口2025-01-01 ~ 2025-01-30✨ 基础模块交付基本信息模块接口采购模块接口销售模块接口存货模块接口生产管理模块接口 更新统计摘要维度数据更新记录总数50 条新增接口数100 个业务接口框架升级.NET 8 → .NET 10核心架构改造BaseController 抽象、分布式缓存、全局异常处理、依赖注入重构性能优化N1 治理、O(n)→O(1) 算法优化、并行查询、缓存策略安全增强JWT、IP 白名单、授权码、限流、CORS 可配置测试覆盖单元测试逐步完善