服务端的TigerApi 框架,基于.NET6 2024 版本
YangYuGang
2025-03-21 9984bb1eb673f4ea6d952e191040a674583d2f20
添加声音
已修改6个文件
150 ■■■■ 文件已修改
Tiger.Business.WMS/Common/WmsTask.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.WMS/Transaction/In_Default.cs 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.WMS/Transaction/In_SemiProd.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.WMS/Transaction/Out_Default.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.WMS/Common/WmsTask.cs
@@ -6,6 +6,7 @@
using System.Threading.Tasks;
using Tiger.IBusiness;
using Tiger.Model;
using Tiger.Model.Entitys.MES.Position;
namespace Tiger.Business.WMS.Transaction
{
@@ -288,6 +289,61 @@
            return result;
        }
        /// <summary>
        /// 设置当前条码的工序信息
        /// </summary>
        public ApiAction<ScanOutput> SetOutPutMqttMsg(ApiAction<ScanOutput> action, string locale = null)
        {
            MQTT.Message msg = new()
            {
                IsSuccessed = action.IsSuccessed,
                Content = Biz.T(action.LocaleMsg, locale),
            };
            switch (action.Status)
            {
                case ApiAction.StatusCodes.Success:
                    msg.Voice = MQTT.Voice.Success;
                    msg.Color = "#FF1E90FF";
                    break;
                case ApiAction.StatusCodes.Warning:
                    msg.Voice = MQTT.Voice.Warning;
                    msg.Color = "#FFB8860B";
                    break;
                case ApiAction.StatusCodes.Error:
                case ApiAction.StatusCodes.Failed:
                    msg.Voice = MQTT.Voice.Fail;
                    msg.Color = "#FFFF0000";
                    break;
                case ApiAction.StatusCodes.Exception:
                    msg.Voice = MQTT.Voice.Fail;
                    msg.Color = "#FF8B0000";
                    break;
                case ApiAction.StatusCodes.Normal:
                case ApiAction.StatusCodes.NeedConfrim:
                case ApiAction.StatusCodes.Confrimed:
                default:
                    msg.Voice = MQTT.Voice.Silent;
                    msg.Color = "#FF000000";
                    break;
            }
            if (action.IsSuccessed)
            {
                msg.Voice = MQTT.Voice.Pass;
                msg.Color = "#FF228B22";
            }
            else if (!action.IsSuccessed)
            {
                msg.Voice = MQTT.Voice.Fail;
                msg.Color = "#FFFF0000";
            }
            else
            {
                msg.Voice = MQTT.Voice.Silent;
                msg.Color = "#FF000000";
            }
            action.Data.MqttMsg = msg;
            return action;
        }
        #endregion Functions
        public override bool Close(bool needSaveHistoryLog = false)
Tiger.Business.WMS/Transaction/In_Default.cs
@@ -13,6 +13,8 @@
using Tiger.Business.WMS.Sharetronic.Shelf;
//using Microsoft.IdentityModel.Tokens;
using Tiger.Model.MES.Yada;
using static IronPython.Modules.PythonThread;
using Tiger.Model.Entitys.MES.Position;
namespace Tiger.Business.WMS.Transaction
{
@@ -86,7 +88,7 @@
                    {
                        action.IsSuccessed = false;
                        action.LocaleMsg = result.LocaleMsg;
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    var inv = result.Data as Inventory;
@@ -96,7 +98,7 @@
                        action.IsSuccessed = false;
                        //action.LocaleMsg = Biz.L("状态[{0}]异常,请重新扫描");
                        action.LocaleMsg = Biz.L("WMS.Default.ScanItem.StatusException", string.Join(',', inv.StatusList.Select(q => q.GetDesc())));
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    //物料验证
                    if (inv.ItemInfo.IsNullOrEmpty() || inv.ItemInfo.IS_ACTIVE == "N")
@@ -104,7 +106,7 @@
                        action.IsSuccessed = false;
                        //action.LocaleMsg = Biz.L("物料编码[{0}]不存在或者该物料未启用");
                        action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ItemCodeNotExistsOrNotActive", inv.ItemInfo?.ITEM_CODE.IsNullOrEmpty(inv.Barcode.ItemCode));
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    if (inv.Items.Count == 0)
@@ -194,7 +196,7 @@
                        action.Data.Command = Command = "ComfirmQty";
                        //action.LocaleMsg = Biz.L("请确认条码[{0}]的数量是否正确");
                        action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ComfirmQty", input.SN);
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                }
@@ -209,7 +211,7 @@
                        action.Data.Command = Command = "ComfirmQty";
                        //action.LocaleMsg = Biz.L("数量不能小于等于零,请重新确认条码[{0}]的数量");
                        action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ReComfirmQty", input.SN); 
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    } 
                    else
                    {
@@ -235,7 +237,7 @@
                    {
                        action.IsSuccessed = false;
                        action.LocaleMsg = Biz.L(shelfApiResult.GetData<string>());
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    var reaultShelf = shelfApiResult.GetData<ShelfChangeModel>();
@@ -245,7 +247,7 @@
                        action.IsSuccessed = false;
                        //action.LocaleMsg = Biz.L($"货架[{0}]中不存在id为[{1}]的储位,请先维护货架信息");
                        action.LocaleMsg = Biz.L("WMS.Default.ScanItem.LocationNotExistsInShelf", CurScanShelf.Shelf.SHELF_CODE, reaultShelf.ledAddr);
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    var locationData = MainDB.Queryable<WMS_ITEM>().Where(q => q.LOCATION_ID == nLocation.ID).First();
                    if (!locationData.IsNullOrEmpty())
@@ -253,7 +255,7 @@
                        action.IsSuccessed = false;
                        //action.LocaleMsg = Biz.L("储位[{0}]已存有物料[{1}],请检查系统库存信息");
                        action.LocaleMsg = Biz.L($"WMS.Default.ScanShelf.ItemAlreadyExistsInLocation", nLocation.LOCATION_CODE, locationData.SN);
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    CurScanShelf.LocationCode = nLocation.LOCATION_CODE;
                }
@@ -264,7 +266,7 @@
                        action.IsSuccessed = false;
                        //action.LocaleMsg = Biz.L("请输入或扫描有效的货架/储位码");
                        action.LocaleMsg = Biz.L("WMS.Default.ScanShelf.ShelfCanNotEmpty");
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    nLocation = await MainDB.Queryable<WMS_LOCATION>().Where(t => t.LOCATION_CODE == CurScanShelf.LocationCode && t.AUTH_ORG == OrgCode).FirstAsync();
@@ -277,7 +279,7 @@
                    //action.LocaleMsg = Biz.L("储位[{0}]只能存放一个物料");
                    action.LocaleMsg = Biz.L("WMS.Default.ScanItem.LocationSingleFailure", nLocation.LOCATION_CODE);
                    ResetScan();
                    return action;
                    return SetOutPutMqttMsg(action, input.Locale);
                }
                //执行上架数据处理
@@ -292,7 +294,7 @@
                    action.IsSuccessed = false;
                    action.LocaleMsg = putonResult.LocaleMsg;
                    ResetScan();
                    return action;
                    return SetOutPutMqttMsg(action, input.Locale);
                }
                //完成所有处理后使用事务保存数据
@@ -305,7 +307,7 @@
                //action.CatchExceptionWithLog(ex, $"扫描条码[{input.SN}]复核异常");
                action.CatchExceptionWithLog(ex, Biz.L("WMS.Default.ScanItem.ScanException", input.SN));
            }
            return action;
            return SetOutPutMqttMsg(action, input.Locale);
        }
        /// <summary>
@@ -429,7 +431,7 @@
            //重置扫码信息
            ResetScanInfo();
            return action;
            return SetOutPutMqttMsg(action, locale);
        }
        #endregion
Tiger.Business.WMS/Transaction/In_SemiProd.cs
@@ -81,7 +81,7 @@
                {
                    action.IsSuccessed = false;
                    action.LocaleMsg = Biz.L("WMS.InSemiProd.ScanItem.WoEmptyFailure", input.SN); // $"工单[{input.SN}]不存在"
                    return action;
                    return SetOutPutMqttMsg(action, input.Locale);
                }
                var semiTemplateQty = (input.Data ?? "").JsonToObject<SemiTemplateQty>() ?? new SemiTemplateQty();
Tiger.Business.WMS/Transaction/Out_Default.cs
@@ -9,6 +9,7 @@
using System.Threading.Tasks;
using Tiger.Model;
using Tiger.IBusiness;
using Tiger.Model.Entitys.MES.Position;
namespace Tiger.Business.WMS.Transaction
{
@@ -75,7 +76,7 @@
                    {
                        action.IsSuccessed = false;
                        action.LocaleMsg = result.LocaleMsg;
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    var inv = result.Data as Inventory;
@@ -85,7 +86,7 @@
                        action.IsSuccessed = false;
                        //action.LocaleMsg = Biz.L($"状态[{0}]异常,请重新扫描");
                        action.LocaleMsg = Biz.L("WMS.Default.ScanItem.StatusException", string.Join(',', inv.StatusList.Select(x => x.GetDesc())));
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    //储位验证
                    if (inv.Location.IsNullOrEmpty())
@@ -93,7 +94,7 @@
                        action.IsSuccessed = false;
                        //action.LocaleMsg = Biz.L($"条码[{0}]库存信息异常: 没有储位信息,请先上架后再扫描(储位Id: {1})");
                        action.LocaleMsg = Biz.L("WMS.Default.ScanItem.LocationIsNull", inv.CurPkg.SN, inv.CurPkg.LOCATION_ID);
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    //物料验证
                    if (inv.ItemInfo.IsNullOrEmpty() || inv.ItemInfo.IS_ACTIVE == "N")
@@ -101,7 +102,7 @@
                        action.IsSuccessed = false;
                        //action.LocaleMsg = Biz.L($"物料编码[{0}]不存在或者该物料未启用");
                        action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ItemCodeNotExistsOrNotActive", inv.ItemInfo.ITEM_CODE.IsNullOrEmpty(inv.Barcode.ItemCode));
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    CurInvItem = inv;
@@ -112,7 +113,7 @@
                        action.Data.Command = Command = "ComfirmQty";
                        //action.LocaleMsg = Biz.L("请确认条码[{0}]要下架的数量");
                        action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ComfirmOutQty", input.SN);
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                }
@@ -128,7 +129,7 @@
                        action.Data.Command = Command = "ComfirmQty";
                        //action.LocaleMsg = Biz.L("下架数量不能小于等于零,请重新确认条码[{0}]的下架数量");
                        action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ReComfirmOutQty", input.SN);
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    else if (qtyList.Any(q => q.QTY > CurInvItem.Items.First(i => i.SN == q.SN).QTY))
                    {
@@ -137,7 +138,7 @@
                        action.Data.Command = Command = "ComfirmQty";
                        //action.LocaleMsg = Biz.L("下架数量不能超过原条码数量,请重新确认条码[{0}]的下架数量");
                        action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ReComfirmExceedOutQty", input.SN);
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    else
                    {
@@ -158,7 +159,7 @@
                    action.IsSuccessed = false;
                    action.LocaleMsg = downResult.LocaleMsg;
                    ResetScan();
                    return action;
                    return SetOutPutMqttMsg(action, input.Locale);
                }
                //灭灯
@@ -176,7 +177,7 @@
                //action.CatchExceptionWithLog(ex, $"扫描条码[{input.SN}]复核异常");
                action.CatchExceptionWithLog(ex, Biz.L("WMS.Default.ScanItem.ScanException", input.SN));
            }
            return action;
               return SetOutPutMqttMsg(action, input.Locale);
        }
        /// <summary>
@@ -292,7 +293,7 @@
            //重置工序
            ResetScan();
            return action;
            return SetOutPutMqttMsg(action, locale);
        }
        #endregion
Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs
@@ -96,7 +96,7 @@
                    action.IsSuccessed = false;
                    //action.LocaleMsg = Biz.L("条码为非法条码");
                    action.LocaleMsg = Biz.L("WMS.WmsItem.Barcode.IllegalFailure", input.SN);
                    return action;
                    return SetOutPutMqttMsg(action, input.Locale); ;
                }
                if (barcode.Type == Barcode.Types.OuterPackage)
@@ -117,14 +117,14 @@
                    action.IsSuccessed = false;
                    //action.LocaleMsg = Biz.L("ASN单中不存在条码[{0}]");
                    action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.SnNotExists", input.SN);
                    return action;
                    return SetOutPutMqttMsg(action, input.Locale); ;
                }
                if (CurSn.First().AUTH_ORG != input.AuthOption.CurOrg)
                {
                    action.IsSuccessed = false;
                    //action.LocaleMsg = Biz.L($"条码所属组织[{0}]与当前登录组织[{1}]不一致,请重新选择组织");
                    action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.OrgNotCorrect", CurSn.First().AUTH_ORG, input.AuthOption.CurOrg);
                    return action;
                    return SetOutPutMqttMsg(action, input.Locale); ;
                }
                //验证条码是否正确
                if (CurSn.First().STATUS > WMS_ITEM.STATUSs.Incoming.GetValue())
@@ -132,7 +132,7 @@
                    action.IsSuccessed = false;
                    //action.LocaleMsg = Biz.L("状态[{0}]异常,请重新扫描");
                    action.LocaleMsg = Biz.L("WMS.Default.ScanItem.StatusException", CurSn.First().STATUS.GetEnumDesc<WMS_ITEM.STATUSs>());
                    return action;
                    return SetOutPutMqttMsg(action, input.Locale); ;
                }
                //执行清点数据处理
@@ -164,7 +164,7 @@
                //action.CatchExceptionWithLog(ex, $"扫描条码[{0}]复核异常");
                action.CatchExceptionWithLog(ex, Biz.L("WMS.Default.ScanItem.ScanException", input.SN));
            }
            return action;
            return SetOutPutMqttMsg(action, input.Locale);
        }
        /// <summary>
@@ -191,7 +191,7 @@
            //重置工序
            ResetScan();
            return action;
            return SetOutPutMqttMsg(action, locale); ;
        }
        /// <summary>
Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs
@@ -12,6 +12,7 @@
using Tiger.Model.Sharetronic.Shelf;
using Tiger.Business.WMS.Sharetronic.Shelf;
using Tiger.Model.Entitys.MES.U9C;
using Tiger.Model.Entitys.MES.Position;
namespace Tiger.Business.WMS.Transaction
{
@@ -85,7 +86,7 @@
                    {
                        action.IsSuccessed = false;
                        action.LocaleMsg = result.LocaleMsg;
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    var inv = result.Data as Inventory;
@@ -95,7 +96,7 @@
                        action.IsSuccessed = false;
                        //action.LocaleMsg = Biz.L("状态[{0}]异常,请重新扫描");
                        action.LocaleMsg = Biz.L("WMS.Default.ScanItem.StatusException", string.Join(',', inv.StatusList.Select(q => q.GetDesc())));
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    //物料验证
                    if (inv.ItemInfo.IsNullOrEmpty() || inv.ItemInfo.IS_ACTIVE == "N")
@@ -103,7 +104,7 @@
                        action.IsSuccessed = false;
                        //action.LocaleMsg = Biz.L("物料编码[{0}]不存在或者该物料未启用");
                        action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ItemCodeNotExistsOrNotActive", inv.ItemInfo.ITEM_CODE.IsNullOrEmpty(inv.Barcode.ItemCode));
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    CurInvItem = inv;
                }
@@ -114,7 +115,7 @@
                    action.IsSuccessed = false;
                    //action.LocaleMsg = Biz.L("收货单中找不到条码所属的单据[{0}]信息,请重新扫描收货单的条码或选择正确的功能上架");
                    action.LocaleMsg = Biz.L("WMS.In_BIZ_U9_RECEIPT.ScanItem.ReceiptNotExists", CurInvItem.Items.First().TRANS_NO);
                    return action;
                    return SetOutPutMqttMsg(action, input.Locale);
                }
                var receiptDtl = receipt.Details.First(q => q.LINE_NO == CurInvItem.Items.First().TRANS_LINE);
                if (receiptDtl.STATUS > BIZ_U9_RECEIPT.STATUSs.Storing.GetValue())
@@ -122,7 +123,7 @@
                    action.IsSuccessed = false;
                    //action.LocaleMsg = Biz.L("收货单中行[{0}]状态[{1}]异常,请扫描正确的条码");
                    action.LocaleMsg = Biz.L("WMS.In_BIZ_U9_RECEIPT.ScanItem.ReceiptDtlStatusException", receiptDtl.LINE_NO, receiptDtl.STATUS.GetEnumDesc<BIZ_U9_RECEIPT.STATUSs>());
                    return action;
                    return SetOutPutMqttMsg(action, input.Locale);
                }
                var receiptSn = receipt.SnList.Where(q => CurInvItem.Items.Any(i => i.SN == q.SN)).ToList();
                if (receiptSn.Any(q => q.STATUS != WMS_ITEM.STATUSs.WaitIn.GetValue()))
@@ -130,7 +131,7 @@
                    action.IsSuccessed = false;
                    //action.LocaleMsg = Biz.L("收货单中条码[{0}]状态[{1}]异常,请扫描正确的条码");
                    action.LocaleMsg = Biz.L("WMS.In_BIZ_U9_RECEIPT.ScanItem.ReceiptSnStatusException", CurInvItem.SN, receiptSn.First(q => q.STATUS != WMS_ITEM.STATUSs.WaitIn.GetValue()).STATUS.GetEnumDesc<WMS_ITEM.STATUSs>());
                    return action;
                    return SetOutPutMqttMsg(action, input.Locale);
                }
                var nLocation = new WMS_LOCATION();
@@ -142,7 +143,7 @@
                    {
                        action.IsSuccessed = false;
                        action.LocaleMsg = Biz.L(shelfApiResult.GetData<string>());
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    var reaultShelf = shelfApiResult.GetData<ShelfChangeModel>();
@@ -152,7 +153,7 @@
                        action.IsSuccessed = false;
                        //action.LocaleMsg = Biz.L($"货架[{0}]中不存在id为[{1}]的储位,请先维护货架信息");
                        action.LocaleMsg = Biz.L("WMS.Default.ScanItem.LocationNotExistsInShelf", CurScanShelf.Shelf.SHELF_CODE, reaultShelf.ledAddr);
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    var locationData = MainDB.Queryable<WMS_ITEM>().Where(q => q.LOCATION_ID == nLocation.ID).First();
                    if (!locationData.IsNullOrEmpty())
@@ -160,7 +161,7 @@
                        action.IsSuccessed = false;
                        //action.LocaleMsg = Biz.L("储位[{0}]已存有物料[{1}],请检查系统库存信息");
                        action.LocaleMsg = Biz.L($"WMS.Default.ScanShelf.ItemAlreadyExistsInLocation", nLocation.LOCATION_CODE, locationData.SN);
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    CurScanShelf.LocationCode = nLocation.LOCATION_CODE;
                }
@@ -171,7 +172,7 @@
                        action.IsSuccessed = false;
                        //action.LocaleMsg = Biz.L("请输入或扫描有效的货架/储位码");
                        action.LocaleMsg = Biz.L("WMS.Default.ScanShelf.ShelfCanNotEmpty");
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                    nLocation = await MainDB.Queryable<WMS_LOCATION>().Where(t => t.LOCATION_CODE == CurScanShelf.LocationCode && t.AUTH_ORG == OrgCode).FirstAsync();
@@ -184,7 +185,7 @@
                    //action.LocaleMsg = Biz.L("储位[{0}]只能存放一个物料");
                    action.LocaleMsg = Biz.L("WMS.Default.ScanItem.LocationSingleFailure", nLocation.LOCATION_CODE);
                    ResetScan();
                    return action;
                    return SetOutPutMqttMsg(action, input.Locale);
                }
                //执行上架数据处理
@@ -206,7 +207,7 @@
                    action.IsSuccessed = false;
                    action.LocaleMsg = putonResult.LocaleMsg;
                    ResetScan();
                    return action;
                    return SetOutPutMqttMsg(action, input.Locale);
                }
                //更新单据信息
@@ -238,7 +239,7 @@
                    {
                        action.IsSuccessed = false;
                        action.LocaleMsg = result.LocaleMsg;
                        return action;
                        return SetOutPutMqttMsg(action, input.Locale);
                    }
                }
                else
@@ -277,7 +278,7 @@
                //action.CatchExceptionWithLog(ex, $"扫描条码[{input.SN}]复核异常");
                action.CatchExceptionWithLog(ex, Biz.L("WMS.Default.ScanItem.ScanException", input.SN));
            }
            return action;
            return SetOutPutMqttMsg(action, input.Locale);
        }
        /// <summary>
@@ -401,7 +402,7 @@
            //重置工序
            ResetScanInfo();
            return action;
            return SetOutPutMqttMsg(action, locale);
        }
        #endregion