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
|
{
|
/// <summary>
|
/// 外协出库(检测上料)
|
/// </summary>
|
/// <param name="saveModel"></param>
|
/// <returns></returns>
|
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<string> list = new List<string>();
|
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<VV_Mes_Workinfo>().Where(x => x.SN == item && x.processCode == "28").First();
|
if (mes_Work == null)
|
return content.Error($"第{count}个车轮无检测上料工单信息,请核查工单后在扫描!");
|
//info = freeDB.Select<dt_mes_detail>().Where(x => x.SN == item).First();
|
//if (info == null)
|
// return content.Error($"第{count}个车轮无检测上料工单详情,请核查工单后在扫描!");
|
//mes_head = freeDB.Select<dt_mes_head>().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<dt_stationinfo>().Where(x => x.stationCode == stationNo).First();
|
if (freeDB.Select<dt_agvtask>().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}");
|
}
|
}
|
}
|
}
|