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 { /// /// 货架管理、模组管理、库位管理的接口 /// [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 getShelves(GetShelvesRequest request) { return await _storeInfoService.GetShelves(request); } [HttpPost("addOrUpdateShelfInfo")] public async Task> addOrUpdateShelfInfo(AddShelfInfoRequest request) { return await _storeInfoService.addOrUpdateShelfInfo(request); } [HttpPost("GenerateStoreInfo")] public async Task> GenerateStoreInfo() { return await _storeInfoService.GenerateStoreInfo(); } #endregion #region 模组管理 [Route("getModules")] [HttpPost(Name = "getModules")] public async Task getModules(GetModulesRequest request) { return await _storeInfoService.GetModules(request); } [Route("disableOrEnableModule")] [HttpPost(Name = "disableOrEnableModule")] public async Task disableOrEnableModule(DisableOrEnableModuleRequest request) { return await _storeInfoService.disableOrEnableModule(request); } [Route("queryModuleVoltage")] [HttpPost(Name = "queryModuleVoltage")] public async Task queryModuleVoltage(QueryModuleVoltageRequest request) { return await _storeInfoService.queryModuleVoltage(request); } [Route("queryStoreInfoHistoryVoltage")] [HttpPost(Name = "queryStoreInfoHistoryVoltage")] public async Task queryStoreInfoHistoryVoltage(QueryStoreInfoHistoryVoltageRequest request) { return await _storeInfoService.queryStoreInfoHistoryVoltage(request); } [Route("calibrationSetOffset")] [HttpPost(Name = "calibrationSetOffset")] public async Task calibrationSetOffset(CalibrationSetOffsetRequest request) { return await _storeInfoService.calibrationSetOffset(request); } #endregion #region 库位管理 [Route("getStores")] [HttpPost(Name = "getStores")] public async Task getStores(GetStoresRequest request) { return await _storeInfoService.GetStores(request); } [Route("disableOrEnableStore")] [HttpPost(Name = "disableOrEnableStore")] public async Task disableOrEnableStore(DisableOrEnableStoreRequest request) { return await _storeInfoService.disableOrEnableStore(request); } [Route("getDisablePercent")] [HttpPost(Name = "getDisablePercent")] public async Task getDisablePercent(DisableOrEnableStoreRequest request) { return await _storeInfoService.getDisablePercent(); } [Route("genModuleStoreInfos")] [HttpPost(Name = "genModuleStoreInfos")] public async Task genModuleStoreInfos(RequestBase request) { try { if (request.UserName != "aaa") { return new ResponseBase() { Code = 300, Message = "用户名不对头!无法生成模组库位" }; } //获取货架 此组后端管的货架 var shelfInfos = DbHelp.db.Queryable() .Where(t => t.GroupName == LocalFile.Config.GroupName) .OrderBy(t => t.BigShelfCode) .OrderBy(t => t.ShelfCode) .ToList(); var lastBindBigShelfCode = string.Empty; var lastColumnCount = 1; List moduleInfos = new List(); //生成模组 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() .Where(t => t.GroupName == LocalFile.Config.GroupName) .OrderBy(t => t.Id) .ToList(); List storeInfos = new List(); 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 }; } } [Route("updateClientIp")] [HttpPost(Name = "updateClientIp")] public async Task updateClientIp(RequestBase request) { try { if (request.UserName != "aaa") { return new ResponseBase() { Code = 300, Message = "用户名不对头!修改货架的IP。" }; } //获取货架 此组后端管的货架 var shelfInfos = DbHelp.db.Queryable() .Where(t => t.ClientIp.Contains(".225.")) .ToList(); shelfInfos.ForEach(t => t.ClientIp = t.ClientIp.Replace(".225.", ".210.")); var moduleInfos = DbHelp.db.Queryable() .Where(t => t.CleintIp.Contains(".225.")) .ToList(); moduleInfos.ForEach(t => t.CleintIp = t.CleintIp.Replace(".225.", ".210.")); DbHelp.db.Updateable(moduleInfos).UpdateColumns(t => new { t.CleintIp }).ExecuteCommand(); DbHelp.db.Updateable(shelfInfos).UpdateColumns(t => new { t.ClientIp }).ExecuteCommand(); return new ResponseBase() { Code = 200, Message = "更新库位成功" }; } catch (Exception ex) { return new ResponseBase() { Code = 300, Message = ex.Message }; } } #endregion } }