服务端的TigerApi 框架,基于.NET6 2024 版本
Rodney Chen
2024-08-02 d34d9c35ba844da8b805993bd4c69b0253694fc0
Tiger.Business/MES/Biz.Route.cs
@@ -11,6 +11,8 @@
using Newtonsoft.Json;
using Tiger.IBusiness;
using Microsoft.AspNetCore.Http;
using Tiger.Model.Entitys.WMS.DTOS;
using static Tiger.Model.BIZ_MES_WO;
namespace Tiger.Business
{
@@ -379,6 +381,176 @@
                }
                return await Task.FromResult(result);
            }
            /// <summary>
            /// 保存节点岗位资源
            /// </summary>
            /// <param name="nodePost"></param>
            /// <returns></returns>
            public async Task<ApiAction> SaveRouteNodePost(List<MES_ROUTE_NODE_POST> nodePost) {
                var result = new ApiAction();
                try
                {
                    var db = Db;
                    var dbTran = db.UseTran(() =>
                    {
                        var y = db.Storageable(nodePost)
                           .ToStorage();
                        y.AsInsertable.ExecuteCommand();
                        y.AsUpdateable.ExecuteCommand();
                    });
                    if (!dbTran.IsSuccess)
                    {
                        result.IsSuccessed = false;
                        result.LocaleMsg = new($"保存节点岗位资源数据异常");
                    }
                }
                catch (Exception ex)
                {
                    result.CatchExceptionWithLog(ex, "保存节点岗位资源数据异常");
                }
                return await Task.FromResult(result);
            }
            /// <summary>
            /// 删除产品绑定的工艺路线
            /// </summary>
            /// <param name="input"></param>
            /// <returns></returns>
            /// <exception cref="NotImplementedException"></exception>
            public async Task<ApiAction> DeleteProdRoute(DelProdRotInput input)
            {
                var result = new ApiAction();
                try
                {
                    var expable = Expressionable.Create<MES_PROD_ACTION>();
                    var expableOper = Expressionable.Create<MES_PROD_OPER>();
                    if (!string.IsNullOrEmpty(input.rotId))
                    {
                        expable.And(x => x.ROT_ID == input.rotId);
                        expableOper.And(x => x.ROT_ID == input.rotId);
                    }
                    else if (!string.IsNullOrEmpty(input.rotCode))
                    {
                        var item = await Db.Queryable<MES_ROUTE>().Where(x => x.ROT_CODE == input.rotCode).FirstAsync();
                        if (item != null)
                        {
                            expable.And(x => x.ROT_ID == item.ID);
                            expableOper.And(x => x.ROT_ID == item.ID);
                        }
                    }
                    if (!string.IsNullOrEmpty(input.prodCode))
                    {
                        expable.And(x => x.PROD_CODE == input.prodCode);
                        expableOper.And(x => x.PROD_CODE == input.prodCode);
                    }
                    var exp = expable.ToExpression();
                    var expOper = expableOper.ToExpression();
                    var db = Db;
                    var dbTran = db.UseTran(() =>
                    {
                        db.Deleteable<MES_PROD_ACTION>().Where(exp).ExecuteCommand();
                        db.Deleteable<MES_PROD_OPER>().Where(expOper).ExecuteCommand();
                    });
                    if (!dbTran.IsSuccess)
                    {
                        result.IsSuccessed = false;
                        result.LocaleMsg = new($"删除工艺路线异常");
                    }
                }
                catch (Exception ex)
                {
                    result.CatchExceptionWithLog(ex, "删除工艺路线异常");
                }
                return result;
            }
            /// <summary>
            /// 删除工单绑定的工艺路线
            /// </summary>
            /// <param name="input"></param>
            /// <returns></returns>
            /// <exception cref="NotImplementedException"></exception>
            public async Task<ApiAction> DeleteWoRoute(DelWoRotInput input)
            {
                var result = new ApiAction();
                try
                {
                    var bizMesWo = await Db.Queryable<BIZ_MES_WO>().Where(x=> x.ORDER_NO == input.wo).FirstAsync();
                    if (bizMesWo != null && bizMesWo.STATUS > (int)STATUSs.Imported && bizMesWo.STATUS < (int)STATUSs.Closed)
                    {
                        result.IsSuccessed = false;
                        result.LocaleMsg = new($"工单状态为[{EnumHelper.GetDesc(EnumHelper.GetEnum<STATUSs>(bizMesWo.STATUS))}],不能删除工艺路线");
                        return result;
                    }
                    var expableNode = Expressionable.Create<MES_WO_NODE>();
                    var expableEdge = Expressionable.Create<MES_WO_EDGE>();
                    var expableAct = Expressionable.Create<MES_WO_NODE_ACT>();
                    var expable = Expressionable.Create<MES_WO_ACTION>();
                    var expableOper = Expressionable.Create<MES_WO_OPER>();
                    var _rotId = input.rotId;
                    if (!string.IsNullOrEmpty(input.rotId))
                    {
                        expable.And(x => x.ROT_ID == input.rotId);
                        expableOper.And(x => x.ROT_ID == input.rotId);
                        expableNode.And(x => x.ROT_ID == input.rotId);
                        expableEdge.And(x => x.ROT_ID == input.rotId);
                        expableAct.And(x => x.ROT_ID == input.rotId);
                    }
                    else if (!string.IsNullOrEmpty(input.rotCode))
                    {
                        var item = await Db.Queryable<MES_ROUTE>().Where(x => x.ROT_CODE == input.rotCode).FirstAsync();
                        if (item != null)
                        {
                            _rotId = item.ID;
                            expable.And(x => x.ROT_ID == item.ID);
                            expableOper.And(x => x.ROT_ID == item.ID);
                            expableNode.And(x => x.ROT_ID == item.ID);
                            expableEdge.And(x => x.ROT_ID == item.ID);
                            expableAct.And(x => x.ROT_ID == item.ID);
                        }
                    }
                    //如果除了删除的当前工艺路线不存在其他绑定的工艺路线,则更新状态
                    if (bizMesWo != null && !Db.Queryable<MES_WO_NODE>().Where(x => x.WORK_ORDER == input.wo && x.ROT_ID != _rotId).Any()) {
                        bizMesWo.ROUTE_STATUS = (int)ROUTE_STATUSs.WaitSet;
                        bizMesWo.STATUS = (int)STATUSs.Init;
                        bizMesWo.ROUTE_CODE = "";
                    }
                    if (!string.IsNullOrEmpty(input.wo))
                    {
                        expable.And(x => x.WORK_ORDER == input.wo);
                        expableOper.And(x => x.WORK_ORDER == input.wo);
                        expableNode.And(x => x.WORK_ORDER == input.wo);
                        expableEdge.And(x => x.WORK_ORDER == input.wo);
                        expableAct.And(x => x.WORK_ORDER == input.wo);
                    }
                    var exp = expable.ToExpression();
                    var expOper = expableOper.ToExpression();
                    var expNode = expableNode.ToExpression();
                    var expEdge = expableEdge.ToExpression();
                    var expAct = expableAct.ToExpression();
                    var db = Db;
                    var dbTran = db.UseTran(() =>
                    {
                        db.Deleteable<MES_WO_ACTION>().Where(exp).ExecuteCommand();
                        db.Deleteable<MES_WO_OPER>().Where(expOper).ExecuteCommand();
                        db.Deleteable<MES_WO_NODE>().Where(expNode).ExecuteCommand();
                        db.Deleteable<MES_WO_EDGE>().Where(expEdge).ExecuteCommand();
                        db.Deleteable<MES_WO_NODE_ACT>().Where(expAct).ExecuteCommand();
                        db.Updateable(bizMesWo).ExecuteCommand();
                    });
                    if (!dbTran.IsSuccess)
                    {
                        result.IsSuccessed = false;
                        result.LocaleMsg = new($"删除工艺路线异常");
                    }
                }
                catch (Exception ex)
                {
                    result.CatchExceptionWithLog(ex, "删除工艺路线异常");
                }
                return result;
            }
        }
    }
}