using HslCommunication.WebSocket;
|
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Mvc;
|
using System.Collections.Generic;
|
using WIDESEA_Common.CommonEnum;
|
using WIDESEA_Common.LocationEnum;
|
using WIDESEA_Core;
|
using WIDESEA_Core.BaseController;
|
using WIDESEA_Core.Enums;
|
using WIDESEA_DTO.Basic;
|
using WIDESEA_IBasicRepository;
|
using WIDESEA_IBasicService;
|
using WIDESEA_ISystemRepository;
|
using WIDESEA_Model.Models;
|
|
namespace WIDESEA_WMSServer.Controllers.Basic
|
{
|
/// <summary>
|
/// 货位
|
/// </summary>
|
[Route("api/LocationInfoRow")]
|
[ApiController]
|
public class LocationInfoRowController : ApiBaseController<ILocationInfoService, Dt_LocationInfo>
|
{
|
private readonly ILocationInfoRepository _repository;
|
private readonly ISys_RoleDataPermissionRepository _permissionRepository;
|
private readonly ILocationInfoRepository _locationInfoRepository;
|
public LocationInfoRowController(ILocationInfoService service, ILocationInfoRepository repository, ISys_RoleDataPermissionRepository permissionRepository, ILocationInfoRepository locationInfoRepository) : base(service)
|
{
|
_repository = repository;
|
_permissionRepository = permissionRepository;
|
_locationInfoRepository = locationInfoRepository;
|
}
|
/// <summary>
|
/// 获取库区权限
|
/// </summary>
|
/// <returns></returns>
|
[HttpGet, HttpPost, Route("GetArea"), AllowAnonymous]
|
public object GetArea()
|
{
|
List<object> list = new List<object>();
|
List<Dt_LocationInfo>? locations = null;
|
List<Sys_RoleDataPermission> permissions = _permissionRepository.QueryData(x => x.RoleId == App.User.RoleId);
|
if (permissions.Count > 0)
|
locations = _locationInfoRepository.QueryData(x => permissions.Select(k => k.WarehouseId).ToList().Contains(x.WarehouseId));
|
foreach (var permission in permissions)
|
{
|
var Rows = locations.Where(x => x.WarehouseId == permission.WarehouseId).GroupBy(x => x.Row).Select(x => x.Key).OrderBy(x => x).ToList();
|
var obj = new
|
{
|
house_name = permission.WarehouseName,
|
shelf_code = permission.WarehouseId,
|
tunnel = Rows
|
};
|
list.Add(obj);
|
}
|
return list;
|
}
|
/// <summary>
|
/// 获取货位信息
|
/// </summary>
|
/// <param name="area"></param>
|
/// <returns></returns>
|
[HttpPost, Route("GetLocationStatu"), AllowAnonymous]
|
public object GetLocationStatu([FromBody] LocationArea area)
|
{
|
List<LocationLayer> layers = new List<LocationLayer>();
|
var data = _locationInfoRepository.QueryData(x => x.WarehouseId == area.shelf_code && x.Row == area.tunnel);
|
foreach (var layer in data.GroupBy(t => t.Layer))
|
{
|
var rows = new List<LocationRow>();
|
var data_rows = layer.GroupBy(t => t.Row);
|
foreach (var data_row in data_rows)
|
{
|
var cols = new List<LocationCol>();
|
foreach (var data_col in data_row)
|
{
|
cols.Add(new LocationCol()
|
{
|
//列
|
row = data_col.Row,
|
layer = data_col.Layer,
|
index = data_col.Column,
|
locationCode = data_col.LocationCode,
|
location_state = data_col.LocationStatus,
|
location_lock = data_col.EnableStatus,
|
remark = data_col.Remark
|
});
|
}
|
cols = cols.OrderBy(t => t.index).ToList();
|
rows.Add(new LocationRow()
|
{
|
//行
|
index = data_row.Key,
|
cols = cols
|
});
|
}
|
rows = rows.OrderBy(t => t.index).ToList();
|
layers.Add(new LocationLayer()
|
{
|
//层
|
index = layer.Key,
|
rows = rows
|
});
|
}
|
layers = layers.OrderBy(t => t.index).ToList();
|
return layers;
|
}
|
}
|
}
|