using System.Linq;
|
using HH.WCS.Mobox3.AnGang.ServiceCore;
|
using HH.WCS.Mobox3.AnGang.Devices;
|
using HH.WCS.Mobox3.AnGang.Dispatch;
|
using HH.WCS.Mobox3.AnGang.config;
|
using HH.WCS.Mobox3.AnGang.Helper;
|
using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Web.Http;
|
using static Opc.Ua.ContentFilter;
|
using System.Threading.Tasks;
|
|
using HH.WCS.Mobox3.AnGang.Models;
|
using HH.WCS.Mobox3.AnGang.Services;
|
using static HH.WCS.Mobox3.AnGang.Dtos.Request.AgvRequest;
|
using static HH.WCS.Mobox3.AnGang.Dtos.Response.AgvResponse;
|
using HH.WCS.Mobox3.AnGang.Helpers;
|
|
namespace HH.WCS.Mobox3.AnGang.Controllers
|
{
|
/// <summary>
|
/// 测试用,如果项目中要和设备对接,前期设备无法测试,用接口模拟
|
/// </summary>
|
[RoutePrefix("api")]
|
public class DebugController : System.Web.Http.ApiController
|
{
|
/// <summary>
|
/// AGV状态一键回报134562
|
/// </summary>
|
/// <param name="model">容器号</param>
|
/// <returns></returns>
|
[HttpPost]
|
[Route("AGVSeriesReports")]
|
public ReturnResults AGVSeriesReports(UpdateTaskState model)
|
{
|
var agvTaskState = new AgvTaskState()
|
{
|
task_no = model.TaskID,
|
forklift_no = model.ForkliftNo,
|
state = 1
|
};
|
ReturnResults returnResults = new ReturnResults();
|
returnResults.resultList = new List<ReturnResult>();
|
|
var temp1 = AgvService.OperateAgvTaskStatus(agvTaskState);
|
returnResults.resultList.Add(temp1);
|
|
agvTaskState.state = 3;
|
var temp3 = AgvService.OperateAgvTaskStatus(agvTaskState);
|
returnResults.resultList.Add(temp3);
|
|
agvTaskState.state = 4;
|
var temp4 = AgvService.OperateAgvTaskStatus(agvTaskState);
|
returnResults.resultList.Add(temp4);
|
|
agvTaskState.state = 5;
|
var temp5 = AgvService.OperateAgvTaskStatus(agvTaskState);
|
returnResults.resultList.Add(temp5);
|
|
agvTaskState.state = 6;
|
var temp6 = AgvService.OperateAgvTaskStatus(agvTaskState);
|
returnResults.resultList.Add(temp6);
|
|
agvTaskState.state = 2;
|
var temp2 = AgvService.OperateAgvTaskStatus(agvTaskState);
|
returnResults.resultList.Add(temp2);
|
|
return returnResults;
|
}
|
|
/// <summary>
|
/// AGV状态一键回报134
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
[Route("AGVSeriesReportsPartA")]
|
public ReturnResults AGVSeriesReportsPartA(UpdateTaskState model) {
|
var agvTaskState = new AgvTaskState() {
|
task_no = model.TaskID,
|
forklift_no = model.ForkliftNo,
|
state = 1
|
};
|
ReturnResults returnResults = new ReturnResults();
|
returnResults.resultList = new List<ReturnResult>();
|
|
var temp1 = AgvService.OperateAgvTaskStatus(agvTaskState);
|
returnResults.resultList.Add(temp1);
|
|
agvTaskState.state = 3;
|
var temp3 = AgvService.OperateAgvTaskStatus(agvTaskState);
|
returnResults.resultList.Add(temp3);
|
|
agvTaskState.state = 4;
|
var temp4 = AgvService.OperateAgvTaskStatus(agvTaskState);
|
returnResults.resultList.Add(temp4);
|
|
return returnResults;
|
}
|
|
/// <summary>
|
/// AGV状态一键回报562
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
[HttpPost]
|
[Route("AGVSeriesReportsPartB")]
|
public ReturnResults AGVSeriesReportsPartB(UpdateTaskState model) {
|
var agvTaskState = new AgvTaskState() {
|
task_no = model.TaskID,
|
forklift_no = model.ForkliftNo,
|
state = 4
|
};
|
ReturnResults returnResults = new ReturnResults();
|
returnResults.resultList = new List<ReturnResult>();
|
|
agvTaskState.state = 5;
|
var temp5 = AgvService.OperateAgvTaskStatus(agvTaskState);
|
returnResults.resultList.Add(temp5);
|
|
agvTaskState.state = 6;
|
var temp6 = AgvService.OperateAgvTaskStatus(agvTaskState);
|
returnResults.resultList.Add(temp6);
|
|
agvTaskState.state = 2;
|
var temp2 = AgvService.OperateAgvTaskStatus(agvTaskState);
|
returnResults.resultList.Add(temp2);
|
|
return returnResults;
|
}
|
|
/// <summary>
|
/// 初始化数据库
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Route("BuildDB")]
|
public string BuildDB()
|
{
|
//bool res = false;
|
try
|
{
|
var db = DbHelper.GetDbClient();
|
//db.CodeFirst.InitTables<WCSTask>(); //所有库都支持
|
//db.CodeFirst.InitTables<Zone>();
|
//db.CodeFirst.InitTables<Area>();
|
//db.CodeFirst.InitTables<Location>();
|
//db.CodeFirst.InitTables<LocCntrRel>();
|
//db.CodeFirst.InitTables<Container>();
|
//db.CodeFirst.InitTables<TN_CG_Detail>();
|
//db.CodeFirst.InitTables<TN_WorkOrder>();
|
//db.CodeFirst.InitTables<TN_CAR_IN>();
|
//db.CodeFirst.InitTables<SYSHelper.OI_SYS_MAXID>();
|
//db.CodeFirst.InitTables<TN_Task_Action>();
|
//db.CodeFirst.InitTables<TN_Task>();
|
//db.CodeFirst.InitTables<TN_Location>();
|
//db.CodeFirst.InitTables<TN_Loc_Container>();
|
|
var locList = new List<TN_Location>();
|
//foreach (var area in Settings.Areas.Skip(1).ToList()) {
|
// for (int i = 0; i < 8; i++) {
|
// for (int j = 0; j < 30; j++) {
|
// locList.Add(new TN_Location { S_SHELF_CODE = area, S_CODE = $"{area}-{i + 1}-{j + 1}", S_NAME = $"{area}货架 第{i + 1}层 第{j + 1}号货位", S_AGV_SITE = $"{area}-{i + 1}-{j + 1}", N_HEIGHT = i + 1 });
|
// }
|
// }
|
//}
|
locList.Add(new TN_Location { S_AREA_CODE = "B111", S_CODE = "B111-1-1", S_NAME = "B111-1-1", S_AGV_SITE = "B111-1-1"});
|
locList.Add(new TN_Location { S_AREA_CODE = "B111", S_CODE = "B111-4-1", S_NAME = "B111-4-1", S_AGV_SITE = "B111-4-1"});
|
locList.Add(new TN_Location { S_AREA_CODE = "B112", S_CODE = "B112-1-1", S_NAME = "B112-1-1", S_AGV_SITE = "B112-1-1"});
|
|
//locList.Add(new TN_Location { S_AREA_CODE = Settings.Areas[0], S_SHELF_CODE = Settings.Areas[0], S_CODE = Settings.Areas[0] + "-1", S_NAME = "取放货区-1", S_AGV_SITE = "P0-1"});
|
//locList.Add(new TN_Location { S_AREA_CODE = Settings.Areas[0], S_SHELF_CODE = Settings.Areas[0], S_CODE = Settings.Areas[0] + "-2", S_NAME = "取放货区-2", S_AGV_SITE = "P0-2"});
|
if (db.Insertable<TN_Location>(locList).ExecuteCommand() <= 0) {
|
return "失败";
|
}
|
|
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Info($"发生了异常");
|
return "初始化数据库错误" + ex.Message;
|
}
|
//return res ? "成功" : "失败";
|
return "成功";
|
}
|
|
/// <summary>
|
/// 修改任务的重量,便于测试
|
/// </summary>
|
/// <returns></returns>
|
[HttpPost]
|
[Route("UpdateTaskWeight")]
|
|
public string UpdateTaskWeight(UpdateTaskWeightInfo model) {
|
var db = DbHelper.GetDbClient();
|
var task = db.Queryable<TN_Task>().First(a => a.S_CODE == model.TaskID);
|
if (task == null) {
|
return "任务号不存在";
|
}
|
task.F_WEIGHT = model.Weight;
|
|
try {
|
using (var trans = db.Ado.UseTran()) {
|
if (db.Updateable<TN_Task>(task).ExecuteCommand() > 0) {
|
trans.CommitTran();
|
return $"成功 | 修改任务{task.S_CODE}重量为{task.F_WEIGHT}";
|
}
|
else {
|
trans.RollbackTran();
|
return $"失败 | 修改任务{task.S_CODE}重量为{task.F_WEIGHT}";
|
}
|
}
|
}
|
catch (Exception ex) {
|
return ex.Message;
|
}
|
}
|
|
[HttpPost]
|
public string AddCgCntrLocRel(CgInfo model) {
|
var db = DbHelper.GetDbClient();
|
|
try {
|
var loc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.LocId);
|
if (loc == null) {
|
var locList = new List<TN_Location>();
|
locList.Add(new TN_Location { S_CODE = model.LocId, N_CURRENT_NUM = 1 });
|
if (db.Insertable<TN_Location>(locList).ExecuteCommand() <= 0) {
|
return $"插入位置{model.LocId}失败";
|
}
|
}
|
if (loc.N_CURRENT_NUM == 0) {
|
loc.N_CURRENT_NUM = 1;
|
if (db.Updateable<TN_Location>(loc).UpdateColumns(it => new { it.N_CURRENT_NUM, it.T_MODIFY }).ExecuteCommand() <= 0) {
|
return $"修改位置{model.LocId}失败";
|
}
|
}
|
|
var locCntrRel = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == model.LocId && a.S_CNTR_CODE == model.CntId);
|
if (loc == null) {
|
var locList = new List<TN_Loc_Container>();
|
locList.Add(new TN_Loc_Container { S_LOC_CODE = model.LocId, S_CNTR_CODE = model.CntId });
|
if (db.Insertable<TN_Loc_Container>(locList).ExecuteCommand() <= 0) {
|
return $"插入位置托盘关系{model.LocId}-{model.CntId}失败";
|
}
|
}
|
|
var cgDetail = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == model.CntId && a.S_CG_ID == model.CgId);
|
if (cgDetail == null) {
|
var locList = new List<TN_CG_Detail>();
|
locList.Add(new TN_CG_Detail { S_CNTR_CODE = model.CntId, S_CG_ID = model.CntId });
|
if (db.Insertable<TN_CG_Detail>(locList).ExecuteCommand() <= 0) {
|
return $"插入托盘物料关系{model.CntId}-{model.CgId}失败";
|
}
|
}
|
}
|
catch (Exception ex) {
|
return $"出错:{ex}";
|
}
|
|
return "success";
|
}
|
}
|
|
public class CgInfo {
|
public string CgId { get; set; }
|
public string CntId { get; set; }
|
public string LocId { get; set; }
|
}
|
|
public class UpdateTaskState
|
{
|
public string TaskID { set; get; } // 任务ID
|
public string ForkliftNo { set; get; } // AGV 小车号
|
}
|
|
public class UpdateTaskWeightInfo {
|
public string TaskID { set; get; }
|
public float Weight { set; get; }
|
}
|
|
public class ReturnResults
|
{
|
public List<ReturnResult> resultList { set; get; }
|
}
|
}
|