|
@@ -1,15 +1,11 @@
|
|
|
-using SqlSugar;
|
|
|
+using Mapster;
|
|
|
+using SqlSugar;
|
|
|
using wms.sqlsugar.model.fj;
|
|
|
-using WMS.BZModels.Dto.FJ.BillBom;
|
|
|
using WMS.BZModels;
|
|
|
-using WMS.Info;
|
|
|
-using WMS.BZSqlSugar;
|
|
|
-using Mapster;
|
|
|
-using FreeRedis;
|
|
|
-using Org.BouncyCastle.Crypto;
|
|
|
-using System.Collections.Generic;
|
|
|
+using WMS.BZModels.Dto.FJ.BillBom;
|
|
|
using WMS.BZModels.Models.FJ;
|
|
|
-using NPOI.SS.Formula.Functions;
|
|
|
+using WMS.BZSqlSugar;
|
|
|
+using WMS.Info;
|
|
|
|
|
|
namespace WMS.BZServices.FJ
|
|
|
{
|
|
@@ -20,19 +16,22 @@ namespace WMS.BZServices.FJ
|
|
|
private readonly Repository<BillBominfo> _billBominfoRepository;
|
|
|
private readonly Repository<BaseMatinfo> _matinforepository;
|
|
|
private readonly Repository<BillPaiKu> _billPaiKurepository;
|
|
|
+ private readonly Repository<BaseWarehouse> _billBaseWarehouse;
|
|
|
|
|
|
public BillBomSetService(Repository<BillBomsetgrp> billBomsetgrpRepository,
|
|
|
Repository<BillBomsetinfo> billBomsetinfoRepository,
|
|
|
Repository<BillBominfo> billBominfoRepository,
|
|
|
Repository<BaseMatinfo> matinforepository,
|
|
|
- Repository<BillPaiKu> billPaiKurepository)
|
|
|
+ Repository<BillPaiKu> billPaiKurepository,
|
|
|
+ Repository<BaseWarehouse> billBaseWarehouse)
|
|
|
{
|
|
|
_billBomsetgrpRepository = billBomsetgrpRepository;
|
|
|
_billBomsetinfoRepository = billBomsetinfoRepository;
|
|
|
|
|
|
_billBominfoRepository = billBominfoRepository;
|
|
|
_matinforepository = matinforepository;
|
|
|
- _billPaiKurepository = billPaiKurepository;
|
|
|
+ _billPaiKurepository = billPaiKurepository;
|
|
|
+ _billBaseWarehouse = billBaseWarehouse;
|
|
|
}
|
|
|
|
|
|
public PagedInfo<BillBomsetgrpDto> GetPageList(Pagination pagination, BillBomsetgrpQueryDto billBomsetgrpQueryDto)
|
|
@@ -43,71 +42,57 @@ namespace WMS.BZServices.FJ
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
- public PagedInfo<BillPaiKuDto> GetPaiKuList(Pagination pagination, BillPaiKuQueryDto billPaiKuQueryDto)
|
|
|
+ public IEnumerable<dynamic> PaiKuGetList()
|
|
|
{
|
|
|
- //var list = GetQueryablePK(billPaiKuQueryDto)
|
|
|
- // .ToPage<BillPaiKu, BillPaiKuDto>(pagination);
|
|
|
-
|
|
|
- //return list;
|
|
|
- var predicate = Expressionable.Create<BillPaiKu, BillBomsetgrp>();
|
|
|
-
|
|
|
- predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.KeyWord), (paiku, bomsetgrp) => paiku.WarehouseCode.Contains(billPaiKuQueryDto.KeyWord));
|
|
|
- //|| m.ProCode.Contains(billPaiKuQueryDto.KeyWord) || m.ProMaterCode.Contains(billPaiKuQueryDto.KeyWord) || m.ShortCode.ToString().Contains(billPaiKuQueryDto.KeyWord));
|
|
|
- predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.WarehouseId.ToString()), (paiku, bomsetgrp) => paiku.WarehousId.ToString().Contains(billPaiKuQueryDto.WarehouseId.ToString()));
|
|
|
- predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.BomsetgrpId.ToString()), (paiku, bomsetgrp) => paiku.BomsetgrpId.ToString().Contains(billPaiKuQueryDto.BomsetgrpId.ToString()));
|
|
|
-
|
|
|
- predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.BomsetgrpName), (paiku, bomsetgrp) =>bomsetgrp.Code.Contains(billPaiKuQueryDto.BomsetgrpName));
|
|
|
- //predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.ProMaterCode), m => m.ProMaterCode.Contains(billPaiKuQueryDto.ProMaterCode));
|
|
|
- //predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.BomName), m => m.BomName.Contains(billPaiKuQueryDto.BomName));
|
|
|
- //predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.ProCode), m => m.ProCode.Contains(billPaiKuQueryDto.ProCode));
|
|
|
- //predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.StampType), m => m.StampType.Equals(billPaiKuQueryDto.StampType));
|
|
|
- //predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.IsStop), m => m.IsStop.Equals(billPaiKuQueryDto.IsStop));
|
|
|
- //predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.IsDelete), m => m.IsDelete.Equals(billPaiKuQueryDto.IsDelete));
|
|
|
-
|
|
|
- var list = _billPaiKurepository.Context.Queryable<BillPaiKu, BillBomsetgrp>((paiku, bomsetgrp) => new object[] { JoinType.Left, paiku.BomsetgrpId == bomsetgrp.Id,
|
|
|
- }).Where(predicate.ToExpression())
|
|
|
- .Select((paiku, bomsetgrp) => new BillPaiKuDto
|
|
|
- {
|
|
|
- BomsetgrpId = paiku.BomsetgrpId,
|
|
|
- BomsetgrpName = bomsetgrp.Code,
|
|
|
- WarehouseId = paiku.WarehousId,
|
|
|
- WarehouseCode = paiku.WarehouseCode,
|
|
|
- Percent = paiku.Percent
|
|
|
- }).MergeTable()
|
|
|
- .ToPage(pagination);
|
|
|
+ var list = _billBomsetgrpRepository.AsQueryable().With(SqlWith.NoLock).Where(x => x.IsStop == 0).ToList().Select(x => new { id = x.Id.ToString(), text = x.Name });
|
|
|
return list;
|
|
|
-
|
|
|
}
|
|
|
|
|
|
- //private ISugarQueryable<BillPaiKu> GetQueryablePK(BillPaiKuQueryDto billPaiKuQueryDto)
|
|
|
- //{
|
|
|
- // var predicate = Expressionable.Create<BillPaiKu,BillBomsetgrp,BaseWarehouse>();
|
|
|
-
|
|
|
- // predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.KeyWord), (paiku, bomsetgrp, warehouse) => paiku.WarehouseCode.Contains(billPaiKuQueryDto.KeyWord));
|
|
|
- // //|| m.ProCode.Contains(billPaiKuQueryDto.KeyWord) || m.ProMaterCode.Contains(billPaiKuQueryDto.KeyWord) || m.ShortCode.ToString().Contains(billPaiKuQueryDto.KeyWord));
|
|
|
- //predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.Code), m => m.Code.Contains(billPaiKuQueryDto.Code));
|
|
|
- //predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.Name), m => m.Name.Contains(billPaiKuQueryDto.Name));
|
|
|
-
|
|
|
- // //predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.ShortCode), m => m.ShortCode.ToString().Contains(billPaiKuQueryDto.ShortCode));
|
|
|
- // //predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.ProMaterCode), m => m.ProMaterCode.Contains(billPaiKuQueryDto.ProMaterCode));
|
|
|
- // //predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.BomName), m => m.BomName.Contains(billPaiKuQueryDto.BomName));
|
|
|
- // //predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.ProCode), m => m.ProCode.Contains(billPaiKuQueryDto.ProCode));
|
|
|
- // //predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.StampType), m => m.StampType.Equals(billPaiKuQueryDto.StampType));
|
|
|
- // //predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.IsStop), m => m.IsStop.Equals(billPaiKuQueryDto.IsStop));
|
|
|
- // //predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.IsDelete), m => m.IsDelete.Equals(billPaiKuQueryDto.IsDelete));
|
|
|
-
|
|
|
- // var sugarQueryable = _billPaiKurepository.Context.Queryable<BillPaiKu, BillBomsetgrp, BaseWarehouse>((paiku, bomsetgrp, warehouse) => new object[] { JoinType.Left, paiku.BomsetgrpId == bomsetgrp.Id, paiku.WarehousId == warehouse.Id }).Where(predicate.ToExpression())
|
|
|
- // .Select((paiku, bomsetgrp, warehous) => new BillPaiKuQueryDto
|
|
|
- // {
|
|
|
- // BomsetgrpId = paiku.BomsetgrpId,
|
|
|
- // BomsetgrpName = bomsetgrp.Code,
|
|
|
- // WarehouseId = paiku.WarehousId,
|
|
|
- // WarehouseCode = paiku.WarehouseCode
|
|
|
- // }).MergeTable()
|
|
|
- // .ToList();
|
|
|
- // //_billPaiKurepository.Queryable().Where(predicate.ToExpression());
|
|
|
- // return sugarQueryable;
|
|
|
- //}
|
|
|
+ public PagedInfo<BillPaiKuDto> GetPaiKuList(Pagination pagination, BillPaiKuQueryDto billPaiKuQueryDto)
|
|
|
+ {
|
|
|
+ var predicate = Expressionable.Create<BillPaiKu, BillBomsetgrp, BaseWarehouse>();
|
|
|
+
|
|
|
+ predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto?.KeyWord), (paiku, bomsetgrp, wareHouse) =>
|
|
|
+ paiku.Id.ToString() == billPaiKuQueryDto.KeyWord ||
|
|
|
+ paiku.WarehousId.ToString() == billPaiKuQueryDto.KeyWord ||
|
|
|
+ paiku.WarehouseCode.Contains(billPaiKuQueryDto.KeyWord) ||
|
|
|
+ paiku.BomsetgrpId.ToString() == billPaiKuQueryDto.KeyWord ||
|
|
|
+ paiku.BomsetgrpName.Contains(billPaiKuQueryDto.KeyWord) ||
|
|
|
+ paiku.Percent.ToString() == billPaiKuQueryDto.KeyWord);
|
|
|
+ predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto.WarehouseId), (paiku, bomsetgrp, wareHouse) => paiku.WarehousId.ToString() == billPaiKuQueryDto.WarehouseId);
|
|
|
+ predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto.BomsetgrpId), (paiku, bomsetgrp, wareHouse) => paiku.BomsetgrpId.ToString() == billPaiKuQueryDto.BomsetgrpId);
|
|
|
+ predicate = predicate.AndIF(!string.IsNullOrEmpty(billPaiKuQueryDto.Percent), (paiku, bomsetgrp, wareHouse) => paiku.Percent.ToString() == billPaiKuQueryDto.Percent);
|
|
|
+
|
|
|
+ var list = _billPaiKurepository.Context.Queryable<BillPaiKu, BillBomsetgrp, BaseWarehouse>((paiku, bomsetgrp, wareHouse) => new object[]
|
|
|
+ {
|
|
|
+ JoinType.Left, paiku.BomsetgrpId == bomsetgrp.Id,
|
|
|
+ JoinType.Left, paiku.WarehousId==wareHouse.Id,
|
|
|
+ }).Where(predicate.ToExpression())
|
|
|
+ .Select((paiku, bomsetgrp, wareHouse) => new BillPaiKuDto
|
|
|
+ {
|
|
|
+ Id = paiku.Id.ToString(),
|
|
|
+ Memo = paiku.Memo,
|
|
|
+ AddWho = paiku.AddWho,
|
|
|
+ EditWho = paiku.EditWho,
|
|
|
+ AddTime = paiku.AddTime,
|
|
|
+ EditTime = paiku.EditTime,
|
|
|
+ BomsetgrpId = paiku.BomsetgrpId.ToString(),
|
|
|
+ BomsetgrpName = paiku.BomsetgrpName,
|
|
|
+ WarehousId = paiku.WarehousId.ToString(),
|
|
|
+ WarehouseCode = paiku.WarehouseCode,
|
|
|
+ Percent = paiku.Percent
|
|
|
+ })
|
|
|
+ .MergeTable()
|
|
|
+ .OrderByIF(!pagination.sidx.IsEmpty(), $"{pagination.sidx.ToSqlFilter()} {(!string.IsNullOrWhiteSpace(pagination.sord) && pagination.sord.ToLower().Contains("desc") ? "desc" : "asc")}").ToList().Adapt<List<BillPaiKuDto>>();
|
|
|
+ var page = new PagedInfo<BillPaiKuDto>
|
|
|
+ {
|
|
|
+ PageSize = pagination.rows,
|
|
|
+ PageIndex = pagination.page,
|
|
|
+ TotalNum = list.Count,
|
|
|
+ Result = list
|
|
|
+ };
|
|
|
+ return page;
|
|
|
+ }
|
|
|
|
|
|
private ISugarQueryable<BillBomsetgrp> GetQueryable(BillBomsetgrpQueryDto billBomsetgrpQueryDto)
|
|
|
{
|
|
@@ -400,10 +385,21 @@ namespace WMS.BZServices.FJ
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 保存排库信息
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="loginUser"></param>
|
|
|
+ /// <param name="keyValue"></param>
|
|
|
+ /// <param name="billPaiKuEntity"></param>
|
|
|
public void SavePK(LoginUserInfo loginUser, string keyValue, BillPaiKu billPaiKuEntity)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
+ if (billPaiKuEntity.Percent != Math.Truncate(billPaiKuEntity.Percent) || billPaiKuEntity.Percent > 100)
|
|
|
+ {
|
|
|
+ throw BZSysExCore.ThrowFailException("占比只能传入整数,且必须小于100!");
|
|
|
+ }
|
|
|
+
|
|
|
if (billPaiKuEntity.BomsetgrpId <= 0)
|
|
|
{
|
|
|
throw BZSysExCore.ThrowFailException("垛型编码有误!");
|
|
@@ -412,34 +408,58 @@ namespace WMS.BZServices.FJ
|
|
|
{
|
|
|
throw BZSysExCore.ThrowFailException("仓库id有误!");
|
|
|
}
|
|
|
+ var bomsetgrp = _billBomsetgrpRepository.AsQueryable().With(SqlWith.NoLock).First(x => x.Id == billPaiKuEntity.BomsetgrpId);
|
|
|
+ if (bomsetgrp == null)
|
|
|
+ {
|
|
|
+ throw BZSysExCore.ThrowFailException($"未找到对应垛型{billPaiKuEntity.BomsetgrpId}!");
|
|
|
+ }
|
|
|
|
|
|
- var code = _billPaiKurepository.Context.Queryable<BaseWarehouse>().Where(x => x.Id == billPaiKuEntity.WarehousId);
|
|
|
- if (code == null)
|
|
|
+ var warehouse = _billBaseWarehouse.AsQueryable().With(SqlWith.NoLock).First(x => x.Id == billPaiKuEntity.WarehousId);
|
|
|
+ if (warehouse == null)
|
|
|
{
|
|
|
throw BZSysExCore.ThrowFailException($"未找到对应仓库{billPaiKuEntity.WarehousId}!");
|
|
|
}
|
|
|
-
|
|
|
- var percent = _billPaiKurepository.Context.Queryable<BillPaiKu>().Where(x => x.BomsetgrpId == billPaiKuEntity.BomsetgrpId && x.WarehouseCode == billPaiKuEntity.WarehouseCode).Sum(x => x.Percent);
|
|
|
- if (Math.Ceiling(percent) >= 100)
|
|
|
+ var paiKuId = Convert.ToInt64(keyValue);
|
|
|
+ var paiKu = _billPaiKurepository.GetFirst(x => x.Id == paiKuId);
|
|
|
+ if (paiKu != null) //更新
|
|
|
{
|
|
|
- throw BZSysExCore.ThrowFailException($"{billPaiKuEntity.WarehouseCode}超过最大占比,请重新调整!");
|
|
|
+ //判断此垛型排库占比总数是否超过100
|
|
|
+ var percent = _billPaiKurepository.GetList(x => x.BomsetgrpId == bomsetgrp.Id && x.Id != paiKu.Id).Sum(x => x.Percent);
|
|
|
+ if ((percent + billPaiKuEntity.Percent) > 100)
|
|
|
+ {
|
|
|
+ throw BZSysExCore.ThrowFailException($"{bomsetgrp.Name}超过最大占比,除当前编辑信息外总比重为{percent},请重新调整!");
|
|
|
+ }
|
|
|
+ paiKu.BomsetgrpId = bomsetgrp.Id;
|
|
|
+ paiKu.BomsetgrpName = bomsetgrp.Name;
|
|
|
+ paiKu.WarehousId = warehouse.Id;
|
|
|
+ paiKu.WarehouseCode = warehouse.Code;
|
|
|
+ paiKu.Percent = billPaiKuEntity.Percent;
|
|
|
+ _billPaiKurepository.Update(paiKu);
|
|
|
}
|
|
|
-
|
|
|
- BillPaiKu item = new BillPaiKu()
|
|
|
+ else //新增
|
|
|
{
|
|
|
- BomsetgrpId = billPaiKuEntity.BomsetgrpId,
|
|
|
- WarehousId = billPaiKuEntity.WarehousId,
|
|
|
- WarehouseCode = billPaiKuEntity.WarehouseCode,
|
|
|
- Percent = billPaiKuEntity.Percent
|
|
|
- };
|
|
|
- _billPaiKurepository.Insert(item);
|
|
|
+ //判断此垛型排库占比总数是否超过100
|
|
|
+ var percent = _billPaiKurepository.GetList(x => x.BomsetgrpId == bomsetgrp.Id).Sum(x => x.Percent);
|
|
|
+ if ((percent + billPaiKuEntity.Percent) > 100)
|
|
|
+ {
|
|
|
+ throw BZSysExCore.ThrowFailException($"{bomsetgrp.Name}超过最大占比,请重新调整!");
|
|
|
+ }
|
|
|
+
|
|
|
+ BillPaiKu item = new BillPaiKu()
|
|
|
+ {
|
|
|
+ BomsetgrpId = bomsetgrp.Id,
|
|
|
+ BomsetgrpName = bomsetgrp.Name,
|
|
|
+ WarehousId = warehouse.Id,
|
|
|
+ WarehouseCode = warehouse.Code,
|
|
|
+ Percent = billPaiKuEntity.Percent
|
|
|
+ };
|
|
|
+ _billPaiKurepository.Insert(item);
|
|
|
+ }
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
throw BZSysExCore.ThrowFailException(ex.Message);
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
public void Save(LoginUserInfo loginUser, string keyValue, BillBomsetgrp billBomsetgrpEntity, IList<BillBomsetinfo> billBomsetinfos)
|
|
@@ -889,12 +909,10 @@ namespace WMS.BZServices.FJ
|
|
|
{
|
|
|
_billPaiKurepository.Deleteable().Where(o => o.Id == id).ExecuteCommand();
|
|
|
}
|
|
|
- catch (Exception ex)
|
|
|
+ catch (Exception ex)
|
|
|
{
|
|
|
throw ex;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
public void Delete(long id)
|