| | |
| | | package com.ruoyi.stock.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; |
| | | import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.device.pojo.DeviceLedger; |
| | | import com.ruoyi.device.service.IDeviceLedgerService; |
| | | import com.ruoyi.framework.aspectj.lang.annotation.Log; |
| | | import com.ruoyi.framework.aspectj.lang.enums.BusinessType; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.http.service.impl.RealTimeEnergyConsumptionServiceImpl; |
| | | import com.ruoyi.stock.dto.StockInventoryDto; |
| | | import com.ruoyi.stock.dto.StockIotRealtimeDto; |
| | | import com.ruoyi.stock.execl.StockInventoryExportData; |
| | | import com.ruoyi.stock.pojo.StockInventory; |
| | | import com.ruoyi.stock.service.StockInventoryService; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | public class StockInventoryController { |
| | | |
| | | private StockInventoryService stockInventoryService; |
| | | private IDeviceLedgerService deviceLedgerService; |
| | | private RealTimeEnergyConsumptionServiceImpl realTimeEnergyConsumptionService; |
| | | |
| | | @GetMapping("/pagestockInventory") |
| | | @Operation(summary = "分页查询库存") |
| | |
| | | public R getByModelId(Long productModelId) { |
| | | return R.ok(stockInventoryService.getByModelId(productModelId)); |
| | | } |
| | | |
| | | @PostMapping("/iotRealtime") |
| | | @Operation(summary = "获取库存绑定的物联设备实时数采数据") |
| | | @Log(title = "库存物联设备实时数采", businessType = BusinessType.OTHER) |
| | | public R iotRealtime(@RequestBody List<Long> ids) { |
| | | |
| | | StockIotRealtimeDto result = new StockIotRealtimeDto(); |
| | | |
| | | if (ids.isEmpty()) { |
| | | result.setDevices(Collections.emptyList()); |
| | | return R.ok(result); |
| | | } |
| | | |
| | | List<DeviceLedger> devices = deviceLedgerService.listByIds(ids); |
| | | List<String> guidList = devices.stream() |
| | | .map(DeviceLedger::getExternalCode) |
| | | .filter(StringUtils::isNotEmpty) |
| | | .collect(Collectors.toList()); |
| | | |
| | | Map<String, Map<String, String>> realTimeDataMap = new HashMap<>(); |
| | | if (!guidList.isEmpty()) { |
| | | List<Map<String, String>> realTimeList = realTimeEnergyConsumptionService.getRealData(guidList); |
| | | for (Map<String, String> item : realTimeList) { |
| | | String guid = item.get("guid"); |
| | | if (StringUtils.isNotEmpty(guid)) { |
| | | realTimeDataMap.put(guid.trim(), item); |
| | | } |
| | | } |
| | | } |
| | | |
| | | List<Map<String, String>> deviceDataList = devices.stream().map(device -> { |
| | | Map<String, String> data = new LinkedHashMap<>(); |
| | | data.put("deviceId", String.valueOf(device.getId())); |
| | | data.put("deviceName", device.getDeviceName() != null ? device.getDeviceName() : ""); |
| | | data.put("deviceModel", device.getDeviceModel() != null ? device.getDeviceModel() : ""); |
| | | data.put("externalCode", device.getExternalCode() != null ? device.getExternalCode() : ""); |
| | | data.put("storageLocation", device.getStorageLocation() != null ? device.getStorageLocation() : ""); |
| | | Map<String, String> rt = realTimeDataMap.getOrDefault( |
| | | device.getExternalCode() != null ? device.getExternalCode().trim() : "", |
| | | Collections.emptyMap()); |
| | | data.putAll(rt); |
| | | return data; |
| | | }).collect(Collectors.toList()); |
| | | |
| | | result.setDevices(deviceDataList); |
| | | return R.ok(result); |
| | | } |
| | | } |