131 lines
5.3 KiB
C#
131 lines
5.3 KiB
C#
using DataCheck;
|
|
using System.Collections.Generic;
|
|
using WcsMain.ApiServe.Controllers.Dto;
|
|
using WcsMain.ApiServe.Controllers.Dto.WcsDto.Stacker;
|
|
using WcsMain.ApiServe.Factory;
|
|
using WcsMain.DataBase.Dao;
|
|
using WcsMain.DataBase.TableEntity;
|
|
using WcsMain.EquipOperation.Stacker;
|
|
using WcsMain.WcsAttribute.AutoFacAttribute;
|
|
|
|
namespace WcsMain.ApiServe.Service.WcsService;
|
|
|
|
[Service]
|
|
public class StackerService(AppStackerDao stackerDao, StackerOperation stackerOperation)
|
|
{
|
|
/// <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();
|
|
}
|
|
}
|
|
|
|
|
|
}
|