using Admin.Core.IService;
using Admin.Core.Service;
using Admin.Core.Model;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Admin.Core.Common;
using System.Linq;
using S71500.Impl;
using Admin.Core.Model.ViewModels;
using log4net;
using Npgsql.TypeHandlers;
namespace Admin.Core.Api
{
///
/// 小料料仓类型防差错
///
[Route("api/[controller]/[action]")]
[ApiController]
[Authorize(Permissions.Name)]
[AllowAnonymous]
public class xl_materialController : BaseApiController
{
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(xl_materialServices));
int i = 0;
///
/// 物料服务
///
private readonly Ixl_materialServices _xl_materialService;
private readonly IPmt_BinServices _binServices;
private readonly IXlPlanServices _xlPlanServices;
#region 构造方法
///
/// 构造方法
///
///
public xl_materialController(Ixl_materialServices xl_materialServices, IPmt_BinServices binServices,
IXlPlanServices xlPlanServices)
{
_xl_materialService = xl_materialServices;
_binServices = binServices;
_xlPlanServices = xlPlanServices;
}
#endregion
#region 根据扫描的二维码查询小料物料
///
/// 根据扫描的二维码查询小料物料
///
/// 物料条码信息
///
[HttpGet]
public async Task> GetByMaterialCode(string code)
{
if (!code.IsNotEmptyOrNull())
{
return Failed("传入参数为空!");
}
var query = await _xl_materialService.GetByMaterialCode(code.Trim());
log.Info(query == null);
if (query == null)
{
return Failed("查询失败!");
}
return Success(query);
}
#endregion
#region 根据扫描的二维码查询料仓
///
/// 根据扫描的二维码查询料仓
///
/// 料仓条码信息
///
[HttpGet]
public async Task> GetByBinCode(string code)
{
BinView view=new BinView();
log.Info(code);
if (!code.IsNotEmptyOrNull())
{
return Failed("传入参数为空!");
}
var binList = await _binServices.QueryAsync();
var bin = binList.FirstOrDefault(d=>d.Bin_Code.Trim() == code.Trim());
if (bin == null) return Failed("未查询到桶信息!");
var _materialList = await _xl_materialService.QueryAsync(d => d.IsEnable == "是");
xl_material mater = _materialList.Where(d => d.ID == bin.Material_ID).Take(1).FirstOrDefault(d => d.ID == bin.Material_ID);
if (_materialList == null) return Failed("未查询到物料信息!");
view.Bin_Serial = bin.Bin_Serial;
view.Bin_Name = bin.Bin_Name;
view.Bin_Code = bin.Bin_Code;
view.Material_ID = mater.Material_code;
view.Material_Name = mater.Material_name;
view.Material_code = mater.Material_code;
return Success(view);
}
#endregion
#region 执行PLC
///
///执行PLC
///
/// 料仓排序Bin_Serial
/// 匹配状态:条码匹配写“1”,不匹配时写“2”
/// 物料编码
/// 物料重量
/// 物料二维码
///
[HttpGet]
public async Task> ExecPlcCode(int code, int state,string materialCode,decimal weight,string? barCode)
{
//log.Info(code + "&" + state);
if (!code.IsNotEmptyOrNull())
{
return Failed("料仓条码信息传入参数为空!");
}
if (!state.IsNotEmptyOrNull())
{
return Failed("匹配状态传入参数为空!");
}
if (!materialCode.IsNotEmptyOrNull())
{
return Failed("匹配状态传入参数为空!");
}
if (!weight.IsNotEmptyOrNull())
{
return Failed("匹配状态传入参数为空!");
}
var result = await _xl_materialService.ExecPlcState(code, state, materialCode, weight, barCode);
if (result.success)
{
return result;
}
return Failed(result.msg);
}
#endregion
#region 检量称扫码绑定桶(新加)
///
/// 检量称扫码绑定桶(新加)
///
/// 桶条码
///
[HttpGet]
public async Task> BindBarrel(string code)
{
if (!code.IsNotEmptyOrNull())
return Failed("桶条码信息传入参数为空!");
var result = await _xl_materialService.BindBarrel(code.Trim());
if (result == 0)
return Failed("未查询到正在执行的计划!");
if (result == 1)
return Failed("未查询到桶!");
if (result == 2)
return Failed($"未查询到[{code}]桶信息!");
if (result == 3)
return Failed("该桶已经绑定物料,请联系系统管理员处理!");
if (result == 6)
return Success(true);
if (result == 7)
return Failed("称重未完成!");
if (result == 8)
return Failed("PLC连接失败,请检查PLC或者联系管理员处理!");
if (result == 10)
return Failed("未知异常,请查看错误日志!");
if (result == 99)
return Failed("保存处理数据失败!");
if (result == 100)
return Failed("处理中....!");
if (result == 110)
return Failed("执行批次未获取!");
return Failed("执行失败!");
}
#endregion
#region 获取当前正在称量的物料
///
/// 获取当前正在称量的物料
///
///
[HttpGet]
public Task> GetCurrentMaterial()
{
MessageModel ms=new MessageModel();
return Task.FromResult(ms);
}
#endregion
#region 获取所有小料计划订单
///
/// 获取所有小料计划订单
///
///
[HttpGet]
public async Task>> GetXlPlanInfo()
{
MessageModel> message=new MessageModel>();
var list= await _xlPlanServices.GetAllXlPlanInfo();
if (list.Count>0)
{
message.success = true;
message.data = list;
}
else
{
message.success = false;
message.msg = "未查询到计划数据!";
}
return message;
}
#endregion
#region 料框防错验证——只验证单料
///
/// 料框防错验证——只验证单料
///
///
[HttpGet]
public async Task> MaterialVerification(string barCode)
{
MessageModel message = await _xl_materialService.MaterialVerification(barCode);
return message;
}
#endregion
///
/// 小料同步MES物料信息
///
///
[HttpGet]
public async Task> XlDownLoadMateralInfo(string materialCode, string materialName, int isEnable, DateTime createDateTime)
{
try
{
var result = await _xl_materialService.xlInsertMaterial(Guid.NewGuid().ToString("N"), materialCode, materialName, isEnable, createDateTime);
if (result)
{
return Success(result);
}
}
catch (Exception ex)
{
}
return Failed("执行失败!");
}
}
}