Compare commits
4 Commits
579852e4bd
...
79fc895f4a
| Author | SHA1 | Date | |
|---|---|---|---|
| 79fc895f4a | |||
| 33d1911609 | |||
| ce51fe383a | |||
| bf6f171066 |
|
|
@ -7,34 +7,63 @@ namespace WcsMain.ApiClient.DataEntity.WmsEntity;
|
|||
/// </summary>
|
||||
public class ElTagComfirmButtonClickRequest
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 任务组
|
||||
/// </summary>
|
||||
[JsonProperty("taskGroup")]
|
||||
public string? TaskGroup { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务类型
|
||||
/// </summary>
|
||||
[JsonProperty("taskType")]
|
||||
public int? TaskType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 载具号
|
||||
/// </summary>
|
||||
[JsonProperty("vehicleNo")]
|
||||
public string? VehicleNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 订单号
|
||||
/// </summary>
|
||||
[JsonProperty("orderId")]
|
||||
public string? OrderId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务号
|
||||
/// </summary>
|
||||
[JsonProperty("taskId")]
|
||||
public string? TaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 点位
|
||||
/// </summary>
|
||||
[JsonProperty("location")]
|
||||
public string? Location { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料ID
|
||||
/// </summary>
|
||||
[JsonProperty("goodsId")]
|
||||
public string? GoodsId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料名称
|
||||
/// </summary>
|
||||
[JsonProperty("goodsName")]
|
||||
public string? GoodsName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 需求数量
|
||||
/// </summary>
|
||||
[JsonProperty("needNum")]
|
||||
public int? NeedNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 确认数量
|
||||
/// </summary>
|
||||
[JsonProperty("confirmNum")]
|
||||
public int? ConfirmNum { get; set; }
|
||||
|
||||
|
|
|
|||
|
|
@ -45,6 +45,12 @@ public class ElTagTaskdata
|
|||
/// <summary>
|
||||
/// 任务号
|
||||
/// </summary>
|
||||
[JsonPropertyName("eTaskId")]
|
||||
public string? ETaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// WMS任务号
|
||||
/// </summary>
|
||||
[JsonPropertyName("taskId")]
|
||||
public string? TaskId { get; set; }
|
||||
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -36,4 +36,11 @@ public class StackerController(StackerService stackerService) : ControllerBase
|
|||
[HttpPost("editStacker")]
|
||||
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);
|
||||
|
||||
}
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
using DataCheck;
|
||||
using Microsoft.VisualStudio.Web.CodeGenerators.Mvc.Dependency;
|
||||
using System.Collections.Generic;
|
||||
using WcsMain.ApiServe.Controllers.Dto;
|
||||
using WcsMain.ApiServe.Controllers.Dto.WcsDto.Stacker;
|
||||
|
|
@ -11,7 +12,7 @@ using WcsMain.WcsAttribute.AutoFacAttribute;
|
|||
namespace WcsMain.ApiServe.Service.WcsService;
|
||||
|
||||
[Service]
|
||||
public class StackerService(AppStackerDao stackerDao, StackerOperation stackerOperation)
|
||||
public class StackerService(AppStackerDao stackerDao, StackerOperation stackerOperation, AppBaseErrDao baseErrDao)
|
||||
{
|
||||
/// <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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,8 @@ public class ElTagService(DataBaseData dataBaseData, AppElTagTaskDao elTagTaskDa
|
|||
{
|
||||
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,
|
||||
TaskType = request.TaskType,
|
||||
Location = elTagTask.Location,
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDa
|
|||
/// <returns></returns>
|
||||
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 = []; // 存放错误的请求
|
||||
/* 插入库存信息 */ // ---- 库存由WMS管理,数据库表也无需操作
|
||||
List<AppWmsTask> wmsTasks = [];
|
||||
|
|
@ -70,7 +70,6 @@ public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDa
|
|||
errRequest.Add(errorRequest);
|
||||
}
|
||||
}
|
||||
|
||||
/* 构造任务 */
|
||||
wmsTasks.Add(new AppWmsTask()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ public class DataClear(ClearData clearData)
|
|||
/// 定时清理无用数据, ---- 每隔10分钟清理一次
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[CirculationTime(["14:34"], "数据清理")]
|
||||
[CirculationTime(["03:00"], "数据清理")]
|
||||
public void ClearDataCirculate()
|
||||
{
|
||||
try
|
||||
|
|
|
|||
|
|
@ -59,9 +59,4 @@ public class ReadScanCode(AppRouterMethodDao routerMethodDao, ConveyOperation co
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ namespace WcsMain.Business.CirculationTask.Convey;
|
|||
|
||||
|
||||
[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; // 拣选站台
|
||||
|
||||
|
|
@ -42,10 +42,8 @@ public class UploadBoxArrive(AppConveyStandDao conveyStandDao, ConveyOperation c
|
|||
{
|
||||
string code = conveyOperation.ReadStandCode(stand.StandId!);
|
||||
code = Regex.Replace(code, "\\W", "");
|
||||
if (string.IsNullOrEmpty(code))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (string.IsNullOrEmpty(code)) return;
|
||||
elTagTaskDao.ClearNotCompleteTaskWithStand(stand.StandId); // 清理之前未完成的电子标签任务
|
||||
ConsoleLog.Info($"【提示】料箱:{code} 已经到达拣选站台:{stand.StandId}");
|
||||
conveyOperation.ClearStandCodeStatus(stand.StandId!);
|
||||
|
||||
|
|
@ -55,42 +53,42 @@ public class UploadBoxArrive(AppConveyStandDao conveyStandDao, ConveyOperation c
|
|||
VehicleNo = code,
|
||||
TaskType = (int)ConveyTaskTypeEnum.pick,
|
||||
Location = stand.StandId,
|
||||
//TaskStatus = (int)ConveyTaskStatusEnum.moved
|
||||
TaskStatus = (int)ConveyTaskStatusEnum.create
|
||||
});
|
||||
if (pickTasks == default || pickTasks.Count < 1)
|
||||
{
|
||||
ConsoleLog.Error($"【异常】拣选站台{stand.StandId} 料箱:{code} 找不到对应任务");
|
||||
return;
|
||||
}
|
||||
var pickTask = pickTasks[0]; // 拣选任务
|
||||
// 更新表内拣选时间和状态
|
||||
conveyTaskDao.Update(new AppConveyTask()
|
||||
else
|
||||
{
|
||||
TaskId = pickTask.TaskId,
|
||||
TaskStatus = (int)ConveyTaskStatusEnum.arrive,
|
||||
ArriveLocation = stand.StandId,
|
||||
CompleteTime = DateTime.Now,
|
||||
Remark = "PLC上报料箱到达"
|
||||
});
|
||||
//return; // 测试
|
||||
|
||||
var pickTask = pickTasks[0]; // 拣选任务
|
||||
conveyTaskDao.Update(new AppConveyTask()
|
||||
{
|
||||
TaskId = pickTask.TaskId,
|
||||
TaskStatus = (int)ConveyTaskStatusEnum.arrive,
|
||||
ArriveLocation = stand.StandId,
|
||||
CompleteTime = DateTime.Now,
|
||||
Remark = "PLC上报料箱到达"
|
||||
}); // 更新表内拣选时间和状态
|
||||
}
|
||||
// 发送wms料箱到达
|
||||
UploadPickStandRequest request = new()
|
||||
{
|
||||
Location = stand.StandId,
|
||||
VehicleNo = pickTask.VehicleNo,
|
||||
Remark = ""
|
||||
VehicleNo = code,
|
||||
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) // 发送失败不处理,下一次循环在发送
|
||||
{
|
||||
// 只要发送成功则不再发送
|
||||
ConsoleLog.Info(
|
||||
$"拣选站台{stand.Area} 获得对应料箱:{pickTask.VehicleNo} 上报成功,WMS返回:{responseEntity.ResponseMsg}");
|
||||
var result = responseEntity.ResponseEntity;
|
||||
ConsoleLog.Info($"拣选站台{stand.Area} 获得对应料箱:{code} 上报成功,WMS返回:{responseEntity.ResponseMsg}");
|
||||
conveyOperation.ClearStandCodeStatus(stand.Area!);
|
||||
//var result = responseEntity.ResponseEntity;
|
||||
//if (result != null && result.Code == 0) // 上报成功
|
||||
//{
|
||||
// conveyOperation.ClearStandCodeStatus(stand.Area!);
|
||||
//}
|
||||
}
|
||||
});
|
||||
task.Start();
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ public class ExeTaskDoubleFork(
|
|||
if (forkStatus.Length <= i || forkStatus[i] != '1') continue; // 获取数据失败或者货叉未开启
|
||||
var code = codes[i];
|
||||
if (string.IsNullOrEmpty(code)) continue; // 检查条码是否为空
|
||||
ConsoleLog.Warning($"【警告】{stackerId} 号堆垛机,入库位置:{i + 1} 返回:{code}");
|
||||
//ConsoleLog.Warning($"{stackerId} 号堆垛机,入库位置:{i + 1} 返回:{code}");
|
||||
if (code == "NoRead") // 检查条码是否为 NoRead
|
||||
{
|
||||
/* 检查卸货站台是否允许卸货 */
|
||||
|
|
|
|||
71
WcsMain/Business/CirculationTask/Stacker/RecordErr.cs
Normal file
71
WcsMain/Business/CirculationTask/Stacker/RecordErr.cs
Normal 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 = ""
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -34,7 +34,7 @@ public class ClearData(AppWmsTaskDao wmsTaskDao, AppWcsTaskDao wcsTaskDao, AppAp
|
|||
var saveDays = clearTableAttribute.SaveDays; // 需要保存的天数
|
||||
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}");
|
||||
}
|
||||
catch(Exception e)
|
||||
|
|
|
|||
|
|
@ -101,4 +101,6 @@ public class PickStandGetData(ConveyOperation conveyOperation, DataBaseData data
|
|||
ConsoleLog.Warning($"【警告】拣选站台:{area} 箱码:{msg},写入PLC失败,{plcTaskOk},信息:{errTextOk}");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ public class StackerInErr(ConveyOperation conveyOperation, DataBaseData dataBase
|
|||
ConsoleLog.Warning($"【警告】入库分流:{area} 箱码:{msg},写入PLC失败,{plcTask},信息:{errText}");
|
||||
return;
|
||||
}
|
||||
ConveyRouterEnum router = (ConveyRouterEnum)(6 - locationDetail.TunnelNo ?? 0);
|
||||
ConveyRouterEnum router = (ConveyRouterEnum)(locationDetail.TunnelNo ?? 0);
|
||||
ConsoleLog.Success($"入库分流:{area} 箱码:{msg} 终点:{wcsTask.Destination} 巷道:{locationDetail.TunnelNo}");
|
||||
ConveyPLCTask plcTaskOk = new(plcId, (short)router);
|
||||
string errTextOk = conveyOperation.WriteTask(area, plcTaskOk);
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ public class StackerInSpliter(ConveyOperation conveyOperation, DataBaseData data
|
|||
ConsoleLog.Warning($"【警告】入库分流:{area} 箱码:{msg},写入PLC失败,{plcTask},信息:{errText}");
|
||||
return;
|
||||
}
|
||||
ConveyRouterEnum router = (ConveyRouterEnum)(6 - locationDetail.TunnelNo ?? 0);
|
||||
ConveyRouterEnum router = (ConveyRouterEnum)(locationDetail.TunnelNo ?? 0);
|
||||
ConsoleLog.Success($"入库分流:{area} 箱码:{msg} 终点:{wcsTask.Destination} 巷道:{locationDetail.TunnelNo}");
|
||||
ConveyPLCTask plcTaskOk = new(plcId, (short)router);
|
||||
string errTextOk = conveyOperation.WriteTask(area, plcTaskOk);
|
||||
|
|
|
|||
43
WcsMain/DataBase/Dao/AppBaseErrDao.cs
Normal file
43
WcsMain/DataBase/Dao/AppBaseErrDao.cs
Normal 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());
|
||||
}
|
||||
|
|
@ -21,6 +21,7 @@ public class AppElTagTaskDao
|
|||
{
|
||||
var sqlFuc = CommonTool.DbServe.Queryable<AppElTagTask>()
|
||||
.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.Location != default, w => w.Location == queryData.Location)
|
||||
.WhereIF(queryData.OrderId != default, w => w.OrderId == queryData.OrderId)
|
||||
|
|
@ -104,6 +105,7 @@ public class AppElTagTaskDao
|
|||
.WhereIF(!string.IsNullOrEmpty(request.SearchStr),
|
||||
w => w.TaskId!.Contains(request.SearchStr!)
|
||||
|| w.TaskGroup!.Contains(request.SearchStr!)
|
||||
|| w.WmsTaskId!.Contains(request.SearchStr!)
|
||||
|| w.Location!.Contains(request.SearchStr!)
|
||||
|| w.VehicleNo!.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>
|
||||
/// 清理多少天之前的数据
|
||||
|
|
|
|||
31
WcsMain/DataBase/Dao/AppErrRecorDao.cs
Normal file
31
WcsMain/DataBase/Dao/AppErrRecorDao.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -38,7 +38,7 @@ public class TaskDao
|
|||
{
|
||||
TaskId = wcsTask.TaskId,
|
||||
TaskStatus = (int)WmsTaskStatusEnum.queuing,
|
||||
StartTime = dateTime
|
||||
//StartTime = dateTime
|
||||
}).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();
|
||||
}
|
||||
});
|
||||
|
|
|
|||
65
WcsMain/DataBase/TableEntity/AppBaseErr.cs
Normal file
65
WcsMain/DataBase/TableEntity/AppBaseErr.cs
Normal 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; }
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -15,6 +15,13 @@ public class AppElTagTask
|
|||
[JsonPropertyName("taskId")]
|
||||
public string? TaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务号
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnName = "wms_task_id")]
|
||||
[JsonPropertyName("wmsTaskId")]
|
||||
public string? WmsTaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务组
|
||||
/// </summary>
|
||||
|
|
|
|||
56
WcsMain/DataBase/TableEntity/AppErrRecord.cs
Normal file
56
WcsMain/DataBase/TableEntity/AppErrRecord.cs
Normal 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; }
|
||||
|
||||
}
|
||||
|
|
@ -74,7 +74,7 @@ public class BaseOprDataHandler(AppElTagLocationDao tagBaseDao, AppElTagTaskDao
|
|||
eltags = [.. eltags.OrderByDescending(el => el.LastLightTime)];
|
||||
var eltag = eltags[0];
|
||||
string? taskId = eltag.TaskId; // 获取任务号
|
||||
if(string.IsNullOrEmpty(taskId) )
|
||||
if(string.IsNullOrEmpty(taskId))
|
||||
{
|
||||
ConsoleLog.Warning($"【异常】电子标签确认按钮按下,该标签没有绑定的显示任务,控制器:{tcpServe.ControllerDisplayName},标签号:{tcpServe.TagId},数据:{tcpServe.Data}");
|
||||
return;
|
||||
|
|
@ -106,7 +106,7 @@ public class BaseOprDataHandler(AppElTagLocationDao tagBaseDao, AppElTagTaskDao
|
|||
TaskType = tagTask.TaskType,
|
||||
VehicleNo = tagTask.VehicleNo,
|
||||
OrderId = tagTask.OrderId,
|
||||
TaskId = tagTask.TaskId,
|
||||
TaskId = tagTask.WmsTaskId,
|
||||
Location = tagTask.Location,
|
||||
GoodsId = tagTask.GoodsId,
|
||||
GoodsName = tagTask.GoodsName,
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ public class AtopOperation
|
|||
{
|
||||
col++;
|
||||
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.LedColor(Convert.ToByte(tagInfo.TagId), (LedColor)col), tagInfo.ControllerDisplayName!); // 显示颜色
|
||||
CommonTool.OprTcpClient.Send(TagSendInfo.LedStatus(Convert.ToByte(tagInfo.TagId), LedStatus._0_25secblinking), tagInfo.ControllerDisplayName!); // 显示闪烁频率
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
|
|||
-->
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<_PublishTargetUrl>F:\AProject\A菲达宝开项目\2024-02_隆成立库\应用程序\wcs_serve_cs\wcs_serve_cs\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>
|
||||
<_PublishTargetUrl>F:\A开发项目\A菲达宝开项目\2024-05_苏州卡特\应用程序\WcsService\WcsMain\bin\Release\net8.0\publish\</_PublishTargetUrl>
|
||||
<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 />
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -106,7 +106,7 @@ public class LoadingRunningData
|
|||
IsAutoCloseConnection = true,
|
||||
ConfigId = "0",
|
||||
DbType = DbType.MySql,
|
||||
ConnectionString = wcsDataBaseConnectString
|
||||
ConnectionString = wcsDataBaseConnectString,
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<NameOfLastUsedPublishProfile>FolderProfile</NameOfLastUsedPublishProfile>
|
||||
<NameOfLastUsedPublishProfile>F:\A开发项目\A菲达宝开项目\2024-05_苏州卡特\应用程序\WcsService\WcsMain\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
|
||||
<Controller_SelectedScaffolderID>ApiControllerEmptyScaffolder</Controller_SelectedScaffolderID>
|
||||
<Controller_SelectedScaffolderCategoryPath>root/Common/Api</Controller_SelectedScaffolderCategoryPath>
|
||||
</PropertyGroup>
|
||||
|
|
|
|||
|
|
@ -7,9 +7,9 @@
|
|||
},
|
||||
"AllowedHosts": "*",
|
||||
"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;",
|
||||
|
||||
|
||||
"DBMssql": "Data Source=192.168.142.131;Initial Catalog=wcs;User Id=sa;Password=Sa123;",
|
||||
"DBMssqlLocal": "Data Source=192.168.142.131;Initial Catalog=wcs_stacker;User Id=sa;Password=Sa123;",
|
||||
|
||||
|
|
@ -18,6 +18,6 @@
|
|||
"Language": "zh-CN"
|
||||
},
|
||||
"UseUrls": [ "http://*:18990" ]
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user