155 lines
5.5 KiB
C#
155 lines
5.5 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using MiniExcelLibs;
|
|
using WCS.BLL.DbModels;
|
|
using WCS.BLL.Services.IService;
|
|
using WCS.BLL.Services.Service;
|
|
using WCS.DAL.Db;
|
|
using WCS.DAL.DbModels;
|
|
using WCS.Model;
|
|
using WCS.Model.ApiModel;
|
|
using WCS.Model.ApiModel.BatchBindMatDetail;
|
|
using WCS.Model.ApiModel.Home;
|
|
using WCS.Model.ApiModel.MatBaseInfo;
|
|
using WCS.Model.ApiModel.PDAMatBind;
|
|
using WCS.Model.ApiModel.User;
|
|
using WCS.Model.WebSocketModel;
|
|
|
|
namespace WCS.WebApi.Controllers
|
|
{
|
|
/// <summary>
|
|
/// PDA物料绑定相关接口
|
|
/// </summary>
|
|
[ApiController]
|
|
[Route("[controller]")]
|
|
public class BatchBindMatDetailController : ControllerBase
|
|
{
|
|
public IBatchBindMatDetailService _batchBindMatDetailService { get; set; }
|
|
|
|
public BatchBindMatDetailController(IBatchBindMatDetailService batchBindMatDetailService)
|
|
{
|
|
_batchBindMatDetailService = batchBindMatDetailService;
|
|
}
|
|
|
|
[Route("getOrderTypes")]
|
|
[HttpPost(Name = "getOrderTypes")]
|
|
public async Task<ResponseBase> getOrderTypes(RequestBase request)
|
|
{
|
|
try
|
|
{
|
|
//直接获取当前所有货架类型并返回
|
|
var OrderTypes = DbHelp.db.Queryable<OrderTypeInfo>()
|
|
.Select(t => new OrderTypeModel()
|
|
{
|
|
Id = t.Id,
|
|
OrderTypeName = t.OrderTypeName
|
|
})
|
|
.ToList();
|
|
return new PageQueryResponse<OrderTypeModel>()
|
|
{
|
|
Code = 200,
|
|
Message = "success",
|
|
Data = new PageQueryResponseData<OrderTypeModel>
|
|
{
|
|
Lists = OrderTypes,
|
|
Count = OrderTypes.Count
|
|
}
|
|
};
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return new PageQueryResponse<OrderTypeModel>()
|
|
{
|
|
Code = 300,
|
|
Message = $"查询失败:{ex.Message}",
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
[Route("getMatDetailCurrentInfosByStationCode")]
|
|
[HttpPost(Name = "getMatDetailCurrentInfosByStationCode")]
|
|
public async Task<ResponseBase> GetMatDetailCurrentInfosByStationCode(GetMatDetailCurrentInfosByStationCodeRequest request)
|
|
{
|
|
//判断参数
|
|
if (string.IsNullOrEmpty(request.StationCode))
|
|
{
|
|
return new ResponseCommon()
|
|
{
|
|
Code = 201,
|
|
Message = "工位编码为空,请联系相关人员进行配置!",
|
|
Data = null,
|
|
};
|
|
}
|
|
//判断工位是否存在
|
|
var isExsistLocation = await DbHelp.db.Queryable<LocationInfo>()
|
|
.Where(t => t.LocationCode == request.StationCode)
|
|
.AnyAsync();
|
|
//不存在工位
|
|
if (!isExsistLocation)
|
|
{
|
|
return new ResponseCommon()
|
|
{
|
|
Code = 201,
|
|
Message = $"工位[{request.StationCode}]不存在,暂时无法使用此功能!",
|
|
Data = null,
|
|
};
|
|
}
|
|
|
|
return await _batchBindMatDetailService.GetMatDetailCurrentInfosByStationCode(request);
|
|
}
|
|
|
|
|
|
[HttpPost("importMatDetailCurrentInfos")]
|
|
public async Task<ResponseBase> importMatDetailCurrentInfos([FromForm] IFormFile excelFile, [FromForm] string userName
|
|
, [FromForm] string deviceType, [FromForm] string stationCode)
|
|
{
|
|
//文件校验
|
|
if (excelFile == null || excelFile.Length == 0)
|
|
{
|
|
return new ResponseCommon()
|
|
{
|
|
Code = 201,
|
|
Message = "导入失败:文件无有效内容!"
|
|
};
|
|
}
|
|
//输入数据校验
|
|
if (string.IsNullOrEmpty(userName))
|
|
{
|
|
return new ResponseCommon()
|
|
{
|
|
Code = 201,
|
|
Message = "导入失败:参数[用户名]无效,请登录后重试!"
|
|
};
|
|
}
|
|
if (string.IsNullOrEmpty(deviceType))
|
|
{
|
|
return new ResponseCommon()
|
|
{
|
|
Code = 201,
|
|
Message = "导入失败:参数[设备类型]无效!"
|
|
};
|
|
}
|
|
if (string.IsNullOrEmpty(stationCode))
|
|
{
|
|
return new ResponseCommon()
|
|
{
|
|
Code = 201,
|
|
Message = "导入失败:参数[工位]无效,请联系相关人员维护工位编码!"
|
|
};
|
|
}
|
|
|
|
using (var stream = new MemoryStream())
|
|
{
|
|
await excelFile.CopyToAsync(stream);
|
|
stream.Position = 0;
|
|
var list = MiniExcelLibs.MiniExcel.Query<MatDetailCurrentInfoImportModel>(stream, "物料管理", ExcelType.XLSX).ToList();
|
|
//去除空白行
|
|
list.RemoveAll(x => string.IsNullOrWhiteSpace(x.物料编码));
|
|
|
|
return await _batchBindMatDetailService.importMatDetailCurrentInfo(list, userName, deviceType, stationCode);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|