服务端的TigerApi 框架,基于.NET6 2024 版本
Ben Lin
2025-02-21 09afa6099b919a3a33cf4e1796dc5f6e66b4993b
雅达-新增打印标签和接收报告相关类和接口

在 `In_SemiProd.cs` 文件中,修改了错误提示信息,将“请扫描包装完成的箱二维码重新生成入库单据!”改为“请扫描工单重新生成入库单据!”。

在 `PrintSemiProdLabel.cs` 文件中,新增了多个 `using` 语句,并添加了 `PrintSemiProdLabel` 类,该类实现了 `WMSTransactionBase` 和 `IPrintSemiProdLabel` 接口,包含初始化方法、属性、变量、扫描入口方法、扫描物料方法和关闭方法。

在 `IPrintSemiProdLabel.cs` 文件中,新增了 `IPrintSemiProdLabel` 接口,定义了初始化方法、扫描方法、扫描物料方法和关闭方法。

在 `mes_RcvRptDoc.cs` 文件中,新增了 `mes_RcvRptDoc` 类,定义了多个属性和构造函数。

在 `mes_RcvRptDocLine.cs` 文件中,新增了 `mes_RcvRptDocLine` 类,定义了多个属性和构造函数。

在 `Input_Entitys.cs` 文件中,新增了 `PrintSemiProdLabelEntity` 类。

在 `Tiger.Model.Net.csproj` 文件中,新增了 `mes_RcvRptDocLine.cs` 和 `mes_RcvRptDoc.cs` 文件的编译引用。

新增半成品打印标签和入库报告文档功能

在 `In_SemiProd.cs` 文件中,修改了错误提示信息,将“请扫描包装完成的箱二维码重新生成入库单据!”改为“请扫描工单重新生成入库单据!”。

在 `PrintSemiProdLabel.cs` 文件中,新增了 `PrintSemiProdLabel` 类及其相关方法和属性,用于处理半成品打印标签事务。

在 `IPrintSemiProdLabel.cs` 文件中,新增了 `IPrintSemiProdLabel` 接口及其相关方法声明。

在 `mes_RcvRptDoc.cs` 文件中,新增了 `mes_RcvRptDoc` 类及其相关属性,用于表示入库报告文档。

在 `mes_RcvRptDocLine.cs` 文件中,新增了 `mes_RcvRptDocLine` 类及其相关属性,用于表示入库报告文档行。

在 `Input_Entitys.cs` 文件中,新增了 `PrintSemiProdLabelEntity` 类,继承自 `RePrintLabelBase`。

在 `Tiger.Model.Net.csproj` 文件中,新增了 `mes_RcvRptDocLine.cs` 和 `mes_RcvRptDoc.cs` 文件的编译引用。
已修改4个文件
已添加4个文件
359 ■■■■■ 文件已修改
Tiger.Api/Language.db 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.WMS/Transaction/In_SemiProd.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.WMS/Transaction/PrintSemiProdLabel.cs 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.IBusiness.WMS/Transaction/IPrintSemiProdLabel.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/YadaU9/mes_RcvRptDoc.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/YadaU9/mes_RcvRptDocLine.cs 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/WMS/Api/Input_Entitys.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Tiger.Model.Net.csproj 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/Language.db
Binary files differ
Tiger.Business.WMS/Transaction/In_SemiProd.cs
@@ -257,7 +257,7 @@
                if (!RcvRptInput.ErpProdInBths.Any(q => q.IS_HANDLED == "N"))
                {
                    action.IsSuccessed = false;
                    action.LocaleMsg = Biz.L($"没有要入库的产品数据,请扫描包装完成的箱二维码重新生成入库单据!");
                    action.LocaleMsg = Biz.L($"没有要入库的产品数据,请扫描工单重新生成入库单据!");
                    return action;
                }
                if (RcvRptInput.RcvRptDocBases.IsNullOrEmpty() || RcvRptInput.RcvRptDocBases.Count == 0)
Tiger.Business.WMS/Transaction/PrintSemiProdLabel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,138 @@
using Rhea.Common;
using Microsoft.AspNetCore.Http;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Tiger.Model;
using Apache.NMS;
using System.Drawing.Drawing2D;
using Tiger.Model.Sharetronic.Shelf;
using Tiger.IBusiness;
using Tiger.Model.MES.Yada;
using Apache.NMS.ActiveMQ.Commands;
using System.Diagnostics;
namespace Tiger.Business.WMS.Transaction
{
    /// <summary>
    /// åŠæˆå“æ‰“印标签事务
    /// </summary>
    public class PrintSemiProdLabel : WMSTransactionBase, IPrintSemiProdLabel
    {
        public IPrintSemiProdLabel Init(string id, string userCode, string apiHost, string orgCode)
        {
            TransID = id;
            UserCode = userCode;
            ApiHost = apiHost;
            OrgCode = orgCode;
            Logger.Console.Info($"Start {this.GetType().Name} Transaction[ID: {TransID}]");
            return this;
        }
        #region Propertys & Variables
        public string UserCode { get; set; }
        public long UserId { get; set; }
        public string OrgCode { get; set; }
        public List<V_WMS_ITEM> Vitem { get; set; } = new();
        #endregion
        #region Functions
        /// <summary>
        /// æ‰«æå…¥å£
        /// </summary>
        public async Task<ApiAction<ScanOutput>> Scan(BaseInput input)
        {
            var action = new ApiAction<ScanOutput>(new ScanOutput());
            try
            {
                if (input.SN.IsNullOrEmpty())
                {
                    action.IsSuccessed = false;
                    action.LocaleMsg = Biz.L("WMS.PrintSemiProdLabel.ScanItem.SnEmptyFailure");
                    return SetOutPutMqttMsg(action, input.Locale);
                }
                var DocLines = Biz.DataSource["YadaU9C"].Client.Ado.SqlQuery<mes_RcvRptDocLine>($"select * from mes_RcvRptDocLine where DocNo = '{input.SN}'");
                var temps = new List<TemplateInput>();
                foreach (var item in DocLines)
                {
                    var temp = new TemplateInput
                    {
                        custCode="",
                        itemCode= item.ItemCode,
                        itemDesc= item.ItemDescription,
                        sapItemCode= "",
                        WoBatch = item.LotCode,
                        batchQty= item.PackQty,
                        qrCode="",
                    };
                    temps.Add(temp);
                }
                //var y = Biz.Db.Storageable(DocLines, UserCode)
                //               .WhereColumns(t => new { t.ItemCode, t.LotCode })
                //               .ToStorage();
                //y.AsInsertable.ExecuteCommand();
                //y.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
                action.Data.Data = temps;
                action.LocaleMsg = Biz.L("WMS.PrintSemiProdLabel.Scan.ScanSuccessed");
            }
            catch (Exception ex)
            {
                //action.CatchExceptionWithLog(ex, $"扫描[{input.SN}]异常");
                action.CatchExceptionWithLog(ex, Biz.L("WMS.RePrint.Scan.ScanException", input.SN));
            }
            return SetOutPutMqttMsg(action, input.Locale);
        }
        public async Task<ApiAction<ScanOutput>> ScanItem(BaseInput input)
        {
            var action = new ApiAction<ScanOutput>(new ScanOutput());
            try
            {
                List<WMS_ITEM> items = new List<WMS_ITEM>();
                List<WMS_ITEM_HIS> itemhiss = new List<WMS_ITEM_HIS>();
                List<WMS_ITEM_PKG> itemPkgs = new List<WMS_ITEM_PKG>();
                List<WMS_ITEM_EXT> itemExts = new List<WMS_ITEM_EXT>();
                var rePrints = (input.Data ?? "").JsonToObject<PrintSemiProdLabelEntity>() ?? new PrintSemiProdLabelEntity();
                if (!rePrints.SnList.Any() || rePrints.SnList.Any(q => q.Qty <= 0))
                {
                    action.IsSuccessed = false;
                    //action.LocaleMsg = Biz.L("数量不能小于等于零,请重新确认条码[{0}]的数量");
                    action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ReComfirmQty", input.SN);
                    return action;
                }
                else
                {
                    action.Data.Data = rePrints;
                    action.LocaleMsg = Biz.L("半成品打印标签成功");
                }
            }
            catch (Exception ex)
            {
                action.CatchExceptionWithLog(ex, Biz.L("半成品打印标签失败"));
            }
            return action;
        }
        #endregion
        public override bool Close(bool needSaveHistoryLog = false)
        {
            needSaveHistoryLog = true;
            //保存操作日志
            this.IsFinished = true;
            return IsFinished ? base.Close(needSaveHistoryLog) : IsFinished;
        }
    }//endClass
}
Tiger.IBusiness.WMS/Transaction/IPrintSemiProdLabel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
using Rhea.Common;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
using Tiger.Model;
using Tiger.Model.Sharetronic.Shelf;
namespace Tiger.IBusiness
{
    public interface IPrintSemiProdLabel : IWMSTransaction
    {
        public IPrintSemiProdLabel Init(string id, string userCode, string apiHost, string orgCode);
        public Task<ApiAction<ScanOutput>> Scan(BaseInput input);
        public Task<ApiAction<ScanOutput>> ScanItem(BaseInput input);
        public bool Close(bool needSaveHistoryLog = false);
    }
}
Tiger.Model.Net/Entitys/MES/YadaU9/mes_RcvRptDoc.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
using System;
using SqlSugar;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
using Tiger.Model;
namespace Tiger.Model.MES.Yada
{
    /// <summary>
    /// å®žä½“:mes_RcvRptDoc
    /// </summary>
    [Serializable]
    [SugarTable("mes_RcvRptDoc")]
    public class mes_RcvRptDoc : iViewEntity
    {
        #region æž„造函数
        /// <summary>
        /// å®žä½“:mes_RcvRptDoc
        /// </summary>
        public mes_RcvRptDoc() {}
        #endregion
        #region å…¬å…±å±žæ€§
        /// <summary>
        ///
        /// </summary>
        public long ID { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string Org { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string Remark { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string DocNo { get; set; }
        /// <summary>
        ///
        /// </summary>
        public DateTime DocDate { get; set; }
        /// <summary>
        ///
        /// </summary>
        public int DocState { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string CreatedBy { get; set; }
        /// <summary>
        ///
        /// </summary>
        public DateTime CreatedOn { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string ModifiedBy { get; set; }
        /// <summary>
        ///
        /// </summary>
        public DateTime ModifiedOn { get; set; }
        #endregion
        #region è™šæ‹Ÿå±žæ€§
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region æžšä¸¾å˜é‡
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            Enum1,
        }
        */
        #endregion
        #region å…¬å…±æ–¹æ³•
        #endregion
    }//endClass
}
Tiger.Model.Net/Entitys/MES/YadaU9/mes_RcvRptDocLine.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
using System;
using SqlSugar;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
using Tiger.Model;
namespace Tiger.Model.MES.Yada
{
    /// <summary>
    /// å®žä½“:mes_RcvRptDocLineLine
    /// </summary>
    [Serializable]
    [SugarTable("mes_RcvRptDocLine")]
    public class mes_RcvRptDocLine : iViewEntity
    {
        #region æž„造函数
        /// <summary>
        /// å®žä½“:mes_RcvRptDocLine
        /// </summary>
        public mes_RcvRptDocLine() {}
        #endregion
        #region å…¬å…±å±žæ€§
        /// <summary>
        ///
        /// </summary>
        public long ID { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string RcvRptDoc { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string DocNo { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string Mo { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string ItemCode { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string ItemName { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string ItemDescription { get; set; }
        /// <summary>
        ///
        /// </summary>
        public int PackQty { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string RcvQtyByWhUOM { get; set; }
        /// <summary>
        /// å·¥å•号
        /// </summary>
        public string LotCode { get; set; }
        /// <summary>
        ///
        /// </summary>
        public string StoreUOM { get; set; }
        #endregion
        #region è™šæ‹Ÿå±žæ€§
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region æžšä¸¾å˜é‡
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            Enum1,
        }
        */
        #endregion
        #region å…¬å…±æ–¹æ³•
        #endregion
    }//endClass
}
Tiger.Model.Net/Entitys/WMS/Api/Input_Entitys.cs
@@ -74,6 +74,11 @@
        public List<RePrintLabelEntity> SnList { get; set; }=new List<RePrintLabelEntity>();
    }
    public class PrintSemiProdLabelEntity: RePrintLabelBase
    {
    }
    public class RePrintLabelEntity
    {
        public string ID { get; set; }
Tiger.Model.Net/Tiger.Model.Net.csproj
@@ -89,6 +89,8 @@
    <Compile Include="Entitys\MES\YadaU9\mes_Bin.cs" />
    <Compile Include="Entitys\MES\YadaU9\mes_MaterialBarCode.cs" />
    <Compile Include="Entitys\MES\YadaU9\mes_MaterialBarCodeByBin.cs" />
    <Compile Include="Entitys\MES\YadaU9\mes_RcvRptDocLine.cs" />
    <Compile Include="Entitys\MES\YadaU9\mes_RcvRptDoc.cs" />
    <Compile Include="Entitys\MES\YadaU9\mes_Wh.cs" />
    <Compile Include="Entitys\MES\YadaU9\mes_WhLotCodeQtyInfo.cs" />
    <Compile Include="Entitys\MQTTEntity.cs" />