diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WmBlankInventoryController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WmBlankInventoryController.cs new file mode 100644 index 00000000..4cdd6589 --- /dev/null +++ b/ZR.Admin.WebApi/Controllers/mes/wms/WmBlankInventoryController.cs @@ -0,0 +1,136 @@ +using Microsoft.AspNetCore.Mvc; +using ZR.Model.Dto; +using ZR.Service.Business.IBusinessService; +using ZR.Admin.WebApi.Extensions; +using ZR.Admin.WebApi.Filters; +using ZR.Service.mes.wms.IService; +using ZR.Model.MES.wms.Dto; +using ZR.Model.MES.wms; + +//创建时间:2024-05-13 +namespace ZR.Admin.WebApi.Controllers +{ + /// + /// 毛坯库存表 + /// + [Verify] + [Route("/mes/wm/WmBlankInventory")] + public class WmBlankInventoryController : BaseController + { + /// + /// 毛坯库存表接口 + /// + private readonly IWmBlankInventoryService _WmBlankInventoryService; + + public WmBlankInventoryController(IWmBlankInventoryService WmBlankInventoryService) + { + _WmBlankInventoryService = WmBlankInventoryService; + } + + /// + /// 查询毛坯库存表列表 + /// + /// + /// + [HttpGet("list")] + [ActionPermissionFilter(Permission = "business:wmblankinventory:list")] + public IActionResult QueryWmBlankInventory([FromQuery] WmBlankInventoryQueryDto parm) + { + var response = _WmBlankInventoryService.GetList(parm); + return SUCCESS(response); + } + + + /// + /// 查询毛坯库存表详情 + /// + /// + /// + [HttpGet("{Id}")] + [ActionPermissionFilter(Permission = "business:wmblankinventory:query")] + public IActionResult GetWmBlankInventory(string Id) + { + var response = _WmBlankInventoryService.GetInfo(Id); + + var info = response.Adapt(); + return SUCCESS(info); + } + + /// + /// 添加毛坯库存表 + /// + /// + [HttpPost] + [ActionPermissionFilter(Permission = "business:wmblankinventory:add")] + [Log(Title = "毛坯库存表", BusinessType = BusinessType.INSERT)] + public IActionResult AddWmBlankInventory([FromBody] WmBlankInventoryDto parm) + { + try + { + var modal = parm.Adapt().ToCreate(HttpContext); + + var response = _WmBlankInventoryService.AddWmBlankInventory(modal); + + return SUCCESS(response); + } + catch (Exception ex) + { + return ToResponse(new ApiResult(500, ex.Message, null)); + } + + } + + /// + /// 更新毛坯库存表 + /// + /// + [HttpPut] + [ActionPermissionFilter(Permission = "business:wmblankinventory:edit")] + [Log(Title = "毛坯库存表", BusinessType = BusinessType.UPDATE)] + public IActionResult UpdateWmBlankInventory([FromBody] WmBlankInventoryDto parm) + { + var modal = parm.Adapt().ToUpdate(HttpContext); + var response = _WmBlankInventoryService.UpdateWmBlankInventory(modal); + + return ToResponse(response); + } + + /// + /// 删除毛坯库存表 + /// + /// + [HttpDelete("{ids}")] + [ActionPermissionFilter(Permission = "business:wmblankinventory:delete")] + [Log(Title = "毛坯库存表", BusinessType = BusinessType.DELETE)] + public IActionResult DeleteWmBlankInventory(string ids) + { + string[] idsArr = ids.Split(','); + if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); } + + var response = _WmBlankInventoryService.Delete(idsArr); + + return ToResponse(response); + } + + + /// + /// 物料清单数据同步 + /// + /// + [HttpPost("synchronousMaterial")] + [ActionPermissionFilter(Permission = "business:wmblankinventory:add")] + [Log(Title = "物料清单数据同步", BusinessType = BusinessType.INSERT)] + public IActionResult SynchronousMaterial([FromBody] WmBlankInventoryDto parm) + { + var modal = parm.Adapt().ToCreate(HttpContext); + + var response = _WmBlankInventoryService.AddWmBlankInventory(modal); + + return SUCCESS(response); + + } + + + + } +} \ No newline at end of file diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WmBlankRecordController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WmBlankRecordController.cs new file mode 100644 index 00000000..4f5275dc --- /dev/null +++ b/ZR.Admin.WebApi/Controllers/mes/wms/WmBlankRecordController.cs @@ -0,0 +1,111 @@ +using Microsoft.AspNetCore.Mvc; +using ZR.Model.Dto; +using ZR.Service.Business.IBusinessService; +using ZR.Admin.WebApi.Extensions; +using ZR.Admin.WebApi.Filters; +using ZR.Service.mes.wms.IService; +using ZR.Model.MES.wms.Dto; +using ZR.Model.MES.wms; + +//创建时间:2024-05-13 +namespace ZR.Admin.WebApi.Controllers +{ + /// + /// 毛坯库存库存变动记录表 + /// + [Verify] + [Route("/mes/wm/WmBlankRecord")] + public class WmBlankRecordController : BaseController + { + /// + /// 毛坯库存库存变动记录表接口 + /// + private readonly IWmBlankRecordService _WmBlankRecordService; + + public WmBlankRecordController(IWmBlankRecordService WmBlankRecordService) + { + _WmBlankRecordService = WmBlankRecordService; + } + + /// + /// 查询毛坯库存库存变动记录表列表 + /// + /// + /// + [HttpGet("list")] + [ActionPermissionFilter(Permission = "business:wmblankrecord:list")] + public IActionResult QueryWmBlankRecord([FromQuery] WmBlankRecordQueryDto parm) + { + var response = _WmBlankRecordService.GetList(parm); + return SUCCESS(response); + } + + + /// + /// 查询毛坯库存库存变动记录表详情 + /// + /// + /// + [HttpGet("{Id}")] + [ActionPermissionFilter(Permission = "business:wmblankrecord:query")] + public IActionResult GetWmBlankRecord(string Id) + { + var response = _WmBlankRecordService.GetInfo(Id); + + var info = response.Adapt(); + return SUCCESS(info); + } + + /// + /// 添加毛坯库存库存变动记录表 + /// + /// + [HttpPost] + [ActionPermissionFilter(Permission = "business:wmblankrecord:add")] + [Log(Title = "毛坯库存库存变动记录表", BusinessType = BusinessType.INSERT)] + public IActionResult AddWmBlankRecord([FromBody] WmBlankRecordDto parm) + { + var modal = parm.Adapt().ToCreate(HttpContext); + + var response = _WmBlankRecordService.AddWmBlankRecord(modal); + + return SUCCESS(response); + } + + /// + /// 更新毛坯库存库存变动记录表 + /// + /// + [HttpPut] + [ActionPermissionFilter(Permission = "business:wmblankrecord:edit")] + [Log(Title = "毛坯库存库存变动记录表", BusinessType = BusinessType.UPDATE)] + public IActionResult UpdateWmBlankRecord([FromBody] WmBlankRecordDto parm) + { + var modal = parm.Adapt().ToUpdate(HttpContext); + var response = _WmBlankRecordService.UpdateWmBlankRecord(modal); + + return ToResponse(response); + } + + /// + /// 删除毛坯库存库存变动记录表 + /// + /// + [HttpDelete("{ids}")] + [ActionPermissionFilter(Permission = "business:wmblankrecord:delete")] + [Log(Title = "毛坯库存库存变动记录表", BusinessType = BusinessType.DELETE)] + public IActionResult DeleteWmBlankRecord(string ids) + { + string[] idsArr = ids.Split(','); + if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); } + + var response = _WmBlankRecordService.Delete(idsArr); + + return ToResponse(response); + } + + + + + } +} \ No newline at end of file diff --git a/ZR.Admin.WebApi/wwwroot/Generatecode/ZrAdmin.NET-毛坯库存库存变动记录表-0513140439.zip b/ZR.Admin.WebApi/wwwroot/Generatecode/ZrAdmin.NET-毛坯库存库存变动记录表-0513140439.zip new file mode 100644 index 00000000..7e132c55 Binary files /dev/null and b/ZR.Admin.WebApi/wwwroot/Generatecode/ZrAdmin.NET-毛坯库存库存变动记录表-0513140439.zip differ diff --git a/ZR.Admin.WebApi/wwwroot/Generatecode/ZrAdmin.NET-毛坯库存表-0513140434.zip b/ZR.Admin.WebApi/wwwroot/Generatecode/ZrAdmin.NET-毛坯库存表-0513140434.zip new file mode 100644 index 00000000..864ffebf Binary files /dev/null and b/ZR.Admin.WebApi/wwwroot/Generatecode/ZrAdmin.NET-毛坯库存表-0513140434.zip differ diff --git a/ZR.Admin.WebApi/导出统计报表-2024051114234102ae279d-bb09-4390-90e0-490342e8ebb4.xlsx b/ZR.Admin.WebApi/导出统计报表-2024051114234102ae279d-bb09-4390-90e0-490342e8ebb4.xlsx new file mode 100644 index 00000000..3871a89d Binary files /dev/null and b/ZR.Admin.WebApi/导出统计报表-2024051114234102ae279d-bb09-4390-90e0-490342e8ebb4.xlsx differ diff --git a/ZR.Model/MES/wms/Dto/WmBlankInventoryDto.cs b/ZR.Model/MES/wms/Dto/WmBlankInventoryDto.cs new file mode 100644 index 00000000..47b69532 --- /dev/null +++ b/ZR.Model/MES/wms/Dto/WmBlankInventoryDto.cs @@ -0,0 +1,73 @@ +using System.ComponentModel.DataAnnotations; + +namespace ZR.Model.MES.wms.Dto +{ + /// + /// 毛坯库存表查询对象 + /// + public class WmBlankInventoryQueryDto : PagerInfo + { + public string BlankNum { get; set; } + public int? Type { get; set; } + public int? Status { get; set; } + } + + /// + /// 毛坯库存表输入输出对象 + /// + public class WmBlankInventoryDto + { + // [Required(ErrorMessage = "主键不能为空")] + public string Id { get; set; } + + public string FkPaintId { get; set; } + + public string BlankNum { get; set; } + + /// + /// 单位 + /// + public string Unit { get; set; } + /// + /// 颜色 + /// + public string Color { get; set; } + /// + /// 规格 + /// + public string Specification { get; set; } + /// + /// 描述 + /// + public string Description { get; set; } + /// + /// 版本号 + /// + public string Version { get; set; } + + public int? Quantity { get; set; } + + public int? MaxNum { get; set; } + + public int? MinNum { get; set; } + + public int? WarnNum { get; set; } + + public int? Type { get; set; } + + public int? Status { get; set; } + + public string Remark { get; set; } + + public string CreatedBy { get; set; } + + public DateTime? CreatedTime { get; set; } + + public string UpdatedBy { get; set; } + + public DateTime? UpdatedTime { get; set; } + + + + } +} \ No newline at end of file diff --git a/ZR.Model/MES/wms/Dto/WmBlankRecordDto.cs b/ZR.Model/MES/wms/Dto/WmBlankRecordDto.cs new file mode 100644 index 00000000..445d4a0d --- /dev/null +++ b/ZR.Model/MES/wms/Dto/WmBlankRecordDto.cs @@ -0,0 +1,43 @@ +using System.ComponentModel.DataAnnotations; + +namespace ZR.Model.MES.wms.Dto +{ + /// + /// 毛坯库存库存变动记录表查询对象 + /// + public class WmBlankRecordQueryDto : PagerInfo + { + } + + /// + /// 毛坯库存库存变动记录表输入输出对象 + /// + public class WmBlankRecordDto + { + [Required(ErrorMessage = "主键不能为空")] + public string Id { get; set; } + + public string FkBlankInventoryId { get; set; } + + public string BlankNum { get; set; } + + public int? ChangeQuantity { get; set; } + + public decimal Type { get; set; } + + public decimal Status { get; set; } + + public string Remark { get; set; } + + public string CreatedBy { get; set; } + + public DateTime? CreatedTime { get; set; } + + public string UpdatedBy { get; set; } + + public DateTime? UpdatedTime { get; set; } + + + + } +} \ No newline at end of file diff --git a/ZR.Model/MES/wms/WmBlankInventory.cs b/ZR.Model/MES/wms/WmBlankInventory.cs new file mode 100644 index 00000000..7daec9cd --- /dev/null +++ b/ZR.Model/MES/wms/WmBlankInventory.cs @@ -0,0 +1,91 @@ + +namespace ZR.Model.MES.wms +{ + /// + /// 毛坯库存表 + /// + [SugarTable("wm_blank_inventory")] + public class WmBlankInventory + { + /// + /// 主键 + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = false)] + public string Id { get; set; } + + /// + /// 油漆id + /// + [SugarColumn(ColumnName = "fk_paint_id")] + public string FkPaintId { get; set; } + + /// + /// 毛坯号 + /// + [SugarColumn(ColumnName = "blank_num")] + public string BlankNum { get; set; } + + /// + /// 库存数量 + /// + public int? Quantity { get; set; } + + /// + /// 最大库存 + /// + [SugarColumn(ColumnName = "max_num")] + public int? MaxNum { get; set; } + + /// + /// 最小库存 + /// + [SugarColumn(ColumnName = "min_num")] + public int? MinNum { get; set; } + + /// + /// 预警库存 + /// + [SugarColumn(ColumnName = "warn_num")] + public int? WarnNum { get; set; } + + /// + /// 类别 + /// + public int? Type { get; set; } + + /// + /// 状态 + /// + public int? Status { get; set; } + + /// + /// 备注 + /// + public string Remark { get; set; } + + /// + /// 创建人 + /// + [SugarColumn(ColumnName = "cREATED_BY")] + public string CreatedBy { get; set; } + + /// + /// 创建时间 + /// + [SugarColumn(ColumnName = "cREATED_TIME")] + public DateTime? CreatedTime { get; set; } + + /// + /// 更新人 + /// + [SugarColumn(ColumnName = "uPDATED_BY")] + public string UpdatedBy { get; set; } + + /// + /// 更新时间 + /// + [SugarColumn(ColumnName = "uPDATED_TIME")] + public DateTime? UpdatedTime { get; set; } + + } +} \ No newline at end of file diff --git a/ZR.Model/MES/wms/WmBlankRecord.cs b/ZR.Model/MES/wms/WmBlankRecord.cs new file mode 100644 index 00000000..ada05def --- /dev/null +++ b/ZR.Model/MES/wms/WmBlankRecord.cs @@ -0,0 +1,74 @@ + +namespace ZR.Model.MES.wms +{ + /// + /// 毛坯库存库存变动记录表 + /// + [SugarTable("wm_blank_record")] + public class WmBlankRecord + { + /// + /// 主键 + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = false)] + public string Id { get; set; } + + /// + /// 毛坯库存主键 + /// + [SugarColumn(ColumnName = "fk_blank_inventory_id")] + public string FkBlankInventoryId { get; set; } + + /// + /// 毛坯号 + /// + [SugarColumn(ColumnName = "blank_num")] + public string BlankNum { get; set; } + + /// + /// 变动数量 + /// + [SugarColumn(ColumnName = "change_quantity")] + public int? ChangeQuantity { get; set; } + + /// + /// 类别 + /// + public decimal Type { get; set; } + + /// + /// 状态 + /// + public decimal Status { get; set; } + + /// + /// 备注 + /// + public string Remark { get; set; } + + /// + /// 创建人 + /// + [SugarColumn(ColumnName = "cREATED_BY")] + public string CreatedBy { get; set; } + + /// + /// 创建时间 + /// + [SugarColumn(ColumnName = "cREATED_TIME")] + public DateTime? CreatedTime { get; set; } + + /// + /// 更新人 + /// + [SugarColumn(ColumnName = "uPDATED_BY")] + public string UpdatedBy { get; set; } + + /// + /// 更新时间 + /// + [SugarColumn(ColumnName = "uPDATED_TIME")] + public DateTime? UpdatedTime { get; set; } + + } +} \ No newline at end of file diff --git a/ZR.Service/mes/wms/IService/IWmBlankInventoryService.cs b/ZR.Service/mes/wms/IService/IWmBlankInventoryService.cs new file mode 100644 index 00000000..bec77ab2 --- /dev/null +++ b/ZR.Service/mes/wms/IService/IWmBlankInventoryService.cs @@ -0,0 +1,24 @@ +using System; +using ZR.Model; +using ZR.Model.Dto; +using ZR.Model.MES.wms; +using System.Collections.Generic; +using ZR.Model.MES.wms.Dto; + +namespace ZR.Service.mes.wms.IService +{ + /// + /// 毛坯库存表service接口 + /// + public interface IWmBlankInventoryService : IBaseService + { + PagedInfo GetList(WmBlankInventoryQueryDto parm); + + WmBlankInventory GetInfo(string Id); + + WmBlankInventory AddWmBlankInventory(WmBlankInventory parm); + + int UpdateWmBlankInventory(WmBlankInventory parm); + + } +} diff --git a/ZR.Service/mes/wms/IService/IWmBlankRecordService.cs b/ZR.Service/mes/wms/IService/IWmBlankRecordService.cs new file mode 100644 index 00000000..fe4cda6b --- /dev/null +++ b/ZR.Service/mes/wms/IService/IWmBlankRecordService.cs @@ -0,0 +1,24 @@ +using System; +using ZR.Model; +using ZR.Model.Dto; +using System.Collections.Generic; +using ZR.Model.MES.wms; +using ZR.Model.MES.wms.Dto; + +namespace ZR.Service.mes.wms.IService +{ + /// + /// 毛坯库存库存变动记录表service接口 + /// + public interface IWmBlankRecordService : IBaseService + { + PagedInfo GetList(WmBlankRecordQueryDto parm); + + WmBlankRecord GetInfo(string Id); + + WmBlankRecord AddWmBlankRecord(WmBlankRecord parm); + + int UpdateWmBlankRecord(WmBlankRecord parm); + + } +} diff --git a/ZR.Service/mes/wms/WmBlankInventoryService.cs b/ZR.Service/mes/wms/WmBlankInventoryService.cs new file mode 100644 index 00000000..356d0007 --- /dev/null +++ b/ZR.Service/mes/wms/WmBlankInventoryService.cs @@ -0,0 +1,121 @@ +using System; +using SqlSugar; +using Infrastructure.Attribute; +using Infrastructure.Extensions; +using ZR.Model; +using ZR.Model.Dto; +using ZR.Model.MES.wms; +using ZR.Repository; +using System.Linq; +using ZR.Service.mes.wms.IService; +using ZR.Model.MES.wms.Dto; + +namespace ZR.Service.mes.wms +{ + /// + /// 毛坯库存表Service业务层处理 + /// + [AppService(ServiceType = typeof(IWmBlankInventoryService), ServiceLifetime = LifeTime.Transient)] + public class WmBlankInventoryService : BaseService, IWmBlankInventoryService + { + /// + /// 查询毛坯库存表列表 + /// + /// + /// + public PagedInfo GetList(WmBlankInventoryQueryDto parm) + { + var predicate = Expressionable.Create() + .AndIF(!string.IsNullOrEmpty(parm.BlankNum), it => it.BlankNum.Contains(parm.BlankNum)) + .AndIF(parm.Status > -1, it => it.Status == parm.Status) + .AndIF(parm.Type > 0, it => it.Type == parm.Type) + ; + + var response = Queryable() + .Where(predicate.ToExpression()) + .OrderByDescending(it=>it.UpdatedTime) + .ToPage(parm); + if (response.Result.Count > 0) + { + foreach (WmBlankInventoryDto item in response.Result) + { + WmMaterial material = Context.Queryable() + .Where(it => it.BlankNum == item.BlankNum) + .Where(it => it.Remarks == "毛坯") + .First(); + if (material == null) + { + item.Description = "此毛坯号不在物料清单内!"; + continue; + } + item.Color = material.Color; + item.Unit = material.Unit; + item.Version = material.Version; + item.Specification = material.Specification; + item.Description = !string.IsNullOrEmpty(material.Description) ? material.Description : material.ProductName; + } + } + return response; + } + + + /// + /// 获取详情 + /// + /// + /// + public WmBlankInventory GetInfo(string Id) + { + var response = Queryable() + .Where(x => x.Id == Id) + .First(); + + return response; + } + + /// + /// 添加毛坯库存表 + /// + /// + /// + public WmBlankInventory AddWmBlankInventory(WmBlankInventory model) + { + bool hasRecord = Context.Queryable() + .Where(it => it.BlankNum == model.BlankNum) + .Any(); + if(hasRecord) + { + throw new Exception("毛坯仓库已有相同毛坯号记录"); + } + model.Id = SnowFlakeSingle.Instance.NextId().ToString(); + return Context.Insertable(model).ExecuteReturnEntity(); + } + + /// + /// 修改毛坯库存表 + /// + /// + /// + public int UpdateWmBlankInventory(WmBlankInventory model) + { + //var response = Update(w => w.Id == model.Id, it => new WmBlankInventory() + //{ + // BlankNum = model.BlankNum, + // Quantity = model.Quantity, + // MaxNum = model.MaxNum, + // MinNum = model.MinNum, + // WarnNum = model.WarnNum, + // Type = model.Type, + // Status = model.Status, + // Remark = model.Remark, + // CreatedBy = model.CreatedBy, + // CreatedTime = model.CreatedTime, + // UpdatedBy = model.UpdatedBy, + // UpdatedTime = model.UpdatedTime, + //}); + //return response; + return Update(model, true); + } + + } +} \ No newline at end of file diff --git a/ZR.Service/mes/wms/WmBlankRecordService.cs b/ZR.Service/mes/wms/WmBlankRecordService.cs new file mode 100644 index 00000000..1a8279b2 --- /dev/null +++ b/ZR.Service/mes/wms/WmBlankRecordService.cs @@ -0,0 +1,87 @@ +using System; +using SqlSugar; +using Infrastructure.Attribute; +using Infrastructure.Extensions; +using ZR.Model; +using ZR.Model.Dto; +using ZR.Repository; +using ZR.Service.Business.IBusinessService; +using System.Linq; +using ZR.Service.mes.wms.IService; +using ZR.Model.MES.wms; +using ZR.Model.MES.wms.Dto; + +namespace ZR.Service.mes.wms +{ + /// + /// 毛坯库存库存变动记录表Service业务层处理 + /// + [AppService(ServiceType = typeof(IWmBlankRecordService), ServiceLifetime = LifeTime.Transient)] + public class WmBlankRecordService : BaseService, IWmBlankRecordService + { + /// + /// 查询毛坯库存库存变动记录表列表 + /// + /// + /// + public PagedInfo GetList(WmBlankRecordQueryDto parm) + { + var predicate = Expressionable.Create(); + + var response = Queryable() + .Where(predicate.ToExpression()) + .ToPage(parm); + + return response; + } + + + /// + /// 获取详情 + /// + /// + /// + public WmBlankRecord GetInfo(string Id) + { + var response = Queryable() + .Where(x => x.Id == Id) + .First(); + + return response; + } + + /// + /// 添加毛坯库存库存变动记录表 + /// + /// + /// + public WmBlankRecord AddWmBlankRecord(WmBlankRecord model) + { + return Context.Insertable(model).ExecuteReturnEntity(); + } + + /// + /// 修改毛坯库存库存变动记录表 + /// + /// + /// + public int UpdateWmBlankRecord(WmBlankRecord model) + { + //var response = Update(w => w.Id == model.Id, it => new WmBlankRecord() + //{ + // BlankNum = model.BlankNum, + // ChangeQuantity = model.ChangeQuantity, + // Type = model.Type, + // Status = model.Status, + // Remark = model.Remark, + // CreatedBy = model.CreatedBy, + // CreatedTime = model.CreatedTime, + // UpdatedBy = model.UpdatedBy, + // UpdatedTime = model.UpdatedTime, + //}); + //return response; + return Update(model, true); + } + + } +} \ No newline at end of file diff --git a/ZR.Service/mes/wms/WmGoodsNowProductionService.cs b/ZR.Service/mes/wms/WmGoodsNowProductionService.cs index b11391a5..7d802202 100644 --- a/ZR.Service/mes/wms/WmGoodsNowProductionService.cs +++ b/ZR.Service/mes/wms/WmGoodsNowProductionService.cs @@ -258,6 +258,13 @@ namespace ZR.Service.mes.wms { model.PackageCodeOriginal = model.PackageCodeClient; } + bool hasRecord = Context.Queryable() + .Where(it => it.PackageCodeClient == model.PackageCodeClient) + .Any(); + if (hasRecord) + { + throw new Exception("成品仓库已有相同批次号记录"); + } return Context.Insertable(model).ExecuteReturnEntity(); }