Product_Wms/WcsMain/ApiServe/Service/WcsService/StackerService.cs

145 lines
5.9 KiB
C#
Raw Normal View History

2024-10-07 09:51:55 +08:00
using DataCheck;
using WcsMain.ApiServe.Dto;
using WcsMain.ApiServe.Dto.WcsDto.Stacker;
2024-10-07 09:51:55 +08:00
using WcsMain.ApiServe.Factory;
using WcsMain.DataBase.Dao;
using WcsMain.DataBase.TableEntity;
using WcsMain.EquipOperation.Stacker;
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
2024-10-07 09:51:55 +08:00
namespace WcsMain.ApiServe.Service.WcsService;
[Service]
public class StackerService(AppStackerDao stackerDao, StackerOperation stackerOperation, AppBaseErrDao baseErrDao)
{
/// <summary>
/// 查询所有的 堆垛机信息
/// </summary>
/// <returns></returns>
public WcsApiResponse<List<AppStacker>> GetStacker()
{
List<AppStacker>? stackers = stackerDao.Select(new AppStacker());
if(stackers == default)
{
return WcsApiResponseFactory.DataBaseErr<List<AppStacker>>();
}
return WcsApiResponseFactory.Success(stackers, "查询成功");
}
/// <summary>
/// 查询所有的 堆垛机状态信息 ---- 从设备返回
/// </summary>
/// <returns></returns>
public WcsApiResponse<List<GetStackerStatusResponse>> GetStackerStatus()
{
List<AppStacker>? stackers = stackerDao.Select(new AppStacker());
if (stackers == default)
{
return WcsApiResponseFactory.DataBaseErr<List<GetStackerStatusResponse>>();
}
List<GetStackerStatusResponse> getStackerStatusResponses = [];
foreach(AppStacker stacker in stackers)
{
GetStackerStatusResponse stackerStatusResponse = new()
{
StackerId = stacker.StackerId,
StackerName = stacker.StackerName,
StackerStatus = stacker.StackerStatus,
ForkStatus = stacker.ForkStatus,
};
/* 获取堆垛机状态 */
var (errMsg, stackerInfo) = stackerOperation.GetStackerInfo((int)stacker.StackerId!);
if(string.IsNullOrEmpty(errMsg) && stackerInfo != default)
{
stackerStatusResponse.Message = "查询成功";
stackerStatusResponse.PlcId = stackerInfo.PlcId.ToString() + " / " + stackerInfo.Spare1.ToString();
stackerStatusResponse.ControlModel = ((int)stackerInfo.ControlModel).ToString();
stackerStatusResponse.StackerStatusEquip = ((int)stackerInfo.StackerStatus).ToString();
stackerStatusResponse.Queue = stackerInfo.Row;
stackerStatusResponse.Line = stackerInfo.Line;
stackerStatusResponse.Layer = stackerInfo.Layer;
stackerStatusResponse.Depth = stackerInfo.Depth;
stackerStatusResponse.Code = new Func<string>(() =>
{
string code1 = stackerInfo.Code == 0 ? "-" : $"ASRS{stackerInfo.Code.ToString().PadLeft(6, '0')}";
string code2 = stackerInfo.DeletePlcId == 0 ? "-" : $"ASRS{stackerInfo.DeletePlcId.ToString().PadLeft(6, '0')}";
return $"{code1} / {code2}";
}).Invoke();
stackerStatusResponse.ErrCode = stackerInfo.ErrCode;
}
else
{
stackerStatusResponse.Message = errMsg;
}
getStackerStatusResponses.Add(stackerStatusResponse);
}
return WcsApiResponseFactory.Success(getStackerStatusResponses, "查询成功");
}
/// <summary>
/// 添加或者编辑堆垛机信息
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public WcsApiResponse EditStacker(EditStackerRequest request)
{
if(!CheckData.CheckDataRules(request))
{
return WcsApiResponseFactory.RequestErr();
}
/* 查询是否存在这个编号的堆垛机,若存在则更新数据,若不存在则添加 */
List<AppStacker>? appStackers = stackerDao.Select(new AppStacker { StackerId = request.StackerId });
if (appStackers == default)
{
return WcsApiResponseFactory.DataBaseErr();
}
if (appStackers.Count == 0) // 没有数据,新增一条新的
{
var insertResult = stackerDao.Insert(new AppStacker
{
StackerId = request.StackerId,
StackerName = request.StackerName,
StackerStatus = request.StackerStatus,
ForkStatus = request.ForkStatus,
ActionPlc = request.ActionPlc,
InStand = request.InStand,
OutStand = request.OutStand,
Remark = request.Remark,
});
return insertResult > 0 ? WcsApiResponseFactory.Success() : WcsApiResponseFactory.DataBaseErr();
}
else // 存在,更新数据
{
var updateResult = stackerDao.Update(new AppStacker
{
StackerId = request.StackerId,
StackerName = request.StackerName,
StackerStatus = request.StackerStatus,
ForkStatus = request.ForkStatus,
ActionPlc = request.ActionPlc,
InStand = request.InStand,
OutStand = request.OutStand,
Remark = request.Remark,
});
return updateResult > 0 ? WcsApiResponseFactory.Success() : WcsApiResponseFactory.DataBaseErr();
}
}
/// <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);
}
}