|
|
@@ -1,5 +1,4 @@ |
|
|
|
using BPA.Franchisee.Application.FranchiseeCenter.GoodsServices; |
|
|
|
using BPA.SAAS.Manage.Application.DataBase.Dtos; |
|
|
|
using BPA.SAAS.Manage.Application.DataBase.Dtos; |
|
|
|
using BPA.SAAS.Manage.Application.DataBase.Dtos.Batching; |
|
|
|
using BPA.SAAS.Manage.Application.DataBase.Dtos.Bom; |
|
|
|
using BPA.SAAS.Manage.Application.DataBase.Dtos.Goods; |
|
|
@@ -34,24 +33,21 @@ using System.Linq; |
|
|
|
using System.Reflection; |
|
|
|
using System.Text; |
|
|
|
using System.Text.RegularExpressions; |
|
|
|
using System.Threading.Tasks; |
|
|
|
|
|
|
|
namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
{ |
|
|
|
public class GoodsService: IGoodsService, ITransient |
|
|
|
public class GoodsService : IGoodsService, ITransient |
|
|
|
{ |
|
|
|
private readonly ISqlSugarClient _db; |
|
|
|
IGoodsAttributeService _goodsAttributeService; |
|
|
|
ISystemConfigService _SystemConfigService; |
|
|
|
IAliyunOssService _aliyunOssService; |
|
|
|
IWebHostEnvironment _hostingEnvironment; |
|
|
|
public GoodsService(ISqlSugarClient db, IGoodsAttributeService goodsAttributeService, ISystemConfigService SystemConfigService, IAliyunOssService aliyunOssService, IWebHostEnvironment webHostEnvironment) |
|
|
|
{ |
|
|
|
_db=db; |
|
|
|
_goodsAttributeService=goodsAttributeService; |
|
|
|
_db = db; |
|
|
|
_goodsAttributeService = goodsAttributeService; |
|
|
|
_SystemConfigService = SystemConfigService; |
|
|
|
_aliyunOssService = aliyunOssService; |
|
|
|
_hostingEnvironment = webHostEnvironment; |
|
|
|
} |
|
|
|
/// <summary> |
|
|
|
/// 分页查询 |
|
|
@@ -66,12 +62,12 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
{ |
|
|
|
conModels.Add(new ConditionalModel() { FieldName = "a.Name", ConditionalType = ConditionalType.Like, FieldValue = dto.Name }); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(dto.GoodsTypeName)) |
|
|
|
{ |
|
|
|
conModels.Add(new ConditionalModel() { FieldName = "a.GoodsTypeId", ConditionalType = ConditionalType.Equal, FieldValue = dto.GoodsTypeName }); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(dto.Status)) |
|
|
|
{ |
|
|
|
conModels.Add(new ConditionalModel() { FieldName = "a.Status", ConditionalType = ConditionalType.Like, FieldValue = dto.Status }); |
|
|
@@ -83,12 +79,12 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
#endregion |
|
|
|
|
|
|
|
RefAsync<int> total = 0; |
|
|
|
var res =await _db.Queryable<BPA_GoodsInfo, BPA_GoodsType>((a, b) => new JoinQueryInfos( |
|
|
|
JoinType.Left, a.GoodsTypeId == b.Id |
|
|
|
)) |
|
|
|
var res = await _db.Queryable<BPA_GoodsInfo, BPA_GoodsType>((a, b) => new JoinQueryInfos( |
|
|
|
JoinType.Left, a.GoodsTypeId == b.Id |
|
|
|
)) |
|
|
|
.WhereIF(!string.IsNullOrWhiteSpace(dto.Code), (a, b) => a.Code.Contains(dto.Code)) |
|
|
|
// .WhereIF(dto.CreateAt.HasValue, (a, b) => SqlFunc.DateIsSame(a.CreateAt, Convert.ToDateTime(dto.CreateAt), DateType.Day)) |
|
|
|
|
|
|
|
|
|
|
|
.Where(conModels) |
|
|
|
.OrderBy(a => a.CreateAt, OrderByType.Desc) |
|
|
|
.Select((a, b) => new |
|
|
@@ -103,7 +99,7 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
GoodsTypeName = b.IsDeleted == 0 ? b.Name : "", |
|
|
|
Descritption = a.Descritption, |
|
|
|
IsDeleted = a.IsDeleted, |
|
|
|
|
|
|
|
|
|
|
|
// CreateAt = a.CreateAt, |
|
|
|
GoodsUintId = a.GoodsUintId, |
|
|
|
ForeignKeyRe = a.ForeignKeyRe, |
|
|
@@ -111,10 +107,10 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
IsWeigh = a.IsWeigh, |
|
|
|
DefaultMate = a.DefaultMate, |
|
|
|
IsAttrubute = a.IsAttrubute, |
|
|
|
Goodstechnology = SqlFunc.Subqueryable<BPA_GoodsTechnologyAction>().Where(p => p.GoodsId == a.Id).WhereIF(!string.IsNullOrWhiteSpace(dto.DeviceId),p=>p.DeviceId== dto.DeviceId).ToList(), |
|
|
|
Goodstechnology = SqlFunc.Subqueryable<BPA_GoodsTechnologyAction>().Where(p => p.GoodsId == a.Id).WhereIF(!string.IsNullOrWhiteSpace(dto.DeviceId), p => p.DeviceId == dto.DeviceId).ToList(), |
|
|
|
}) |
|
|
|
|
|
|
|
.ToPageListAsync(dto.Current, dto.PageSize, total); |
|
|
|
.ToPageListAsync(dto.Current, dto.PageSize, total); |
|
|
|
PageUtil util = new PageUtil() |
|
|
|
{ |
|
|
|
Total = total, |
|
|
@@ -134,18 +130,18 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
|
|
|
|
var result = new List<GoodsTypeResultDto>(); |
|
|
|
//商品信息 |
|
|
|
var goodsList=await _db.Queryable<BPA_GoodsInfo>().Where(x=> GoodsIds.Contains(x.Id)).ToListAsync(); |
|
|
|
var goodsList = await _db.Queryable<BPA_GoodsInfo>().Where(x => GoodsIds.Contains(x.Id)).ToListAsync(); |
|
|
|
|
|
|
|
var typeIds= goodsList.Select(x => x.GoodsTypeId).ToList(); |
|
|
|
var typeIds = goodsList.Select(x => x.GoodsTypeId).ToList(); |
|
|
|
|
|
|
|
//商品分类 |
|
|
|
var typeList =await _db.Queryable<BPA_GoodsType>().Where(x => typeIds.Contains(x.Id)).ToListAsync(); |
|
|
|
var typeList = await _db.Queryable<BPA_GoodsType>().Where(x => typeIds.Contains(x.Id)).ToListAsync(); |
|
|
|
|
|
|
|
//商品分类属性 |
|
|
|
var goodsAttribute = await _db.Queryable<BPA_GoodsAttribute>() |
|
|
|
.Where(x=> typeIds.Contains(x.GoodsTypeId)).ToListAsync(); |
|
|
|
.Where(x => typeIds.Contains(x.GoodsTypeId)).ToListAsync(); |
|
|
|
|
|
|
|
var goodsAttributeIds= await _db.Queryable<BPA_GoodsAttribute>().Select(x=>x.Id).ToListAsync(); |
|
|
|
var goodsAttributeIds = await _db.Queryable<BPA_GoodsAttribute>().Select(x => x.Id).ToListAsync(); |
|
|
|
|
|
|
|
|
|
|
|
var goodsAttributeValue = await _db.Queryable<BPA_GoodsAttributeValue>() |
|
|
@@ -153,9 +149,9 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
.Select(x => new GoodsAttributeValueResultDto() |
|
|
|
{ |
|
|
|
GoodsAttributeValueId = x.Id, |
|
|
|
AttributeValue =x.AttributeValue, |
|
|
|
GoodsAttributeId =x.GoodsAttributeId |
|
|
|
|
|
|
|
AttributeValue = x.AttributeValue, |
|
|
|
GoodsAttributeId = x.GoodsAttributeId |
|
|
|
|
|
|
|
}) |
|
|
|
.ToListAsync(); |
|
|
|
|
|
|
@@ -165,63 +161,63 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
var goodsTechnologyAction = await _db.Queryable<BPA_GoodsTechnologyAction>().ToListAsync(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var type in typeList) |
|
|
|
{ |
|
|
|
|
|
|
|
var value1 = goodsAttribute.Where(x => x.GoodsTypeId == type.Id) |
|
|
|
.Select(x=>new BPA.SAAS.Manage.Application.DataBase.Dtos.GoodsAttributeResultDto() |
|
|
|
.Select(x => new BPA.SAAS.Manage.Application.DataBase.Dtos.GoodsAttributeResultDto() |
|
|
|
{ |
|
|
|
GoodsAttributeId=x.Id, |
|
|
|
GoodsAttributeName=x.AttributeName |
|
|
|
GoodsAttributeId = x.Id, |
|
|
|
GoodsAttributeName = x.AttributeName |
|
|
|
|
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
foreach (var item in value1) |
|
|
|
{ |
|
|
|
var value2= goodsAttributeValue.Where(x=>x.GoodsAttributeId==item.GoodsAttributeId) |
|
|
|
.Select(x=>new GoodsAttributeValueResultDto() |
|
|
|
var value2 = goodsAttributeValue.Where(x => x.GoodsAttributeId == item.GoodsAttributeId) |
|
|
|
.Select(x => new GoodsAttributeValueResultDto() |
|
|
|
{ |
|
|
|
AttributeValue=x.AttributeValue, |
|
|
|
GoodsAttributeId=x.GoodsAttributeId, |
|
|
|
GoodsAttributeValueId=x.GoodsAttributeValueId, |
|
|
|
AttributeValue = x.AttributeValue, |
|
|
|
GoodsAttributeId = x.GoodsAttributeId, |
|
|
|
GoodsAttributeValueId = x.GoodsAttributeValueId, |
|
|
|
}) |
|
|
|
.ToList(); |
|
|
|
|
|
|
|
item.GoodsAttributeValueList= value2; |
|
|
|
item.GoodsAttributeValueList = value2; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var value3 = goodsInfos.Where(x => x.GoodsTypeId == type.Id) |
|
|
|
.Select(x => new GoodsInfoResultDto() |
|
|
|
{ |
|
|
|
GoodsId=x.Id, |
|
|
|
GoodsName=x.Name, |
|
|
|
ImgUrl=x.ImgUrl, |
|
|
|
GoodsId = x.Id, |
|
|
|
GoodsName = x.Name, |
|
|
|
ImgUrl = x.ImgUrl, |
|
|
|
}) |
|
|
|
.ToList(); |
|
|
|
|
|
|
|
foreach (var item in value3) |
|
|
|
{ |
|
|
|
var value4= goodsTechnologyAction |
|
|
|
.Where(x=>x.GoodsId==item.GoodsId) |
|
|
|
.Select(x=>new GoodsTechnologyActionResultDto() |
|
|
|
var value4 = goodsTechnologyAction |
|
|
|
.Where(x => x.GoodsId == item.GoodsId) |
|
|
|
.Select(x => new GoodsTechnologyActionResultDto() |
|
|
|
{ |
|
|
|
GroupId=x.GroupId, |
|
|
|
ActionJson=x.ActionJson, |
|
|
|
ChnologyId=x.ChnologyId, |
|
|
|
DeviceId=x.DeviceId, |
|
|
|
GoodsAttributeId=x.GoodsAttributeId, |
|
|
|
GoodsId=x.GoodsId, |
|
|
|
IsBatch=x.IsBatch, |
|
|
|
Sort=x.Sort, |
|
|
|
StepName=x.StepName, |
|
|
|
WarehousrTemplateId=x.WarehousrTemplateId, |
|
|
|
GroupId = x.GroupId, |
|
|
|
ActionJson = x.ActionJson, |
|
|
|
ChnologyId = x.ChnologyId, |
|
|
|
DeviceId = x.DeviceId, |
|
|
|
GoodsAttributeId = x.GoodsAttributeId, |
|
|
|
GoodsId = x.GoodsId, |
|
|
|
IsBatch = x.IsBatch, |
|
|
|
Sort = x.Sort, |
|
|
|
StepName = x.StepName, |
|
|
|
WarehousrTemplateId = x.WarehousrTemplateId, |
|
|
|
}).ToList(); |
|
|
|
item.GoodsTechnologyActionList= value4; |
|
|
|
item.GoodsTechnologyActionList = value4; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -230,7 +226,7 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
GoodsTypeId = type.Id, |
|
|
|
GoodsTypeName = type.Name, |
|
|
|
GoodsAttributeList = value1, |
|
|
|
GoodsInfoList= value3 |
|
|
|
GoodsInfoList = value3 |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
@@ -276,7 +272,7 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
var data = _db.Queryable<BPA_GoodsInfo>().Max(x => x.AutoKey); |
|
|
|
//if (data == 0) data = 1000; |
|
|
|
//else data = data + 1; |
|
|
|
// resEntity.AutoKey = data; |
|
|
|
// resEntity.AutoKey = data; |
|
|
|
var res = await _db.Insertable(resEntity).CallEntityMethod(m => m.Create()).ExecuteCommandAsync(); |
|
|
|
return res > 0; |
|
|
|
} |
|
|
@@ -284,9 +280,9 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
{ |
|
|
|
return await UpdateGoods(dto); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 更新商品 |
|
|
|
/// </summary> |
|
|
@@ -311,7 +307,7 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
{ |
|
|
|
resEntity.Status = (CommonStatus)Enum.ToObject(typeof(CommonStatus), int.Parse(dto.Status)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var res = await _db.Updateable(resEntity).ExecuteCommandAsync(); |
|
|
|
return res > 0; |
|
|
|
} |
|
|
@@ -330,7 +326,7 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
foreach (var idItem in ids) |
|
|
|
{ |
|
|
|
var good = _db.Queryable<BPA_GoodsInfo>().Where(x => x.Id == idItem).First(); |
|
|
|
if (good == null) |
|
|
|
if (good == null) |
|
|
|
throw Oops.Oh("商品不存在"); |
|
|
|
var goodsbom = _db.Queryable<BPA_GoodsBom>().Where(x => ids.Contains(x.Goods_Id)).ToList(); |
|
|
|
var goodsTechnology = _db.Queryable<BPA_GoodsTechnologyAction>().Where(x => ids.Contains(x.GoodsId)).ToList(); |
|
|
@@ -365,7 +361,7 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
{ |
|
|
|
var groupId = App.HttpContext.Request.Headers["groupId"].ToString(); |
|
|
|
if (string.IsNullOrWhiteSpace(groupId)) throw Oops.Oh("加盟商id不能为空"); |
|
|
|
var res = await _db.Queryable<BPA_GoodsUint>().Where(x=>x.GroupId== groupId).Select<dynamic>(x => new |
|
|
|
var res = await _db.Queryable<BPA_GoodsUint>().Where(x => x.GroupId == groupId).Select<dynamic>(x => new |
|
|
|
|
|
|
|
{ |
|
|
|
id = x.Id, |
|
|
@@ -380,10 +376,10 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
/// <returns></returns> |
|
|
|
public async Task<bool> AddGoodsUint(GoodsUintDto dto) |
|
|
|
{ |
|
|
|
var productCode = _db.Queryable<BPA_GoodsUint>().Where(x =>x.Name == dto.Name).ToList(); |
|
|
|
var productCode = _db.Queryable<BPA_GoodsUint>().Where(x => x.Name == dto.Name).ToList(); |
|
|
|
if (productCode.Count() > 0) |
|
|
|
{ |
|
|
|
throw Oops.Oh("商品单位已存在"); |
|
|
|
throw Oops.Oh($"{dto.Name}已存在,添加失败!"); |
|
|
|
} |
|
|
|
try |
|
|
|
{ |
|
|
@@ -392,9 +388,9 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
var res = await _db.Insertable(bPA_Product).CallEntityMethod(m => m.Create()).ExecuteCommandAsync(); |
|
|
|
return res > 0; |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
catch (Exception e) |
|
|
|
{ |
|
|
|
throw Oops.Oh("添加失败"); |
|
|
|
throw Oops.Oh(e.Message); |
|
|
|
} |
|
|
|
} |
|
|
|
/// <summary> |
|
|
@@ -402,25 +398,25 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
/// </summary> |
|
|
|
/// <param name="dto"></param> |
|
|
|
/// <returns></returns> |
|
|
|
public async Task<PageUtil> GetGoodsBomPageAsync(GoodsBomQueryDto dto) |
|
|
|
public async Task<PageUtil> GetGoodsBomPageAsync(GoodsBomQueryDto dto) |
|
|
|
{ |
|
|
|
RefAsync<int> total = 0; |
|
|
|
var res =await _db.Queryable<BPA_Bom, BPA_BomAttributeValueRe>((a, b) => new JoinQueryInfos( |
|
|
|
JoinType.Left, a.Id == b.BoomId |
|
|
|
)) |
|
|
|
.WhereIF(!string.IsNullOrWhiteSpace(dto.GoodsId), (a, b) => b.GoodsId==dto.GoodsId) |
|
|
|
var res = await _db.Queryable<BPA_Bom, BPA_BomAttributeValueRe>((a, b) => new JoinQueryInfos( |
|
|
|
JoinType.Left, a.Id == b.BoomId |
|
|
|
)) |
|
|
|
.WhereIF(!string.IsNullOrWhiteSpace(dto.GoodsId), (a, b) => b.GoodsId == dto.GoodsId) |
|
|
|
.WhereIF(!string.IsNullOrWhiteSpace(dto.Name), (a, b) => a.Name.Contains(dto.Name)) |
|
|
|
.WhereIF(!string.IsNullOrWhiteSpace(dto.GoodsAttributeValue), (a, b) => b.GoodsAttributeValue.Contains(dto.GoodsAttributeValue)) |
|
|
|
.Select((a, b) => new GoodsBomPageView |
|
|
|
{ |
|
|
|
Id = b.Id, |
|
|
|
Name = a.Name, |
|
|
|
BomId= b.BoomId, |
|
|
|
BomId = b.BoomId, |
|
|
|
IsMain = a.IsMain, |
|
|
|
GoodsAttributeValueId=b.GoodsAttributeValueId, |
|
|
|
GoodsAttributeValue=b.GoodsAttributeValue, |
|
|
|
GoodsAttributeValueId = b.GoodsAttributeValueId, |
|
|
|
GoodsAttributeValue = b.GoodsAttributeValue, |
|
|
|
}) |
|
|
|
.ToPageListAsync(dto.Current, dto.PageSize, total); |
|
|
|
.ToPageListAsync(dto.Current, dto.PageSize, total); |
|
|
|
PageUtil util = new PageUtil() |
|
|
|
{ |
|
|
|
Total = total, |
|
|
@@ -436,9 +432,9 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
public async Task<bool> BatchDelGoodsBomAsync(string Ids) |
|
|
|
{ |
|
|
|
// var GoodsBom=_db.Queryable<BPA_GoodsBom>().Where(x => x.Id == Ids).First(); |
|
|
|
var model=_db.Queryable<BPA_BomAttributeValueRe>().Where(x => x.Id == Ids).First(); |
|
|
|
if(model==null) throw Oops.Oh("配方不存在"); |
|
|
|
_db.Deleteable<BPA_GoodsBom>().Where(x => x.Goods_Id == model.GoodsId && x.BomId== model.BoomId).ExecuteCommand(); |
|
|
|
var model = _db.Queryable<BPA_BomAttributeValueRe>().Where(x => x.Id == Ids).First(); |
|
|
|
if (model == null) throw Oops.Oh("配方不存在"); |
|
|
|
_db.Deleteable<BPA_GoodsBom>().Where(x => x.Goods_Id == model.GoodsId && x.BomId == model.BoomId).ExecuteCommand(); |
|
|
|
// 查询数据库中是否存在未删除的商品 |
|
|
|
var res = _db.Deleteable<BPA_BomAttributeValueRe>().In(Ids).ExecuteCommand(); |
|
|
|
return res > 0; |
|
|
@@ -453,7 +449,7 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
_db.Ado.BeginTran(); |
|
|
|
try |
|
|
|
{ |
|
|
|
if(dto.Type== "add") |
|
|
|
if (dto.Type == "add") |
|
|
|
{ |
|
|
|
var sortMax = _db.Queryable<BPA_Bom>().Max(x => x.Sort); |
|
|
|
BPA_Bom newbPA_BOM = new BPA_Bom |
|
|
@@ -511,7 +507,7 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
if (string.IsNullOrWhiteSpace(dto.BomId)) throw Oops.Oh("请选择配方"); |
|
|
|
if (!string.IsNullOrWhiteSpace(dto.BomId)) |
|
|
|
{ |
|
|
|
var check=_db.Queryable<BPA_GoodsBom>().Where(x => x.Goods_Id == dto.GoodsId && x.BomId == dto.BomId).Any(); |
|
|
|
var check = _db.Queryable<BPA_GoodsBom>().Where(x => x.Goods_Id == dto.GoodsId && x.BomId == dto.BomId).Any(); |
|
|
|
if (!check) |
|
|
|
{ |
|
|
|
BPA_GoodsBom bom = new BPA_GoodsBom(); |
|
|
@@ -522,18 +518,18 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
_db.Insertable(bom).CallEntityMethod(m => m.Create()).ExecuteCommand(); |
|
|
|
} |
|
|
|
string vid = string.Join(",", dto.Shuxing); |
|
|
|
var checkvid = _db.Queryable<BPA_BomAttributeValueRe>().Where(x => x.GoodsId == dto.GoodsId && x.BoomId == dto.BomId && x.GoodsAttributeValueId== vid).Any(); |
|
|
|
if(checkvid) throw Oops.Oh("该配方已经存在"); |
|
|
|
var checkvid = _db.Queryable<BPA_BomAttributeValueRe>().Where(x => x.GoodsId == dto.GoodsId && x.BoomId == dto.BomId && x.GoodsAttributeValueId == vid).Any(); |
|
|
|
if (checkvid) throw Oops.Oh("该配方已经存在"); |
|
|
|
//添加商品配方属性关系 |
|
|
|
BPA_BomAttributeValueRe bPA_BomAttributeValueRe = new(); |
|
|
|
bPA_BomAttributeValueRe.Id = Guid.NewGuid().ToString(); |
|
|
|
bPA_BomAttributeValueRe.GoodsId = dto.GoodsId; |
|
|
|
bPA_BomAttributeValueRe.BoomId = dto.BomId; |
|
|
|
bPA_BomAttributeValueRe.GoodsAttributeValueId = vid; |
|
|
|
bPA_BomAttributeValueRe.Id = Guid.NewGuid().ToString(); |
|
|
|
bPA_BomAttributeValueRe.GoodsId = dto.GoodsId; |
|
|
|
bPA_BomAttributeValueRe.BoomId = dto.BomId; |
|
|
|
bPA_BomAttributeValueRe.GoodsAttributeValueId = vid; |
|
|
|
bPA_BomAttributeValueRe.GoodsAttributeValue = dto.GoodsAttributeValue; |
|
|
|
_db.Insertable(bPA_BomAttributeValueRe).ExecuteCommand(); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
_db.Ado.CommitTran(); |
|
|
|
return true; |
|
|
@@ -554,14 +550,14 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
{ |
|
|
|
BPA_GoodsBom goodsBom = new(); |
|
|
|
goodsBom.BomId = dto.BomId[i]; |
|
|
|
goodsBom.Goods_Id= dto.GoodsId; |
|
|
|
goodsBom.Goods_Id = dto.GoodsId; |
|
|
|
goodsBom.Status = CommonStatus.ENABLE; |
|
|
|
list.Add(goodsBom); |
|
|
|
} |
|
|
|
} |
|
|
|
if (list.Count>0) |
|
|
|
if (list.Count > 0) |
|
|
|
{ |
|
|
|
res=await _db.Insertable(list).CallEntityMethod(m => m.Create()).ExecuteCommandAsync()>0; |
|
|
|
res = await _db.Insertable(list).CallEntityMethod(m => m.Create()).ExecuteCommandAsync() > 0; |
|
|
|
} |
|
|
|
return res; |
|
|
|
} |
|
|
@@ -592,7 +588,7 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
GoodsUintName = SqlFunc.Subqueryable<BPA_GoodsUint>().Where(s => s.Id == a.GoodsUintId && s.IsDeleted == 0).Select(s => s.Name), |
|
|
|
//GoodsAttributeList = new List<GoodsAttributeList>() |
|
|
|
}).FirstAsync(); |
|
|
|
if (res!=null) |
|
|
|
if (res != null) |
|
|
|
{ |
|
|
|
if (!res.IsAttrubute) |
|
|
|
{ |
|
|
@@ -627,7 +623,7 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
|
|
|
|
//1.查询并且添加类型 |
|
|
|
var nonLiquid = await _db.Queryable<BPA_BatchingType>() |
|
|
|
.Where(x => x.Name == "非液体" ).FirstAsync(); |
|
|
|
.Where(x => x.Name == "非液体").FirstAsync(); |
|
|
|
if (nonLiquid == null) |
|
|
|
{ |
|
|
|
nonLiquid = new BPA_BatchingType() |
|
|
@@ -730,15 +726,15 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
Remark = "", |
|
|
|
Sort = 0, |
|
|
|
Status = 0, |
|
|
|
Pid="0" |
|
|
|
Pid = "0" |
|
|
|
}; |
|
|
|
|
|
|
|
type=await _db.Insertable(parentType).CallEntityMethod(m => m.Create()).ExecuteReturnEntityAsync(); |
|
|
|
type = await _db.Insertable(parentType).CallEntityMethod(m => m.Create()).ExecuteReturnEntityAsync(); |
|
|
|
parentType = type; |
|
|
|
} |
|
|
|
//属性 |
|
|
|
var goodsAttribute = await _db.Queryable<BPA_GoodsAttribute>() |
|
|
|
.Where(x => x.AttributeName == "默认属性" ).FirstAsync(); |
|
|
|
.Where(x => x.AttributeName == "默认属性").FirstAsync(); |
|
|
|
if (goodsAttribute == null) |
|
|
|
{ |
|
|
|
goodsAttribute = new BPA_GoodsAttribute() |
|
|
@@ -798,8 +794,8 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
ForeignKeyRe = null, |
|
|
|
GoodsUintId = goodsUint.Id, |
|
|
|
Descritption = "", |
|
|
|
ImgMode = 0, |
|
|
|
ImgUrl = imagePath?.ImgesPath, |
|
|
|
ImgMode = 0, |
|
|
|
ImgUrl = imagePath?.ImgesPath, |
|
|
|
Name = item.Name, |
|
|
|
Sort = 0, |
|
|
|
GoodsTypeId = parentType.Id, |
|
|
@@ -827,7 +823,7 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
{ |
|
|
|
item2.Id = thisitem.Id; |
|
|
|
item2.AutoKey = thisitem.AutoKey; |
|
|
|
item2.GroupId= thisitem.GroupId; |
|
|
|
item2.GroupId = thisitem.GroupId; |
|
|
|
_db.Updateable(item2).ExecuteCommand(); |
|
|
|
} |
|
|
|
else |
|
|
@@ -937,7 +933,7 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
var thisName = goodTechnologyModel[i].Name == null ? cName : goodTechnologyModel[i].Name; |
|
|
|
|
|
|
|
var data = await _db.Queryable<BPA_Technology>() |
|
|
|
.Where(x => x.Name == thisName && x.DeviceVersionId == device.ProductVersionId).FirstAsync(); |
|
|
|
.Where(x => x.Name == thisName && x.DeviceVersionId == device.ProductVersionId).FirstAsync(); |
|
|
|
if (data == null) throw Oops.Oh("该设备还没有设置工艺基础信息"); |
|
|
|
var data2 = await _db.Queryable<BPA_TechnologyAction>() |
|
|
|
.Where(x => x.ActionName == goodTechnologyModel[i].Configuration && x.TechnologyId == data.Id).FirstAsync(); |
|
|
@@ -1116,136 +1112,136 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
|
|
|
|
//if (inputDto.IsAddGoodsTemplate) |
|
|
|
//{ |
|
|
|
|
|
|
|
|
|
|
|
//} |
|
|
|
//else |
|
|
|
//{ |
|
|
|
|
|
|
|
var source = file.OpenReadStream(); |
|
|
|
var mapper = new Mapper(source); |
|
|
|
var deviceVersion = await _db.Queryable<BPA_ProductVesion>().FirstAsync(x => x.ProductId == inputDto.DeviceClientType && x.Vesion == inputDto.Version); |
|
|
|
//添加 设备_烹饪工序模型 |
|
|
|
#region 添加 设备_烹饪工序模型 |
|
|
|
ReadExcel<GoodstechnologyModel> readGoodstechnologyExcel = new(); |
|
|
|
var GoodstechnologyModellist = readGoodstechnologyExcel.ExcelToList(source, mapper); |
|
|
|
List<BPA_Technology> GoodsTechnologyList = new(); |
|
|
|
List<BPA_TechnologyAction> GoodsTechnologyActionList = new(); |
|
|
|
var GoodsTechnologyListDB = await _db.Queryable<BPA_Technology>() |
|
|
|
.Where(x => x.DeviceVersionId == deviceVersion.Id).ToListAsync(); |
|
|
|
string currennaid = ""; |
|
|
|
string currennaname = ""; |
|
|
|
for (int i = 0; i < GoodstechnologyModellist.Count; i++) |
|
|
|
{ |
|
|
|
var goodsTechnologyId = GoodsTechnologyListDB.FirstOrDefault(x => x.Name == GoodstechnologyModellist[i].Name); |
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(GoodstechnologyModellist[i].Name)) |
|
|
|
{ |
|
|
|
var source = file.OpenReadStream(); |
|
|
|
var mapper = new Mapper(source); |
|
|
|
var deviceVersion = await _db.Queryable<BPA_ProductVesion>().FirstAsync(x => x.ProductId == inputDto.DeviceClientType && x.Vesion == inputDto.Version); |
|
|
|
//添加 设备_烹饪工序模型 |
|
|
|
#region 添加 设备_烹饪工序模型 |
|
|
|
ReadExcel<GoodstechnologyModel> readGoodstechnologyExcel = new(); |
|
|
|
var GoodstechnologyModellist = readGoodstechnologyExcel.ExcelToList(source, mapper); |
|
|
|
List<BPA_Technology> GoodsTechnologyList = new(); |
|
|
|
List<BPA_TechnologyAction> GoodsTechnologyActionList = new(); |
|
|
|
var GoodsTechnologyListDB = await _db.Queryable<BPA_Technology>() |
|
|
|
.Where(x => x.DeviceVersionId == deviceVersion.Id).ToListAsync(); |
|
|
|
string currennaid = ""; |
|
|
|
string currennaname = ""; |
|
|
|
for (int i = 0; i < GoodstechnologyModellist.Count; i++) |
|
|
|
{ |
|
|
|
var goodsTechnologyId = GoodsTechnologyListDB.FirstOrDefault(x => x.Name == GoodstechnologyModellist[i].Name); |
|
|
|
|
|
|
|
BPA_Technology item = new BPA_Technology() |
|
|
|
{ |
|
|
|
Id = goodsTechnologyId == null ? Guid.NewGuid().ToString() : goodsTechnologyId.Id, |
|
|
|
Name = GoodstechnologyModellist[i].Name, |
|
|
|
DeviceVersionId = deviceVersion.Id |
|
|
|
}; |
|
|
|
GoodsTechnologyList.Add(item); |
|
|
|
currennaid = item.Id; |
|
|
|
currennaname = item.Name; |
|
|
|
} |
|
|
|
var actvalueary = GoodstechnologyModellist[i].ActionValue?.Split('、'); |
|
|
|
if (string.IsNullOrEmpty(GoodstechnologyModellist[i].ActionType) && currennaname != "液体料") |
|
|
|
{ |
|
|
|
throw Oops.Oh($"类型错误"); |
|
|
|
} |
|
|
|
BPA_TechnologyAction technologyAction = new() |
|
|
|
if (!string.IsNullOrWhiteSpace(GoodstechnologyModellist[i].Name)) |
|
|
|
{ |
|
|
|
|
|
|
|
BPA_Technology item = new BPA_Technology() |
|
|
|
{ |
|
|
|
Id = Guid.NewGuid().ToString(), |
|
|
|
TechnologyId = currennaid, |
|
|
|
ActionName = GoodstechnologyModellist[i].ActionName, |
|
|
|
ActionType = CharacterConversion(GoodstechnologyModellist[i].ActionType), |
|
|
|
Sort = i, |
|
|
|
TechnologyType = GoodstechnologyModellist[i].TechnologyType == "物料" ? TechnologyEnums.Batch : TechnologyEnums.Other, |
|
|
|
CreateAt = DateTime.Now, |
|
|
|
//ActionValue = GoodstechnologyModellist[i].ActionValue, |
|
|
|
Id = goodsTechnologyId == null ? Guid.NewGuid().ToString() : goodsTechnologyId.Id, |
|
|
|
Name = GoodstechnologyModellist[i].Name, |
|
|
|
DeviceVersionId = deviceVersion.Id |
|
|
|
}; |
|
|
|
List<ActionValueModel> ActionValueModelList = new(); |
|
|
|
if (actvalueary != null) |
|
|
|
{ |
|
|
|
foreach (var item in actvalueary) |
|
|
|
{ |
|
|
|
ActionValueModelList.Add(new ActionValueModel() { actionValueName = item }); |
|
|
|
} |
|
|
|
technologyAction.ActionValue = JsonConvert.SerializeObject(ActionValueModelList); |
|
|
|
} |
|
|
|
GoodsTechnologyActionList.Add(technologyAction); |
|
|
|
GoodsTechnologyList.Add(item); |
|
|
|
currennaid = item.Id; |
|
|
|
currennaname = item.Name; |
|
|
|
} |
|
|
|
|
|
|
|
//修改添加 主表 |
|
|
|
foreach (var item in GoodsTechnologyList) |
|
|
|
var actvalueary = GoodstechnologyModellist[i].ActionValue?.Split('、'); |
|
|
|
if (string.IsNullOrEmpty(GoodstechnologyModellist[i].ActionType) && currennaname != "液体料") |
|
|
|
{ |
|
|
|
var thisitem = GoodsTechnologyListDB.FirstOrDefault(x => x.Name == item.Name); |
|
|
|
|
|
|
|
if (thisitem != null) |
|
|
|
{ |
|
|
|
item.Id = thisitem.Id; |
|
|
|
item.CreateAt = DateTime.Now; |
|
|
|
_db.Updateable(item).ExecuteCommand(); |
|
|
|
} |
|
|
|
else |
|
|
|
throw Oops.Oh($"类型错误"); |
|
|
|
} |
|
|
|
BPA_TechnologyAction technologyAction = new() |
|
|
|
{ |
|
|
|
Id = Guid.NewGuid().ToString(), |
|
|
|
TechnologyId = currennaid, |
|
|
|
ActionName = GoodstechnologyModellist[i].ActionName, |
|
|
|
ActionType = CharacterConversion(GoodstechnologyModellist[i].ActionType), |
|
|
|
Sort = i, |
|
|
|
TechnologyType = GoodstechnologyModellist[i].TechnologyType == "物料" ? TechnologyEnums.Batch : TechnologyEnums.Other, |
|
|
|
CreateAt = DateTime.Now, |
|
|
|
//ActionValue = GoodstechnologyModellist[i].ActionValue, |
|
|
|
}; |
|
|
|
List<ActionValueModel> ActionValueModelList = new(); |
|
|
|
if (actvalueary != null) |
|
|
|
{ |
|
|
|
foreach (var item in actvalueary) |
|
|
|
{ |
|
|
|
//item.Id = Guid.NewGuid().ToString(); |
|
|
|
item.CreateAt = DateTime.Now; |
|
|
|
await _db.Insertable(item).ExecuteCommandAsync(); |
|
|
|
ActionValueModelList.Add(new ActionValueModel() { actionValueName = item }); |
|
|
|
} |
|
|
|
technologyAction.ActionValue = JsonConvert.SerializeObject(ActionValueModelList); |
|
|
|
} |
|
|
|
GoodsTechnologyActionList.Add(technologyAction); |
|
|
|
} |
|
|
|
|
|
|
|
//修改添从表 |
|
|
|
GoodsTechnologyActionList = GoodsTechnologyActionList.Where(x => !string.IsNullOrEmpty(x.ActionName)).ToList(); |
|
|
|
var goodstechnologyIds = GoodsTechnologyList.Select(x => x.Id).ToList(); |
|
|
|
var GoodsTechnologyActionListDb = await _db.Queryable<BPA_TechnologyAction>() |
|
|
|
.Where(x => goodstechnologyIds.Contains(x.TechnologyId)).ToListAsync(); |
|
|
|
//修改添加 主表 |
|
|
|
foreach (var item in GoodsTechnologyList) |
|
|
|
{ |
|
|
|
var thisitem = GoodsTechnologyListDB.FirstOrDefault(x => x.Name == item.Name); |
|
|
|
|
|
|
|
foreach (var item in GoodsTechnologyActionList) |
|
|
|
if (thisitem != null) |
|
|
|
{ |
|
|
|
var thisitem = GoodsTechnologyActionListDb.FirstOrDefault(x => item.TechnologyId == x.TechnologyId && item.ActionName == x.ActionName); |
|
|
|
if (thisitem != null) |
|
|
|
{ |
|
|
|
item.Id = thisitem.Id; |
|
|
|
item.CreateAt = DateTime.Now; |
|
|
|
_db.Updateable(item).ExecuteCommand(); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
item.Id = Guid.NewGuid().ToString(); |
|
|
|
item.CreateAt= DateTime.Now; |
|
|
|
await _db.Insertable(item).ExecuteCommandAsync(); |
|
|
|
} |
|
|
|
item.Id = thisitem.Id; |
|
|
|
item.CreateAt = DateTime.Now; |
|
|
|
_db.Updateable(item).ExecuteCommand(); |
|
|
|
} |
|
|
|
#endregion |
|
|
|
var path = inputDto.AliyunUrl; |
|
|
|
var TechnologyExportRecode = _db.Queryable<BPA_TechnologyExportRecode>().Where(x=>x.DeviceVersionId == inputDto.Id).First(); |
|
|
|
if (TechnologyExportRecode != null) |
|
|
|
else |
|
|
|
{ |
|
|
|
TechnologyExportRecode.CreateAt= DateTime.Now; |
|
|
|
TechnologyExportRecode.TemplatePath = path; |
|
|
|
var vvv= await _db.Updateable(TechnologyExportRecode).ExecuteCommandAsync(); |
|
|
|
//item.Id = Guid.NewGuid().ToString(); |
|
|
|
item.CreateAt = DateTime.Now; |
|
|
|
await _db.Insertable(item).ExecuteCommandAsync(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//修改添从表 |
|
|
|
GoodsTechnologyActionList = GoodsTechnologyActionList.Where(x => !string.IsNullOrEmpty(x.ActionName)).ToList(); |
|
|
|
var goodstechnologyIds = GoodsTechnologyList.Select(x => x.Id).ToList(); |
|
|
|
var GoodsTechnologyActionListDb = await _db.Queryable<BPA_TechnologyAction>() |
|
|
|
.Where(x => goodstechnologyIds.Contains(x.TechnologyId)).ToListAsync(); |
|
|
|
|
|
|
|
foreach (var item in GoodsTechnologyActionList) |
|
|
|
{ |
|
|
|
var thisitem = GoodsTechnologyActionListDb.FirstOrDefault(x => item.TechnologyId == x.TechnologyId && item.ActionName == x.ActionName); |
|
|
|
if (thisitem != null) |
|
|
|
{ |
|
|
|
item.Id = thisitem.Id; |
|
|
|
item.CreateAt = DateTime.Now; |
|
|
|
_db.Updateable(item).ExecuteCommand(); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
|
|
|
|
item.Id = Guid.NewGuid().ToString(); |
|
|
|
item.CreateAt = DateTime.Now; |
|
|
|
await _db.Insertable(item).ExecuteCommandAsync(); |
|
|
|
} |
|
|
|
} |
|
|
|
#endregion |
|
|
|
var path = inputDto.AliyunUrl; |
|
|
|
var TechnologyExportRecode = _db.Queryable<BPA_TechnologyExportRecode>().Where(x => x.DeviceVersionId == inputDto.Id).First(); |
|
|
|
if (TechnologyExportRecode != null) |
|
|
|
{ |
|
|
|
TechnologyExportRecode.CreateAt = DateTime.Now; |
|
|
|
TechnologyExportRecode.TemplatePath = path; |
|
|
|
var vvv = await _db.Updateable(TechnologyExportRecode).ExecuteCommandAsync(); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
|
|
|
|
BPA_TechnologyExportRecode _TechnologyExportRecode = new(); |
|
|
|
_TechnologyExportRecode.Id = Guid.NewGuid().ToString(); |
|
|
|
_TechnologyExportRecode.CreateAt = DateTime.Now; |
|
|
|
_TechnologyExportRecode.ProductId = inputDto.DeviceClientType; |
|
|
|
_TechnologyExportRecode.DeviceVersionId = inputDto.Id; |
|
|
|
_TechnologyExportRecode.TemplatePath= path; |
|
|
|
await _db.Insertable(_TechnologyExportRecode).ExecuteCommandAsync(); |
|
|
|
|
|
|
|
_TechnologyExportRecode.Id = Guid.NewGuid().ToString(); |
|
|
|
_TechnologyExportRecode.CreateAt = DateTime.Now; |
|
|
|
_TechnologyExportRecode.ProductId = inputDto.DeviceClientType; |
|
|
|
_TechnologyExportRecode.DeviceVersionId = inputDto.Id; |
|
|
|
_TechnologyExportRecode.TemplatePath = path; |
|
|
|
await _db.Insertable(_TechnologyExportRecode).ExecuteCommandAsync(); |
|
|
|
|
|
|
|
//await _db.Updateable<BPA_TechnologyExportRecode>() |
|
|
|
// .SetColumns(it => it.TemplatePath == path) |
|
|
|
// .Where(it => it.Id == inputDto.Id) |
|
|
|
// .ExecuteCommandAsync(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//} |
|
|
|
_db.Ado.CommitTran(); |
|
|
|
} |
|
|
@@ -1257,6 +1253,161 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 商品导入 |
|
|
|
/// </summary> |
|
|
|
/// <param name="importDto"></param> |
|
|
|
/// <returns></returns> |
|
|
|
public async Task<bool> GoodsImport(GoodsInfoImportDto importDto) |
|
|
|
{ |
|
|
|
var file = importDto.File; |
|
|
|
var aliyunHost = "https://bpa.oss-cn-chengdu.aliyuncs.com/"; |
|
|
|
var userId = App.User?.FindFirst(ClaimConst.CLAINM_USERID)?.Value; |
|
|
|
if (string.IsNullOrEmpty(userId)) |
|
|
|
{ |
|
|
|
userId = ""; |
|
|
|
} |
|
|
|
var goodsInfo = await _db.Queryable<BPA_GoodsInfo>().ToListAsync(); |
|
|
|
var goodsType = await _db.Queryable<BPA_GoodsType>().ToListAsync(); |
|
|
|
var goodsUint = await _db.Queryable<BPA_GoodsUint>().ToListAsync(); |
|
|
|
try |
|
|
|
{ |
|
|
|
_db.Ado.BeginTran(); |
|
|
|
var source = file.OpenReadStream(); |
|
|
|
var mapper = new Mapper(source); |
|
|
|
var excelDto = new ReadExcel<GoodsImportDto>(); |
|
|
|
var dataList = excelDto.ExcelToList(source, mapper); |
|
|
|
dataList.RemoveAll(t => t.Name == null); |
|
|
|
UpdateGoodsImportDto(dataList); |
|
|
|
var imageList = await GetImagesWithExcel(file.OpenReadStream(), Path.GetExtension(file.FileName)); |
|
|
|
var newUnitList = new List<BPA_GoodsUint>(); |
|
|
|
var i = 0; |
|
|
|
foreach (var data in dataList) |
|
|
|
{ |
|
|
|
if (data.Type == null) |
|
|
|
throw Oops.Oh($"商品分类不能为空!"); |
|
|
|
if (data.Name == null) |
|
|
|
throw Oops.Oh($"商品名称不能为空!"); |
|
|
|
if (data.Uint == null) |
|
|
|
throw Oops.Oh($"商品单位不能为空!"); |
|
|
|
var type = goodsType.FirstOrDefault(t => t.Name == data.Type); |
|
|
|
if (type == null) |
|
|
|
throw Oops.Oh($"{data.Name} 不存在分类:{data.Type}!"); |
|
|
|
var old = goodsInfo.FirstOrDefault(t => t.Name == data.Name && t.GoodsTypeId == type.Id); |
|
|
|
if (old != null) |
|
|
|
throw Oops.Oh($"{data.Name} 已存在该商品!"); |
|
|
|
var uintId = ""; |
|
|
|
var uintData = goodsUint.FirstOrDefault(t => t.Name == data.Uint); |
|
|
|
var newUnitData = newUnitList.FirstOrDefault(t => t.Name == data.Uint); |
|
|
|
if (uintData != null || newUnitData != null) |
|
|
|
uintId = uintData != null ? uintData.Id : newUnitData.Id; |
|
|
|
else |
|
|
|
{ |
|
|
|
uintId = Guid.NewGuid().ToString(); |
|
|
|
var newUint = new BPA_GoodsUint |
|
|
|
{ |
|
|
|
Id = uintId, |
|
|
|
Name = data.Uint, |
|
|
|
CreateBy = userId |
|
|
|
}; |
|
|
|
newUnitList.Add(newUint); |
|
|
|
await _db.Insertable(newUint).ExecuteCommandAsync(); |
|
|
|
} |
|
|
|
var imgUrl = data.ImgUrl != null ? data.ImgUrl.ToString() : ""; |
|
|
|
if (!imgUrl.Contains("=DISPIMG")) |
|
|
|
imgUrl = null; |
|
|
|
else |
|
|
|
{ |
|
|
|
imgUrl = aliyunHost + imageList[i]; |
|
|
|
i++; |
|
|
|
} |
|
|
|
var newValue = new BPA_GoodsInfo |
|
|
|
{ |
|
|
|
Id = Guid.NewGuid().ToString(), |
|
|
|
Name = data.Name, |
|
|
|
GoodsTypeId = type.Id, |
|
|
|
Descritption = data.Descritption, |
|
|
|
ImgUrl = imgUrl, |
|
|
|
Code = GetNumber2(8), |
|
|
|
Price = data.Price, |
|
|
|
CreateBy = userId, |
|
|
|
GoodsUintId = uintId, |
|
|
|
IsWeigh = data.IsWeigh == "是", |
|
|
|
IsAttrubute = true |
|
|
|
}; |
|
|
|
await _db.Insertable(newValue).ExecuteCommandAsync(); |
|
|
|
} |
|
|
|
_db.Ado.CommitTran(); |
|
|
|
} |
|
|
|
catch (Exception e) |
|
|
|
{ |
|
|
|
_db.Ado.RollbackTran(); |
|
|
|
throw Oops.Oh($"Excel导入错误," + e.Message); |
|
|
|
} |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
public List<GoodsImportDto> UpdateGoodsImportDto(List<GoodsImportDto> list) |
|
|
|
{ |
|
|
|
foreach (var item in list) |
|
|
|
{ |
|
|
|
item.Name = item.Name?.Trim(); |
|
|
|
item.Type = item.Type?.Trim(); |
|
|
|
item.Uint = item.Uint?.Trim(); |
|
|
|
item.IsWeigh = item.IsWeigh?.Trim(); |
|
|
|
item.Descritption = item.Descritption?.Trim(); |
|
|
|
} |
|
|
|
return list; |
|
|
|
} |
|
|
|
|
|
|
|
public async Task<List<string>> GetImagesWithExcel(Stream stream, string fileType) |
|
|
|
{ |
|
|
|
try |
|
|
|
{ |
|
|
|
var result = new List<string>(); |
|
|
|
IWorkbook workbook; |
|
|
|
if (fileType == ".xlsx") |
|
|
|
{ |
|
|
|
workbook = new XSSFWorkbook(stream); |
|
|
|
var pictures = workbook.GetAllPictures(); |
|
|
|
foreach (XSSFPictureData pic in pictures) |
|
|
|
{ |
|
|
|
using (var ms = new MemoryStream(pic.Data)) |
|
|
|
{ |
|
|
|
var suffix = pic.SuggestFileExtension(); |
|
|
|
var fileName = Guid.NewGuid().ToString(); |
|
|
|
IFormFile formFile = new FormFile(ms, 0, ms.Length, "name", $"{fileName}.{suffix}"); |
|
|
|
result.Add(await _aliyunOssService.UpFileAsync(formFile)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
else if (fileType == ".xls") |
|
|
|
{ |
|
|
|
workbook = new HSSFWorkbook(stream); |
|
|
|
var pictures = workbook.GetAllPictures(); |
|
|
|
foreach (HSSFPictureData pic in pictures) |
|
|
|
{ |
|
|
|
using (var ms = new MemoryStream(pic.Data)) |
|
|
|
{ |
|
|
|
var suffix = pic.SuggestFileExtension(); |
|
|
|
var fileName = Guid.NewGuid().ToString(); |
|
|
|
IFormFile formFile = new FormFile(ms, 0, ms.Length, "name", $"{fileName}.{suffix}"); |
|
|
|
result.Add(await _aliyunOssService.UpFileAsync(formFile)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
throw new Exception("传入的不是Excel文件!"); |
|
|
|
} |
|
|
|
return result; |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
throw new Exception(ex.Message); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 商品工艺导入 |
|
|
|
/// </summary> |
|
|
@@ -1265,7 +1416,7 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
public async Task<bool> GoodsTechnologyImport(GoodsTechnologyImportDto importDto) |
|
|
|
{ |
|
|
|
string pattern = @"(?<part1>[^,(]+),(?<part2>\([^)]+\)),(?<part3>[^,]+)"; |
|
|
|
var file = importDto.file; |
|
|
|
var file = importDto.File; |
|
|
|
var userId = App.User?.FindFirst(ClaimConst.CLAINM_USERID)?.Value; |
|
|
|
if (string.IsNullOrEmpty(userId)) |
|
|
|
{ |
|
|
@@ -1480,7 +1631,7 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 商品工艺导出 |
|
|
|
/// 商品工艺模版导出 |
|
|
|
/// </summary> |
|
|
|
/// <param name="exportDto"></param> |
|
|
|
/// <returns></returns> |
|
|
@@ -1576,7 +1727,7 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
sheet.AddMergedRegion(new CellRangeAddress(1, 2, 4, 4)); |
|
|
|
#endregion |
|
|
|
} |
|
|
|
var tempFolder = Path.Combine(_hostingEnvironment.ContentRootPath, "TechnologyTemplate"); |
|
|
|
var tempFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TechnologyTemplate"); |
|
|
|
if (!Directory.Exists(tempFolder)) |
|
|
|
Directory.CreateDirectory(tempFolder); |
|
|
|
var time = DateTime.Now.ToString("yyyy年MM月dd日HH时mm分ss秒"); |
|
|
@@ -1589,6 +1740,70 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
return fileBase64; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 商品工艺导出 |
|
|
|
/// </summary> |
|
|
|
/// <param name="goodName"></param> |
|
|
|
/// <returns></returns> |
|
|
|
public async Task<string> GoodsSimpleExport(string goodName) |
|
|
|
{ |
|
|
|
var goodsAttributeList = await _db.Queryable<BPA_GoodsAttribute>().ToListAsync(); |
|
|
|
var goodsAttributeValueList = await _db.Queryable<BPA_GoodsAttributeValue>().Where(t => goodsAttributeList.Select(a => a.Id).Contains(t.GoodsAttributeId)).OrderBy(a => a.Sort).ToListAsync(); |
|
|
|
var goodsType = await _db.Queryable<BPA_GoodsType>().ToListAsync(); |
|
|
|
var goodsInfo = await _db.Queryable<BPA_GoodsInfo>().FirstAsync(t => t.Name == goodName); |
|
|
|
if (goodsInfo == null) |
|
|
|
throw Oops.Oh("商品不存在!"); |
|
|
|
var actionList = await _db.Queryable<BPA_GoodsTechnologyAction>().Where(t => t.GoodsId == goodsInfo.Id).OrderBy(a => a.GoodsAttributeId).OrderBy(a => a.Order).ToListAsync(); |
|
|
|
IWorkbook workbook = new XSSFWorkbook(); |
|
|
|
string[] charsToReplace = new string[] { "\\", "/", "?", "*", "[", "]" }; |
|
|
|
foreach (string c in charsToReplace) |
|
|
|
{ |
|
|
|
goodName = goodName.Replace(c, " "); |
|
|
|
} |
|
|
|
ISheet sheet = workbook.CreateSheet(goodName); |
|
|
|
IRow headerRow = sheet.CreateRow(0); |
|
|
|
headerRow.CreateCell(0).SetCellValue("商品名称"); |
|
|
|
headerRow.CreateCell(1).SetCellValue("属性组合"); |
|
|
|
headerRow.CreateCell(2).SetCellValue("工序"); |
|
|
|
headerRow.CreateCell(3).SetCellValue("工序参数"); |
|
|
|
headerRow.CreateCell(4).SetCellValue("参数值"); |
|
|
|
var k = 1; |
|
|
|
for (int i = 0; i < actionList.Count; i++) |
|
|
|
{ |
|
|
|
var stepName = actionList[i].StepName; |
|
|
|
var attributeNames = ""; |
|
|
|
var attributeNameList = new List<string>(); |
|
|
|
var goodsAttributeIdList = actionList[i].GoodsAttributeId.Split(','); |
|
|
|
foreach (var goodsAttributeId in goodsAttributeIdList) |
|
|
|
{ |
|
|
|
attributeNameList.Add(goodsAttributeValueList.FirstOrDefault(t => t.Id == goodsAttributeId)?.AttributeValue); |
|
|
|
} |
|
|
|
attributeNames = string.Join("-", attributeNameList); |
|
|
|
var actionJsonList = JsonConvert.DeserializeObject<List<ActionJsonModel>>(actionList[i].ActionJson); |
|
|
|
for (int j = 0; j < actionJsonList.Count; j++) |
|
|
|
{ |
|
|
|
IRow dataRow = sheet.CreateRow(k); |
|
|
|
dataRow.CreateCell(0).SetCellValue(goodName); |
|
|
|
dataRow.CreateCell(1).SetCellValue(attributeNames); |
|
|
|
dataRow.CreateCell(2).SetCellValue(stepName); |
|
|
|
dataRow.CreateCell(3).SetCellValue(actionJsonList[j].actionName); |
|
|
|
dataRow.CreateCell(4).SetCellValue(actionJsonList[j].actionValue); |
|
|
|
k++; |
|
|
|
} |
|
|
|
} |
|
|
|
var tempFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "GoodsTechnologyData"); |
|
|
|
if (!Directory.Exists(tempFolder)) |
|
|
|
Directory.CreateDirectory(tempFolder); |
|
|
|
var time = DateTime.Now.ToString("yyyy年MM月dd日HH时mm分ss秒"); |
|
|
|
var filePath = Path.Combine(tempFolder, $"{goodName}导出-{time}.xlsx"); |
|
|
|
using (var stream = new FileStream(filePath, FileMode.Create, FileAccess.Write)) |
|
|
|
{ |
|
|
|
workbook.Write(stream); |
|
|
|
} |
|
|
|
var fileBase64 = Convert.ToBase64String(File.ReadAllBytes(filePath)); |
|
|
|
return fileBase64; |
|
|
|
} |
|
|
|
|
|
|
|
public static List<string> GenerateCombinations(Dictionary<string, List<string>> values, bool isId, BPA_GoodsInfo goodInfo, BPA_DeviceInfo deviceInfo) |
|
|
|
{ |
|
|
|
var attributes = values.Keys.ToList(); |
|
|
@@ -1850,13 +2065,14 @@ namespace BPA.SAAS.Manage.Application.DataBase.Services |
|
|
|
}, data); |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
private string GetNumber2(int Length = 10) |
|
|
|
|
|
|
|
private string GetNumber2(int Length = 10) |
|
|
|
{ |
|
|
|
byte[] buffer = Guid.NewGuid().ToByteArray(); |
|
|
|
var ram = BitConverter.ToInt64(buffer, 0); |
|
|
|
var str = string.Format("{0}", ram.ToString().Substring(0, Length)); |
|
|
|
return str; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |