Compare commits

..

4 Commits

29 changed files with 439 additions and 51 deletions

View File

@ -7,34 +7,63 @@ namespace WcsMain.ApiClient.DataEntity.WmsEntity;
/// </summary> /// </summary>
public class ElTagComfirmButtonClickRequest public class ElTagComfirmButtonClickRequest
{ {
/// <summary>
/// 任务组
/// </summary>
[JsonProperty("taskGroup")] [JsonProperty("taskGroup")]
public string? TaskGroup { get; set; } public string? TaskGroup { get; set; }
/// <summary>
/// 任务类型
/// </summary>
[JsonProperty("taskType")] [JsonProperty("taskType")]
public int? TaskType { get; set; } public int? TaskType { get; set; }
/// <summary>
/// 载具号
/// </summary>
[JsonProperty("vehicleNo")] [JsonProperty("vehicleNo")]
public string? VehicleNo { get; set; } public string? VehicleNo { get; set; }
/// <summary>
/// 订单号
/// </summary>
[JsonProperty("orderId")] [JsonProperty("orderId")]
public string? OrderId { get; set; } public string? OrderId { get; set; }
/// <summary>
/// 任务号
/// </summary>
[JsonProperty("taskId")] [JsonProperty("taskId")]
public string? TaskId { get; set; } public string? TaskId { get; set; }
/// <summary>
/// 点位
/// </summary>
[JsonProperty("location")] [JsonProperty("location")]
public string? Location { get; set; } public string? Location { get; set; }
/// <summary>
/// 物料ID
/// </summary>
[JsonProperty("goodsId")] [JsonProperty("goodsId")]
public string? GoodsId { get; set; } public string? GoodsId { get; set; }
/// <summary>
/// 物料名称
/// </summary>
[JsonProperty("goodsName")] [JsonProperty("goodsName")]
public string? GoodsName { get; set; } public string? GoodsName { get; set; }
/// <summary>
/// 需求数量
/// </summary>
[JsonProperty("needNum")] [JsonProperty("needNum")]
public int? NeedNum { get; set; } public int? NeedNum { get; set; }
/// <summary>
/// 确认数量
/// </summary>
[JsonProperty("confirmNum")] [JsonProperty("confirmNum")]
public int? ConfirmNum { get; set; } public int? ConfirmNum { get; set; }

View File

@ -45,6 +45,12 @@ public class ElTagTaskdata
/// <summary> /// <summary>
/// 任务号 /// 任务号
/// </summary> /// </summary>
[JsonPropertyName("eTaskId")]
public string? ETaskId { get; set; }
/// <summary>
/// WMS任务号
/// </summary>
[JsonPropertyName("taskId")] [JsonPropertyName("taskId")]
public string? TaskId { get; set; } public string? TaskId { get; set; }

View File

@ -0,0 +1,21 @@
using System.Text.Json.Serialization;
namespace WcsMain.ApiServe.Controllers.Dto.WcsDto.Stacker;
public class QueryErrInfoRequest
{
/// <summary>
/// 区域
/// </summary>
[JsonPropertyName("area")]
public string? Area { get; set; }
/// <summary>
/// 报警编号
/// </summary>
[JsonPropertyName("errNo")]
public int? ErrNo { get; set; }
}

View File

@ -36,4 +36,11 @@ public class StackerController(StackerService stackerService) : ControllerBase
[HttpPost("editStacker")] [HttpPost("editStacker")]
public WcsApiResponse EditStacker([FromBody] EditStackerRequest request) => stackerService.EditStacker(request); public WcsApiResponse EditStacker([FromBody] EditStackerRequest request) => stackerService.EditStacker(request);
/// <summary>
/// 查询故障详细信息
/// </summary>
/// <returns></returns>
[HttpPost("queryErrInfo")]
public WcsApiResponse<AppBaseErr> QueryErrInfo([FromBody] QueryErrInfoRequest request) => stackerService.QueryErrInfo(request);
} }

View File

@ -1,4 +1,5 @@
using DataCheck; using DataCheck;
using Microsoft.VisualStudio.Web.CodeGenerators.Mvc.Dependency;
using System.Collections.Generic; using System.Collections.Generic;
using WcsMain.ApiServe.Controllers.Dto; using WcsMain.ApiServe.Controllers.Dto;
using WcsMain.ApiServe.Controllers.Dto.WcsDto.Stacker; using WcsMain.ApiServe.Controllers.Dto.WcsDto.Stacker;
@ -11,7 +12,7 @@ using WcsMain.WcsAttribute.AutoFacAttribute;
namespace WcsMain.ApiServe.Service.WcsService; namespace WcsMain.ApiServe.Service.WcsService;
[Service] [Service]
public class StackerService(AppStackerDao stackerDao, StackerOperation stackerOperation) public class StackerService(AppStackerDao stackerDao, StackerOperation stackerOperation, AppBaseErrDao baseErrDao)
{ {
/// <summary> /// <summary>
/// 查询所有的 堆垛机信息 /// 查询所有的 堆垛机信息
@ -127,4 +128,19 @@ public class StackerService(AppStackerDao stackerDao, StackerOperation stackerOp
} }
/// <summary>
/// 查询对应的报警信息
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public WcsApiResponse<AppBaseErr> QueryErrInfo(QueryErrInfoRequest request)
{
var queryResult = baseErrDao.Select(new AppBaseErr { Area = request.Area, ErrNo = request.ErrNo });
if (queryResult == default) return WcsApiResponseFactory.DataBaseErr<AppBaseErr>();
if (queryResult.Count() == 0) return WcsApiResponseFactory.Fail<AppBaseErr>(msg:"没有对应的报警资料");
var errInfo = queryResult[0];
return WcsApiResponseFactory.Success(errInfo);
}
} }

View File

@ -43,7 +43,8 @@ public class ElTagService(DataBaseData dataBaseData, AppElTagTaskDao elTagTaskDa
{ {
elTagTasks.Add(new AppElTagTask() elTagTasks.Add(new AppElTagTask()
{ {
TaskId = string.IsNullOrEmpty(elTagTask.TaskId) ? dataBaseData.GetNewUUID() : elTagTask.TaskId, TaskId = string.IsNullOrEmpty(elTagTask.ETaskId) ? dataBaseData.GetNewUUID() : elTagTask.ETaskId,
WmsTaskId = elTagTask.TaskId,
TaskGroup = request.TaskGroup, TaskGroup = request.TaskGroup,
TaskType = request.TaskType, TaskType = request.TaskType,
Location = elTagTask.Location, Location = elTagTask.Location,

View File

@ -28,7 +28,7 @@ public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDa
/// <returns></returns> /// <returns></returns>
public WmsApiResponse<List<GetStackerRequest>> GetStackerTask(List<GetStackerRequest> request) public WmsApiResponse<List<GetStackerRequest>> GetStackerTask(List<GetStackerRequest> request)
{ {
if (request.Count < 1) return WmsApiResponseFactory.RequestErr<List<GetStackerRequest>>(null, "请求的任务数量为 0"); if (request.Count < 1 || request.Count > 20) return WmsApiResponseFactory.RequestErr<List<GetStackerRequest>>(null, "请求的任务数量只能在 1 至 20 范围内");
List<GetStackerRequest> errRequest = []; // 存放错误的请求 List<GetStackerRequest> errRequest = []; // 存放错误的请求
/* 插入库存信息 */ // ---- 库存由WMS管理数据库表也无需操作 /* 插入库存信息 */ // ---- 库存由WMS管理数据库表也无需操作
List<AppWmsTask> wmsTasks = []; List<AppWmsTask> wmsTasks = [];
@ -70,7 +70,6 @@ public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDa
errRequest.Add(errorRequest); errRequest.Add(errorRequest);
} }
} }
/* 构造任务 */ /* 构造任务 */
wmsTasks.Add(new AppWmsTask() wmsTasks.Add(new AppWmsTask()
{ {

View File

@ -14,7 +14,7 @@ public class DataClear(ClearData clearData)
/// 定时清理无用数据, ---- 每隔10分钟清理一次 /// 定时清理无用数据, ---- 每隔10分钟清理一次
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[CirculationTime(["14:34"], "数据清理")] [CirculationTime(["03:00"], "数据清理")]
public void ClearDataCirculate() public void ClearDataCirculate()
{ {
try try

View File

@ -59,9 +59,4 @@ public class ReadScanCode(AppRouterMethodDao routerMethodDao, ConveyOperation co
return true; return true;
} }
} }

View File

@ -14,7 +14,7 @@ namespace WcsMain.Business.CirculationTask.Convey;
[Circulation] [Circulation]
public class UploadBoxArrive(AppConveyStandDao conveyStandDao, ConveyOperation conveyOperation, WmsWebApiPost wmsWebApiPost, AppConveyTaskDao conveyTaskDao) public class UploadBoxArrive(AppConveyStandDao conveyStandDao, ConveyOperation conveyOperation, WmsWebApiPost wmsWebApiPost, AppConveyTaskDao conveyTaskDao, AppElTagTaskDao elTagTaskDao)
{ {
private static List<AppConveyStand>? _pickStands; // 拣选站台 private static List<AppConveyStand>? _pickStands; // 拣选站台
@ -42,10 +42,8 @@ public class UploadBoxArrive(AppConveyStandDao conveyStandDao, ConveyOperation c
{ {
string code = conveyOperation.ReadStandCode(stand.StandId!); string code = conveyOperation.ReadStandCode(stand.StandId!);
code = Regex.Replace(code, "\\W", ""); code = Regex.Replace(code, "\\W", "");
if (string.IsNullOrEmpty(code)) if (string.IsNullOrEmpty(code)) return;
{ elTagTaskDao.ClearNotCompleteTaskWithStand(stand.StandId); // 清理之前未完成的电子标签任务
return;
}
ConsoleLog.Info($"【提示】料箱:{code} 已经到达拣选站台:{stand.StandId}"); ConsoleLog.Info($"【提示】料箱:{code} 已经到达拣选站台:{stand.StandId}");
conveyOperation.ClearStandCodeStatus(stand.StandId!); conveyOperation.ClearStandCodeStatus(stand.StandId!);
@ -55,15 +53,15 @@ public class UploadBoxArrive(AppConveyStandDao conveyStandDao, ConveyOperation c
VehicleNo = code, VehicleNo = code,
TaskType = (int)ConveyTaskTypeEnum.pick, TaskType = (int)ConveyTaskTypeEnum.pick,
Location = stand.StandId, Location = stand.StandId,
//TaskStatus = (int)ConveyTaskStatusEnum.moved TaskStatus = (int)ConveyTaskStatusEnum.create
}); });
if (pickTasks == default || pickTasks.Count < 1) if (pickTasks == default || pickTasks.Count < 1)
{ {
ConsoleLog.Error($"【异常】拣选站台{stand.StandId} 料箱:{code} 找不到对应任务"); ConsoleLog.Error($"【异常】拣选站台{stand.StandId} 料箱:{code} 找不到对应任务");
return;
} }
else
{
var pickTask = pickTasks[0]; // 拣选任务 var pickTask = pickTasks[0]; // 拣选任务
// 更新表内拣选时间和状态
conveyTaskDao.Update(new AppConveyTask() conveyTaskDao.Update(new AppConveyTask()
{ {
TaskId = pickTask.TaskId, TaskId = pickTask.TaskId,
@ -71,26 +69,26 @@ public class UploadBoxArrive(AppConveyStandDao conveyStandDao, ConveyOperation c
ArriveLocation = stand.StandId, ArriveLocation = stand.StandId,
CompleteTime = DateTime.Now, CompleteTime = DateTime.Now,
Remark = "PLC上报料箱到达" Remark = "PLC上报料箱到达"
}); }); // 更新表内拣选时间和状态
//return; // 测试 }
// 发送wms料箱到达 // 发送wms料箱到达
UploadPickStandRequest request = new() UploadPickStandRequest request = new()
{ {
Location = stand.StandId, Location = stand.StandId,
VehicleNo = pickTask.VehicleNo, VehicleNo = code,
Remark = "" Remark = $"料箱:{code} 已经到达站台:{stand.StandId}"
}; };
var responseEntity = wmsWebApiPost.HttpPost<UploadPickStandRequest, WmsResponse>(request, CommonData.AppApiBaseInfos.GetAddress("UploadBoxArrive") ?? "", 2000);
var responseEntity = wmsWebApiPost.HttpPost<UploadPickStandRequest, WmsResponse>(request,
CommonData.AppApiBaseInfos.GetAddress("UploadBoxArrive") ?? "", 2000);
if (responseEntity.IsSend) // 发送失败不处理,下一次循环在发送 if (responseEntity.IsSend) // 发送失败不处理,下一次循环在发送
{ {
// 只要发送成功则不再发送 // 只要发送成功则不再发送
ConsoleLog.Info( ConsoleLog.Info($"拣选站台{stand.Area} 获得对应料箱:{code} 上报成功WMS返回{responseEntity.ResponseMsg}");
$"拣选站台{stand.Area} 获得对应料箱:{pickTask.VehicleNo} 上报成功WMS返回{responseEntity.ResponseMsg}");
var result = responseEntity.ResponseEntity;
conveyOperation.ClearStandCodeStatus(stand.Area!); conveyOperation.ClearStandCodeStatus(stand.Area!);
//var result = responseEntity.ResponseEntity;
//if (result != null && result.Code == 0) // 上报成功
//{
// conveyOperation.ClearStandCodeStatus(stand.Area!);
//}
} }
}); });
task.Start(); task.Start();

View File

@ -83,7 +83,7 @@ public class ExeTaskDoubleFork(
if (forkStatus.Length <= i || forkStatus[i] != '1') continue; // 获取数据失败或者货叉未开启 if (forkStatus.Length <= i || forkStatus[i] != '1') continue; // 获取数据失败或者货叉未开启
var code = codes[i]; var code = codes[i];
if (string.IsNullOrEmpty(code)) continue; // 检查条码是否为空 if (string.IsNullOrEmpty(code)) continue; // 检查条码是否为空
ConsoleLog.Warning($"【警告】{stackerId} 号堆垛机,入库位置:{i + 1} 返回:{code}"); //ConsoleLog.Warning($"{stackerId} 号堆垛机,入库位置:{i + 1} 返回:{code}");
if (code == "NoRead") // 检查条码是否为 NoRead if (code == "NoRead") // 检查条码是否为 NoRead
{ {
/* 检查卸货站台是否允许卸货 */ /* 检查卸货站台是否允许卸货 */

View File

@ -0,0 +1,71 @@
using CirculateTool.Attribute;
using WcsMain.ApiServe.Controllers.Dto.WcsDto.Stacker;
using WcsMain.ApiServe.Factory;
using WcsMain.Common;
using WcsMain.DataBase.Dao;
using WcsMain.DataBase.TableEntity;
using WcsMain.DataService;
using WcsMain.EquipOperation.Stacker;
using WcsMain.ExtendMethod;
namespace WcsMain.Business.CirculationTask.Stacker;
/// <summary>
/// 本类主要用于采集堆垛机报警信息
/// </summary>
[Circulation]
public class RecordErr(StackerOperation stackerOperation, AppErrRecorDao errRecorDao, DataBaseData dataBaseData)
{
Dictionary<int, short> errData = []; // 用于存储故障
/// <summary>
/// 采集堆垛机报警信息
/// </summary>
/// <returns></returns>
[Circulation("采集堆垛机报警信息", 1000)]
public bool RecordErrMethod()
{
List<AppStacker> stackers = CommonData.AppStackers.Open();
if (stackers.Count < 1) return true;
foreach (AppStacker stacker in stackers)
{
/* 获取堆垛机状态 */
var (errMsg, stackerInfo) = stackerOperation.GetStackerInfo((int)stacker.StackerId!);
if (string.IsNullOrEmpty(errMsg) && stackerInfo != default)
{
short errCode = stackerInfo.ErrCode;
if (errCode != 0) // 有故障
{
bool isGet = errData.TryGetValue((int)stacker.StackerId, out short oldErrCode);
if(!isGet || oldErrCode != errCode) // 发生了一个新故障
{
AddStackerErr($"Stacker{stacker.StackerId}", errCode); // 添加故障
}
}
errData[(int)stacker.StackerId] = errCode; // 添加或者更新值
}
}
return true;
}
/// <summary>
/// 记录新故障
/// </summary>
/// <param name="equipmentId"></param>
/// <param name="errNo"></param>
private void AddStackerErr(string equipmentId, short errNo)
{
ConsoleLog.Error($"【报警】堆垛机设备:{equipmentId},发生新报警:{errNo}");
errRecorDao.Insert(new AppErrRecord
{
RecordId = dataBaseData.GetNewUUID2(),
Area = "S",
ErrNo = errNo,
EquipmentId = equipmentId,
CreateTime = DateTime.Now,
Remark = ""
});
}
}

View File

@ -34,7 +34,7 @@ public class ClearData(AppWmsTaskDao wmsTaskDao, AppWcsTaskDao wcsTaskDao, AppAp
var saveDays = clearTableAttribute.SaveDays; // 需要保存的天数 var saveDays = clearTableAttribute.SaveDays; // 需要保存的天数
try try
{ {
int deleteCount = CommonTool.DbServe.Deleteable<object>().AS($"{tableName}").Where($"{timeColumn} < '{DateTime.Now.AddDays(-saveDays)}'").ExecuteCommand(); // 删除超过一定天数的记录 int deleteCount = CommonTool.DbServe.Deleteable<object>().AS($"{tableName}").Where($"{timeColumn} < '{DateTime.Now.AddDays(-saveDays):yyyy-MM-dd HH:mm:ss}'").ExecuteCommand(); // 删除超过一定天数的记录
ConsoleLog.Info(deleteCount > 0, $"清除表:{tableName},保留:{saveDays} 天,清除记录数目:{deleteCount}"); ConsoleLog.Info(deleteCount > 0, $"清除表:{tableName},保留:{saveDays} 天,清除记录数目:{deleteCount}");
} }
catch(Exception e) catch(Exception e)

View File

@ -101,4 +101,6 @@ public class PickStandGetData(ConveyOperation conveyOperation, DataBaseData data
ConsoleLog.Warning($"【警告】拣选站台:{area} 箱码:{msg}写入PLC失败{plcTaskOk},信息:{errTextOk}"); ConsoleLog.Warning($"【警告】拣选站台:{area} 箱码:{msg}写入PLC失败{plcTaskOk},信息:{errTextOk}");
return; return;
} }
} }

View File

@ -98,7 +98,7 @@ public class StackerInErr(ConveyOperation conveyOperation, DataBaseData dataBase
ConsoleLog.Warning($"【警告】入库分流:{area} 箱码:{msg}写入PLC失败{plcTask},信息:{errText}"); ConsoleLog.Warning($"【警告】入库分流:{area} 箱码:{msg}写入PLC失败{plcTask},信息:{errText}");
return; return;
} }
ConveyRouterEnum router = (ConveyRouterEnum)(6 - locationDetail.TunnelNo ?? 0); ConveyRouterEnum router = (ConveyRouterEnum)(locationDetail.TunnelNo ?? 0);
ConsoleLog.Success($"入库分流:{area} 箱码:{msg} 终点:{wcsTask.Destination} 巷道:{locationDetail.TunnelNo}"); ConsoleLog.Success($"入库分流:{area} 箱码:{msg} 终点:{wcsTask.Destination} 巷道:{locationDetail.TunnelNo}");
ConveyPLCTask plcTaskOk = new(plcId, (short)router); ConveyPLCTask plcTaskOk = new(plcId, (short)router);
string errTextOk = conveyOperation.WriteTask(area, plcTaskOk); string errTextOk = conveyOperation.WriteTask(area, plcTaskOk);

View File

@ -97,7 +97,7 @@ public class StackerInSpliter(ConveyOperation conveyOperation, DataBaseData data
ConsoleLog.Warning($"【警告】入库分流:{area} 箱码:{msg}写入PLC失败{plcTask},信息:{errText}"); ConsoleLog.Warning($"【警告】入库分流:{area} 箱码:{msg}写入PLC失败{plcTask},信息:{errText}");
return; return;
} }
ConveyRouterEnum router = (ConveyRouterEnum)(6 - locationDetail.TunnelNo ?? 0); ConveyRouterEnum router = (ConveyRouterEnum)(locationDetail.TunnelNo ?? 0);
ConsoleLog.Success($"入库分流:{area} 箱码:{msg} 终点:{wcsTask.Destination} 巷道:{locationDetail.TunnelNo}"); ConsoleLog.Success($"入库分流:{area} 箱码:{msg} 终点:{wcsTask.Destination} 巷道:{locationDetail.TunnelNo}");
ConveyPLCTask plcTaskOk = new(plcId, (short)router); ConveyPLCTask plcTaskOk = new(plcId, (short)router);
string errTextOk = conveyOperation.WriteTask(area, plcTaskOk); string errTextOk = conveyOperation.WriteTask(area, plcTaskOk);

View File

@ -0,0 +1,43 @@
using WcsMain.Common;
using WcsMain.DataBase.TableEntity;
using WcsMain.WcsAttribute.AutoFacAttribute;
namespace WcsMain.DataBase.Dao;
[Component]
public class AppBaseErrDao
{
/// <summary>
/// 条件查询
/// </summary>
/// <param name="appBaseErr"></param>
/// <returns></returns>
public List<AppBaseErr>? Select(AppBaseErr appBaseErr)
{
try
{
var sqlFuc = CommonTool.DbServe.Queryable<AppBaseErr>()
.WhereIF(appBaseErr.Area != default, w => w.Area == appBaseErr.Area)
.WhereIF(appBaseErr.ErrNo != default, w => w.ErrNo == appBaseErr.ErrNo)
.WhereIF(appBaseErr.ErrType != default, w => w.ErrType == appBaseErr.ErrType)
.WhereIF(appBaseErr.ErrLevel != default, w => w.ErrLevel == appBaseErr.ErrLevel)
.WhereIF(appBaseErr.ErrMsg != default, w => w.ErrMsg == appBaseErr.ErrMsg)
.WhereIF(appBaseErr.Suggest != default, w => w.Suggest == appBaseErr.Suggest)
.WhereIF(appBaseErr.Remark != default, w => w.Remark == appBaseErr.Remark)
.OrderBy(o => new { o.Area, o.ErrNo });
return sqlFuc.ToList();
}
catch (Exception ex)
{
_ = ex;
return default;
}
}
/// <summary>
/// 查询全部
/// </summary>
/// <returns></returns>
public List<AppBaseErr>? Select() => Select(new AppBaseErr());
}

View File

@ -21,6 +21,7 @@ public class AppElTagTaskDao
{ {
var sqlFuc = CommonTool.DbServe.Queryable<AppElTagTask>() var sqlFuc = CommonTool.DbServe.Queryable<AppElTagTask>()
.WhereIF(queryData.TaskId != default, w => w.TaskId == queryData.TaskId) .WhereIF(queryData.TaskId != default, w => w.TaskId == queryData.TaskId)
.WhereIF(queryData.WmsTaskId != default, w => w.WmsTaskId == queryData.WmsTaskId)
.WhereIF(queryData.TaskGroup != default, w => w.TaskGroup == queryData.TaskGroup) .WhereIF(queryData.TaskGroup != default, w => w.TaskGroup == queryData.TaskGroup)
.WhereIF(queryData.Location != default, w => w.Location == queryData.Location) .WhereIF(queryData.Location != default, w => w.Location == queryData.Location)
.WhereIF(queryData.OrderId != default, w => w.OrderId == queryData.OrderId) .WhereIF(queryData.OrderId != default, w => w.OrderId == queryData.OrderId)
@ -104,6 +105,7 @@ public class AppElTagTaskDao
.WhereIF(!string.IsNullOrEmpty(request.SearchStr), .WhereIF(!string.IsNullOrEmpty(request.SearchStr),
w => w.TaskId!.Contains(request.SearchStr!) w => w.TaskId!.Contains(request.SearchStr!)
|| w.TaskGroup!.Contains(request.SearchStr!) || w.TaskGroup!.Contains(request.SearchStr!)
|| w.WmsTaskId!.Contains(request.SearchStr!)
|| w.Location!.Contains(request.SearchStr!) || w.Location!.Contains(request.SearchStr!)
|| w.VehicleNo!.Contains(request.SearchStr!) || w.VehicleNo!.Contains(request.SearchStr!)
|| w.GoodsId!.Contains(request.SearchStr!) || w.GoodsId!.Contains(request.SearchStr!)
@ -156,6 +158,44 @@ public class AppElTagTaskDao
} }
} }
/// <summary>
/// 清除该载具没有完成的任务
/// </summary>
/// <param name="vehicleNo"></param>
/// <returns></returns>
public int ClearNotCompleteTaskWithVehicleNo(string? vehicleNo)
{
if(string.IsNullOrEmpty(vehicleNo)) return 0;
try
{
var sqlFuc = CommonTool.DbServe.Updateable<AppElTagTask>()
.SetColumns(s => s.TaskStatus == (int)ElTagTaskStatusEnum.Error)
.SetColumns(s => s.Remark == "未执行")
.Where(w => w.VehicleNo == vehicleNo && (w.TaskStatus == (int)ElTagTaskStatusEnum.Lighting || w.TaskStatus == (int)ElTagTaskStatusEnum.NeedLight));
return sqlFuc.ExecuteCommand();
}
catch(Exception ex) { _ = ex; return 0; }
}
/// <summary>
/// 清除这个站台之前未完成的电子标签任务
/// </summary>
/// <param name="standId"></param>
/// <returns></returns>
public int ClearNotCompleteTaskWithStand(string? standId)
{
if (string.IsNullOrEmpty(standId) || standId.Length < 1) return 0;
try
{
var sqlFuc = CommonTool.DbServe.Updateable<AppElTagTask>()
.SetColumns(s => s.TaskStatus == (int)ElTagTaskStatusEnum.Error)
.SetColumns(s => s.Remark == "新箱子到,自动结束")
.Where(w => w.Location!.StartsWith(standId.Substring(standId.Length - 1)) && (w.TaskStatus == (int)ElTagTaskStatusEnum.Lighting || w.TaskStatus == (int)ElTagTaskStatusEnum.NeedLight));
return sqlFuc.ExecuteCommand();
}
catch (Exception ex) { _ = ex; return 0; }
}
/// <summary> /// <summary>
/// 清理多少天之前的数据 /// 清理多少天之前的数据

View File

@ -0,0 +1,31 @@
using WcsMain.Common;
using WcsMain.DataBase.TableEntity;
using WcsMain.WcsAttribute.AutoFacAttribute;
namespace WcsMain.DataBase.Dao;
[Component]
public class AppErrRecorDao
{
/// <summary>
/// 插入数据
/// </summary>
/// <param name="records"></param>
/// <returns></returns>
public int Insert(params AppErrRecord[] records)
{
try
{
var sqlFuc = CommonTool.DbServe.Insertable(records);
return sqlFuc.ExecuteCommand();
}
catch (Exception ex)
{
_ = ex;
return 0;
}
}
}

View File

@ -38,7 +38,7 @@ public class TaskDao
{ {
TaskId = wcsTask.TaskId, TaskId = wcsTask.TaskId,
TaskStatus = (int)WmsTaskStatusEnum.queuing, TaskStatus = (int)WmsTaskStatusEnum.queuing,
StartTime = dateTime //StartTime = dateTime
}).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand(); }).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();
} }
}); });

View File

@ -0,0 +1,65 @@
using SqlSugar;
using System.Text.Json.Serialization;
namespace WcsMain.DataBase.TableEntity;
/// <summary>
/// 基础报警资料
/// </summary>
[SugarTable("tbl_app_base_err")]
public class AppBaseErr
{
/// <summary>
/// 区域
/// </summary>
[SugarColumn(ColumnName = "area")]
[JsonPropertyName("area")]
public string? Area { get; set; }
/// <summary>
/// 报警代码
/// </summary>
[SugarColumn(ColumnName = "err_no")]
[JsonPropertyName("errNo")]
public int? ErrNo { get; set; }
/// <summary>
/// 报警类型
/// </summary>
[SugarColumn(ColumnName = "err_type")]
[JsonPropertyName("errType")]
public string? ErrType { get; set; }
/// <summary>
/// 报警级别
/// </summary>
[SugarColumn(ColumnName = "err_level")]
[JsonPropertyName("errLevel")]
public int? ErrLevel { get; set; }
/// <summary>
/// 报警信息
/// </summary>
[SugarColumn(ColumnName = "err_msg")]
[JsonPropertyName("errMsg")]
public string? ErrMsg { get; set; }
/// <summary>
/// 建议
/// </summary>
[SugarColumn(ColumnName = "suggest")]
[JsonPropertyName("suggest")]
public string? Suggest { get; set; }
/// <summary>
/// 备注
/// </summary>
[SugarColumn(ColumnName = "remark")]
[JsonPropertyName("remark")]
public string? Remark { get; set; }
}

View File

@ -15,6 +15,13 @@ public class AppElTagTask
[JsonPropertyName("taskId")] [JsonPropertyName("taskId")]
public string? TaskId { get; set; } public string? TaskId { get; set; }
/// <summary>
/// 任务号
/// </summary>
[SugarColumn(ColumnName = "wms_task_id")]
[JsonPropertyName("wmsTaskId")]
public string? WmsTaskId { get; set; }
/// <summary> /// <summary>
/// 任务组 /// 任务组
/// </summary> /// </summary>

View File

@ -0,0 +1,56 @@
using SqlSugar;
using System.Text.Json.Serialization;
using WcsMain.WcsAttribute.Clear;
namespace WcsMain.DataBase.TableEntity;
/// <summary>
/// 报警记录表
/// </summary>
[SugarTable("tbl_app_err_record")]
[ClearTable("create_time", 180)]
public class AppErrRecord
{
/// <summary>
/// 记录号
/// </summary>
[SugarColumn(ColumnName = "record_id", IsPrimaryKey = true)]
[JsonPropertyName("recordId")]
public string? RecordId { get; set; }
/// <summary>
/// 区域
/// </summary>
[SugarColumn(ColumnName = "area")]
[JsonPropertyName("area")]
public string? Area { get; set; }
/// <summary>
/// 报警编号
/// </summary>
[SugarColumn(ColumnName = "err_no")]
[JsonPropertyName("errNo")]
public int? ErrNo { get; set; }
/// <summary>
/// 设备号
/// </summary>
[SugarColumn(ColumnName = "equipment_id")]
[JsonPropertyName("equipmentId")]
public string? EquipmentId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[SugarColumn(ColumnName = "create_time")]
[JsonPropertyName("createTime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 备注
/// </summary>
[SugarColumn(ColumnName = "remark")]
[JsonPropertyName("remark")]
public string? Remark { get; set; }
}

View File

@ -74,7 +74,7 @@ public class BaseOprDataHandler(AppElTagLocationDao tagBaseDao, AppElTagTaskDao
eltags = [.. eltags.OrderByDescending(el => el.LastLightTime)]; eltags = [.. eltags.OrderByDescending(el => el.LastLightTime)];
var eltag = eltags[0]; var eltag = eltags[0];
string? taskId = eltag.TaskId; // 获取任务号 string? taskId = eltag.TaskId; // 获取任务号
if(string.IsNullOrEmpty(taskId) ) if(string.IsNullOrEmpty(taskId))
{ {
ConsoleLog.Warning($"【异常】电子标签确认按钮按下,该标签没有绑定的显示任务,控制器:{tcpServe.ControllerDisplayName},标签号:{tcpServe.TagId},数据:{tcpServe.Data}"); ConsoleLog.Warning($"【异常】电子标签确认按钮按下,该标签没有绑定的显示任务,控制器:{tcpServe.ControllerDisplayName},标签号:{tcpServe.TagId},数据:{tcpServe.Data}");
return; return;
@ -106,7 +106,7 @@ public class BaseOprDataHandler(AppElTagLocationDao tagBaseDao, AppElTagTaskDao
TaskType = tagTask.TaskType, TaskType = tagTask.TaskType,
VehicleNo = tagTask.VehicleNo, VehicleNo = tagTask.VehicleNo,
OrderId = tagTask.OrderId, OrderId = tagTask.OrderId,
TaskId = tagTask.TaskId, TaskId = tagTask.WmsTaskId,
Location = tagTask.Location, Location = tagTask.Location,
GoodsId = tagTask.GoodsId, GoodsId = tagTask.GoodsId,
GoodsName = tagTask.GoodsName, GoodsName = tagTask.GoodsName,

View File

@ -26,6 +26,7 @@ public class AtopOperation
{ {
col++; col++;
if (col >= 5) col = 0; if (col >= 5) col = 0;
CommonTool.OprTcpClient.Send(TagSendInfo.SetTagModel(Convert.ToByte(tagInfo.TagId), TagMode.Picking), tagInfo.ControllerDisplayName!);
CommonTool.OprTcpClient.Send(TagSendInfo.ShowTagId(Convert.ToByte(tagInfo.TagId)), tagInfo.ControllerDisplayName!); CommonTool.OprTcpClient.Send(TagSendInfo.ShowTagId(Convert.ToByte(tagInfo.TagId)), tagInfo.ControllerDisplayName!);
CommonTool.OprTcpClient.Send(TagSendInfo.LedColor(Convert.ToByte(tagInfo.TagId), (LedColor)col), tagInfo.ControllerDisplayName!); // 显示颜色 CommonTool.OprTcpClient.Send(TagSendInfo.LedColor(Convert.ToByte(tagInfo.TagId), (LedColor)col), tagInfo.ControllerDisplayName!); // 显示颜色
CommonTool.OprTcpClient.Send(TagSendInfo.LedStatus(Convert.ToByte(tagInfo.TagId), LedStatus._0_25secblinking), tagInfo.ControllerDisplayName!); // 显示闪烁频率 CommonTool.OprTcpClient.Send(TagSendInfo.LedStatus(Convert.ToByte(tagInfo.TagId), LedStatus._0_25secblinking), tagInfo.ControllerDisplayName!); // 显示闪烁频率

View File

@ -4,8 +4,8 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
--> -->
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<_PublishTargetUrl>F:\AProject\A菲达宝开项目\2024-02_隆成立库\应用程序\wcs_serve_cs\wcs_serve_cs\bin\Release\net8.0\publish\</_PublishTargetUrl> <_PublishTargetUrl>F:\A开发项目\A菲达宝开项目\2024-05_苏州卡特\应用程序\WcsService\WcsMain\bin\Release\net8.0\publish\</_PublishTargetUrl>
<History>True|2024-03-29T07:42:25.2332590Z;False|2024-03-29T15:41:29.1754215+08:00;True|2024-03-29T15:21:55.1373612+08:00;True|2024-03-28T09:54:32.8968372+08:00;True|2024-01-28T15:05:36.1055501+08:00;True|2024-01-28T15:02:06.6945727+08:00;True|2024-01-28T14:56:23.0500171+08:00;True|2024-01-20T20:29:00.5459863+08:00;</History> <History>True|2024-08-15T03:33:38.2722633Z||;True|2024-08-15T10:25:38.1970709+08:00||;True|2024-08-15T09:10:35.3249477+08:00||;True|2024-08-15T08:54:49.3636124+08:00||;True|2024-08-14T10:23:19.0348163+08:00||;True|2024-08-07T10:16:37.1827604+08:00||;True|2024-03-29T15:42:25.2332590+08:00||;False|2024-03-29T15:41:29.1754215+08:00||;True|2024-03-29T15:21:55.1373612+08:00||;True|2024-03-28T09:54:32.8968372+08:00||;True|2024-01-28T15:05:36.1055501+08:00||;True|2024-01-28T15:02:06.6945727+08:00||;True|2024-01-28T14:56:23.0500171+08:00||;True|2024-01-20T20:29:00.5459863+08:00||;</History>
<LastFailureDetails /> <LastFailureDetails />
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@ -106,7 +106,7 @@ public class LoadingRunningData
IsAutoCloseConnection = true, IsAutoCloseConnection = true,
ConfigId = "0", ConfigId = "0",
DbType = DbType.MySql, DbType = DbType.MySql,
ConnectionString = wcsDataBaseConnectString ConnectionString = wcsDataBaseConnectString,
}); });
} }

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<NameOfLastUsedPublishProfile>FolderProfile</NameOfLastUsedPublishProfile> <NameOfLastUsedPublishProfile>F:\A开发项目\A菲达宝开项目\2024-05_苏州卡特\应用程序\WcsService\WcsMain\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
<Controller_SelectedScaffolderID>ApiControllerEmptyScaffolder</Controller_SelectedScaffolderID> <Controller_SelectedScaffolderID>ApiControllerEmptyScaffolder</Controller_SelectedScaffolderID>
<Controller_SelectedScaffolderCategoryPath>root/Common/Api</Controller_SelectedScaffolderCategoryPath> <Controller_SelectedScaffolderCategoryPath>root/Common/Api</Controller_SelectedScaffolderCategoryPath>
</PropertyGroup> </PropertyGroup>

View File

@ -7,7 +7,7 @@
}, },
"AllowedHosts": "*", "AllowedHosts": "*",
"Settings": { "Settings": {
"DBMysql": "server=192.168.103.200;port=3306;user=developer;password=developer;database=wcs_main;", "DBMysql": "server=10.90.36.71;port=3306;user=developer;password=developer;database=wcs_kate_suzhou;",
"DBMysqlLocal": "server=192.168.234.134;port=3306;user=developer;password=developer;database=wcs_kate_suzhou;", "DBMysqlLocal": "server=192.168.234.134;port=3306;user=developer;password=developer;database=wcs_kate_suzhou;",
"DBMssql": "Data Source=192.168.142.131;Initial Catalog=wcs;User Id=sa;Password=Sa123;", "DBMssql": "Data Source=192.168.142.131;Initial Catalog=wcs;User Id=sa;Password=Sa123;",