feat: 全系统窗体升级 - 配置驱动通用单据页(BillPage)、原料专用单据页、宽屏弹窗及日期转换优化
This commit is contained in:
@@ -282,14 +282,19 @@ public class DataController : ControllerBase
|
||||
return matches.Count == 1 ? matches[0] : null;
|
||||
}
|
||||
|
||||
/// <summary>请求体 JSON 序列化选项:大小写不敏感 + 宽松日期解析(兼容 "yyyy-MM-dd HH:mm:ss")</summary>
|
||||
private static readonly System.Text.Json.JsonSerializerOptions BodyJsonOptions = new()
|
||||
{
|
||||
PropertyNameCaseInsensitive = true,
|
||||
Converters = { new Converters.FlexibleDateTimeConverter() }
|
||||
};
|
||||
|
||||
/// <summary>将请求体 JSON 转换为目标实体对象</summary>
|
||||
private object? ConvertBody(string table, object body)
|
||||
{
|
||||
if (!EntityCatalog.TryGet(table, out var entityType)) return null;
|
||||
var json = System.Text.Json.JsonSerializer.Serialize(body,
|
||||
new System.Text.Json.JsonSerializerOptions { PropertyNameCaseInsensitive = true });
|
||||
return System.Text.Json.JsonSerializer.Deserialize(json, entityType,
|
||||
new System.Text.Json.JsonSerializerOptions { PropertyNameCaseInsensitive = true });
|
||||
var json = System.Text.Json.JsonSerializer.Serialize(body, BodyJsonOptions);
|
||||
return System.Text.Json.JsonSerializer.Deserialize(json, entityType, BodyJsonOptions);
|
||||
}
|
||||
|
||||
/// <summary>提取请求体中出现的字段名(用于部分更新,属性名大小写不敏感)</summary>
|
||||
|
||||
@@ -57,7 +57,8 @@ public class MetaController : ControllerBase
|
||||
["PackageId"] = ("Fims_Package", "PackageNo", null, null),
|
||||
["GradeId"] = ("BaseCommon_GradeStandard", "Name", null, null),
|
||||
["RepackId"] = ("RawMaterial_Repack", "PlanNo", null, null),
|
||||
["PurchaseId"] = ("RawMaterial_Purchase", "BillNo", null, null)
|
||||
["PurchaseId"] = ("RawMaterial_Purchase", "BillNo", null, null),
|
||||
["WarehouseId"] = ("RawMaterial_Warehouse", "Name", null, null)
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
@@ -71,6 +72,8 @@ public class MetaController : ControllerBase
|
||||
["RawMaterial_Repack"] = ("PlanNo", "RZ", "yyyyMMdd", 3, "", "-"),
|
||||
["RawMaterial_OutStock"] = ("BillNo", "YLC", "yyyyMMdd", 4, "", "-"),
|
||||
["RawMaterial_Purchase"] = ("BillNo", "CG", "yyyyMMdd", 4, "", "-"),
|
||||
["RawMaterial_Warehouse"] = ("Code", "CK", "yyyyMMdd", 3, "", "-"),
|
||||
["RawMaterial_Inspect"] = ("Code", "YJ", "yyyyMMdd", 3, "", "-"),
|
||||
["Process_Trial"] = ("BillNo", "SY", "yyyyMMdd", 3, "", "-"),
|
||||
["Process_ProcessZhuangkou"] = ("Code", "GYZ", "yyyy", 3, "-", "-"),
|
||||
["Process_Sheet"] = ("SheetNo", "GYD", "yyyyMMdd", 3, "", "-"),
|
||||
|
||||
@@ -78,8 +78,20 @@ public class WorkBenchController : ControllerBase
|
||||
trend.Add(new { date = day.ToString("MM-dd"), weight = sum });
|
||||
}
|
||||
|
||||
// ===== 待办列表(工单 + 工作流审批)=====
|
||||
var pendingOrders = await _db.Select<ProPlan_WorkOrder>()
|
||||
.Where(w => w.Flag == 1 && (w.Status == 0 || w.Status == 1 || w.Status == 2 || w.Status == 4))
|
||||
.OrderByDescending(w => w.AddTime)
|
||||
.Limit(8)
|
||||
.ToListAsync(w => new { w.Id, w.OrderNo, w.ProcessZhuangkouId, w.Status, w.PlanStartDate });
|
||||
|
||||
// ===== 庄口产量占比(近30天,Top 8)=====
|
||||
var zkIds = trendRaw.Select(x => x.ProcessZhuangkouId).Distinct().ToList();
|
||||
var zkIds = trendRaw.Select(x => x.ProcessZhuangkouId)
|
||||
.Concat(warnList.Select(x => x.ProcessZhuangkouId))
|
||||
.Concat(pendingOrders.Select(x => x.ProcessZhuangkouId))
|
||||
.Where(id => id > 0)
|
||||
.Distinct()
|
||||
.ToList();
|
||||
var zkNames = new List<Process_ProcessZhuangkou>();
|
||||
if (zkIds.Count > 0)
|
||||
{
|
||||
@@ -88,22 +100,16 @@ public class WorkBenchController : ControllerBase
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
var nameMap = zkNames.ToDictionary(x => x.Id, x => string.IsNullOrEmpty(x.Name) ? $"庄口{x.Id}" : x.Name);
|
||||
// 庄口名称优先取 Name,其次庄口编号 Code(明码),避免把内部 Id 展示出来
|
||||
var nameMap = zkNames.ToDictionary(x => x.Id, x => string.IsNullOrEmpty(x.Name) ? (string.IsNullOrEmpty(x.Code) ? $"庄口{x.Id}" : x.Code) : x.Name);
|
||||
var zhuangkou = trendRaw
|
||||
.GroupBy(x => x.ProcessZhuangkouId)
|
||||
.Select(g => new { name = nameMap.GetValueOrDefault(g.Key) ?? $"庄口{g.Key}", value = g.Sum(x => x.OutputWeight) })
|
||||
.Select(g => new { name = nameMap.GetValueOrDefault(g.Key) ?? "未知庄口", value = g.Sum(x => x.OutputWeight) })
|
||||
.OrderByDescending(x => x.value)
|
||||
.Take(8)
|
||||
.Select(x => (object)x)
|
||||
.ToList();
|
||||
|
||||
// ===== 待办列表(工单 + 工作流审批)=====
|
||||
var pendingOrders = await _db.Select<ProPlan_WorkOrder>()
|
||||
.Where(w => w.Flag == 1 && (w.Status == 0 || w.Status == 1 || w.Status == 2 || w.Status == 4))
|
||||
.OrderByDescending(w => w.AddTime)
|
||||
.Limit(8)
|
||||
.ToListAsync(w => new { w.Id, w.OrderNo, w.ProcessZhuangkouId, w.Status, w.PlanStartDate });
|
||||
|
||||
var todos = new List<object>();
|
||||
foreach (var o in pendingOrders)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
using System.Globalization;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace F9MES.Api.Converters;
|
||||
|
||||
/// <summary>
|
||||
/// 宽松 DateTime 转换器:
|
||||
/// 兼容前端 el-date-picker 输出的 "yyyy-MM-dd HH:mm:ss"(空格分隔)以及标准 ISO 8601(T 分隔)格式。
|
||||
/// 序列化保持与默认一致的 ISO 8601 输出,仅放宽反序列化。
|
||||
/// </summary>
|
||||
public class FlexibleDateTimeConverter : JsonConverter<DateTime>
|
||||
{
|
||||
public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.String)
|
||||
{
|
||||
var s = reader.GetString();
|
||||
if (!string.IsNullOrWhiteSpace(s)
|
||||
&& DateTime.TryParse(s, CultureInfo.InvariantCulture, DateTimeStyles.None, out var dt))
|
||||
return dt;
|
||||
return default;
|
||||
}
|
||||
if (reader.TokenType == JsonTokenType.Null) return default;
|
||||
return reader.GetDateTime();
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
|
||||
=> writer.WriteStringValue(value);
|
||||
}
|
||||
@@ -149,6 +149,9 @@ public class InitDataService
|
||||
// 原料管理
|
||||
MenuItem("/3", "原料庄口", "/rawmaterial/zhuangkou", "RawMaterial/zhuangkou");
|
||||
MenuItem("/3", "原料入库", "/rawmaterial/instock", "RawMaterial/instock");
|
||||
MenuItem("/3", "原料检验", "/rawmaterial/inspect", "RawMaterial/inspect");
|
||||
MenuItem("/3", "原料仓库", "/rawmaterial/warehouse", "RawMaterial/warehouse");
|
||||
MenuItem("/3", "仓储环境", "/rawmaterial/envrecord", "RawMaterial/envrecord");
|
||||
MenuItem("/3", "翻包管理", "/rawmaterial/repack", "RawMaterial/repack");
|
||||
MenuItem("/3", "原料出库", "/rawmaterial/outstock", "RawMaterial/outstock");
|
||||
MenuItem("/3", "原料库存", "/rawmaterial/stock", "RawMaterial/stock");
|
||||
|
||||
@@ -17,8 +17,8 @@ public class BizBoss_CostAllocate : BaseEntity
|
||||
[Column]
|
||||
public long PeriodId { get; set; }
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
@@ -47,8 +47,8 @@ public class BizBoss_Profit : BaseEntity
|
||||
[Column]
|
||||
public long PeriodId { get; set; }
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
|
||||
@@ -17,8 +17,8 @@ public class Fims_Batch : BaseEntity
|
||||
[Column(DbType = "varchar(50)")]
|
||||
public string BatchNo { get; set; } = "";
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
@@ -72,8 +72,8 @@ public class Fims_Package : BaseEntity
|
||||
[Column]
|
||||
public long BatchId { get; set; }
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
@@ -127,8 +127,8 @@ public class Fims_InStock : BaseEntity
|
||||
[Column(DbType = "varchar(50)")]
|
||||
public string BillNo { get; set; } = "";
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
@@ -262,8 +262,8 @@ public class Fims_OutStockItem : BaseEntity
|
||||
[Table(Name = "Fims_Stock")]
|
||||
public class Fims_Stock : BaseEntity
|
||||
{
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
|
||||
@@ -127,8 +127,8 @@ public class FlexPay_PieceResult : BaseEntity
|
||||
[Column]
|
||||
public long EmployeeId { get; set; }
|
||||
|
||||
/// <summary>关联工艺庄口ID</summary>
|
||||
[Description("关联工艺庄口ID")]
|
||||
/// <summary>关联工艺庄口</summary>
|
||||
[Description("关联工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@ public class Lims_SpoolCheck : BaseEntity
|
||||
[Column]
|
||||
public DateTime CheckDate { get; set; }
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
@@ -83,8 +83,8 @@ public class Lims_BlackBoard : BaseEntity
|
||||
[Column]
|
||||
public DateTime CheckDate { get; set; }
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
@@ -138,8 +138,8 @@ public class Lims_Denier : BaseEntity
|
||||
[Column]
|
||||
public DateTime CheckDate { get; set; }
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
@@ -203,8 +203,8 @@ public class Lims_Moisture : BaseEntity
|
||||
[Column]
|
||||
public DateTime CheckDate { get; set; }
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
@@ -258,8 +258,8 @@ public class Lims_Abnormal : BaseEntity
|
||||
[Column]
|
||||
public int CheckType { get; set; } = 0;
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
@@ -303,8 +303,8 @@ public class Lims_GradeResult : BaseEntity
|
||||
[Column(DbType = "varchar(50)")]
|
||||
public string GradeNo { get; set; } = "";
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
|
||||
@@ -17,8 +17,8 @@ public class ProHou_Daily : BaseEntity
|
||||
[Column]
|
||||
public DateTime DailyDate { get; set; }
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
@@ -62,8 +62,8 @@ public class ProHou_SpoolLedger : BaseEntity
|
||||
[Column(DbType = "varchar(50)")]
|
||||
public string Code { get; set; } = "";
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
@@ -147,8 +147,8 @@ public class ProHou_WeighBig : BaseEntity
|
||||
[Column(DbType = "varchar(50)")]
|
||||
public string BillNo { get; set; } = "";
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
|
||||
@@ -17,8 +17,8 @@ public class ProPlan_WorkOrder : BaseEntity
|
||||
[Column(DbType = "varchar(50)")]
|
||||
public string OrderNo { get; set; } = "";
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
@@ -82,8 +82,8 @@ public class ProPlan_Change : BaseEntity
|
||||
[Column(DbType = "varchar(50)")]
|
||||
public string ChangeNo { get; set; } = "";
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
|
||||
@@ -122,8 +122,8 @@ public class ProQian_ShiftTime : BaseEntity
|
||||
[Column]
|
||||
public long EmployeeId { get; set; }
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
@@ -167,8 +167,8 @@ public class ProQian_CocoonBoiling : BaseEntity
|
||||
[Column]
|
||||
public DateTime BoilDate { get; set; }
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
@@ -197,8 +197,8 @@ public class ProQian_ThreadRecord : BaseEntity
|
||||
[Column]
|
||||
public DateTime RecordDate { get; set; }
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
|
||||
@@ -52,8 +52,8 @@ public class ProXuan_Daily : BaseEntity
|
||||
[Column]
|
||||
public long TeamId { get; set; }
|
||||
|
||||
/// <summary>原料庄口ID</summary>
|
||||
[Description("原料庄口ID")]
|
||||
/// <summary>原料庄口</summary>
|
||||
[Description("原料庄口")]
|
||||
[Column]
|
||||
public long ZhuangkouId { get; set; }
|
||||
|
||||
@@ -97,8 +97,8 @@ public class ProXuan_Quality : BaseEntity
|
||||
[Column]
|
||||
public DateTime QualityDate { get; set; }
|
||||
|
||||
/// <summary>原料庄口ID</summary>
|
||||
[Description("原料庄口ID")]
|
||||
/// <summary>原料庄口</summary>
|
||||
[Description("原料庄口")]
|
||||
[Column]
|
||||
public long ZhuangkouId { get; set; }
|
||||
|
||||
@@ -127,8 +127,8 @@ public class ProXuan_Quality : BaseEntity
|
||||
[Table(Name = "ProXuan_TempStock")]
|
||||
public class ProXuan_TempStock : BaseEntity
|
||||
{
|
||||
/// <summary>原料庄口ID</summary>
|
||||
[Description("原料庄口ID")]
|
||||
/// <summary>原料庄口</summary>
|
||||
[Description("原料庄口")]
|
||||
[Column]
|
||||
public long ZhuangkouId { get; set; }
|
||||
|
||||
|
||||
@@ -23,13 +23,13 @@ public class Process_Trial : BaseEntity
|
||||
[Column]
|
||||
public int TrialType { get; set; } = 0;
|
||||
|
||||
/// <summary>原料庄口ID</summary>
|
||||
[Description("原料庄口ID")]
|
||||
/// <summary>原料庄口</summary>
|
||||
[Description("原料庄口")]
|
||||
[Column]
|
||||
public long ZhuangkouId { get; set; }
|
||||
|
||||
/// <summary>工艺庄口ID(可选)</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口(可选)</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
@@ -93,8 +93,8 @@ public class Process_ProcessZhuangkou : BaseEntity
|
||||
[Column(DbType = "decimal(6,2)")]
|
||||
public decimal Progress { get; set; }
|
||||
|
||||
/// <summary>关联原料庄口ID(可选)</summary>
|
||||
[Description("关联原料庄口ID")]
|
||||
/// <summary>关联原料庄口(可选)</summary>
|
||||
[Description("关联原料庄口")]
|
||||
[Column]
|
||||
public long ZhuangkouId { get; set; }
|
||||
|
||||
@@ -183,8 +183,8 @@ public class Process_Sheet : BaseEntity
|
||||
[Column(DbType = "varchar(100)")]
|
||||
public string Name { get; set; } = "";
|
||||
|
||||
/// <summary>工艺庄口ID</summary>
|
||||
[Description("工艺庄口ID")]
|
||||
/// <summary>工艺庄口</summary>
|
||||
[Description("工艺庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
|
||||
@@ -17,8 +17,8 @@ public class Qums_GrainCount : BaseEntity
|
||||
[Column(DbType = "varchar(50)")]
|
||||
public string BillNo { get; set; } = "";
|
||||
|
||||
/// <summary>原料庄口ID</summary>
|
||||
[Description("原料庄口ID")]
|
||||
/// <summary>原料庄口</summary>
|
||||
[Description("原料庄口")]
|
||||
[Column]
|
||||
public long ZhuangkouId { get; set; }
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ namespace F9MES.Domain.RawMaterial;
|
||||
|
||||
/// <summary>原料庄口(编号规则:YLZ+yyyyMMdd+3位流水,如 YLZ20260815-001)</summary>
|
||||
[Table(Name = "RawMaterial_Zhuangkou")]
|
||||
[Description("原料庄口")]
|
||||
public class RawMaterial_Zhuangkou : BaseEntity
|
||||
{
|
||||
/// <summary>庄口编号(自动生成 YLZ20260815-001)</summary>
|
||||
@@ -72,6 +73,51 @@ public class RawMaterial_Zhuangkou : BaseEntity
|
||||
[Description("状态:0=收茧中 1=已入库 2=翻包中 3=已领完")]
|
||||
[Column]
|
||||
public int Status { get; set; } = 0;
|
||||
|
||||
/// <summary>综合等级(如 3A/2A/A,参照生丝等级)</summary>
|
||||
[Description("综合等级")]
|
||||
[Column(DbType = "varchar(20)")]
|
||||
public string? Grade { get; set; }
|
||||
|
||||
/// <summary>上车茧率(%,缫丝适制性)</summary>
|
||||
[Description("上车茧率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? LoadingCocoonRate { get; set; }
|
||||
|
||||
/// <summary>上茧率(%,好茧占比)</summary>
|
||||
[Description("上茧率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? GoodCocoonRate { get; set; }
|
||||
|
||||
/// <summary>茧层率(%,茧层占全茧重比例)</summary>
|
||||
[Description("茧层率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? ShellRate { get; set; }
|
||||
|
||||
/// <summary>出丝率(%,缫丝得丝率)</summary>
|
||||
[Description("出丝率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? ReelableRate { get; set; }
|
||||
|
||||
/// <summary>解舒率(%,缫丝解舒性能)</summary>
|
||||
[Description("解舒率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? Reelability { get; set; }
|
||||
|
||||
/// <summary>含水量/回潮率(%,干茧需防潮)</summary>
|
||||
[Description("含水量/回潮率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? MoistureRate { get; set; }
|
||||
|
||||
/// <summary>建议储存仓库ID(RawMaterial_Warehouse)</summary>
|
||||
[Description("建议储存仓库ID")]
|
||||
[Column]
|
||||
public long WarehouseId { get; set; }
|
||||
|
||||
/// <summary>建议储存期(月)</summary>
|
||||
[Description("建议储存期(月)")]
|
||||
[Column]
|
||||
public int? ShelfLifeMonths { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>原料入库单(磅码单过磅)</summary>
|
||||
@@ -83,8 +129,8 @@ public class RawMaterial_InStock : BaseEntity
|
||||
[Column(DbType = "varchar(50)")]
|
||||
public string BillNo { get; set; } = "";
|
||||
|
||||
/// <summary>原料庄口ID</summary>
|
||||
[Description("原料庄口ID")]
|
||||
/// <summary>原料庄口</summary>
|
||||
[Description("原料庄口")]
|
||||
[Column]
|
||||
public long ZhuangkouId { get; set; }
|
||||
|
||||
@@ -143,8 +189,8 @@ public class RawMaterial_Repack : BaseEntity
|
||||
[Column(DbType = "varchar(50)")]
|
||||
public string PlanNo { get; set; } = "";
|
||||
|
||||
/// <summary>原料庄口ID</summary>
|
||||
[Description("原料庄口ID")]
|
||||
/// <summary>原料庄口</summary>
|
||||
[Description("原料庄口")]
|
||||
[Column]
|
||||
public long ZhuangkouId { get; set; }
|
||||
|
||||
@@ -228,8 +274,8 @@ public class RawMaterial_OutStock : BaseEntity
|
||||
[Column(DbType = "varchar(50)")]
|
||||
public string BillNo { get; set; } = "";
|
||||
|
||||
/// <summary>原料庄口ID</summary>
|
||||
[Description("原料庄口ID")]
|
||||
/// <summary>原料庄口</summary>
|
||||
[Description("原料庄口")]
|
||||
[Column]
|
||||
public long ZhuangkouId { get; set; }
|
||||
|
||||
@@ -268,8 +314,8 @@ public class RawMaterial_OutStock : BaseEntity
|
||||
[Table(Name = "RawMaterial_Stock")]
|
||||
public class RawMaterial_Stock : BaseEntity
|
||||
{
|
||||
/// <summary>原料庄口ID</summary>
|
||||
[Description("原料庄口ID")]
|
||||
/// <summary>原料庄口</summary>
|
||||
[Description("原料庄口")]
|
||||
[Column]
|
||||
public long ZhuangkouId { get; set; }
|
||||
|
||||
@@ -378,3 +424,226 @@ public class RawMaterial_PurchaseItem : BaseEntity
|
||||
[Column(DbType = "decimal(14,2)")]
|
||||
public decimal InQuantity { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>原料仓库(干茧仓/冷冻鲜茧仓(冷库)/下脚料仓)</summary>
|
||||
[Table(Name = "RawMaterial_Warehouse")]
|
||||
[Description("原料仓库")]
|
||||
public class RawMaterial_Warehouse : BaseEntity
|
||||
{
|
||||
/// <summary>仓库编号</summary>
|
||||
[Description("仓库编号")]
|
||||
[Column(DbType = "varchar(50)")]
|
||||
public string Code { get; set; } = "";
|
||||
|
||||
/// <summary>仓库名称</summary>
|
||||
[Description("仓库名称")]
|
||||
[Column(DbType = "varchar(100)")]
|
||||
public string Name { get; set; } = "";
|
||||
|
||||
/// <summary>仓库类型:0=干茧仓 1=冷冻鲜茧仓(冷库) 2=下脚料仓</summary>
|
||||
[Description("仓库类型:0=干茧仓 1=冷冻鲜茧仓 2=下脚料仓")]
|
||||
[Column]
|
||||
public int WarehouseType { get; set; } = 0;
|
||||
|
||||
/// <summary>库区/仓位说明</summary>
|
||||
[Description("库区/仓位")]
|
||||
[Column(DbType = "varchar(200)")]
|
||||
public string? Area { get; set; }
|
||||
|
||||
/// <summary>温度下限(℃,0=不限)</summary>
|
||||
[Description("温度下限(℃)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? TempMin { get; set; }
|
||||
|
||||
/// <summary>温度上限(℃,0=不限)</summary>
|
||||
[Description("温度上限(℃)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? TempMax { get; set; }
|
||||
|
||||
/// <summary>湿度下限(%RH)</summary>
|
||||
[Description("湿度下限(%RH)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? HumiMin { get; set; }
|
||||
|
||||
/// <summary>湿度上限(%RH,干茧防霉需控制在 60-70)</summary>
|
||||
[Description("湿度上限(%RH)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? HumiMax { get; set; }
|
||||
|
||||
/// <summary>库容量(吨)</summary>
|
||||
[Description("库容量(吨)")]
|
||||
[Column(DbType = "decimal(12,2)")]
|
||||
public decimal? Capacity { get; set; }
|
||||
|
||||
/// <summary>当前存量(吨)</summary>
|
||||
[Description("当前存量(吨)")]
|
||||
[Column(DbType = "decimal(12,2)")]
|
||||
public decimal? CurrentLoad { get; set; }
|
||||
|
||||
/// <summary>负责人</summary>
|
||||
[Description("负责人")]
|
||||
[Column(DbType = "varchar(50)")]
|
||||
public string? Manager { get; set; }
|
||||
|
||||
/// <summary>状态:0=停用 1=启用</summary>
|
||||
[Description("状态:0=停用 1=启用")]
|
||||
[Column]
|
||||
public int Status { get; set; } = 1;
|
||||
}
|
||||
|
||||
/// <summary>仓储环境记录(干茧仓防霉湿度、冷库鲜茧温度巡检)</summary>
|
||||
[Table(Name = "RawMaterial_EnvRecord")]
|
||||
[Description("仓储环境记录")]
|
||||
public class RawMaterial_EnvRecord : BaseEntity
|
||||
{
|
||||
/// <summary>仓库ID(RawMaterial_Warehouse)</summary>
|
||||
[Description("仓库ID")]
|
||||
[Column]
|
||||
public long WarehouseId { get; set; }
|
||||
|
||||
/// <summary>记录时间</summary>
|
||||
[Description("记录时间")]
|
||||
[Column]
|
||||
public DateTime RecordTime { get; set; }
|
||||
|
||||
/// <summary>实测温度(℃)</summary>
|
||||
[Description("实测温度(℃)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? Temperature { get; set; }
|
||||
|
||||
/// <summary>实测湿度(%RH)</summary>
|
||||
[Description("实测湿度(%RH)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? Humidity { get; set; }
|
||||
|
||||
/// <summary>达标状态:0=达标 1=温度超标 2=湿度超标 3=温湿度均超标</summary>
|
||||
[Description("达标状态:0=达标 1=温度超标 2=湿度超标 3=均超标")]
|
||||
[Column]
|
||||
public int AlarmStatus { get; set; } = 0;
|
||||
|
||||
/// <summary>处理措施</summary>
|
||||
[Description("处理措施")]
|
||||
[Column(DbType = "varchar(200)")]
|
||||
public string? Measure { get; set; }
|
||||
|
||||
/// <summary>记录人</summary>
|
||||
[Description("记录人")]
|
||||
[Column(DbType = "varchar(50)")]
|
||||
public string? Recorder { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>原料检验单(蚕茧入库质检与定级)</summary>
|
||||
[Table(Name = "RawMaterial_Inspect")]
|
||||
[Description("原料检验单")]
|
||||
public class RawMaterial_Inspect : BaseEntity
|
||||
{
|
||||
/// <summary>检验单号(YJ+日期+流水)</summary>
|
||||
[Description("检验单号(YJ+日期+流水)")]
|
||||
[Column(DbType = "varchar(50)")]
|
||||
public string Code { get; set; } = "";
|
||||
|
||||
/// <summary>原料庄口ID(RawMaterial_Zhuangkou)</summary>
|
||||
[Description("原料庄口ID")]
|
||||
[Column]
|
||||
public long ZhuangkouId { get; set; }
|
||||
|
||||
/// <summary>关联入库单ID(RawMaterial_InStock,可空)</summary>
|
||||
[Description("关联入库单ID")]
|
||||
[Column]
|
||||
public long InStockId { get; set; }
|
||||
|
||||
/// <summary>检验日期</summary>
|
||||
[Description("检验日期")]
|
||||
[Column]
|
||||
public DateTime CheckDate { get; set; }
|
||||
|
||||
/// <summary>蚕茧类型:0=干茧 1=冷冻鲜茧</summary>
|
||||
[Description("蚕茧类型:0=干茧 1=冷冻鲜茧")]
|
||||
[Column]
|
||||
public int CocoonType { get; set; } = 0;
|
||||
|
||||
/// <summary>取样重量(kg)</summary>
|
||||
[Description("取样重量(kg)")]
|
||||
[Column(DbType = "decimal(14,2)")]
|
||||
public decimal? SampleWeight { get; set; }
|
||||
|
||||
/// <summary>上车茧率(%)</summary>
|
||||
[Description("上车茧率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? LoadingCocoonRate { get; set; }
|
||||
|
||||
/// <summary>上茧率(%)</summary>
|
||||
[Description("上茧率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? GoodCocoonRate { get; set; }
|
||||
|
||||
/// <summary>下脚茧率(%)</summary>
|
||||
[Description("下脚茧率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? WasteCocoonRate { get; set; }
|
||||
|
||||
/// <summary>茧层率(%)</summary>
|
||||
[Description("茧层率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? ShellRate { get; set; }
|
||||
|
||||
/// <summary>出丝率(%)</summary>
|
||||
[Description("出丝率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? ReelableRate { get; set; }
|
||||
|
||||
/// <summary>解舒率(%)</summary>
|
||||
[Description("解舒率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? Reelability { get; set; }
|
||||
|
||||
/// <summary>含水量/回潮率(%)</summary>
|
||||
[Description("含水量/回潮率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? MoistureRate { get; set; }
|
||||
|
||||
/// <summary>霉茧率(%)</summary>
|
||||
[Description("霉茧率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? MoldyRate { get; set; }
|
||||
|
||||
/// <summary>内印茧率(%)</summary>
|
||||
[Description("内印茧率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? InnerPrintRate { get; set; }
|
||||
|
||||
/// <summary>黄斑茧率(%)</summary>
|
||||
[Description("黄斑茧率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? YellowSpotRate { get; set; }
|
||||
|
||||
/// <summary>柴印茧率(%)</summary>
|
||||
[Description("柴印茧率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? ChaiPrintRate { get; set; }
|
||||
|
||||
/// <summary>双宫茧率(%)</summary>
|
||||
[Description("双宫茧率(%)")]
|
||||
[Column(DbType = "decimal(8,2)")]
|
||||
public decimal? DoubleCocoonRate { get; set; }
|
||||
|
||||
/// <summary>综合等级(参照生丝等级 6A-2A/A)</summary>
|
||||
[Description("综合等级")]
|
||||
[Column(DbType = "varchar(20)")]
|
||||
public string? Grade { get; set; }
|
||||
|
||||
/// <summary>检验结论:0=合格 1=降级 2=拒收</summary>
|
||||
[Description("检验结论:0=合格 1=降级 2=拒收")]
|
||||
[Column]
|
||||
public int Conclusion { get; set; } = 0;
|
||||
|
||||
/// <summary>检验员</summary>
|
||||
[Description("检验员")]
|
||||
[Column(DbType = "varchar(50)")]
|
||||
public string? Inspector { get; set; }
|
||||
|
||||
/// <summary>备注</summary>
|
||||
[Description("备注")]
|
||||
[Column(DbType = "varchar(500)")]
|
||||
public string? Remark { get; set; }
|
||||
}
|
||||
|
||||
@@ -18,8 +18,8 @@ public class WmsFu_Stock : BaseEntity
|
||||
[Column]
|
||||
public long MaterialId { get; set; }
|
||||
|
||||
/// <summary>来源庄口ID(工艺庄口,可为0汇总)</summary>
|
||||
[Description("来源庄口ID")]
|
||||
/// <summary>来源庄口(工艺庄口,可为0汇总)</summary>
|
||||
[Description("来源庄口")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
@@ -53,8 +53,8 @@ public class WmsFu_InStock : BaseEntity
|
||||
[Column]
|
||||
public long MaterialId { get; set; }
|
||||
|
||||
/// <summary>工艺庄口ID(来源)</summary>
|
||||
[Description("工艺庄口ID(来源)")]
|
||||
/// <summary>工艺庄口(来源)</summary>
|
||||
[Description("工艺庄口(来源)")]
|
||||
[Column]
|
||||
public long ProcessZhuangkouId { get; set; }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user