using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using SqlSugar.Extensions; using WIDESEAWCS_BasicInfoRepository; using WIDESEAWCS_BasicInfoService; using WIDESEAWCS_Common; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseController; using WIDESEAWCS_DTO.PlacedBlockDTO; using WIDESEAWCS_DTO.TaskInfo; using WIDESEAWCS_IBasicInfoRepository; using WIDESEAWCS_IBasicInfoService; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_Server.Controllers.BasicInfo { [Route("api/Container")] [ApiController] public class ContainerController : ApiBaseController { private readonly IContainerRepository _containerRepository; private readonly IOrderContainerRepository _orderContainerRepository; private readonly IOrderDetailsRepository _orderDetailsRepository; private readonly IOrderrowsRepository _orderrowsRepository; private readonly IContainerItemRepository _containerItemRepository; public ContainerController(IContainerService service, IContainerRepository containerRepository, IOrderContainerRepository orderContainerRepository, IOrderDetailsRepository orderDetailsRepository, IOrderrowsRepository orderrowsRepository, IContainerItemRepository containerItemRepository) : base(service) { _containerRepository = containerRepository; _orderContainerRepository = orderContainerRepository; _orderDetailsRepository = orderDetailsRepository; _orderrowsRepository = orderrowsRepository; _containerItemRepository = containerItemRepository; } [HttpPost, HttpGet, Route("GetTaskPosition"), AllowAnonymous] public TaskPosition GetTaskPosition([FromBody] Point3D point3D, int length, int width, int height, int edge) { PlaceBlockService placeBlockService = new PlaceBlockService(new ContainerSize(), null); return placeBlockService.GetTaskPosition(point3D, length, width, height, edge); } [HttpPost, HttpGet, Route("GetPutStations"), AllowAnonymous] public WebResponseContent GetPutStations(string deviceCode) { try { List containers = _containerRepository.QueryData(x => x.DeviceCode == deviceCode && x.ContainerType == ContainerTypeEnum.PutContainer.ObjToInt()); List list = new List(); foreach (var container in containers) { List containerItemCodes = _containerItemRepository.QueryData(x => x.ContainerId == container.Id).Select(x => x.ItemCode).ToList(); Dt_OrderContainer orderContainer = _orderContainerRepository.QueryFirst(x => x.ContainerId == container.Id && x.ContainerCode == container.ContainerCode); if (orderContainer != null) { Orderrows orderrows = _orderrowsRepository.QueryFirst(x => x.id == orderContainer.OrderId); if (orderrows != null) { List totalDetails = _orderDetailsRepository.QueryData(x => x.Orderrowsid == orderrows.id); List details = totalDetails.Where(x => x.Orderrowsid == orderrows.id && x.Orderdetails_status == PalletingStatusEnmu.PalletingSuccess.ObjToInt() && containerItemCodes.Contains(x.Orderdetails_outid)).ToList(); int sortedNum = totalDetails.Where(x => x.Orderrowsid == orderrows.id && x.Orderdetails_status == PalletingStatusEnmu.PalletingSuccess.ObjToInt()).Count(); List orderData = new List(); foreach (var item in details) { object obj = new { name = item.Orderdetails_name, baseName = item.Orderdetails_productName, size = $"{item.Orderdetails_length}*{item.Orderdetails_width}*{item.Orderdetails_thickness}", process = "", }; orderData.Add(obj); } object data = new { orderCode = orderrows.Orderrows_orderid, orderName = orderrows.Orderrows_name, cusName = orderrows.Orderrows_customer, stationCode = container.ContainerCode, orderTotalNum = totalDetails.Count, sortedNum = sortedNum, unsortedNum = totalDetails.Count - sortedNum, stationSortedNum = details.Count, orderData = orderData, orderId = orderrows.id }; list.Add(data); } else { object data = new { stationSortedNum = 0, stationCode = container.ContainerCode, orderTotalNum = 0, sortedNum = 0, unsortedNum = 0, orderData = new List() }; list.Add(data); } } else { object data = new { stationCode = container.ContainerCode, orderTotalNum = 0, sortedNum = 0, unsortedNum = 0, stationSortedNum = 0, orderData = new List() }; list.Add(data); } } return WebResponseContent.Instance.OK(data: list); } catch (Exception ex) { return new WebResponseContent() { Code = 500, Message = ex.Message }; } } [HttpPost, HttpGet, Route("ReleaseContainer"), AllowAnonymous] public WebResponseContent ReleaseContainer([FromBody] int[] keys) { return Service.AutoReleaseContainer(keys); } } }