|
|
|
|
using Admin.Core.IRepository;
|
|
|
|
|
using Admin.Core.IService;
|
|
|
|
|
using Admin.Core.Model;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System;
|
|
|
|
|
using Admin.Core.Model.ViewModels;
|
|
|
|
|
using log4net;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using Admin.Core.PlcServer;
|
|
|
|
|
|
|
|
|
|
namespace Admin.Core.Service
|
|
|
|
|
{
|
|
|
|
|
public class Hw_WarehouseServices : BaseServices<Hw_Warehouse>, IHw_WarehouseServices
|
|
|
|
|
{
|
|
|
|
|
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(Hw_WarehouseServices));
|
|
|
|
|
private readonly IBaseRepository<Hw_Warehouse> _dal;
|
|
|
|
|
private readonly IHw_WarehouseRepository _wareHouse;
|
|
|
|
|
private readonly IHw_WareHouse_SubRepository _wareHouse_Sub;
|
|
|
|
|
private readonly IHw_FeedReportRepository _feed;
|
|
|
|
|
private readonly IHw_BarrelRepository _barrel;
|
|
|
|
|
private readonly Ixl_materialRepository _materialRepository;
|
|
|
|
|
private readonly Ixl_recipeRepository _recipeRepository;
|
|
|
|
|
public Hw_WarehouseServices(IBaseRepository<Hw_Warehouse> dal, IHw_WarehouseRepository wareHouse, IHw_WareHouse_SubRepository wareHouse_Sub, IHw_FeedReportRepository feed, IHw_BarrelRepository barrel, Ixl_materialRepository materialRepository, Ixl_recipeRepository recipeRepository)
|
|
|
|
|
{
|
|
|
|
|
this._dal = dal;
|
|
|
|
|
base.BaseDal = dal;
|
|
|
|
|
_wareHouse = wareHouse;
|
|
|
|
|
_wareHouse_Sub = wareHouse_Sub;
|
|
|
|
|
_feed = feed;
|
|
|
|
|
_barrel = barrel;
|
|
|
|
|
_materialRepository = materialRepository;
|
|
|
|
|
_recipeRepository = recipeRepository;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 扫描桶二维码,获取绑定的小料配方
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 扫描桶二维码,获取绑定的小料配方
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="code">桶条码</param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
/// <exception cref="NotImplementedException"></exception>
|
|
|
|
|
public async Task<BarrelView> GetXlInfo(string code)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Hw_Barrel hw = (await _barrel.QueryAsync(d => d.IsEnable == "是")).FirstOrDefault(d => d.BarCode == code);
|
|
|
|
|
if (hw == null) { return null; }
|
|
|
|
|
var recipe = (await _recipeRepository.QueryAsync(d => d.Recipe_Verify == 1)).FirstOrDefault(d => d.Recipe_Code == hw.MaterialID);
|
|
|
|
|
|
|
|
|
|
BarrelView view = new BarrelView()
|
|
|
|
|
{
|
|
|
|
|
BarrelID = hw.BarrelID,
|
|
|
|
|
BarrelName = hw.BarrelName,
|
|
|
|
|
BarCode = hw.BarCode,
|
|
|
|
|
MaterialID = recipe.Recipe_Code,
|
|
|
|
|
MaterialName = recipe.Recipe_Name,
|
|
|
|
|
Weight = hw.Weight
|
|
|
|
|
};
|
|
|
|
|
return view;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error(ex.Message);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 根据传入的code 查询投料釜下所有的物料
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 根据传入的code 查询投料釜下所有的物料
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="code"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public async Task<WarehouseView> QueryByCode(string code)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var list = await _wareHouse.QueryAsync();
|
|
|
|
|
if (list == null) return null;
|
|
|
|
|
Hw_Warehouse wh = list.FirstOrDefault(d => d.BarCode == code);
|
|
|
|
|
if (wh == null) return null;
|
|
|
|
|
var sub = await _wareHouse_Sub.QueryAsync(d => d.MainId == wh.ID);
|
|
|
|
|
|
|
|
|
|
WarehouseView warehouseView = new WarehouseView()
|
|
|
|
|
{
|
|
|
|
|
ID = wh.ID,
|
|
|
|
|
PlanId = wh.PlanId,
|
|
|
|
|
Name = wh.Name,
|
|
|
|
|
BarCode = wh.BarCode,
|
|
|
|
|
CreateTime = wh.CreateTime,
|
|
|
|
|
UpdateTime = wh.UpdateTime,
|
|
|
|
|
Children = sub
|
|
|
|
|
};
|
|
|
|
|
return warehouseView;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error(ex.Message);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 更新PLC状态
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 更新PLC状态
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="view">本次验证状态 1开启;0关闭</param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public async Task<bool> UpdatePlcState(KettleView view)
|
|
|
|
|
{
|
|
|
|
|
List<Hw_WareHouse_Sub> subList = null;
|
|
|
|
|
List<Hw_Barrel> hbList = null;
|
|
|
|
|
Hw_WareHouse_Sub sub = null;
|
|
|
|
|
Hw_Warehouse wh = null;
|
|
|
|
|
Hw_Barrel hwBarrel = null;
|
|
|
|
|
string message = string.Empty;
|
|
|
|
|
string name = string.Empty;
|
|
|
|
|
|
|
|
|
|
#region 反应釜工位信号
|
|
|
|
|
//反应釜工位报警
|
|
|
|
|
switch (view.Station)
|
|
|
|
|
{
|
|
|
|
|
case 1:
|
|
|
|
|
name = "DB109.DBW4.0";
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
name = "DB109.DBW10.0";
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
name = "DB109.DBW16.0";
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
name = "DB109.DBW22.0";
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
name = "DB109.DBW28.0";
|
|
|
|
|
break;
|
|
|
|
|
case 6:
|
|
|
|
|
name = "DB109.DBW34.0";
|
|
|
|
|
break;
|
|
|
|
|
case 7:
|
|
|
|
|
name = "DB109.DBW40.0";
|
|
|
|
|
break;
|
|
|
|
|
case 8:
|
|
|
|
|
name = "DB109.DBW46.0";
|
|
|
|
|
break;
|
|
|
|
|
case 9:
|
|
|
|
|
name = "DB109.DBW52.0";
|
|
|
|
|
break;
|
|
|
|
|
case 10:
|
|
|
|
|
name = "DB109.DBW58.0";
|
|
|
|
|
break;
|
|
|
|
|
case 11:
|
|
|
|
|
name = "DB109.DBW64.0";
|
|
|
|
|
break;
|
|
|
|
|
case 12:
|
|
|
|
|
name = "DB109.DBW70.0";
|
|
|
|
|
break;
|
|
|
|
|
case 13:
|
|
|
|
|
name = "DB109.DBW76.0";
|
|
|
|
|
break;
|
|
|
|
|
case 14:
|
|
|
|
|
name = "DB109.DBW82.0";
|
|
|
|
|
break;
|
|
|
|
|
case 15:
|
|
|
|
|
name = "DB109.DBW88.0";
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var solventPlc = PlcHelper.siemensList.SingleOrDefault(d=>d.EquipName.Equals("小料PLC"));
|
|
|
|
|
if (solventPlc.plc.IsConnected)
|
|
|
|
|
{
|
|
|
|
|
//同时记录该扫码到数据库中
|
|
|
|
|
List<Hw_Warehouse> list = await _wareHouse.QueryAsync();
|
|
|
|
|
if (list != null)
|
|
|
|
|
{
|
|
|
|
|
wh = list.FirstOrDefault(d => d.BarCode == view.KCode);
|
|
|
|
|
subList = await _wareHouse_Sub.QueryAsync(d => d.MainId == wh.ID);
|
|
|
|
|
if (subList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
sub = subList.FirstOrDefault(d => d.MaterialID == view.MatCode.Trim());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (view.State == 1)
|
|
|
|
|
{
|
|
|
|
|
message = "开启";
|
|
|
|
|
}
|
|
|
|
|
if (view.State == 0)
|
|
|
|
|
{
|
|
|
|
|
message = "关闭";
|
|
|
|
|
}
|
|
|
|
|
if (string.IsNullOrEmpty(message))
|
|
|
|
|
{
|
|
|
|
|
log.Error("传递状态为空!");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Hw_FeedReport hw = new Hw_FeedReport()
|
|
|
|
|
{
|
|
|
|
|
WID = wh.ID,
|
|
|
|
|
PlanId = view.PlanId,
|
|
|
|
|
WName = wh.Name,
|
|
|
|
|
WCode = wh.BarCode,
|
|
|
|
|
MaterialId = sub.MaterialID,
|
|
|
|
|
MaterialName = sub.MaterialName,
|
|
|
|
|
MCode = sub.Material_Code,
|
|
|
|
|
MType = view.MatType,
|
|
|
|
|
IsTrue = message,
|
|
|
|
|
CreateTime = DateTime.Now,
|
|
|
|
|
WholePackage = view.WholePackage.Trim()
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//解绑 桶绑定
|
|
|
|
|
//hbList = await _barrel.QueryAsync();
|
|
|
|
|
//if (hbList != null)
|
|
|
|
|
//{
|
|
|
|
|
// hwBarrel = hbList.FirstOrDefault(d => d.BarCode == view.BarrelCode);
|
|
|
|
|
// if (hwBarrel != null)
|
|
|
|
|
// {
|
|
|
|
|
// hwBarrel.MaterialID = null;
|
|
|
|
|
// hwBarrel.MaterialName = null;
|
|
|
|
|
// await _feed.UpdateAsync(hw);
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//保存记录
|
|
|
|
|
// int i = await _feed.AddAsync(hw);
|
|
|
|
|
if (string.IsNullOrEmpty(name))
|
|
|
|
|
{
|
|
|
|
|
log.Error("点位名称为空!");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool result = solventPlc.plc.WriteInt16(name, view.State.ToString());//反应釜点位
|
|
|
|
|
if (result)
|
|
|
|
|
{
|
|
|
|
|
if (view.State == 1)
|
|
|
|
|
{
|
|
|
|
|
await _feed.AddAsync(hw);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
log.Error("写入点位失败!");
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error(ex.Message);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 获取所有计划号
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取所有计划号
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public async Task<List<string>> GetPlan()
|
|
|
|
|
{
|
|
|
|
|
List<string> strList = new List<string>();
|
|
|
|
|
List<Hw_Warehouse> list = await _wareHouse.QueryAsync();
|
|
|
|
|
if (list.Count == 0) return null;
|
|
|
|
|
list.ForEach(d => {
|
|
|
|
|
if (!string.IsNullOrEmpty(d.PlanId))
|
|
|
|
|
{
|
|
|
|
|
strList.Add(d.PlanId);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return strList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|