using Ant.Core.SqlServer;
using Ant.Core.Utils;
using Ant.Core.WebApi.Enum;
using Ant.Core.WebApi.Model;
using Central.Control.WebApi.DbEntity;
using Central.Control.WebApi.EFDbContext;
using Central.Control.WebApi.Models.Request;
using Central.Control.WebApi.Models.Response;
using Central.Control.WebApi.Service.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Central.Control.WebApi.Service
{
///
///
///
public class DeviceService: IDeviceService
{
private readonly IDbContext _dbContent;
private readonly IUserService _userService;
///
///
///
///
public DeviceService(
IDbContext dbContent,
IUserService userService)
{
_dbContent = dbContent;
_userService = userService;
}
///
/// 设备包装盒表
///
///
///
///
///
public PagedApiResult GetDevicePackings(string kw = "", int skip = 0, int limit = 1)
{
var session = _userService.GetLoginSession();
var query = from p in _dbContent.Set().Where(q => q.IsDelete == 0)
join dp in _dbContent.Set().Where(q => q.IsDelete == 0 && q.DeviceId == session.UserId) on p.Id equals dp.PackingId into temp
from dpp in temp.DefaultIfEmpty()
select new
{
Packing = p,
DevicePacking = dpp
};
// kw搜索
query = query.WhereIf(!string.IsNullOrWhiteSpace(kw), p => p.Packing.Name.Contains(kw));
// total
var total = query.Count();
// 查询结果
var queryResult = query.OrderByDescending(p => p.Packing.CreateDT).Skip(skip).Take(limit).ToList();
List result = new List();
queryResult.ForEach(item =>
{
// 图片转换
// current.Img = ;
result.Add(new DevicePackingResponseDto()
{
Id = item.DevicePacking?.Id ?? string.Empty,
PackingId = item.Packing.Id,
PackingName = item.Packing.Name,
PackingImg = $"{ProductService.ImagePrefix}{item.Packing.Img}",
PackingMin = item.Packing.Min,
PackingMax = item.Packing.Max,
Capacity = item.DevicePacking?.Capacity ?? 1,
Stock = item.DevicePacking?.Stock ?? 0,
});
});
return new PagedApiResult(result, total, skip, limit);
}
///
/// 设备包装盒保存
///
///
///
public ApiResult SaveDevicePacking(DevicePackingRequestDto req)
{
if (req == null
|| string.IsNullOrWhiteSpace(req.PackingId)
|| req.Stock < 0
|| req.Capacity <= 0)
{
return new ApiResult(ApiStatusCode.InvalidParameter, "请求参数不正确,请检查");
}
var session = _userService.GetLoginSession();
// 每个设备,对于每一种包装只能新增一次,其余的都只能是在上面修改库存
var devicePacking = _dbContent.Set().FirstOrDefault(p => p.IsDelete == 0 && p.DeviceId == session.UserId && p.PackingId == req.PackingId);
if (devicePacking == null && string.IsNullOrWhiteSpace(req.Id))
{
// 新增
var packing = _dbContent.Set().FirstOrDefault(p => p.IsDelete == 0 && p.Id == req.PackingId);
if (packing == null)
{
return new ApiResult(ApiStatusCode.InvalidParameter, "您选择的包装盒数据不存在");
}
devicePacking = new YW_DevicePacking()
{
Id = IdGenerator.NewId(),
PackingId = packing.Id,
DeviceId = session.UserId,
Capacity = req.Capacity,
Stock = req.Stock,
CreateBY = session.UserId
};
_dbContent.Set().Add(devicePacking);
}
else
{
// 修改
//var devicePacking = _dbContent.Set().FirstOrDefault(p => p.IsDelete == 0 && p.Id == req.Id);
//if (devicePacking == null)
//{
// return new ApiResult(ApiStatusCode.InvalidParameter, "您修改的记录不存在");
//}
devicePacking.Capacity = req.Capacity;
devicePacking.Stock = req.Stock;
devicePacking.ModifyDT = DateTime.Now;
devicePacking.ModifyBY = session.UserId;
}
// 具体执行
_dbContent.SaveChanges();
return new ApiResult();
}
}
}