using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using WIDESEA_Comm;
using WIDESEA_Comm.LogInfo;
using WIDESEA_Comm.MES_Info;
using WIDESEA_Comm.MES_Info.Request;
using WIDESEA_Comm.TaskNo;
using WIDESEA_Common;
using WIDESEA_Core.EFDbContext;
using WIDESEA_Core.ManageUser;
using WIDESEA_Core.Utilities;
using WIDESEA_Entity.DomainModels;
using WIDESEA_Entity.DomainModels.Mes;
using WIDESEA_WMS.Common;
using WIDESEA_WMS.IRepositories;
using WIDESEA_WMS.Repositories;
using static WIDESEA_Comm.MES_Info.BasicSN;
namespace WIDESEA_WMS
{
public partial class ToMesServer
{
///
/// 外协出库(检测上料)
///
///
///
public WebResponseContent OutsourceInbound(SaveModel saveModel)
{
WebResponseContent content = new WebResponseContent();
try
{
string stationNo = saveModel.MainData["stationNo"].ToString(); //缓存架编号
if (string.IsNullOrEmpty(stationNo)) return content.Error("请选择下料口!");
string user = saveModel.MainData["creator"].ToString();
string sn = saveModel.MainData["dataSN"].ToString(); //车轮SN号
#region 判断SN号长度、是否存在相同SN号
bool strOK = false;
bool SNOK = false;
for (int i = 1; i < sn.Split(",").Length; i++)
{
for (int j = 0; j < i; j++)
{
if (sn.Split(",")[j] == sn.Split(",")[i])
strOK = true;
if (sn.Split(",")[j].Length != 10)
SNOK = true;
}
}
if (strOK)
return content.Error("存在相同SN号的车轮信息!请重新扫描!");
if (SNOK)
return content.Error("车轮SN号有误!请重新扫描!");
#endregion
//dt_mes_detail info = null;
//dt_mes_head mes_head = null;
VV_Mes_Workinfo mes_Work = null;
int count = 0; //车轮数量
string bindSN = "";
List list = new List();
foreach (var SN in sn.Split(","))
{
if (!string.IsNullOrEmpty(SN))
list.Add(SN);
}
foreach (var item in list)
{
if (item != null)
{
count++;
bindSN += bindSN == "" ? item : "," + item;
mes_Work = freeDB.Select().Where(x => x.SN == item && x.processCode == "28").First();
if (mes_Work == null)
return content.Error($"第{count}个车轮无检测上料工单信息,请核查工单后在扫描!");
//info = freeDB.Select().Where(x => x.SN == item).First();
//if (info == null)
// return content.Error($"第{count}个车轮无检测上料工单详情,请核查工单后在扫描!");
//mes_head = freeDB.Select().Where(x => x.jobID == info.jobID && x.processCode == "28").First();
//if (mes_head == null)
// return content.Error($"第{count}个车轮无检测上料工单信息,请核查工单后在扫描!");
}
}
VOLContext Context = new VOLContext();
Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
var station = freeDB.Select().Where(x => x.stationCode == stationNo).First();
if (freeDB.Select().Where(x => x.agv_fromaddress == station.stationCode).Any())
return content.Error($"下料口{stationNo}存在AGV任务,请核实!");
if (!station.enable)
return content.Error($"下料口{stationNo}被禁用,请核实!");
station.quantity = count;
station.bindSN = bindSN;
station.stationType = mes_Work.drawingNo;
station.location_state = "Stroge";
station.Number = mes_Work.jobID;
if (mes_Work.heatID != null)
station.heatNumber = mes_Work.heatID;
station.tray_status = "StrogeTray";
stationinfoRepository.Update(station, true);
#region MyRegion
//dt_agvtask agvtask = new dt_agvtask
//{
// //agv_barcode = stationNo,
// //agv_code = user,
// agv_createtime = DateTime.Now,
// agv_fromaddress = stationNo,
// agv_qty = i,
// agv_grade = 1,
// agv_tasktype = AGVTaskTypeEnum.TaskType_Inbound.ToString(),
// agv_taskstate = AGVTaskStateEnum.Create.ToString(),
// agv_toaddress = "",
//};
#endregion
dt_agvtask agvtask = new dt_agvtask()
{
agv_fromaddress = station.stationCode,
agv_id = Guid.NewGuid(),
agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
agv_grade = 3,
agv_createtime = DateTime.Now,
agv_taskstate = "Queue",
agv_materielid = station.stationType,
agv_qty = station.quantity,
agv_tasktype = "TaskType_OutsourceOutbound",
agv_toaddress = "",
agv_userid = user,//"系统",
jobID = mes_Work.jobID,
bindSN = station.bindSN,
agv_worktype = Convert.ToInt32(mes_Work.processCode),
agv_materbarcode = mes_Work.materialCode,
agv_Traytype = station.tray_type,
agv_TrayStatus = station.tray_status
};
freeDB.Add(agvtask);
return content.OK();
}
catch (Exception ex)
{
return content.Error($"呼叫AGV失败:{ex.Message}");
}
}
}
}