using Tiger.Model;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using Rhea.Common;
using System.Net;
using System.Linq;
using Newtonsoft.Json;
using Tiger.IBusiness;
using Microsoft.AspNetCore.Http;
using Tiger.Model.Entitys.WMS.DTOS;
using static Tiger.Model.BIZ_MES_WO;
using Tiger.Model.Entitys.MES.Position;
namespace Tiger.Business
{
public partial class Biz
{
///
/// 工艺路线
///
public partial class Route : IRoute
{
///
/// 获取工艺路线
///
///
///
public async Task>> GetRoute(string routerCode)
{
var res = new ApiAction>();
List list = new List();
try
{
list = await Db.Queryable()
.WhereIF(!string.IsNullOrEmpty(routerCode), x => x.ROT_CODE.Equals(routerCode))
.OrderBy(x => x.CREATE_TIME).ToListAsync();
}
catch (Exception ex)
{
res.CatchExceptionWithLog(ex, "查询异常");
}
res.Data = list;
return res;
}
///
/// 获取工艺路线图形数据
///
///
///
public async Task> GetRouteData(string routerId)
{
var res = new ApiAction();
RouteData rotData = new RouteData();
try
{
if (string.IsNullOrEmpty(routerId))
{
res.IsSuccessed = false;
res.LocaleMsg = new($"传入的工艺路线ID为空,不能查找工艺路线!");
return res;
}
//工艺路线
var route = await Db.Queryable()
.WhereIF(!string.IsNullOrEmpty(routerId), x => x.ID.Equals(routerId) || x.ROT_CODE == routerId)
.OrderBy(x => x.CREATE_TIME).FirstAsync();
rotData.route = route;
if (route == null)
{
res.IsSuccessed = false;
res.LocaleMsg = new($"不能查找到工艺路线!");
return res;
}
//节点
var nodes = await Db.Queryable()
.WhereIF(!string.IsNullOrEmpty(route.ID), x => x.ROT_ID.Equals(route.ID))
.ToListAsync();
foreach (var node in nodes)
{
node.node = new()
{
id = node.ID,
type = node.GPH_TYPE,
x = node.GPH_X,
y = node.GPH_Y,
properties = node.GPH_PROP,
text = new()
{
x = node.GPH_X,
y = node.GPH_Y,
value = node.GPH_TEXT
}
};
}
rotData.nodes = nodes;
var acts = await Db.Queryable()
.WhereIF(!string.IsNullOrEmpty(route.ID), x => x.ROT_ID.Equals(route.ID))
.ToListAsync();
foreach (var act in acts)
{
act.node = new()
{
id = act.ID,
type = act.GPH_TYPE,
x = act.GPH_X,
y = act.GPH_Y,
properties = act.GPH_PROP,
text = new()
{
x = act.GPH_X,
y = act.GPH_Y,
value = act.GPH_TEXT
}
};
}
rotData.acts = acts;
//边
var edges = await Db.Queryable()
.WhereIF(!string.IsNullOrEmpty(route.ID), x => x.ROT_ID.Equals(route.ID))
.ToListAsync();
foreach (var edge in edges)
{
edge.edge = new()
{
id = edge.ID,
type = edge.GPH_TYPE,
sourceNodeId = edge.SRC_NODE,
targetNodeId = edge.TGT_NODE,
properties = edge.GPH_PROP,
startPoint = new()
{
x = edge.GPH_SRC_X,
y = edge.GPH_SRC_Y,
},
endPoint = new()
{
x = edge.GPH_TGT_X,
y = edge.GPH_TGT_Y,
},
pointsList = new()
{
new(){
x = edge.GPH_SRC_X,
y = edge.GPH_SRC_Y,
},
new(){
x = edge.GPH_TGT_X,
y = edge.GPH_TGT_Y,
}
}
};
}
rotData.edges = edges;
}
catch (Exception ex)
{
res.CatchExceptionWithLog(ex, "查询异常");
}
res.Data = rotData;
return res;
}
///
/// 保存边数据
///
///
///
public async Task SaveEdges(List routeEdge)
{
var result = new ApiAction();
try
{
var db = Db;
var dbTran = db.UseTran(() =>
{
var y = db.Storageable(routeEdge)
.WhereColumns(t => new { t.ID, t.GHOST_ROW })
.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);
}
///
/// 保存节点数据
///
///
///
public async Task SaveNodes(List routeNode)
{
var result = new ApiAction();
try
{
var db = Db;
var dbTran = db.UseTran(() =>
{
var y = db.Storageable(routeNode)
.WhereColumns(t => new { t.ID, t.GHOST_ROW })
.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);
}
///
/// 保存行为
///
///
///
public async Task SaveActs(List routeAct)
{
var result = new ApiAction();
try
{
var db = Db;
var dbTran = db.UseTran(() =>
{
var y = db.Storageable(routeAct)
.WhereColumns(t => new { t.ID, t.GHOST_ROW })
.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);
}
///
/// 保存
///
///
///
public async Task SaveRoute(MES_ROUTE route)
{
var result = new ApiAction();
try
{
var _route = Db.Queryable().Where(x => x.ROT_CODE == route.ROT_CODE).First();
//if (_route != null && Db.Queryable().Where(x => x.ROT_ID == _route.ID).Any())
//{
// result.IsSuccessed = false;
// result.LocaleMsg = new($"工艺路线已经有设计记录,不能保存!");
// return result;
//}
if (_route != null && Db.Queryable().Where(x => x.ROT_ID == _route.ID).Any())
{
result.IsSuccessed = false;
result.LocaleMsg = new($"工艺路线已经有绑定记录,不能保存!");
return result;
}
var db = Db;
var dbTran = db.UseTran(() =>
{
var y = db.Storageable(route)
//.WhereColumns(t => new { t.ROT_CODE, t.GHOST_ROW })
.ToStorage();
y.AsInsertable.ExecuteCommand();
y.AsUpdateable.ExecuteCommand();
});
if (!dbTran.IsSuccess)
{
result.IsSuccessed = false;
result.Message = $"保存工艺路线异常";
}
}
catch (Exception ex)
{
result.CatchExceptionWithLog(ex, "保存工艺路线异常");
}
return await Task.FromResult(result);
}
///
/// 保存工艺路线图形数据
///
///
///
public async Task SaveRouteData(RouteData routeData)
{
var result = new ApiAction();
try
{
var nodeIds = routeData.nodes.Select(x => x.ID).ToList();
var actIds = routeData.acts.Select(x => x.ID).ToList();
//如果工序节点ID没在产品工序里就新增
List operList = new List();
foreach (var node in routeData.nodes)
{
if (!Db.Queryable().Any(q => q.NODE_ID == node.ID && q.ROT_ID == routeData.route.ID))
{
operList.Add(new()
{
PROD_CODE = routeData.route.PROD_CODE,
CUST_CODE = routeData.route.CUST_CODE,
NODE_ID = node.ID,
NODE_NAME = node.NODE_NAME,
ROT_ID = node.ROT_ID,
OPER_CODE = node.OPER_CODE,
IS_ACTIVE = "Y",
CAN_SKIP = "N",
IS_CALC_FPY = "N",
ALLOW_DFT_IN = "N",
IS_INPUT = "N",
IS_OUTPUT = "N",
AUTH_ORG = node.AUTH_ORG,
AUTH_PROD = node.AUTH_PROD,
AUTH_WH = node.AUTH_WH,
});
}
}
//如果行为节点ID没在产品行为里就新增
List actList = new List();
foreach (var act in routeData.acts)
{
if (!Db.Queryable().Any(q => q.ACT_ID == act.ID && q.ROT_ID == routeData.route.ID))
{
actList.Add(new()
{
PROD_CODE = routeData.route.PROD_CODE,
CUST_CODE = routeData.route.CUST_CODE,
NODE_ID = act.NODE_ID,
ACT_ID = act.ID,
ACT_TYPE = act.ACT_TYPE,
ROT_ID = act.ROT_ID,
ACT_CODE = act.ACT_CODE,
RULE_CODE = "",
ITEM_CODE = "",
TEST_CODE = "",
SAPL_CODE = "",
LABEL_CODE = "",
PKG_CODE = "",
IS_ACTIVE = "Y",
SETUP_FINISH = "N",
AUTH_ORG = act.AUTH_ORG,
AUTH_PROD = act.AUTH_PROD,
AUTH_WH = act.AUTH_WH,
});
}
}
var db = Db;
var dbTran = db.UseTran(() =>
{
if (routeData.route != null)
{
var y = db.Storageable(routeData.route)
.WhereColumns(t => new { t.ROT_CODE, t.GHOST_ROW })
.ToStorage();
y.AsInsertable.ExecuteCommand();
y.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
}
if (!routeData.route.PROD_CODE.IsNullOrEmpty())
{
db.Deleteable().Where(x => x.ROT_ID == routeData.route.ID && x.PROD_CODE == routeData.route.PROD_CODE && !SqlFunc.ContainsArray(nodeIds, x.NODE_ID)).ExecuteCommand();
db.Deleteable().Where(x => x.ROT_ID == routeData.route.ID && x.PROD_CODE == routeData.route.PROD_CODE && !SqlFunc.ContainsArray(actIds, x.ACT_ID)).ExecuteCommand();
}
db.Deleteable(false).Where(x => x.ROT_ID == routeData.route.ID).ExecuteCommand();
db.Deleteable(false).Where(x => x.ROT_ID == routeData.route.ID).ExecuteCommand();
db.Deleteable(false).Where(x => x.ROT_ID == routeData.route.ID).ExecuteCommand();
if (routeData.nodes != null)
{
db.Insertable(routeData.nodes).ExecuteCommand();
}
if (routeData.edges != null)
{
db.Insertable(routeData.edges).ExecuteCommand();
}
if (routeData.acts != null)
{
db.Insertable(routeData.acts).ExecuteCommand();
}
if (!routeData.route.PROD_CODE.IsNullOrEmpty())
{
if (operList.Count > 0)
{
db.Insertable(operList).ExecuteCommand();
}
if (actList.Count > 0)
{
db.Insertable(actList).ExecuteCommand();
}
}
});
if (!dbTran.IsSuccess)
{
result.IsSuccessed = false;
result.LocaleMsg = new($"保存工艺路线图形数据异常");
}
}
catch (Exception ex)
{
result.CatchExceptionWithLog(ex, "保存工艺路线图形数据异常");
}
return await Task.FromResult(result);
}
///
/// 删除工艺路线
///
///
///
public async Task DeleteRoute(string routeId)
{
var result = new ApiAction();
try
{
//查询是否已经有工单在用或者有绑定产品
var db = Db;
var dbTran = db.UseTran(() =>
{
db.Deleteable(false).Where(x => x.ROT_ID == routeId).ExecuteCommand();
db.Deleteable(false).Where(x => x.ROT_ID == routeId).ExecuteCommand();
db.Deleteable(false).Where(x => x.ROT_ID == routeId).ExecuteCommand();
db.Deleteable().Where(x => x.ID == routeId).ExecuteCommand();
});
if (!dbTran.IsSuccess)
{
result.IsSuccessed = false;
result.LocaleMsg = new($"删除工艺路线异常");
}
}
catch (Exception ex)
{
result.CatchExceptionWithLog(ex, "删除工艺路线异常");
}
return await Task.FromResult(result);
}
///
/// 保存节点岗位资源
///
///
///
public async Task SaveRouteNodePost(List 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);
}
///
/// 删除产品绑定的工艺路线
///
///
///
///
public async Task DeleteProdRoute(DelProdRotInput input)
{
var result = new ApiAction();
try
{
var expable = Expressionable.Create();
var expableOper = Expressionable.Create();
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().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().Where(exp).ExecuteCommand();
db.Deleteable().Where(expOper).ExecuteCommand();
});
if (!dbTran.IsSuccess)
{
result.IsSuccessed = false;
result.LocaleMsg = new($"删除工艺路线异常");
}
}
catch (Exception ex)
{
result.CatchExceptionWithLog(ex, "删除工艺路线异常");
}
return result;
}
///
/// 删除工单绑定的工艺路线
///
///
///
///
public async Task DeleteWoRoute(DelWoRotInput input)
{
var result = new ApiAction();
try
{
var bizMesWo = await Db.Queryable().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(bizMesWo.STATUS))}],不能删除工艺路线");
return result;
}
var expableNode = Expressionable.Create();
var expableEdge = Expressionable.Create();
var expableAct = Expressionable.Create();
var expable = Expressionable.Create();
var expableOper = Expressionable.Create();
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().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().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().Where(exp).ExecuteCommand();
db.Deleteable().Where(expOper).ExecuteCommand();
db.Deleteable().Where(expNode).ExecuteCommand();
db.Deleteable().Where(expEdge).ExecuteCommand();
db.Deleteable().Where(expAct).ExecuteCommand();
db.Updateable(bizMesWo).ExecuteCommand();
});
if (!dbTran.IsSuccess)
{
result.IsSuccessed = false;
result.LocaleMsg = new($"删除工艺路线异常");
}
}
catch (Exception ex)
{
result.CatchExceptionWithLog(ex, "删除工艺路线异常");
}
return result;
}
///
/// 保存默认工艺路线到产品
///
///
///
public async Task SetDefaultRoute(ProdRotInput input)
{
var result = new ApiAction();
try
{
var item = await Biz.Db.Queryable().ByAuth(input.options).Where(x=>x.ITEM_CODE == input.prodCode).FirstAsync();
if (item == null)
{
result.IsSuccessed = false;
result.LocaleMsg = new($"产品[{input.prodCode}]不存在!");
return result;
}
item.DEFAULT_ROUTE = input.isDefault? input.rotCode: "";
var db = Db;
var dbTran = db.UseTran(() =>
{
db.Updateable(item).UpdateColumns(q=> new { q.DEFAULT_ROUTE}).ExecuteCommand();
});
if (!dbTran.IsSuccess)
{
result.IsSuccessed = false;
result.LocaleMsg = new($"保存默认工艺路线到产品异常");
}
}
catch (Exception ex)
{
result.CatchExceptionWithLog(ex, "保存默认工艺路线到产品异常");
}
return result;
}
#region 工单工艺路线相关
///
/// 获取工单工艺路线图形数据
///
///
///
public async Task> GetWoRouteData(string workorder)
{
var res = new ApiAction();
WoRouteData rotData = new WoRouteData();
try
{
if (string.IsNullOrEmpty(workorder))
{
res.IsSuccessed = false;
res.LocaleMsg = new($"传入的工艺路线ID为空,不能查找工艺路线!");
return res;
}
//工艺路线
var route = await Db.Queryable((q, s) => new JoinQueryInfos(JoinType.Inner, q.ROUTE_CODE == s.ROT_CODE))
.Where((q, s) => q.ID.Equals(workorder) || q.ORDER_NO == workorder).Select((q, s) => new MES_ROUTE
{
ID = s.ID,
ROT_CODE = s.ROT_CODE,
ROT_NAME = s.ROT_NAME,
ROT_TYPE = s.ROT_TYPE,
ROT_VER = s.ROT_VER,
IS_ACTIVE = s.IS_ACTIVE,
REMARK = s.REMARK,
WORK_ORDER = q.ORDER_NO,
PROD_CODE = q.ITEM_CODE,
CUST_CODE = q.CUST_CODE,
}).FirstAsync();
rotData.route = route;
if (route == null)
{
res.IsSuccessed = false;
res.LocaleMsg = new($"不能查找到工单工艺路线!");
return res;
}
//节点
var nodes = await Db.Queryable()
.WhereIF(!string.IsNullOrEmpty(route.ID), x => x.WORK_ORDER.Equals(route.WORK_ORDER))
.ToListAsync();
foreach (var node in nodes)
{
node.node = new()
{
id = node.ID,
type = node.GPH_TYPE,
x = node.GPH_X,
y = node.GPH_Y,
properties = node.GPH_PROP,
text = new()
{
x = node.GPH_X,
y = node.GPH_Y,
value = node.GPH_TEXT
}
};
}
rotData.nodes = nodes;
var acts = await Db.Queryable()
.WhereIF(!string.IsNullOrEmpty(route.ID), x => x.WORK_ORDER.Equals(route.WORK_ORDER))
.ToListAsync();
foreach (var act in acts)
{
act.node = new()
{
id = act.ID,
type = act.GPH_TYPE,
x = act.GPH_X,
y = act.GPH_Y,
properties = act.GPH_PROP,
text = new()
{
x = act.GPH_X,
y = act.GPH_Y,
value = act.GPH_TEXT
}
};
}
rotData.acts = acts;
//边
var edges = await Db.Queryable()
.WhereIF(!string.IsNullOrEmpty(route.ID), x => x.WORK_ORDER.Equals(route.WORK_ORDER))
.ToListAsync();
foreach (var edge in edges)
{
edge.edge = new()
{
id = edge.ID,
type = edge.GPH_TYPE,
sourceNodeId = edge.SRC_NODE,
targetNodeId = edge.TGT_NODE,
properties = edge.GPH_PROP,
startPoint = new()
{
x = edge.GPH_SRC_X,
y = edge.GPH_SRC_Y,
},
endPoint = new()
{
x = edge.GPH_TGT_X,
y = edge.GPH_TGT_Y,
},
pointsList = new()
{
new(){
x = edge.GPH_SRC_X,
y = edge.GPH_SRC_Y,
},
new(){
x = edge.GPH_TGT_X,
y = edge.GPH_TGT_Y,
}
}
};
}
rotData.edges = edges;
}
catch (Exception ex)
{
res.CatchExceptionWithLog(ex, "查询异常");
}
res.Data = rotData;
return res;
}
///
/// 保存工单工艺路线图形数据
///
///
///
public async Task SaveWoRouteData(WoRouteData routeData)
{
var result = new ApiAction();
try
{
var nodeIds = routeData.nodes.Select(x => x.ID).ToList();
var actIds = routeData.acts.Select(x => x.ID).ToList();
//如果工序节点ID没在工单工序里就新增
List operList = new List();
foreach (var node in routeData.nodes)
{
if (!Db.Queryable().Any(q => q.NODE_ID == node.ID))
{
operList.Add(new()
{
WORK_ORDER = node.WORK_ORDER,
PROD_CODE = node.PROD_CODE,
CUST_CODE = node.CUST_CODE,
NODE_ID = node.ID,
NODE_NAME = node.NODE_NAME,
ROT_ID = node.ROT_ID,
OPER_CODE = node.OPER_CODE,
IS_ACTIVE = "Y",
CAN_SKIP = "N",
IS_CALC_FPY = "N",
ALLOW_DFT_IN = "N",
IS_INPUT = "N",
IS_OUTPUT = "N",
AUTH_ORG = node.AUTH_ORG,
AUTH_PROD = node.AUTH_PROD,
AUTH_WH = node.AUTH_WH,
});
}
}
//如果行为节点ID没在工单行为里就新增
List actList = new List();
foreach (var act in routeData.acts)
{
if (!Db.Queryable().Any(q => q.ACT_ID == act.ID))
{
actList.Add(new()
{
WORK_ORDER = act.WORK_ORDER,
PROD_CODE = act.PROD_CODE,
CUST_CODE = act.CUST_CODE,
NODE_ID = act.NODE_ID,
ACT_ID = act.ID,
ACT_TYPE = act.ACT_TYPE,
ROT_ID = act.ROT_ID,
ACT_CODE = act.ACT_CODE,
RULE_CODE = "",
ITEM_CODE = "",
TEST_CODE = "",
SAPL_CODE = "",
LABEL_CODE = "",
PKG_CODE = "",
IS_ACTIVE = "Y",
SETUP_FINISH = "N",
AUTH_ORG = act.AUTH_ORG,
AUTH_PROD = act.AUTH_PROD,
AUTH_WH = act.AUTH_WH,
});
}
}
var db = Db;
var dbTran = db.UseTran(() =>
{
//if (routeData.route != null)
//{
// var y = db.Storageable(routeData.route)
// .WhereColumns(t => new { t.ROT_CODE, t.GHOST_ROW })
// .ToStorage();
// y.AsInsertable.ExecuteCommand();
// y.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
//}
db.Deleteable().Where(x => x.WORK_ORDER == routeData.route.WORK_ORDER && !SqlFunc.ContainsArray(nodeIds, x.NODE_ID)).ExecuteCommand();
db.Deleteable().Where(x => x.WORK_ORDER == routeData.route.WORK_ORDER && !SqlFunc.ContainsArray(actIds, x.ACT_ID)).ExecuteCommand();
db.Deleteable(false).Where(x => x.WORK_ORDER == routeData.route.WORK_ORDER).ExecuteCommand();
db.Deleteable(false).Where(x => x.WORK_ORDER == routeData.route.WORK_ORDER).ExecuteCommand();
db.Deleteable(false).Where(x => x.WORK_ORDER == routeData.route.WORK_ORDER).ExecuteCommand();
if (routeData.nodes != null)
{
db.Insertable(routeData.nodes).ExecuteCommand();
}
if (routeData.edges != null)
{
db.Insertable(routeData.edges).ExecuteCommand();
}
if (routeData.acts != null)
{
db.Insertable(routeData.acts).ExecuteCommand();
}
if (operList.Count>0)
{
db.Insertable(operList).ExecuteCommand();
}
if (actList.Count > 0)
{
db.Insertable(actList).ExecuteCommand();
}
});
if (!dbTran.IsSuccess)
{
result.IsSuccessed = false;
result.LocaleMsg = new($"保存工单工艺路线图形数据异常");
}
}
catch (Exception ex)
{
result.CatchExceptionWithLog(ex, "保存工单工艺路线图形数据异常");
}
return await Task.FromResult(result);
}
///
/// 保存工单工艺节点岗位资源
///
///
///
public async Task SaveWoRouteNodePost(List 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);
}
#endregion
} //endClass Route
} //endClass Biz
}