|
@@ -0,0 +1,115 @@
|
|
|
+package com.fdkankan.fusion.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.fdkankan.fusion.common.ResultCode;
|
|
|
+import com.fdkankan.fusion.common.ResultData;
|
|
|
+import com.fdkankan.fusion.entity.CaseDevice;
|
|
|
+import com.fdkankan.fusion.entity.CaseSettings;
|
|
|
+import com.fdkankan.fusion.entity.DictFile;
|
|
|
+import com.fdkankan.fusion.exception.BusinessException;
|
|
|
+import com.fdkankan.fusion.httpClient.client.FdKKClient;
|
|
|
+import com.fdkankan.fusion.httpClient.request.FdModelParam;
|
|
|
+import com.fdkankan.fusion.httpClient.response.FdModelDeviceLocationVo;
|
|
|
+import com.fdkankan.fusion.httpClient.response.FdModelDeviceVo;
|
|
|
+import com.fdkankan.fusion.mapper.ICaseDeviceMapper;
|
|
|
+import com.fdkankan.fusion.response.DictFileVo;
|
|
|
+import com.fdkankan.fusion.service.ICaseDeviceService;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fdkankan.fusion.service.ICaseService;
|
|
|
+import com.fdkankan.fusion.service.ICaseSettingsService;
|
|
|
+import com.fdkankan.fusion.service.IDictFileService;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author
|
|
|
+ * @since 2025-08-21
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class CaseDeviceServiceImpl extends ServiceImpl<ICaseDeviceMapper, CaseDevice> implements ICaseDeviceService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ FdKKClient fdKKClient;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ICaseSettingsService caseSettingsService;
|
|
|
+ @Autowired
|
|
|
+ IDictFileService dictFileService;
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<FdModelDeviceVo> getByCaseId(Integer caseId) {
|
|
|
+ if(caseId == null){
|
|
|
+ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
|
|
|
+ }
|
|
|
+ List<CaseSettings> caseSettings = caseSettingsService.getByCaseId(caseId);
|
|
|
+ if(caseSettings.isEmpty()){
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ CaseSettings caseSettings1 = caseSettings.get(0);
|
|
|
+ if(StringUtils.isBlank(caseSettings1.getLocationModelName())){
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ ResultData<List<FdModelDeviceVo>> resultData = fdKKClient.getByModelName(new FdModelParam(caseSettings1.getLocationModelName(), null, null));
|
|
|
+ List<FdModelDeviceVo> datas = resultData.getData();
|
|
|
+ List<String> macIds = datas.stream().map(FdModelDeviceVo::getMacId).collect(Collectors.toList());
|
|
|
+ HashMap<String, String> map = getNameByCaseAndMacId(caseId, macIds);
|
|
|
+ List<DictFileVo> list = dictFileService.getUseDevice();
|
|
|
+ Integer i = 1;
|
|
|
+ for (FdModelDeviceVo data : datas) {
|
|
|
+ data.setDeviceName(map.get(data.getMacId()) == null ? "设备"+i : map.get(data.getMacId()));
|
|
|
+ i ++;
|
|
|
+ data.setCharacterModelList(list);
|
|
|
+ ResultData<List<FdModelDeviceLocationVo>> resultData2 = fdKKClient.getByMacAndModelName(new FdModelParam(caseSettings1.getLocationModelName(), data.getMacId(), 10));
|
|
|
+ data.setLocationList(resultData2.getData());
|
|
|
+ }
|
|
|
+
|
|
|
+ return datas;
|
|
|
+ }
|
|
|
+
|
|
|
+ private HashMap<String,String> getNameByCaseAndMacId(Integer caseId,List<String> macIds){
|
|
|
+ HashMap<String,String> map = new HashMap<>();
|
|
|
+ if(caseId == null || macIds == null || macIds.isEmpty()){
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ LambdaQueryWrapper<CaseDevice> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(CaseDevice::getCaseId,caseId);
|
|
|
+ wrapper.in(CaseDevice::getMacId,macIds);
|
|
|
+ List<CaseDevice> list = this.list(wrapper);
|
|
|
+ list.forEach(e -> map.put(e.getMacId(),e.getDeviceName()));
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void addOrUpdate(CaseDevice param) {
|
|
|
+ if(param.getCaseId() == null || StringUtils.isBlank(param.getMacId())){
|
|
|
+ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<CaseDevice> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(CaseDevice::getCaseId,param.getCaseId());
|
|
|
+ wrapper.eq(CaseDevice::getMacId,param.getMacId());
|
|
|
+ List<CaseDevice> list = this.list(wrapper);
|
|
|
+ if(list == null || list.isEmpty()){
|
|
|
+ param.setId(null);
|
|
|
+ this.save(param);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ CaseDevice caseDevice = list.get(0);
|
|
|
+ param.setId(caseDevice.getId());
|
|
|
+ this.updateById(param);
|
|
|
+
|
|
|
+ }
|
|
|
+}
|