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
{
///
/// 测试用,如果项目中要和设备对接,前期设备无法测试,用接口模拟
///
[RoutePrefix("api")]
public class DebugController : System.Web.Http.ApiController
{
///
/// AGV状态一键回报134562
///
/// 容器号
///
[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();
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;
}
///
/// AGV状态一键回报134
///
///
///
[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();
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;
}
///
/// AGV状态一键回报562
///
///
///
[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();
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;
}
///
/// 初始化数据库
///
///
[HttpPost]
[Route("BuildDB")]
public string BuildDB()
{
//bool res = false;
try
{
var db = DbHelper.GetDbClient();
//db.CodeFirst.InitTables(); //所有库都支持
//db.CodeFirst.InitTables();
//db.CodeFirst.InitTables();
//db.CodeFirst.InitTables();
//db.CodeFirst.InitTables();
//db.CodeFirst.InitTables();
//db.CodeFirst.InitTables();
//db.CodeFirst.InitTables();
//db.CodeFirst.InitTables();
//db.CodeFirst.InitTables();
//db.CodeFirst.InitTables();
//db.CodeFirst.InitTables();
//db.CodeFirst.InitTables();
//db.CodeFirst.InitTables();
var locList = new List();
//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(locList).ExecuteCommand() <= 0) {
return "失败";
}
}
catch (Exception ex)
{
LogHelper.Info($"发生了异常");
return "初始化数据库错误" + ex.Message;
}
//return res ? "成功" : "失败";
return "成功";
}
///
/// 修改任务的重量,便于测试
///
///
[HttpPost]
[Route("UpdateTaskWeight")]
public string UpdateTaskWeight(UpdateTaskWeightInfo model) {
var db = DbHelper.GetDbClient();
var task = db.Queryable().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(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().First(a => a.S_CODE == model.LocId);
if (loc == null) {
var locList = new List();
locList.Add(new TN_Location { S_CODE = model.LocId, N_CURRENT_NUM = 1 });
if (db.Insertable(locList).ExecuteCommand() <= 0) {
return $"插入位置{model.LocId}失败";
}
}
if (loc.N_CURRENT_NUM == 0) {
loc.N_CURRENT_NUM = 1;
if (db.Updateable(loc).UpdateColumns(it => new { it.N_CURRENT_NUM, it.T_MODIFY }).ExecuteCommand() <= 0) {
return $"修改位置{model.LocId}失败";
}
}
var locCntrRel = db.Queryable().First(a => a.S_LOC_CODE == model.LocId && a.S_CNTR_CODE == model.CntId);
if (loc == null) {
var locList = new List();
locList.Add(new TN_Loc_Container { S_LOC_CODE = model.LocId, S_CNTR_CODE = model.CntId });
if (db.Insertable(locList).ExecuteCommand() <= 0) {
return $"插入位置托盘关系{model.LocId}-{model.CntId}失败";
}
}
var cgDetail = db.Queryable().First(a => a.S_CNTR_CODE == model.CntId && a.S_CG_ID == model.CgId);
if (cgDetail == null) {
var locList = new List();
locList.Add(new TN_CG_Detail { S_CNTR_CODE = model.CntId, S_CG_ID = model.CntId });
if (db.Insertable(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 resultList { set; get; }
}
}