|
@@ -2,24 +2,33 @@ package cn.iocoder.yudao.module.pms.service.iotrydailyreport;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.util.ObjUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
+import cn.iocoder.yudao.module.pms.controller.admin.iotdevicecategorytemplateattrs.vo.IotDeviceProperty;
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPageReqVO;
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreport.vo.IotRyDailyReportPageReqVO;
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreport.vo.IotRyDailyReportSaveReqVO;
|
|
|
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
|
|
|
+import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
|
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttask.IotProjectTaskDO;
|
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotrydailyreport.IotRyDailyReportDO;
|
|
|
+import cn.iocoder.yudao.module.pms.dal.mysql.IotDeviceMapper;
|
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.iotprojecttask.IotProjectTaskMapper;
|
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.iotrydailyreport.IotRyDailyReportMapper;
|
|
|
+import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO;
|
|
|
+import cn.iocoder.yudao.module.system.service.dict.DictTypeService;
|
|
|
+import com.google.gson.Gson;
|
|
|
+import com.google.gson.reflect.TypeToken;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.lang.reflect.Type;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.HashSet;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Set;
|
|
|
+import java.util.*;
|
|
|
+import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.*;
|
|
@@ -38,6 +47,10 @@ public class IotRyDailyReportServiceImpl implements IotRyDailyReportService {
|
|
|
private IotRyDailyReportMapper iotRyDailyReportMapper;
|
|
|
@Resource
|
|
|
private IotProjectTaskMapper iotProjectTaskMapper;
|
|
|
+ @Resource
|
|
|
+ private DictTypeService dictTypeService;
|
|
|
+ @Resource
|
|
|
+ private IotDeviceMapper iotDeviceMapper;
|
|
|
|
|
|
@Override
|
|
|
public Long createIotRyDailyReport(IotRyDailyReportSaveReqVO createReqVO) {
|
|
@@ -147,4 +160,40 @@ public class IotRyDailyReportServiceImpl implements IotRyDailyReportService {
|
|
|
return iotRyDailyReportMapper.selectPage(pageReqVO);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Map<Long, String> queryEquipmentType(List<Long> deptIds) {
|
|
|
+ Map<Long, String> equipmentTypePair = new HashMap<>();
|
|
|
+ // 找到当前小队下的 电驱增压机 分类下设备的产能 计算 运行时效
|
|
|
+ DictTypeDO dictType = dictTypeService.getDictType("rq_iot_derrick_device_category");
|
|
|
+ AtomicReference<String> capacity = new AtomicReference<>();
|
|
|
+ if (ObjUtil.isNotEmpty(dictType)) {
|
|
|
+ if (StrUtil.isNotBlank(dictType.getRemark())) {
|
|
|
+ IotDevicePageReqVO capacityReqVO = new IotDevicePageReqVO();
|
|
|
+ capacityReqVO.setDeptIds(deptIds);
|
|
|
+ capacityReqVO.setAssetClass(Long.valueOf(dictType.getRemark()));
|
|
|
+ List<IotDeviceDO> capacityDevices = iotDeviceMapper.selectList(capacityReqVO);
|
|
|
+ if (CollUtil.isNotEmpty(capacityDevices)) {
|
|
|
+ // 解析每个设备的 扩展属性 找出 已经设置 了产能的设备并提取值
|
|
|
+ capacityDevices.forEach(device -> {
|
|
|
+ if (StrUtil.isNotBlank(device.getTemplateJson())) {
|
|
|
+ Gson gson = new Gson();
|
|
|
+ Type listType = new TypeToken<List<IotDeviceProperty>>(){}.getType();
|
|
|
+ List<IotDeviceProperty> deviceProperties = gson.fromJson(device.getTemplateJson(), listType);
|
|
|
+ if (CollUtil.isNotEmpty(deviceProperties)) {
|
|
|
+ deviceProperties.forEach(property -> {
|
|
|
+ if ("型号".equals(property.getName()) && StrUtil.isNotBlank(property.getValue())) {
|
|
|
+ // 当前扩展属性已经维护了 型号 值
|
|
|
+ capacity.set(property.getValue());
|
|
|
+ }
|
|
|
+ equipmentTypePair.put(device.getDeptId(), capacity.get());
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return equipmentTypePair;
|
|
|
+ }
|
|
|
+
|
|
|
}
|