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.PlcOperation.Stacker; using WcsMain.WcsAttribute.AutoFacAttribute; namespace WcsMain.ApiServe.Service.WcsService; [Service] public class StackerService(AppStackerDao stackerDao, StackerOperation stackerOperation) { private readonly AppStackerDao _stackerDao = stackerDao; private readonly StackerOperation _stackerOperation = stackerOperation; /// /// 查询所有的 堆垛机信息 /// /// public WcsApiResponse> GetStacker() { List? stackers = _stackerDao.Select(new AppStacker()); if(stackers == default) { return WcsApiResponseFactory.DataBaseErr>(); } return WcsApiResponseFactory.Success(stackers, "查询成功"); } /// /// 查询所有的 堆垛机状态信息 ---- 从设备返回 /// /// public WcsApiResponse> GetStackerStatus() { List? stackers = _stackerDao.Select(new AppStacker()); if (stackers == default) { return WcsApiResponseFactory.DataBaseErr>(); } List 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(); stackerStatusResponse.ControlModel = stackerInfo.ControlModel.ToString(); stackerStatusResponse.StackerStatusEquip = stackerInfo.StackerStatus.ToString(); stackerStatusResponse.Queue = stackerInfo.Row; stackerStatusResponse.Line = stackerInfo.Line; stackerStatusResponse.Layer = stackerInfo.Layer; stackerStatusResponse.Depth = stackerInfo.Depth; stackerStatusResponse.Code = stackerInfo.Code.ToString(); stackerStatusResponse.ErrCode = stackerInfo.ErrCode; } else { stackerStatusResponse.Message = errMsg; } getStackerStatusResponses.Add(stackerStatusResponse); } return WcsApiResponseFactory.Success(getStackerStatusResponses, "查询成功"); } /// /// 添加或者编辑堆垛机信息 /// /// /// public WcsApiResponse EditStacker(EditStackerRequest request) { if(!CheckData.CheckDataRules(request)) { return WcsApiResponseFactory.RequestErr(); } /* 查询是否存在这个编号的堆垛机,若存在则更新数据,若不存在则添加 */ List? 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(); } } }