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.MES.BizMesWoBatch;
using Tiger.Model.Entitys.MES.BizMesWo;
using Tiger.Model.Entitys.MES.BizBasPkgRule;
using Tiger.Model.Entitys.MES.Position;
namespace Tiger.Business.MES
{
public partial class BizBasRule : IBasRule
{
///
/// 保存物料条码规则
///
///
///
public async Task SaveBasItemRule(BizBasItemRuleInput input)
{
var result = new ApiAction();
try
{
var ItemCustIds = input.ItemCusts.Select(q => q.ID).ToList();
List list = ItemCustIds.Count>0? await Biz.Db.Queryable()
.Where(q => !SqlFunc.ContainsArray(ItemCustIds, q.ID) && input.ItemCusts[0].ITEM_ID == q.ITEM_ID)
.ToListAsync() : new();
var db = Biz.Db;
var dbTran = db.UseTran(() =>
{
if (input.Item != null)
{
db.Updateable(input.Item).UpdateColumns(q => q.RULE_CODE).ExecuteCommand();
}
var z = db.Storageable(input.ItemCusts)
.WhereColumns(t => new { t.ID, t.GHOST_ROW })
.ToStorage();
z.AsInsertable.ExecuteCommand();
z.AsUpdateable.ExecuteCommand();
db.Deleteable(list).ExecuteCommand();
});
if (!dbTran.IsSuccess)
{
result.IsSuccessed = false;
result.Message = $"保存物料条码规则异常";
}
}
catch (Exception ex)
{
result.CatchExceptionWithLog(ex, "保存物料条码规则异常");
}
return result;
}
///
/// 保存包装规则,包括明细和重量范围
///
///
///
public async Task SaveBasPkgRule(BizBasPkgRuleInput input)
{
var result = new ApiAction();
try
{
var pkgProds = input.PkgProd.Select(q => q.ID).ToList();
List listPrd = pkgProds.Count > 0 ? await Biz.Db.Queryable()
.Where(q => !SqlFunc.ContainsArray(pkgProds, q.ID) && q.PKG_RULE_ID == input.PkgProd[0].PKG_RULE_ID)
.ToListAsync() : new();
var pkgDtl = input.PkgDtl.Select(q => q.ID).ToList();
List listDtl = pkgDtl.Count > 0 ? await Biz.Db.Queryable()
.Where(q => !SqlFunc.ContainsArray(pkgDtl, q.ID) && q.PKG_RULE_ID == input.PkgDtl[0].PKG_RULE_ID)
.ToListAsync() : new();
var db = Biz.Db;
var dbTran = db.UseTran(() =>
{
var z = db.Storageable(input.PkgDtl)
.WhereColumns(t => new { t.ID, t.GHOST_ROW })
.ToStorage();
z.AsInsertable.ExecuteCommand();
z.AsUpdateable.ExecuteCommand();
var o = db.Storageable(input.PkgProd)
.WhereColumns(t => new { t.ID, t.GHOST_ROW })
.ToStorage();
o.AsInsertable.ExecuteCommand();
o.AsUpdateable.ExecuteCommand();
db.Deleteable(listPrd).ExecuteCommand();
db.Deleteable(listDtl).ExecuteCommand();
});
if (!dbTran.IsSuccess)
{
result.IsSuccessed = false;
result.LocaleMsg = new($"保存包装规则异常");
}
}
catch (Exception ex)
{
result.CatchExceptionWithLog(ex, "保存包装规则异常");
}
return result;
}
///
/// 获取箱号
///
///
///
public async Task GetCardOrBoxCode(GetCodeInput input)
{
var result = new ApiAction();
try
{
if (input.BatchNo.IsNullOrEmpty())
{
result.IsSuccessed = false;
result.LocaleMsg = new($"工单批次号不能为空,是否未扫描工单?");
}
result.Data = input.IsTry == "Y" ? Cache.CodeRule[input.Code]?.TryGenerate(input.Prefix, $"{input.BatchNo}-{input.Qty}-").Data.ToString() ?? "" : Cache.CodeRule[input.Code]?.Generate(input.Prefix, $"{input.BatchNo}-{input.Qty}-").Data.ToString() ?? "";
}
catch (Exception ex)
{
result.CatchExceptionWithLog(ex, "获取箱号异常");
}
return result;
}
}
}