zhaowc
2025-02-16 1293aeec722e06dc11b657455941abbc1c274090
Wms/Model/InterFaceModel/HttpModel.cs
@@ -1,9 +1,21 @@
using System;
using System.Collections.Generic;
using System.Reflection.Emit;
using System.Text;
namespace Model.InterFaceModel
{
    /// <summary>
    /// 外部系统返回参数
    /// </summary>
    public class HttpReturnModel
    {
        public string Success { get; set; }
        public string Message { get; set; }
    }
    #region Erp-Model
    /// <summary>
    /// 发送接收erp接口参数的model
    /// </summary>
@@ -18,6 +30,78 @@
        /// </summary>
        public string Message { get; set; }
    }
    #endregion
    #region MES-Model
    /// <summary>
    /// 接收mes接口参数的model
    /// </summary>
    public class MesModel
    {
        /// <summary>
        /// 状态码 0 成功 -1失败
        /// </summary>
        public string status { get; set; }
        /// <summary>
        /// 信息详情
        /// </summary>
        public string message { get; set; }
    }
    /// <summary>
    /// 接收Mes令牌Model
    /// </summary>
    public class MesTokenModel
    {
        /// <summary>
        /// 状态码 0 成功 -1失败
        /// </summary>
        public string status { get; set; }
        /// <summary>
        /// 信息详情
        /// </summary>
        public string message { get; set; }
        /// <summary>
        /// 信息详情
        /// </summary>
        public GetTokenModel Data { get; set; }
        /// <summary>
        /// 信息详情
        /// </summary>
        public string type { get; set; }
        /// <summary>
        /// 异常摘要信息【字符型】
        /// </summary>
        public string summary { get; set; }
    }
    /// <summary>
    /// 接收MES令牌token值Mdoel
    /// </summary>
    public class GetTokenModel
    {
        public string token { get; set; }
        public string expire_time { get; set; }
    }
    /// <summary>
    /// 接收释放备料区储位状态Model
    /// </summary>
    public class UpLocateModel
    {
        public string WareHouseNo { get; set; }
        public string LocatNo { get; set; }
        public string Origin { get; set; }
    }
    #endregion
    #region WCS-Model
    /// <summary>
    /// 接收wcs接口返回参数的model
    /// </summary>
@@ -25,6 +109,17 @@
    {
        public int StatusCode { get; set; }
        public string Msg { get; set; }
    }
    /// <summary>
    /// 接收wcs可放信号model
    /// </summary>
    public class PutModel
    {
        public string Port { get; set; }
        public string TaskNo { get; set; }
    }
    /// <summary>
    /// Wms专用 下发指令Dto
@@ -37,7 +132,7 @@
        public string TaskNo { get; set; }
        /// <summary>
        /// 任务类型
        /// 任务类型 0:入库,1:出库,2:移库,3:入库裹包
        /// </summary>
        public string TaskType { get; set; }
@@ -93,7 +188,7 @@
        /// <summary>
        /// //2,任务完成,3,取消, 
        /// </summary>
        public string TaskStatus { get; set; }
        public string TaskStatus { get; set; }
        /// <summary>
        /// 0:入库、1:出库、2:移库
        /// </summary>
@@ -101,4 +196,973 @@
    }
    //成品码垛信息
    public class BoxPalletBindVm
    {
        /// <summary>
        /// 生产工单
        /// </summary>
        public string OrderCode { get; set; }
        /// <summary>
        /// 入库单号
        /// </summary>
        public string AsnNo { get; set; }
        /// <summary>
        /// 入库单明细
        /// </summary>
        public int AsnDetailNo { get; set; }
        /// <summary>
        /// 托盘号
        /// </summary>
        public string PalletNo { get; set; }
        /// <summary>
        /// 托盘数量
        /// </summary>
        public decimal Qty { get; set; }
        /// <summary>
        /// 托盘类型  0物料托  1空托盘托
        /// </summary>
        public string Type { get; set; }
        /// <summary>
        /// 物料编码
        /// </summary>
        public string SkuNo { get; set; }
        /// <summary>
        /// 批次号
        /// </summary>
        public string LotNo { get; set; }
        /// <summary>
        /// 批次描述
        /// </summary>
        public string LotText { get; set; }
        /// <summary>
        /// 供货批次
        /// </summary>
        public string SupplierLot { get; set; }
        public List<BoxPalletBindDetailVm> Detail { get; set; }
    }
    //码垛箱码明细信息
    public class BoxPalletBindDetailVm
    {
        /// <summary>
        /// 生产单据号
        /// </summary>
        public string OrderCode { get; set; }
        /// <summary>
        /// 箱号
        /// </summary>
        public string BoxNo { get; set; }
        /// <summary>
        /// 盒号
        /// </summary>
        public string BoxNo2 { get; set; }
        /// <summary>
        /// 支号
        /// </summary>
        public string BoxNo3 { get; set; }
        /// <summary>
        /// 数量
        /// </summary>
        public decimal Qty { get; set; }
        /// <summary>
        /// 满箱数量
        /// </summary>
        public decimal FullQty { get; set; }
        /// <summary>
        /// 物料编码
        /// </summary>
        public string SkuNo { get; set; }
        /// <summary>
        /// 物料名称
        /// </summary>
        public string SkuName { get; set; }
        /// <summary>
        /// 批次号
        /// </summary>
        public string LotNo { get; set; }
        /// <summary>
        /// 批次描述
        /// </summary>
        public string LotText { get; set; }
        /// <summary>
        /// 生产日期
        /// </summary>
        public DateTime? ProductionTime { get; set; }
        /// <summary>
        /// 过期时间
        /// </summary>
        public DateTime? ExpirationTime { get; set; }
        /// <summary>
        /// 检验标记
        /// </summary>
        public string InspectMark { get; set; }
        /// <summary>
        /// 零箱标记
        /// </summary>
        public string BitBoxMark { get; set; }
        /// <summary>
        /// 质检状态
        /// </summary>
        public string InspectStatus { get; set; }
        /// <summary>
        /// 物料规格
        /// </summary>
        public string Standard { get; set; }
        /// <summary>
        /// 包装规格
        /// </summary>
        public string PackageStandard { get; set; }
        /// <summary>
        /// 储存期至
        /// </summary>
        public DateTime? StoreTime { get; set; }
        /// <summary>
        /// 第几件
        /// </summary>
        public int? QtyOrd { get; set; }
        /// <summary>
        /// 总件数
        /// </summary>
        public int? QtyCount { get; set; }
    }
    //入库任务单据信息
    public class ResponseOrderTaskModel
    {
        /// <summary>
        /// WMS下发单号
        /// </summary>
        public string? OrderNo { get; set; }
        /// <summary>
        /// 任务号
        /// </summary>
        public string? TaskNo { get; set; }
        /// <summary>
        /// 批次号
        /// </summary>
        public string? LotNo { get; set; }
        /// <summary>
        /// 物料编码
        /// </summary>
        public string? SkuNo { get; set; }
        /// <summary>
        /// 物料名称
        /// </summary>
        public string? SkuName { get; set; }
        /// <summary>
        /// 规格
        /// </summary>
        public string? BoxType { get; set; }
        /// <summary>
        /// 总箱数/计划箱数/预估箱数
        /// </summary>
        public int? Qty { get; set; }
        /// <summary>
        /// 任务类型
        /// </summary>
        public int? TaskType { get; set; }
    }
    #endregion
    #region AGV-Model
    /// <summary>
    /// 生成任务单
    /// </summary>
    public class AgvSchedulingTask
    {
        /// <summary>
        /// 请求编号,每个请求都要一个唯一编号同一个请求重复提交 使用同一编号
        /// 是否必填:是
        /// </summary>
        public string ReqCode { get; set; }
        /// <summary>
        /// 请求时间戳
        /// 格式: “yyyy-MM-ddHH:mm:ss”
        /// 是否必填:否
        /// </summary>
        public string ReqTime { get; set; }
        /// <summary>
        /// 客户端编号,如 PDA,HCWMS 等。
        /// 是否必填:否
        /// </summary>
        public string ClientCode { get; set; }
        /// <summary>
        /// 令牌号, 由调度系统颁发。
        /// 是否必填:否
        /// </summary>
        public string TokenCode { get; set; }
        /// <summary>
        /// 任务类型,与在 RCS-2000 端配置的主任务类型编号一致。
        /// 内置任务类型:
        /// 厂内货架搬运: F01
        /// 厂内货架空满交换: F02
        /// 辊筒搬运接驳:F03
        /// 厂内货架出库 AGV 待命:F04
        /// 旋转货架: F05
        /// 厂内电梯任务: F06
        /// 以下为叉车专用任务类型
        /// 高位货架到工作台: F11
        /// 工作台到高位货架: F12
        /// 巷道到工作台: F13
        /// 工作台到巷道: F14
        /// 高位货架到工作台(接驳) : F15
        /// 工作台到高位货架(接驳) : F16
        /// 巷道到工作台(接驳) : F17
        /// 工作台到巷道(接驳) : F18
        /// 叉车电梯主任务: F20
        /// 是否必填:是
        /// </summary>
        public string TaskTyp { get; set; }
        /// <summary>
        /// 容器类型(叉车/CTU 专用)
        /// 叉车项目必传
        /// 是否必填:否
        /// </summary>
        public string CtnrTyp { get; set; }
        /// <summary>
        /// 容器数量(叉车/CTU 专用)
        /// 叉车项目必传
        /// 是否必填:否
        /// </summary>
        public string CtnrNum { get; set; }
        /// <summary>
        /// 容器编号(叉车/CTU 专用)
        /// 是否必填:否
        /// </summary>
        public string CtnrCode { get; set; }
        /// <summary>
        /// 任务模式
        /// 0-普通 move
        /// 1-出库 move
        /// 2-入库 move
        /// 3-移库 move
        /// 说明:
        /// 1>任务模板中也可以配置模式,如果接口传了则优先使用接口传入的值
        /// 2>出库 move 模式不能被打断,普通move和入库move可以被打断。出库 move 执行后必须执行入库move 或者移库 move,若后续未带move 标识,则系统不会执行,会将任务挂起。
        /// 是否必填:否
        /// </summary>
        public string TaskMode { get; set; }
        /// <summary>
        /// 工作位,一般为机台或工作台位置,与 RCS-2000 端配置的位置名称一致, 工作位名称为字母\数字\或组合, 不超过 32 位。
        /// 是否必填:否
        /// </summary>
        public string WbCode { get; set; }
        /// <summary>
        /// 位置路径:AGV 关键路径位置集合,与任务类型中模板配置的位置路径一一对应。待现场地图部署、配置完成后可获取。
        /// positionCode:位置编号, 单个编号不超过 64 位
        /// type:位置类型说明:
        /// 00 表示:位置编号
        /// 01 表示:物料批次号
        /// 02 表示:策略编号(含多个区域)
        /// 如:第一个区域放不下, 可以放第二个区域
        /// 03 表示:货架编号,通过货架编号找到货架所在位置
        /// 04 表示:区域编号,在区域中查找可用位置
        /// 05 表示:仓位编号(叉车/CTU 专用)
        /// 06 表示:巷道编号
        /// 07 表示:容器编号
        /// 08 表示:巷道策略
        /// 09 表示:巷道区域
        /// 10 表示:巷道仓位
        /// 11 表示:输送线(机台)编号
        /// 12 表示:CTU 工作台(梳齿工作站)编号
        /// 13 表示:搬运巷道指定货架出库
        /// 是否必填:否
        /// </summary>
        public Object[] PositionCodePath { get; set; }
        /// <summary>
        /// 货架编号,不指定货架可以为空
        /// 是否必填:否
        /// </summary>
        public string PodCode { get; set; }
        /// <summary>
        /// 别对应地图的任务完成时有值
        /// 左: 180
        /// 右: 0
        /// 上: 90
        /// 下: -90
        /// 不指定方向可以为空;如果终点不是工作台或工作台未配置方向则作为终点方向塞入子任务报文,如果工作台配有方向则两者做差结果作为终点方向塞入子任务报文
        /// 是否必填:否
        /// </summary>
        public string PodDir { get; set; }
        /// <summary>
        /// 货架类型, 传空时表示随机找个货架
        /// 找空货架传参方式如下:
        /// -1: 代表不关心货架类型, 找到空货架即可.
        /// -2: 代表从工作位获取关联货架类型, 如果未配置, 只找空货架.货架类型编号: 只找该货架类型的空货架
        /// 是否必填:否
        /// </summary>
        public string PodTyp { get; set; }
        /// <summary>
        /// 物料批次或货架上的物料唯一编码,生成任务单时,货架与物料直接绑定时使用. (通过同时传 podCode 和materialLot来绑定或通过wbCode 找到位置上的货架和materialLot 来绑定)巷道任务通过该字段传入特征值
        /// 是否必填:否
        /// </summary>
        public string MaterialLot { get; set; }
        /// <summary>
        /// 优先级,从(1~127)级,最大优先级最高。为空时,采用任务模板的优先级。
        /// 是否必填:否
        /// </summary>
        public string Priority { get; set; }
        /// <summary>
        /// 任务单号,选填, 不填系统自动生成,UUID 小于等于 64 位
        /// 是否必填:否
        /// </summary>
        public string TaskCode { get; set; }
        /// <summary>
        /// AGV 编号,填写表示指定某一编号的 AGV 执行该任务
        /// 是否必填:否
        /// </summary>
        public string AgvCode { get; set; }
        /// <summary>
        /// 组编号
        /// CTU 场景下用于按组出库,同组任务优先拼车。 如业务需要任务组间或组内按顺序出库,则需调用料箱顺序出库(CTU)接口。潜伏式场景下,通过组号来管理顺序出库的顺序,组号小的优先出库。
        /// 是否必填:否
        /// </summary>
        public string GroupId { get; set; }
        /// <summary>
        /// 自定义字段.JSON 格式
        /// 是否必填:否
        /// </summary>
        public string Data { get; set; }
    }
    /// <summary>
    /// 继续执行任务
    /// </summary>
    public class AgvContinueTask
    {
        /// <summary>
        /// 请求编号,每个请求都要一个唯一编号, 同一个请求重复提交, 使用同一编号。
        /// 是否必填:是
        /// </summary>
        public string ReqCode { get; set; }
        /// <summary>
        /// 请求时间截
        /// 格式: “yyyy-MM-dd HH:mm:ss”。
        /// 是否必填:否
        /// </summary>
        public string ReqTime { get; set; }
        /// <summary>
        /// 客户端编号,如 PDA,HCWMS 等。
        /// 是否必填:否
        /// </summary>
        public string ClientCode { get; set; }
        /// <summary>
        /// 令牌号, 由调度系统颁发。
        /// 是否必填:否
        /// </summary>
        public string TokenCode { get; set; }
        /// <summary>
        /// 工作位,与 RCS-2000 端配置的位置名称一致
        /// 是否必填:否
        /// </summary>
        public string WbCode { get; set; }
        /// <summary>
        /// 货架号,采用货架号触发的方式。
        /// 是否必填:否
        /// </summary>
        public string PodCode { get; set; }
        /// <summary>
        /// AGV 编号,采用 AGV 编号触发的方式。
        /// 是否必填:否
        /// </summary>
        public string AgvCode { get; set; }
        /// <summary>
        /// 任务单号,选填, 不填系统自动生成,必须为 64 位 UUID
        /// 是否必填:否
        /// </summary>
        public string TaskCode { get; set; }
        /// <summary>
        /// 下一个子任务的序列,指定第几个子任务开始执行,校验子任务执行是否正确。不填默认执行下一个子任务。
        /// 是否必填:否
        /// </summary>
        public string TaskSeq { get; set; }
        /// <summary>
        /// 下一个位置信息,在任务类型中配置外部设置时需要传入,否则不需要设置。待现场地图部署、配置完成后可获取
        /// 是否必填:否
        /// </summary>
        public string NextPositionCode { get; set; }
    }
    /// <summary>
    /// 取消任务
    /// </summary>
    public class AgvCancelTask
    {
        /// <summary>
        /// 请求编号,每个请求都要一个唯一编号, 同一个请求重复提交, 使用同一编号。
        /// 是否必填:是
        /// </summary>
        public string ReqCode { get; set; }
        /// <summary>
        /// 请求时间截
        /// 格式: “yyyy-MM-dd HH:mm:ss”。
        /// 是否必填:否
        /// </summary>
        public string ReqTime { get; set; }
        /// <summary>
        /// 客户端编号,如 PDA,HCWMS 等。
        /// 是否必填:否
        /// </summary>
        public string ClientCode { get; set; }
        /// <summary>
        /// 令牌号, 由调度系统颁发。 由RCS-2000 告知上层系统
        /// 是否必填:否
        /// </summary>
        public string TokenCode { get; set; }
        /// <summary>
        /// 取消类型
        /// 0 表示:取消后货架直接放地上
        /// 1 表示:AGV 仍然背着货架, 根据回库区域执行回库指令, 只有潜伏车和 CTU 车支持。
        /// 若不传值,默认的取消模式为 0
        /// 是否必填:否
        /// </summary>
        public string ForceCancel { get; set; }
        /// <summary>
        /// forcecancel=1 时有意义,回库区域编号,如果为空,采用货架配置的库区。
        /// 是否必填:否
        /// </summary>
        public string MatterArea { get; set; }
        /// <summary>
        /// 取消该 AGV 正在执行的任务单
        /// 是否必填:否
        /// </summary>
        public string AgvCode { get; set; }
        /// <summary>
        /// 任务单编号, 取消该任务单
        /// 是否必填:否
        /// </summary>
        public string TaskCode { get; set; }
    }
    /// <summary>
    /// 任务完成通知参数
    /// </summary>
    public class AgvTaskDto
    {
        /// <summary>
        /// 请求编号,每个请求都要一个唯一编号
        /// 同一个请求重复提交 使用同一编号
        /// 是否必填:是
        /// </summary>
        public string ReqCode { get; set; }
        /// <summary>
        /// 请求时间戳
        /// 格式: “yyyy-MM-ddHH:mm:ss”
        /// 是否必填:是
        /// </summary>
        public string EeqTime { get; set; }
        /// <summary>
        /// 地码 X 坐标(mm):任务完成时有值
        /// 是否必填:否
        /// </summary>
        public decimal CooX { get; set; }
        /// <summary>
        /// 地码 Y 坐标(mm):任务完成时有值
        /// 是否必填:否
        /// </summary>
        public decimal CooY { get; set; }
        /// <summary>
        /// 当前位置编号
        /// 任务开始:该位置为任务起点
        /// 走出储位:该位置为任务起点
        /// 任务单取消:该位置为工作位编号
        /// 任务结束:该位置为任务终点
        /// 取放申请:取放料箱的点
        /// 是否必填:是
        /// </summary>
        public string CurrentPositionCode { get; set; }
        /// <summary>
        /// 自定义字段,不超过 2000 个字符
        /// 是否必填:否
        /// </summary>
        public string Data { get; set; }
        /// <summary>
        /// 地图编号
        /// 是否必填:否
        /// </summary>
        public string MapCode { get; set; }
        /// <summary>
        /// 地码编号:任务完成时有值
        /// 是否必填:否
        /// </summary>
        public string MapDataCode { get; set; }
        /// <summary>
        /// 仓位编号:叉车与 CTU 任务时有值
        /// 是否必填:否
        /// </summary>
        public string StgBinCode { get; set; }
        /// <summary>
        /// 方法名, 可使用任务类型做为方法名
        /// 由 RCS-2000 任务模板配置后并告知上层系统
        /// 默认使用方式:
        /// start : 任务开始
        /// outbin : 走出储位
        /// end : 任务结束
        /// cancel : 任务单取消
        /// apply:CTU 料箱取放申请
        /// 是否必填:是
        /// </summary>
        public string Method { get; set; }
        /// <summary>
        /// 货架编号:背货架时有值
        /// 是否必填:否
        /// </summary>
        public string PdCode { get; set; }
        /// <summary>
        /// 别对应地图的任务完成时有值
        /// 左: 180
        /// 右: 0
        /// 上: 90
        /// 下: -90
        /// 是否必填:否
        /// </summary>
        public string PodDir { get; set; }
        /// <summary>
        /// 物料编号
        /// 是否必填:否
        /// </summary>
        public string MaterialLot { get; set; }
        /// <summary>
        /// AGV 编号(同 agvCode )
        /// 是否必填:否
        /// </summary>
        public string RobotCode { get; set; }
        /// <summary>
        /// 当前任务单号
        /// 是否必填:是
        /// </summary>
        public string TaskCode { get; set; }
        /// <summary>
        /// 工作位,与 RCS-2000 端配置的位置名称一致。任务完成时有值,与生成任务单接口中的 wbCode 一致
        /// 是否必填:否
        /// </summary>
        public string WbCode { get; set; }
        /// <summary>
        /// 容器编号
        /// 是否必填:否
        /// </summary>
        public string CtnrCode { get; set; }
        /// <summary>
        /// 巷道编号
        /// 是否必填:否
        /// </summary>
        public string RoadWayCode { get; set; }
        /// <summary>
        /// 巷道内顺序号
        /// 巷道尾是 0,到巷道头依次递增 1
        /// 是否必填:否
        /// </summary>
        public string Seq { get; set; }
        /// <summary>
        /// 设备编号,如梳齿式工作站、输送线等,一般使用于 CTU 场景。系统根据仓位定位到关联的设备编号。
        /// 是否必填:否
        /// </summary>
        public string EqpCode { get; set; }
        public string DstBinCode { get; set; }
        public string IndBind { get; set; }
        public string Layer { get; set; }
        public string MapShortName { get; set; }
        public string MaterialType { get; set; }
        public string Action { get; set; }
        public string AreaCode { get; set; }
        public string BerthCode { get; set; }
        public string CallCode { get; set; }
        public string CallTyp { get; set; }
        public string ClientCode { get; set; }
        public string OrgCode { get; set; }
        public string CtnrTyp { get; set; }
        public string CurrentCallCode { get; set; }
        public string PodCode { get; set; }
        public string PodTyp { get; set; }
        public string PodNum { get; set; }
        public string RelatedArea { get; set; }
        public string ReqTime { get; set; }
        public string SubTaskNum { get; set; }
        public string TaskTyp { get; set; }
        public string TokenCode { get; set; }
        public string Username { get; set; }
        public string WhCode { get; set; }
    }
    /// <summary>
    /// WMS回应AGV信息
    /// </summary>
    public class OutCommanAgvDto
    {
        /// <summary>
        /// 返回码
        /// 0:成功
        /// 1:参数相关的错误
        /// 6:重复发送,上层系统不需要重发
        /// 99:其他未知错误,调用失败后,可以重试
        /// 100: 该任务不存在,上层系统不需重发,需要人工介入处理
        /// 是否必填:是
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// 返回消息
        /// 是否必填:是
        /// </summary>
        public string Message { get; set; }
        /// <summary>
        /// 请求编号
        /// 是否必填:是
        /// </summary>
        public string ReqCode { get; set; }
        /// <summary>
        /// 返回的数据结构
        /// 是否必填:否
        /// </summary>
        public string Data { get; set; }
    }
    /// <summary>
    /// WMS下发AGV取消任务回传参数
    /// </summary>
    public class cancelTaskModel
    {
        /// <summary>
        /// 返回码
        /// 0:成功
        /// 1:参数相关的错误
        /// 6:重复发送,上层系统不需要重发
        /// 99:其他未知错误,调用失败后,可以重试
        /// 100: 该任务不存在,上层系统不需重发,需要人工介入处理
        /// 是否必填:是
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// 返回消息
        /// 是否必填:是
        /// </summary>
        public string Message { get; set; }
        /// <summary>
        /// 请求编号
        /// 是否必填:是
        /// </summary>
        public string ReqCode { get; set; }
    }
    #endregion
    #region FuMa-Model
    /// <summary>
    /// 接收赋码系统接口返回的参数 model
    /// </summary>
    public class FuMaModel
    {
        /// <summary>
        /// 状态码 0 成功 -1失败
        /// </summary>
        public bool IsSuccess { get; set; }
        /// <summary>
        /// 信息详情
        /// </summary>
        public string Message { get; set; }
    }
    /// <summary>
    /// 获取箱码信息参数Model
    /// </summary>
    public class FuMaGetBoxModel:FuMaModel
    {
        /// <summary>
        /// 产品信息
        /// </summary>
        public ProductModel Product { get; set; }
        /// <summary>
        /// 箱支信息
        /// </summary>
        public List<BarcodesModel> Barcodes { get; set; }
        /// <summary>
        /// 包装比例
        /// </summary>
        public string PkgRatio { get; set; }
        /// <summary>
        /// 整箱小包装数量
        /// </summary>
        public decimal BoxItemQty { get; set; }
        /// <summary>
        /// 物料编码
        /// </summary>
        public string MaterialNum { get; set; }
        /// <summary>
        /// 标准重量
        /// </summary>
        public decimal StandarWeight { get; set; }
        /// <summary>
        /// 产线名称
        /// </summary>
        public string LineName { get; set; }
        /// <summary>
        /// 车间名称
        /// </summary>
        public string WorkShop { get; set; }
        /// <summary>
        /// 负责人
        /// </summary>
        public string HeadMan { get; set; }
    }
    public class ProductModel
    {
        /// <summary>
        /// 产品编号
        /// </summary>
        public string ProductCode { get; set; }
        /// <summary>
        /// 产品名称
        /// </summary>
        public string ProductName { get; set; }
        public int SubtypeId { get; set; }
        /// <summary>
        /// 子类编码
        /// </summary>
        public string SubType { get; set; }
        public string Type { get; set; }
        /// <summary>
        /// 规格
        /// </summary>
        public string Spec { get; set; }
        /// <summary>
        /// 包装规格
        /// </summary>
        public string PackageSpec { get; set; }
        /// <summary>
        /// 包装单位
        /// </summary>
        public string PackUnit { get; set; }
        public string PhysicDetailType { get; set; }
        public bool IsSpecial { get; set; }
        public bool Is789 { get; set; }
        /// <summary>
        /// 批准文号
        /// </summary>
        public string AuthorizedNo { get; set; }
        public List<string> PkgRatio { get; set; }
    }
    public class BarcodesModel
    {
        /// <summary>
        /// 箱号/支号
        /// </summary>
        public string Barcode { get; set; }
        /// <summary>
        ///
        /// </summary>
        public int ScanTaskId { get; set; }
        /// <summary>
        /// 生产批号
        /// </summary>
        public string BatchNo { get; set; }
        /// <summary>
        /// 拼箱后的批号
        /// </summary>
        public string MixedBatchNo { get; set; }
        /// <summary>
        /// 包装级别
        /// </summary>
        public string Level { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string ParentBarcode { get; set; }
        /// <summary>
        /// 状态,整箱、零箱、拼箱
        /// </summary>
        public string Status { get; set; }
        /// <summary>
        /// 箱内小包装数量
        /// </summary>
        public decimal BoxItemQty { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string ScanTime { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string MixedScanTime { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string MixedTaskId { get; set; }
        /// <summary>
        /// 物流号
        /// </summary>
        public string LogisticsNum { get; set; }
        /// <summary>
        /// 包装人
        /// </summary>
        public string PackageMan { get; set; }
        /// <summary>
        /// 托盘码
        /// </summary>
        public string PalletCode { get; set; }
        /// <summary>
        /// 生产日期
        /// </summary>
        public string ProductionDate { get; set; }
        /// <summary>
        /// 有效期至
        /// </summary>
        public string ExpirationDate { get; set; }
        /// <summary>
        /// 实际重量
        /// </summary>
        public decimal Weight { get; set; }
        /// <summary>
        /// 箱内件数
        /// </summary>
        public int MinLevelCount { get; set; }
    }
    #endregion
    #region 数字孪生
    public class DigitalTwinModel
    {
        ///// <summary>
        ///// 库区
        ///// </summary>
        //public string WareHouse { get; set; }
        ///// <summary>
        ///// 存储区域
        ///// </summary>
        //public string AreaNo { get; set; }
        ///// <summary>
        ///// 物料类型
        ///// </summary>
        //public string Skytype { get; set; }
        /// <summary>
        /// 请求来源
        /// </summary>
        public string Origin { get; set; }
    }
    public class ReLocateData
    {
        /// <summary>
        /// 库位
        /// </summary>
        public string LocatNo { get; set; }
        /// <summary>
        /// 托盘号
        /// </summary>
        public string PalletNo { get; set; }
        /// <summary>
        /// 物料名称
        /// </summary>
        public string SkuName { get; set; }
        /// <summary>
        /// 规格
        /// </summary>
        public string Stadard { get; set; }
        /// <summary>
        /// 批次
        /// </summary>
        public string LotNo { get; set; }
        /// <summary>
        /// 质量状态
        /// </summary>
        public string InspectStatus { get; set; }
        /// <summary>
        /// 库存数量
        /// </summary>
        public string Qty { get; set; }
        /// <summary>
        /// 有效期
        /// </summary>
        public string Warranty { get; set; }
    }
    #endregion
}