Files
wcs/WCS.WebApi/Controllers/StoreInfoController.cs
2025-03-07 18:14:44 +08:00

229 lines
9.1 KiB
C#

using Microsoft.AspNetCore.Mvc;
using WCS.BLL.Services.IService;
using WCS.BLL.Services.Service;
using WCS.Model.ApiModel.MatInventoryDetail;
using WCS.Model;
using WCS.Model.ApiModel.StoreInfo;
using WCS.BLL.DbModels;
using WCS.Model.ApiModel.MatBaseInfo;
using WCS.DAL.DbModels;
using WCS.DAL.Db;
using WCS.BLL.Config;
namespace WCS.WebApi.Controllers
{
/// <summary>
/// 货架管理、模组管理、库位管理的接口
/// </summary>
[ApiController]
[Route("[controller]")]
public class StoreInfoController : ControllerBase
{
public IStoreInfoService _storeInfoService { get; set; }
public StoreInfoController(IStoreInfoService storeInfoService)
{
_storeInfoService = storeInfoService;
}
#region
[Route("getShelves")]
[HttpPost(Name = "getShelves")]
public async Task<ResponseBase> getShelves(GetShelvesRequest request)
{
return await _storeInfoService.GetShelves(request);
}
[HttpPost("addOrUpdateShelfInfo")]
public async Task<ResponseCommon<object>> addOrUpdateShelfInfo(AddShelfInfoRequest<ShelfInfo> request)
{
return await _storeInfoService.addOrUpdateShelfInfo(request);
}
[HttpPost("GenerateStoreInfo")]
public async Task<ResponseCommon<object>> GenerateStoreInfo()
{
return await _storeInfoService.GenerateStoreInfo();
}
#endregion
#region
[Route("getModules")]
[HttpPost(Name = "getModules")]
public async Task<ResponseBase> getModules(GetModulesRequest request)
{
return await _storeInfoService.GetModules(request);
}
[Route("disableOrEnableModule")]
[HttpPost(Name = "disableOrEnableModule")]
public async Task<ResponseBase> disableOrEnableModule(DisableOrEnableModuleRequest request)
{
return await _storeInfoService.disableOrEnableModule(request);
}
[Route("queryModuleVoltage")]
[HttpPost(Name = "queryModuleVoltage")]
public async Task<ResponseBase> queryModuleVoltage(QueryModuleVoltageRequest request)
{
return await _storeInfoService.queryModuleVoltage(request);
}
[Route("queryStoreInfoHistoryVoltage")]
[HttpPost(Name = "queryStoreInfoHistoryVoltage")]
public async Task<ResponseBase> queryStoreInfoHistoryVoltage(QueryStoreInfoHistoryVoltageRequest request)
{
return await _storeInfoService.queryStoreInfoHistoryVoltage(request);
}
[Route("calibrationSetOffset")]
[HttpPost(Name = "calibrationSetOffset")]
public async Task<ResponseBase> calibrationSetOffset(CalibrationSetOffsetRequest request)
{
return await _storeInfoService.calibrationSetOffset(request);
}
#endregion
#region
[Route("getStores")]
[HttpPost(Name = "getStores")]
public async Task<ResponseBase> getStores(GetStoresRequest request)
{
return await _storeInfoService.GetStores(request);
}
[Route("disableOrEnableStore")]
[HttpPost(Name = "disableOrEnableStore")]
public async Task<ResponseBase> disableOrEnableStore(DisableOrEnableStoreRequest request)
{
return await _storeInfoService.disableOrEnableStore(request);
}
[Route("getDisablePercent")]
[HttpPost(Name = "getDisablePercent")]
public async Task<ResponseBase> getDisablePercent(DisableOrEnableStoreRequest request)
{
return await _storeInfoService.getDisablePercent();
}
[Route("genModuleStoreInfos")]
[HttpPost(Name = "genModuleStoreInfos")]
public async Task<ResponseBase> genModuleStoreInfos(RequestBase request)
{
try
{
if (request.UserName != "aaa")
{
return new ResponseBase()
{
Code = 300,
Message = "用户名不对头!无法生成模组库位"
};
}
//获取货架 此组后端管的货架
var shelfInfos = DbHelp.db.Queryable<ShelfInfo>()
.Where(t => t.GroupName == LocalFile.Config.GroupName)
.OrderBy(t => t.BigShelfCode)
.OrderBy(t => t.ShelfCode)
.ToList();
var lastBindBigShelfCode = string.Empty;
var lastColumnCount = 1;
List<ModuleInfo> moduleInfos = new List<ModuleInfo>();
//生成模组
foreach (var shelfInfo in shelfInfos)
{
var modulePreFix = shelfInfo.IsBind ? shelfInfo.BigShelfCode : shelfInfo.ShelfCode;
//不绑定或者绑定换了面 重新从1开始计数
if (shelfInfo.BigShelfCode != lastBindBigShelfCode)
{
lastColumnCount = 1;
}
lastBindBigShelfCode = shelfInfo.BigShelfCode;
for (int rowIndex = 0; rowIndex < shelfInfo.Rowcounts; rowIndex++)
{
for (int columnIndex = 0; columnIndex < shelfInfo.Columncounts; columnIndex++)
{
var moduleCode = modulePreFix + "-R" + (rowIndex + 1).ToString() + "C" + (lastColumnCount + columnIndex).ToString();
var moduleInfo = new ModuleInfo()
{
ModuleCode = moduleCode,
ShelfTypeId = shelfInfo.ShelfTypeId,
ShelfId = shelfInfo.Id,
ShelfCode = shelfInfo.ShelfCode,
BoardId = shelfInfo.FirtstBoardId++,
LightCount = shelfInfo.LightCount,
CleintIp = shelfInfo.ClientIp,
GroupName = shelfInfo.GroupName,
R = (rowIndex + 1).ToString(),
C = (lastColumnCount + columnIndex).ToString(),
Bigshelfcode = shelfInfo.BigShelfCode,
IsEnable = true,
CurrentMode = BLL.HardWare.Mode.,
};
moduleInfos.Add(moduleInfo);
}
}
lastColumnCount = lastColumnCount + shelfInfo.Columncounts;
}
DbHelp.db.Insertable(moduleInfos).ExecuteCommand();
//生成库位
moduleInfos = DbHelp.db.Queryable<ModuleInfo>()
.Where(t => t.GroupName == LocalFile.Config.GroupName)
.OrderBy(t => t.Id)
.ToList();
List<StoreInfo> storeInfos = new List<StoreInfo>();
foreach (var moduleInfo in moduleInfos)
{
for (int wei = 0; wei < moduleInfo.LightCount; wei++)
{
var storeCode = moduleInfo.ModuleCode + "-" + (wei + 1).ToString();
var stroreInfo = new StoreInfo()
{
StoreCode = storeCode,
ShelfTypeId = moduleInfo.ShelfTypeId,
ModuleId = moduleInfo.Id,
ModuleCode = moduleInfo.ModuleCode,
ShelfId = moduleInfo.ShelfId,
ShelfCode = moduleInfo.ShelfCode,
BoardId = moduleInfo.BoardId,
LightNumber = wei + 1,
Priority = 0,
CurrentMatSn = string.Empty,
CurrentVoltage = 0,
StandardVoltage = 0,
OffsetVoltage = 0,
BigShelfCode = moduleInfo.Bigshelfcode,
R = moduleInfo.R,
C = moduleInfo.C,
Wei = (wei + 1).ToString(),
GroupName = moduleInfo.GroupName
};
storeInfos.Add(stroreInfo);
}
}
DbHelp.db.Insertable(storeInfos).ExecuteCommand();
return new ResponseBase()
{
Code = 200,
Message = "生成库位成功"
};
}
catch (Exception ex)
{
return new ResponseBase()
{
Code = 300,
Message = ex.Message
};
}
}
#endregion
}
}