using AutoMapper;
using System;
using System.Collections.Generic;
using System.Text;
using Wms.Screen.DataService.Impl;
using Wms.Screen.DataService.Interface;
using Wms.Screen.Dto.ZhongTian.Request;
using Wms.Screen.Dto.ZhongTian.Response;
using Wms.Screen.Dto.ZhongTian;
using Wms.Screen.Service.IService;
using Wms.Screen.Dto;
using System.Linq;
using Newtonsoft.Json;
using CSRedis;
using WCS.Entity.Protocol.DataStructure;
using WCS.Entity.Protocol.SRM;
namespace Wms.Screen.Service.Service
{
///
/// 盘条
///
public class ZhongTianPtService : IZhongTianPtService
{
private IZhongTianPtDataService _zhongTianPtDataService;
private IMapper _mapper;
public ZhongTianPtService(IZhongTianPtDataService zhongTianPtDataService, IMapper mapper)
{
_zhongTianPtDataService = zhongTianPtDataService;
_mapper = mapper;
}
public List GetPtEquips(GetEquipsRequest reqEntity, FreeRedis.RedisClient freeRedisClient)
{
var real = new List();
var list = _zhongTianPtDataService.GetPtEquips(reqEntity);
//var tuncount = (from tun in list.GroupBy(p => p.Tunnel)
// select new TunnelCountTemp
// {
// Tunnel = tun.Key,
// Count = tun.Count()
// }).ToList();
using (var db = freeRedisClient.GetDatabase(13))
{
var srm = db.Get("Pt:DeviceDataPack");
if (srm != null)
{
foreach (var item in srm.SRMDatas?.Datas)
{
EquipDto equip = new EquipDto();
switch (item.Code)
{
case "SRM1":
if ((int)item.D537.Alarm > 0)
{
equip.EquipState = "3";
}
else if (item.D521.AutoStatus == SrmAutoStatus.Automatic)
{
equip.EquipState = "1";
}
else if (item.D521.AutoStatus == SrmAutoStatus.Manual || item.D521.AutoStatus == SrmAutoStatus.KeepInRepair || item.D521.AutoStatus == SrmAutoStatus.SemiAutomatic)
{
equip.EquipState = "2";
}
equip.Code = "SRM1";
equip.ResidueTask = list.Where(p => p.Tunnel == "1" || p.Tunnel == "2").Count();
real.Add(equip);
break;
case "SRM2":
if ((int)item.D537.Alarm > 0)
{
equip.EquipState = "3";
}
else if (item.D521.AutoStatus == SrmAutoStatus.Automatic)
{
equip.EquipState = "1";
}
else if (item.D521.AutoStatus == SrmAutoStatus.Manual || item.D521.AutoStatus == SrmAutoStatus.KeepInRepair || item.D521.AutoStatus == SrmAutoStatus.SemiAutomatic)
{
equip.EquipState = "2";
equip.ResidueTask = list.Where(p => p.Tunnel == "1" || p.Tunnel == "2").Count();
}
equip.Code = "SRM2";
real.Add(equip);
break;
case "SRM3":
if ((int)item.D537.Alarm > 0)
{
equip.EquipState = "3";
}
else if (item.D521.AutoStatus == SrmAutoStatus.Automatic)
{
equip.EquipState = "1";
equip.ResidueTask = list.Where(p => p.Tunnel == "1" || p.Tunnel == "2").Count();
}
else if (item.D521.AutoStatus == SrmAutoStatus.Manual || item.D521.AutoStatus == SrmAutoStatus.KeepInRepair || item.D521.AutoStatus == SrmAutoStatus.SemiAutomatic)
{
equip.EquipState = "2";
equip.ResidueTask = list.Where(p => p.Tunnel == "1" || p.Tunnel == "2").Count();
}
equip.Code = "SRM3";
equip.ResidueTask = list.Where(p => p.Tunnel == "1" || p.Tunnel == "2").Count();
real.Add(equip);
break;
case "SRM4":
if ((int)item.D537.Alarm > 0)
{
equip.EquipState = "3";
}
else if (item.D521.AutoStatus == SrmAutoStatus.Automatic)
{
equip.EquipState = "1";
}
else if (item.D521.AutoStatus == SrmAutoStatus.Manual || item.D521.AutoStatus == SrmAutoStatus.KeepInRepair || item.D521.AutoStatus == SrmAutoStatus.SemiAutomatic)
{
equip.EquipState = "2";
}
equip.Code = "SRM4";
equip.ResidueTask = list.Where(p => p.Tunnel == "1" || p.Tunnel == "2").Count();
real.Add(equip);
break;
default:
break;
}
}
}
}
return real.OrderBy(p => p.Code).ToList();
}
public List GetPtEquips(GetEquipsRequest reqEntity, CSRedisClient CSRedisClient)
{
var real = new List();
var list = _zhongTianPtDataService.GetPtEquips(reqEntity);
//var tuncount = (from tun in list.GroupBy(p => p.Tunnel)
// select new TunnelCountTemp
// {
// Tunnel = tun.Key,
// Count = tun.Count()
// }).ToList();
var srm = RedisHelper.Get("Pt:SrmStatus");
var msgdto = JsonConvert.DeserializeObject>(srm);
foreach (var item in msgdto)
{
EquipDto equip = new EquipDto();
switch (item.Item1)
{
case "SRM1":
if (item.Item2 == "Automatic")
{
equip.EquipState = "1";
equip.Code = "SRM1";
equip.ResidueTask = list.Where(p => p.Tunnel == "1" || p.Tunnel == "2").Count();
}
else if (item.Item2 == "Manual")
{
equip.EquipState = "2";
equip.Code = "SRM1";
equip.ResidueTask = list.Where(p => p.Tunnel == "1" || p.Tunnel == "2").Count();
}
else
{
equip.EquipState = "3";
equip.Code = "SRM1";
equip.ResidueTask = list.Where(p => p.Tunnel == "1" || p.Tunnel == "2").Count();
}
real.Add(equip);
break;
case "SRM2":
if (item.Item2 == "Automatic")
{
equip.EquipState = "1";
equip.Code = "SRM2";
equip.ResidueTask = list.Where(p => p.Tunnel == "3" || p.Tunnel == "4").Count();
}
else if (item.Item2 == "Manual")
{
equip.EquipState = "2";
equip.Code = "SRM2";
equip.ResidueTask = list.Where(p => p.Tunnel == "3" || p.Tunnel == "4").Count();
}
else
{
equip.EquipState = "3";
equip.Code = "SRM2";
equip.ResidueTask = list.Where(p => p.Tunnel == "3" || p.Tunnel == "4").Count();
}
real.Add(equip);
break;
case "SRM3":
if (item.Item2 == "Automatic")
{
equip.EquipState = "1";
equip.Code = "SRM3";
equip.ResidueTask = list.Where(p => p.Tunnel == "5" || p.Tunnel == "6").Count();
}
else if (item.Item2 == "Manual")
{
equip.EquipState = "2";
equip.Code = "SRM3";
equip.ResidueTask = list.Where(p => p.Tunnel == "5" || p.Tunnel == "6").Count();
}
else
{
equip.EquipState = "3";
equip.Code = "SRM3";
equip.ResidueTask = list.Where(p => p.Tunnel == "5" || p.Tunnel == "6").Count();
}
real.Add(equip);
break;
case "SRM4":
if (item.Item2 == "Automatic")
{
equip.EquipState = "1";
equip.Code = "SRM4";
equip.ResidueTask = list.Where(p => p.Tunnel == "7" || p.Tunnel == "8").Count();
}
else if (item.Item2 == "Manual")
{
equip.EquipState = "2";
equip.Code = "SRM4";
equip.ResidueTask = list.Where(p => p.Tunnel == "7" || p.Tunnel == "8").Count();
}
else
{
equip.EquipState = "3";
equip.Code = "SRM4";
equip.ResidueTask = list.Where(p => p.Tunnel == "7" || p.Tunnel == "8").Count();
}
real.Add(equip);
break;
default:
break;
}
}
return real.OrderBy(p => p.Code).ToList();
}
public List GetPtTaskInfo(GetWcsTaskInfoRequest ReqEntity)
{
List taskInfoDtos = new List();
taskInfoDtos = _zhongTianPtDataService.GetPtRunWcsTaskInfo(ReqEntity);
return taskInfoDtos;
}
public List GetPtBillList(GetWorkPlanBillListRequest reqEntity)
{
var list = _zhongTianPtDataService.GetPtBillList(reqEntity);
return list;
}
public List GetLocaitonList()
{
List res = new List();
var list = _zhongTianPtDataService.GetLocationList();
res.Add(new ItemVal() { Name = "空", Value = list.Where(p => p.StateNum == 1).Any() ? list.Where(p => p.StateNum == 1).Count() : 0 });
res.Add(new ItemVal() { Name = "满", Value = list.Where(p => p.StateNum == 2).Any() ? list.Where(p => p.StateNum == 2).Count() : 0 });
res.Add(new ItemVal() { Name = "锁定", Value = list.Where(p => p.StateNum == 3 || p.StateNum == 4).Any() ? list.Where(p => p.StateNum == 3 || p.StateNum == 4).Count() : 0 });
res.Add(new ItemVal() { Name = "禁用", Value = list.Where(p => p.IsStop == 1).Any() ? list.Where(p => p.IsStop == 1).Count() : 0 });
return res;
}
public GeHistoryTaskInfoRes GeHistoryTaskInfo(GeHistoryTaskInfoRequest ReqEntity)
{
GeHistoryTaskInfoRes res = new GeHistoryTaskInfoRes();
var list = _zhongTianPtDataService.GeHistoryTaskInfo(ReqEntity);
res.DateList = new List() { DateTime.Now.AddDays(-6).ToShortDateString(),
DateTime.Now.AddDays(-5).ToShortDateString(),DateTime.Now.AddDays(-4).ToShortDateString(),DateTime.Now.AddDays(-3).ToShortDateString(),
DateTime.Now.AddDays(-2).ToShortDateString(),DateTime.Now.AddDays(-1).ToShortDateString(),DateTime.Now.ToShortDateString()};
res.StockInList = new List() {
list.Where(p=>p.BusType == "采购入库单" && p.EndTime.Value.Date == DateTime.Now.AddDays(-6).Date).Any() ? list.Where(p=>p.BusType == "采购入库单" && p.EndTime.Value.Date == DateTime.Now.AddDays(-6).Date).Count():0 ,
list.Where(p=>p.BusType == "采购入库单" && p.EndTime.Value.Date == DateTime.Now.AddDays(-5).Date).Any() ? list.Where(p=>p.BusType == "采购入库单" && p.EndTime.Value.Date == DateTime.Now.AddDays(-5).Date).Count():0 ,
list.Where(p=>p.BusType == "采购入库单" && p.EndTime.Value.Date == DateTime.Now.AddDays(-4).Date).Any() ? list.Where(p=>p.BusType == "采购入库单" && p.EndTime.Value.Date == DateTime.Now.AddDays(-4).Date).Count():0 ,
list.Where(p=>p.BusType == "采购入库单" && p.EndTime.Value.Date == DateTime.Now.AddDays(-3).Date).Any() ? list.Where(p=>p.BusType == "采购入库单" && p.EndTime.Value.Date == DateTime.Now.AddDays(-3).Date).Count():0 ,
list.Where(p=>p.BusType == "采购入库单" && p.EndTime.Value.Date == DateTime.Now.AddDays(-2).Date).Any() ? list.Where(p=>p.BusType == "采购入库单" && p.EndTime.Value.Date == DateTime.Now.AddDays(-2).Date).Count():0 ,
list.Where(p=>p.BusType == "采购入库单" && p.EndTime.Value.Date == DateTime.Now.AddDays(-1).Date).Any() ? list.Where(p=>p.BusType == "采购入库单" && p.EndTime.Value.Date == DateTime.Now.AddDays(-1).Date).Count():0 ,
list.Where(p=>p.BusType == "采购入库单" && p.EndTime.Value.Date == DateTime.Now.Date).Any() ? list.Where(p=>p.BusType == "采购入库单" && p.EndTime.Value.Date == DateTime.Now.Date).Count():0 ,
};
res.StockOutList = new List() {
list.Where(p=> p.Type == TaskType.OutDepot && p.EndTime.Value.Date == DateTime.Now.AddDays(-6).Date).Any() ? list.Where(p=>p.Type == TaskType.OutDepot && p.EndTime.Value.Date == DateTime.Now.AddDays(-6).Date).Count():0 ,
list.Where(p=> p.Type == TaskType.OutDepot && p.EndTime.Value.Date == DateTime.Now.AddDays(-5).Date).Any() ? list.Where(p=>p.Type == TaskType.OutDepot && p.EndTime.Value.Date == DateTime.Now.AddDays(-5).Date).Count():0 ,
list.Where(p=> p.Type == TaskType.OutDepot && p.EndTime.Value.Date == DateTime.Now.AddDays(-4).Date).Any() ? list.Where(p=>p.Type == TaskType.OutDepot && p.EndTime.Value.Date == DateTime.Now.AddDays(-4).Date).Count():0 ,
list.Where(p=> p.Type == TaskType.OutDepot && p.EndTime.Value.Date == DateTime.Now.AddDays(-3).Date).Any() ? list.Where(p=>p.Type == TaskType.OutDepot && p.EndTime.Value.Date == DateTime.Now.AddDays(-3).Date).Count():0 ,
list.Where(p=> p.Type == TaskType.OutDepot && p.EndTime.Value.Date == DateTime.Now.AddDays(-2).Date).Any() ? list.Where(p=>p.Type == TaskType.OutDepot && p.EndTime.Value.Date == DateTime.Now.AddDays(-2).Date).Count():0 ,
list.Where(p=> p.Type == TaskType.OutDepot && p.EndTime.Value.Date == DateTime.Now.AddDays(-1).Date).Any() ? list.Where(p=>p.Type == TaskType.OutDepot && p.EndTime.Value.Date == DateTime.Now.AddDays(-1).Date).Count():0 ,
list.Where(p=> p.Type == TaskType.OutDepot && p.EndTime.Value.Date == DateTime.Now.Date).Any() ? list.Where(p=> p.Type == TaskType.OutDepot && p.EndTime.Value.Date == DateTime.Now.Date).Count():0 ,
};
return res;
}
public List GetInvReports()
{
List PTStockDtos = new List();
var list = _zhongTianPtDataService.GetBillInvnowList();
foreach (var item in list.GroupBy(p => new { p.MatCode, p.BoilerNo }))
{
PTStockDtos.Add(new PTStockDto
{
BoilerNo = item.Key.BoilerNo,
MatCode = item.Key.MatCode,
Qty = item.Count(o => !string.IsNullOrEmpty(o.BoilerNo)),
TolWQty = item.Sum(o => o.TolWQty)
});
};
return PTStockDtos.OrderBy(o => o.BoilerNo).ToList();
}
public PageResult GetPtLocationUsageViewList()
{
var result = new PageResult() { ReturnValue = new List() };
var list = _zhongTianPtDataService.GetPtLocationUsageReportList();
result.ReturnValue = list.ToList();
result.ItemGroupSum = new List() {
new ItemGroup(){ UnitName="总货位",qty=list.Sum(s=>s.AllLocationTotal)},
new ItemGroup(){ UnitName="有效货位",qty=list.Sum(s=>s.CanUseLocation)},
new ItemGroup(){ UnitName="空余货位",qty=list.Sum(s=>s.SpareLocation)},
new ItemGroup(){ UnitName="锁定货位",qty=list.Sum(s=>s.LockLocation)},
new ItemGroup(){ UnitName="停用货位",qty=list.Sum(s=>s.StopLocation)},
new ItemGroup(){ UnitName="有料货位",qty=list.Sum(s=>s.MaterilLocation)},
new ItemGroup(){ UnitName="有容器货位",qty=list.Sum(s=>s.ContainLocation)}
};
return result;
}
///
/// 根据物料号显示当前库存数量
///
///
public BarModelRes GetMatCodeBarDatas()
{
BarModelRes res = new BarModelRes();
List listtemp = new List();
var list = _zhongTianPtDataService.GetBillInvnowList().Where(p => p.InvStateCode == "InvEcecState_In");
foreach (var item in list.GroupBy(p => p.MatCode).OrderBy(x=>x.Key))
{
res.xData.Add(item.Key);
res.yData.Add(item.Count());
}
return res;
}
public BarModel2Res GetBoilerNoMatCodeQtyList()
{
BarModel2Res res = new BarModel2Res();
var lists= _zhongTianPtDataService.GetBoilerNoMatCodeQtyList();
if (lists != null && lists.Any())
{
res.xData = lists.Select(o => o.BoilerNo).ToList();
res.x2Data = lists.Select(o => o.MatCode).ToList();
res.yData = lists.Select(o => o.Qty).ToList();
}
return res;
}
}
}