|
@@ -8,6 +8,8 @@ using System.Threading.Tasks;
|
|
|
using AutoMapper;
|
|
|
using OASystem.Domain.Dtos.PersonnelModule;
|
|
|
using SqlSugar;
|
|
|
+using NPOI.SS.Formula.Functions;
|
|
|
+using OASystem.Domain.Entities.Groups;
|
|
|
|
|
|
namespace OASystem.Infrastructure.Repositories.PersonnelModule
|
|
|
{
|
|
@@ -15,14 +17,14 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
|
|
|
/// 物品进销存
|
|
|
/// 仓储
|
|
|
/// </summary>
|
|
|
- public class GoodsRepository:BaseRepository<Pm_GoodsInfo,GoodsInfoView>
|
|
|
+ public class GoodsRepository : BaseRepository<Pm_GoodsInfo, GoodsInfoView>
|
|
|
{
|
|
|
private readonly IMapper _mapper;
|
|
|
private JsonView _jv;
|
|
|
- public GoodsRepository(SqlSugarClient sqlSugar,IMapper mapper):base(sqlSugar)
|
|
|
+ public GoodsRepository(SqlSugarClient sqlSugar, IMapper mapper) : base(sqlSugar)
|
|
|
{
|
|
|
_mapper = mapper;
|
|
|
- _jv = new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = "无效请求!" };
|
|
|
+ _jv = new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = "操作失败!" };
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -49,17 +51,28 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
|
|
|
//})
|
|
|
.ToListAsync();
|
|
|
|
|
|
+ var groupData = await _sqlSugar.Queryable<Grp_DelegationInfo>()
|
|
|
+ .Where(x => x.IsDel == 0)
|
|
|
+ .Select(x => new
|
|
|
+ {
|
|
|
+ id = x.Id,
|
|
|
+ groupName = x.TeamName
|
|
|
+ })
|
|
|
+ .OrderByDescending(x => x.id)
|
|
|
+ .ToListAsync();
|
|
|
+
|
|
|
+
|
|
|
_jv.Code = StatusCodes.Status200OK;
|
|
|
- _jv.Data = typeData;
|
|
|
+ _jv.Data = new { goodsTypeData = typeData, groupNameData = groupData };
|
|
|
_jv.Msg = $"操作成功";
|
|
|
return _jv;
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 物品列表
|
|
|
- /// </summary>
|
|
|
- /// <param name="_dto"></param>
|
|
|
- /// <returns></returns>
|
|
|
+ /// <summary>
|
|
|
+ /// 物品列表
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="_dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
public async Task<JsonView> GoodsList(GoodsListDTO _dto)
|
|
|
{
|
|
|
var ids = new List<int>();
|
|
@@ -109,12 +122,12 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
|
|
|
/// </summary>
|
|
|
/// <param name="_dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- public async Task<JsonView> GoodsInfo(int portType,int id)
|
|
|
+ public async Task<JsonView> GoodsInfo(int portType, int id)
|
|
|
{
|
|
|
var data = await _sqlSugar.Queryable<Pm_GoodsInfo>()
|
|
|
.LeftJoin<Sys_SetData>((gi, sd) => gi.Type == sd.Id)
|
|
|
.LeftJoin<Sys_Users>((gi, sd, u1) => gi.LastUpdateUserId == u1.Id)
|
|
|
- .LeftJoin<Sys_Users>((gi, sd, u1 ,u2) => gi.CreateUserId == u2.Id)
|
|
|
+ .LeftJoin<Sys_Users>((gi, sd, u1, u2) => gi.CreateUserId == u2.Id)
|
|
|
.Where((gi, sd, u1, u2) => gi.IsDel == 0 && gi.Id == id)
|
|
|
.Select((gi, sd, u1, u2) => new
|
|
|
{
|
|
@@ -176,7 +189,7 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
|
|
|
.ExecuteCommandAsync();
|
|
|
if (upd > 0)
|
|
|
{
|
|
|
- _jv.Msg = $"修改成功!";
|
|
|
+ _jv.Msg = $"修改成功!";
|
|
|
_jv.Code = StatusCodes.Status200OK;
|
|
|
return _jv;
|
|
|
}
|
|
@@ -201,6 +214,56 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
|
|
|
return _jv;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 物品 Del
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="id"></param>
|
|
|
+ /// <param name="currUserId"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<JsonView> GoodsDel(int id, int currUserId)
|
|
|
+ {
|
|
|
+ _sqlSugar.BeginTran();
|
|
|
+
|
|
|
+ var goods = await _sqlSugar.Updateable<Pm_GoodsInfo>()
|
|
|
+ .SetColumns(x => new Pm_GoodsInfo()
|
|
|
+ {
|
|
|
+ IsDel = 1,
|
|
|
+ DeleteUserId = currUserId,
|
|
|
+ DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
|
|
|
+ })
|
|
|
+ .Where(x => x.Id == id)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+ if (goods < 1)
|
|
|
+ {
|
|
|
+ _sqlSugar.RollbackTran();
|
|
|
+ _jv.Msg = $"操作失败";
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+
|
|
|
+ var goodsStorage = await _sqlSugar.Updateable<Pm_GoodsStorage>()
|
|
|
+ .SetColumns(x => new Pm_GoodsStorage()
|
|
|
+ {
|
|
|
+ IsDel = 1,
|
|
|
+ DeleteUserId = currUserId,
|
|
|
+ DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
|
|
|
+ })
|
|
|
+ .Where(x => x.Id == id)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+
|
|
|
+ var goodsReceive = await _sqlSugar.Updateable<Pm_GoodsReceive>()
|
|
|
+ .SetColumns(x => new Pm_GoodsReceive()
|
|
|
+ {
|
|
|
+ IsDel = 1,
|
|
|
+ DeleteUserId = currUserId,
|
|
|
+ DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
|
|
|
+ })
|
|
|
+ .Where(x => x.Id == id)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+ _sqlSugar.CommitTran();
|
|
|
+ _jv.Code = StatusCodes.Status200OK;
|
|
|
+ _jv.Msg = $"操作成功!";
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 物品入库列表
|
|
@@ -277,40 +340,151 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
|
|
|
return _jv;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/// <summary>
|
|
|
/// 物品入库 操作(Create Or Edit)
|
|
|
/// </summary>
|
|
|
/// <param name="id"></param>
|
|
|
/// <returns></returns>
|
|
|
- public async Task<JsonView> GoodsStorageOP(int portType, int id)
|
|
|
+ public async Task<JsonView> GoodsStorageOP(GoodsStorageOPDTO _dto)
|
|
|
{
|
|
|
- var data = await _sqlSugar.Queryable<Pm_GoodsStorage>()
|
|
|
- .LeftJoin<Pm_GoodsInfo>((gs, gi) => gs.GoodsId == gi.Id)
|
|
|
- .LeftJoin<Sys_Users>((gs, gi, u) => gs.CreateUserId == u.Id)
|
|
|
- .Where((gs, gi, u) => gs.IsDel == 0)
|
|
|
- .WhereIF(id > 0, (gs, gi, u) => gs.GoodsId == id)
|
|
|
- .Select((gs, gi, u) => new
|
|
|
- {
|
|
|
- gs.Id,
|
|
|
- gs.GoodsId,
|
|
|
- GoodsName = gi.Name,
|
|
|
- gs.Quantity,
|
|
|
- gs.UnitPrice,
|
|
|
- gs.TotalPrice,
|
|
|
- gs.SupplierName,
|
|
|
- gs.SupplierTel,
|
|
|
- gs.SupplierAddress,
|
|
|
- gs.SupplierSource,
|
|
|
- CreateUserName = u.CnName,
|
|
|
- gs.CreateTime,
|
|
|
- gs.Remark
|
|
|
- })
|
|
|
- .FirstAsync();
|
|
|
+ var info = _mapper.Map<Pm_GoodsStorage>(_dto);
|
|
|
+ info.CreateUserId = _dto.CurrUserId;
|
|
|
|
|
|
- _jv.Msg = $"操作成功!";
|
|
|
- _jv.Code = StatusCodes.Status200OK;
|
|
|
- _jv.Data = data;
|
|
|
+ decimal editAgoQauntity = 0.00M,
|
|
|
+ editAgoTotalPrice = 0.00M;
|
|
|
+
|
|
|
+ _sqlSugar.BeginTran();
|
|
|
+ if (info.Id > 0) //修改
|
|
|
+ {
|
|
|
+ var selectInfo = await _sqlSugar.Queryable<Pm_GoodsStorage>()
|
|
|
+ .Where(x => x.Id == _dto.Id)
|
|
|
+ .FirstAsync();
|
|
|
+ editAgoQauntity = selectInfo.Quantity;
|
|
|
+ editAgoTotalPrice = selectInfo.TotalPrice;
|
|
|
+
|
|
|
+ var stoageEdit = await _sqlSugar.Updateable<Pm_GoodsStorage>(info)
|
|
|
+ .UpdateColumns(x => new
|
|
|
+ {
|
|
|
+ x.Quantity,
|
|
|
+ x.UnitPrice,
|
|
|
+ x.TotalPrice,
|
|
|
+ x.SupplierName,
|
|
|
+ x.SupplierTel,
|
|
|
+ x.SupplierAddress,
|
|
|
+ x.SupplierSource,
|
|
|
+ })
|
|
|
+ .Where(x => x.Id == _dto.Id)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+ if (stoageEdit < 1)
|
|
|
+ {
|
|
|
+ _sqlSugar.RollbackTran();
|
|
|
+ _jv.Msg = $"修改失败!";
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (info.Id < 1) //添加
|
|
|
+ {
|
|
|
+ var stoageAdd = await _sqlSugar.Insertable(info).ExecuteCommandAsync();
|
|
|
+ if (stoageAdd < 1)
|
|
|
+ {
|
|
|
+ _sqlSugar.RollbackTran();
|
|
|
+ _jv.Msg = $"添加失败!";
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var goodsInfo = await _sqlSugar.Queryable<Pm_GoodsInfo>().FirstAsync(x => x.Id == info.GoodsId);
|
|
|
+ goodsInfo.SQ_Total = goodsInfo.SQ_Total - editAgoQauntity + info.Quantity;
|
|
|
+ goodsInfo.StockQuantity = goodsInfo.StockQuantity - editAgoQauntity + info.Quantity;
|
|
|
+ goodsInfo.PriceTotal = goodsInfo.PriceTotal - editAgoTotalPrice + info.TotalPrice;
|
|
|
+ goodsInfo.LastUpdateUserId = _dto.CurrUserId;
|
|
|
+ goodsInfo.LastUpdateTime = DateTime.Now;
|
|
|
+
|
|
|
+ var goodsEdit = await _sqlSugar.Updateable(goodsInfo)
|
|
|
+ .UpdateColumns(x => new
|
|
|
+ {
|
|
|
+ x.SQ_Total,
|
|
|
+ x.StockQuantity,
|
|
|
+ x.PriceTotal,
|
|
|
+ x.LastUpdateUserId,
|
|
|
+ x.LastUpdateTime,
|
|
|
+ })
|
|
|
+ .Where(x => x.Id == info.GoodsId)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+ if (goodsEdit > 0)
|
|
|
+ {
|
|
|
+ _sqlSugar.CommitTran();
|
|
|
+ _jv.Msg = $"操作成功!";
|
|
|
+ _jv.Code = StatusCodes.Status200OK;
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+
|
|
|
+ _sqlSugar.RollbackTran();
|
|
|
+ _jv.Msg = $"操作失败!";
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 物品入库 Del
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="id"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<JsonView> GoodsStorageDel(int id, int userId)
|
|
|
+ {
|
|
|
+ var storageInfo = await _sqlSugar.Queryable<Pm_GoodsStorage>()
|
|
|
+ .Where(x => x.Id == id)
|
|
|
+ .FirstAsync();
|
|
|
+ if (storageInfo == null) return _jv;
|
|
|
+
|
|
|
+ decimal delAgoQauntity = storageInfo.Quantity,
|
|
|
+ delAgoTotalPrice = storageInfo.TotalPrice;
|
|
|
+ int goodsId = storageInfo.GoodsId;
|
|
|
+
|
|
|
+ _sqlSugar.BeginTran();
|
|
|
+
|
|
|
+ var storageDel = await _sqlSugar.Updateable<Pm_GoodsStorage>()
|
|
|
+ .SetColumns(x => new Pm_GoodsStorage
|
|
|
+ {
|
|
|
+ DeleteUserId = userId,
|
|
|
+ DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
+ IsDel = 1
|
|
|
+ })
|
|
|
+ .Where(x => x.Id == id)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+ if (storageDel < 1)
|
|
|
+ {
|
|
|
+ _sqlSugar.RollbackTran();
|
|
|
+ _jv.Msg = $"操作失败!";
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+
|
|
|
+ var goodsInfo = await _sqlSugar.Queryable<Pm_GoodsInfo>().FirstAsync(x => x.Id == goodsId);
|
|
|
+ goodsInfo.SQ_Total = goodsInfo.SQ_Total - delAgoQauntity;
|
|
|
+ goodsInfo.StockQuantity = goodsInfo.StockQuantity - delAgoQauntity;
|
|
|
+ goodsInfo.PriceTotal = goodsInfo.PriceTotal - delAgoTotalPrice;
|
|
|
+ goodsInfo.LastUpdateUserId = userId;
|
|
|
+ goodsInfo.LastUpdateTime = DateTime.Now;
|
|
|
+
|
|
|
+ var goodsEdit = await _sqlSugar.Updateable(goodsInfo)
|
|
|
+ .UpdateColumns(x => new
|
|
|
+ {
|
|
|
+ x.SQ_Total,
|
|
|
+ x.StockQuantity,
|
|
|
+ x.PriceTotal,
|
|
|
+ x.LastUpdateUserId,
|
|
|
+ x.LastUpdateTime,
|
|
|
+ })
|
|
|
+ .Where(x => x.Id == goodsId)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+ if (goodsEdit > 0)
|
|
|
+ {
|
|
|
+ _sqlSugar.CommitTran();
|
|
|
+ _jv.Msg = $"操作成功!";
|
|
|
+ _jv.Code = StatusCodes.Status200OK;
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+
|
|
|
+ _sqlSugar.RollbackTran();
|
|
|
+ _jv.Msg = $"操作失败!";
|
|
|
return _jv;
|
|
|
}
|
|
|
|
|
@@ -326,30 +500,30 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
|
|
|
var data = await _sqlSugar.Queryable<Pm_GoodsReceive>()
|
|
|
.LeftJoin<Pm_GoodsInfo>((gr, gi) => gr.GoodsId == gi.Id)
|
|
|
.LeftJoin<Sys_Users>((gr, gi, u1) => gr.AuditUserId == u1.Id)
|
|
|
- .LeftJoin<Sys_Users>((gr, gi, u1,u2) => gr.CreateUserId == u2.Id)
|
|
|
+ .LeftJoin<Sys_Users>((gr, gi, u1, u2) => gr.CreateUserId == u2.Id)
|
|
|
.Where((gr, gi, u1, u2) => gr.IsDel == 0)
|
|
|
- .WhereIF(_dto.GoodsId > 0, (gr, gi, u1, u2u) => gr.GoodsId == _dto.GoodsId)
|
|
|
- .Select((gr, gi, u1, u2) => new
|
|
|
+ .WhereIF(_dto.GoodsId > 0, (gr, gi, u1, u2) => gr.GoodsId == _dto.GoodsId)
|
|
|
+ .WhereIF(_dto.GoodsId > 0, (gr, gi, u1, u2) => gr.CreateUserId == _dto.CurrUserId)
|
|
|
+ .Select((gr, gi, u1, u2) => new GoodsReceiveListView
|
|
|
{
|
|
|
- gr.Id,
|
|
|
- gr.GroupId,
|
|
|
- gr.GoodsId,
|
|
|
+ Id = gr.Id,
|
|
|
+ GroupId = gr.GroupId,
|
|
|
+ GoodsId = gr.GoodsId,
|
|
|
GoodsName = gi.Name,
|
|
|
- gr.Quantity,
|
|
|
- gr.Reason,
|
|
|
- gr.Remark,
|
|
|
- gr.AuditStatus,
|
|
|
- AuditStatusText = gr.AuditStatus.GetDescription(),
|
|
|
- gr.AuditUserId,
|
|
|
+ Quantity = gr.Quantity,
|
|
|
+ Reason = gr.Reason,
|
|
|
+ Remark = gr.Remark,
|
|
|
+ AuditStatus = gr.AuditStatus,
|
|
|
+ //AuditStatusText = gr.AuditStatus.GetEnumDescription(),
|
|
|
+ AuditUserId = gr.AuditUserId,
|
|
|
AuditUserName = u1.CnName,
|
|
|
- gr.AuditTime,
|
|
|
+ AuditTime = gr.AuditTime,
|
|
|
CreateUserName = u2.CnName,
|
|
|
- gr.CreateTime
|
|
|
+ CreateTime = gr.CreateTime
|
|
|
})
|
|
|
- .OrderByDescending(gs => gs.CreateTime)
|
|
|
+ .OrderByDescending(gr => gr.CreateTime)
|
|
|
.ToPageListAsync(_dto.PageIndex, _dto.PageSize, total);
|
|
|
|
|
|
-
|
|
|
_jv.Code = StatusCodes.Status200OK;
|
|
|
_jv.Data = data;
|
|
|
_jv.Count = total;
|
|
@@ -360,6 +534,7 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
|
|
|
/// <summary>
|
|
|
/// 物品领用详情
|
|
|
/// </summary>
|
|
|
+ /// <param name="portType"></param>
|
|
|
/// <param name="id"></param>
|
|
|
/// <returns></returns>
|
|
|
public async Task<JsonView> GoodsReceiveInfo(int portType, int id)
|
|
@@ -395,5 +570,188 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
|
|
|
_jv.Msg = $"操作成功";
|
|
|
return _jv;
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 物品领用 OP(Add Or Edit)
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="id"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<JsonView> GoodsReceiveOP(GoodsReceiveOPDTO _dto)
|
|
|
+ {
|
|
|
+ var info = _mapper.Map<Pm_GoodsReceive>(_dto);
|
|
|
+ info.CreateUserId = _dto.CurrUserId;
|
|
|
+ _sqlSugar.BeginTran();
|
|
|
+
|
|
|
+ //物品现有库存
|
|
|
+ var stockQuantity = _sqlSugar.Queryable<Pm_GoodsInfo>()
|
|
|
+ .First(x => x.Id == info.GoodsId)
|
|
|
+ ?.StockQuantity;
|
|
|
+
|
|
|
+ //待审核 该物品数量
|
|
|
+ var waitAuditQuantity = await _sqlSugar.Queryable<Pm_GoodsReceive>()
|
|
|
+ .Where(x => x.IsDel == 0 &&
|
|
|
+ x.GoodsId == _dto.GoodsId &&
|
|
|
+ x.AuditStatus == GoodsAuditEnum.Pending
|
|
|
+ )
|
|
|
+ .SumAsync(x => x.Quantity);
|
|
|
+ if (info.Id > 0) //修改
|
|
|
+ {
|
|
|
+ //审核验证
|
|
|
+ var selectInfo = await _sqlSugar.Queryable<Pm_GoodsReceive>().FirstAsync(x => x.Id == info.Id);
|
|
|
+ if (selectInfo.AuditStatus == GoodsAuditEnum.Approved)
|
|
|
+ {
|
|
|
+ _sqlSugar.RollbackTran();
|
|
|
+ _jv.Msg = $"该条数据已通过审核,不可更改!";
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+ //物品数量验证
|
|
|
+ decimal editAfterQuantity = waitAuditQuantity - selectInfo.Quantity + info.Quantity;
|
|
|
+ if (editAfterQuantity > stockQuantity)
|
|
|
+ {
|
|
|
+ _sqlSugar.RollbackTran();
|
|
|
+ _jv.Msg = $"该物品现有库存不足,不可更改!请联系采购人员购买!";
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+
|
|
|
+ var edit = await _sqlSugar.Updateable(info)
|
|
|
+ .UpdateColumns(x => new
|
|
|
+ {
|
|
|
+ x.GroupId,
|
|
|
+ x.Quantity,
|
|
|
+ x.Reason,
|
|
|
+ x.Remark,
|
|
|
+ })
|
|
|
+ .Where(x => x.Id == info.Id)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+ if (edit > 0)
|
|
|
+ {
|
|
|
+ _sqlSugar.CommitTran();
|
|
|
+ _jv.Msg = $"操作成功!";
|
|
|
+ _jv.Code = StatusCodes.Status200OK;
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (info.Id < 1) //添加
|
|
|
+ {
|
|
|
+ //物品数量验证
|
|
|
+ decimal addAgoQuantity = waitAuditQuantity + info.Quantity;
|
|
|
+ if (addAgoQuantity > stockQuantity)
|
|
|
+ {
|
|
|
+ _sqlSugar.RollbackTran();
|
|
|
+ _jv.Msg = $"该物品现有库存不足,不可更改!请联系采购人员购买!";
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+
|
|
|
+ var add = await _sqlSugar.Insertable(info).ExecuteCommandAsync();
|
|
|
+ if (add > 0)
|
|
|
+ {
|
|
|
+ _sqlSugar.CommitTran();
|
|
|
+ _jv.Msg = $"操作成功!";
|
|
|
+ _jv.Code = StatusCodes.Status200OK;
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ _sqlSugar.RollbackTran();
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 物品领用 Audit
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="idArray"></param>
|
|
|
+ /// <param name="userId"></param>
|
|
|
+ /// <param name="auditEnum"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<JsonView> GoodsReceiveAudit(int[] idArray, int userId, GoodsAuditEnum auditEnum)
|
|
|
+ {
|
|
|
+ if (idArray.Length < 1) return _jv;
|
|
|
+
|
|
|
+ //TODO: 审核权限验证
|
|
|
+
|
|
|
+ _sqlSugar.BeginTran();
|
|
|
+ var receiveInfos = await _sqlSugar.Queryable<Pm_GoodsReceive>()
|
|
|
+ .Where(x => x.IsDel == 0 && idArray.Contains(x.Id))
|
|
|
+ .ToListAsync();
|
|
|
+
|
|
|
+ bool status = true;
|
|
|
+ foreach (var id in idArray)
|
|
|
+ {
|
|
|
+ var currInfo = receiveInfos.Find(x => x.Id == id);
|
|
|
+ var edit = await _sqlSugar.Updateable<Pm_GoodsReceive>()
|
|
|
+ .SetColumns(x => new Pm_GoodsReceive()
|
|
|
+ {
|
|
|
+ AuditStatus = auditEnum,
|
|
|
+ AuditUserId = userId,
|
|
|
+ AuditTime = DateTime.Now,
|
|
|
+ })
|
|
|
+ .Where(x => x.Id == id)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+ if (edit < 1) status = false;
|
|
|
+
|
|
|
+ var goodsInfo = await _sqlSugar.Queryable<Pm_GoodsInfo>().Where(x => x.Id == currInfo.GoodsId).FirstAsync();
|
|
|
+ goodsInfo.StockQuantity = goodsInfo.StockQuantity - currInfo.Quantity;
|
|
|
+ goodsInfo.LastUpdateTime = DateTime.Now;
|
|
|
+ goodsInfo.LastUpdateUserId = userId;
|
|
|
+
|
|
|
+ var editGoods = await _sqlSugar.Updateable<Pm_GoodsInfo>(goodsInfo)
|
|
|
+ .UpdateColumns(x => new
|
|
|
+ {
|
|
|
+ x.StockQuantity,
|
|
|
+ x.LastUpdateUserId,
|
|
|
+ x.LastUpdateTime,
|
|
|
+ })
|
|
|
+ .Where(x => x.Id == id)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+ if (editGoods < 1) status = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (status)
|
|
|
+ {
|
|
|
+ _sqlSugar.CommitTran();
|
|
|
+ _jv.Msg = $"操作成功!";
|
|
|
+ _jv.Code = StatusCodes.Status200OK;
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+
|
|
|
+ _sqlSugar.RollbackTran();
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 物品领用 Del
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="idArray"></param>
|
|
|
+ /// <param name="userId"></param>
|
|
|
+ /// <param name="auditEnum"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<JsonView> GoodsReceiveDel(int id, int currUserId)
|
|
|
+ {
|
|
|
+ var receiveInfo = await _sqlSugar.Queryable<Pm_GoodsReceive>()
|
|
|
+ .Where(x => x.IsDel == 0 && x.Id == id)
|
|
|
+ .FirstAsync();
|
|
|
+ if (receiveInfo.AuditStatus == GoodsAuditEnum.Approved)
|
|
|
+ {
|
|
|
+ _jv.Msg = $"该条数据已通过审核,不可删除!";
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+
|
|
|
+ var edit = await _sqlSugar.Updateable<Pm_GoodsReceive>()
|
|
|
+ .UpdateColumns(x => new Pm_GoodsReceive()
|
|
|
+ {
|
|
|
+ IsDel = 1,
|
|
|
+ DeleteUserId = currUserId,
|
|
|
+ DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
+ })
|
|
|
+ .Where(x => x.Id == id)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+ if (edit > 0)
|
|
|
+ {
|
|
|
+ _jv.Msg = $"操作成功!";
|
|
|
+ _jv.Code = StatusCodes.Status200OK;
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
+
|
|
|
+ return _jv;
|
|
|
+ }
|
|
|
}
|
|
|
}
|