|
@@ -1,11 +1,21 @@
|
|
|
package com.huimv.eartag2.manage2.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.huimv.eartag2.common.utils.Result;
|
|
|
+import com.huimv.eartag2.common.utils.ResultCode;
|
|
|
import com.huimv.eartag2.manage2.pojo.SysBaseConfig;
|
|
|
import com.huimv.eartag2.manage2.mapper.SysBaseConfigMapper;
|
|
|
import com.huimv.eartag2.manage2.service.SysBaseConfigService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.huimv.eartag2.manage2.vo.SysBaseConfigVo;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
/**
|
|
|
* <p>
|
|
|
* 服务实现类
|
|
@@ -17,4 +27,166 @@ import org.springframework.stereotype.Service;
|
|
|
@Service
|
|
|
public class SysBaseConfigServiceImpl extends ServiceImpl<SysBaseConfigMapper, SysBaseConfig> implements SysBaseConfigService {
|
|
|
|
|
|
+ @Resource
|
|
|
+ private SysBaseConfigMapper sysBaseConfigMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ RabbitTemplate rabbitTemplate;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result add(List<Map<String, String>> mapList) {
|
|
|
+ //SysBaseConfigEntity
|
|
|
+ //存入数据库
|
|
|
+ String fitId = UUID.randomUUID().toString();
|
|
|
+ for (Map<String, String> stringStringMap : mapList) {
|
|
|
+ SysBaseConfig sysBaseConfigEntity = new SysBaseConfig();
|
|
|
+ sysBaseConfigEntity.setConfigName(stringStringMap.get("configName"));
|
|
|
+ sysBaseConfigEntity.setConfigKey(stringStringMap.get("configKey"));
|
|
|
+ sysBaseConfigEntity.setConfigValue(stringStringMap.get("configValue"));
|
|
|
+ sysBaseConfigEntity.setRowId(fitId);
|
|
|
+ sysBaseConfigMapper.insert(sysBaseConfigEntity);
|
|
|
+ }
|
|
|
+ return new Result(ResultCode.SUCCESS);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result remove(List<String> id) {
|
|
|
+ //先根据row_id查询出对应的数据
|
|
|
+ List<SysBaseConfig> sysBaseConfigs = sysBaseConfigMapper.selectByRowIdList(id);
|
|
|
+ List<Integer> ids = sysBaseConfigs.stream().map(SysBaseConfig::getId).collect(Collectors.toList());
|
|
|
+ sysBaseConfigMapper.deleteBatchIds(ids);
|
|
|
+ return new Result(ResultCode.SUCCESS);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result update(List<Map<String, String>> maps) {
|
|
|
+ String rowId = maps.get(0).get("id");
|
|
|
+
|
|
|
+ List<SysBaseConfig> sysBaseConfigs = sysBaseConfigMapper.selectSysBaseConfig(rowId);
|
|
|
+
|
|
|
+ HashMap<String, String> stringHashMap = new HashMap<>();
|
|
|
+ for (Map<String, String> map : maps) {
|
|
|
+ if ("farmName".equals(map.get("configKey"))){
|
|
|
+ stringHashMap.put("farmName",map.get("configValue"));
|
|
|
+ }
|
|
|
+ if ("ip".equals(map.get("configKey"))){
|
|
|
+ stringHashMap.put("ip",map.get("configValue"));
|
|
|
+ }
|
|
|
+ if ("port".equals(map.get("configKey"))){
|
|
|
+ stringHashMap.put("port",map.get("configValue"));
|
|
|
+ }
|
|
|
+ if ("farmCode".equals(map.get("configKey"))){
|
|
|
+ stringHashMap.put("farmCode",map.get("configValue"));
|
|
|
+ }
|
|
|
+ if ("areaName".equals(map.get("configKey"))){
|
|
|
+ stringHashMap.put("areaName",map.get("configValue"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for (SysBaseConfig sysBaseConfig : sysBaseConfigs) {
|
|
|
+ if ("farmCode".equals(sysBaseConfig.getConfigKey())){
|
|
|
+ sysBaseConfig.setConfigValue(stringHashMap.get("farmCode"));
|
|
|
+ }
|
|
|
+ if ("ip".equals(sysBaseConfig.getConfigKey())){
|
|
|
+ sysBaseConfig.setConfigValue(stringHashMap.get("ip"));
|
|
|
+ }
|
|
|
+ if ("farmName".equals(sysBaseConfig.getConfigKey())){
|
|
|
+ sysBaseConfig.setConfigValue(stringHashMap.get("farmName"));
|
|
|
+ }
|
|
|
+ if ("port".equals(sysBaseConfig.getConfigKey())){
|
|
|
+ sysBaseConfig.setConfigValue(stringHashMap.get("port"));
|
|
|
+ }
|
|
|
+ if ("areaName".equals(sysBaseConfig.getConfigKey())){
|
|
|
+ sysBaseConfig.setConfigValue(stringHashMap.get("areaName"));
|
|
|
+ }
|
|
|
+ sysBaseConfigMapper.updateById(sysBaseConfig);
|
|
|
+ }
|
|
|
+ return new Result(ResultCode.SUCCESS);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result list(Map<String, String> paramsMap) {
|
|
|
+ //先分页查询
|
|
|
+
|
|
|
+ // Page<SysBaseConfig> page = new Page<>(pageNo, Integer.valueOf(paramsMap.get("pageSize")));
|
|
|
+ QueryWrapper<SysBaseConfig> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.like(StringUtils.isNotBlank(paramsMap.get("farmName")),"config_value", paramsMap.get("farmName"));
|
|
|
+ queryWrapper.like(StringUtils.isNotBlank(paramsMap.get("farmCode")),"config_value", paramsMap.get("farmCode"));
|
|
|
+ queryWrapper.like(StringUtils.isNotBlank(paramsMap.get("ip")),"config_value", paramsMap.get("ip"));
|
|
|
+ //创建时间降序
|
|
|
+ queryWrapper.orderByDesc("id");
|
|
|
+
|
|
|
+ //获取到的只是当前传入参数的值的那条数据、需要再根据每个对象中的row_id获取到当前一组的数据、再进行拼装
|
|
|
+ List<SysBaseConfig> pageBizDeviceRegister = sysBaseConfigMapper.selectList(queryWrapper);
|
|
|
+
|
|
|
+ List<String> rowIds = pageBizDeviceRegister.stream().map(SysBaseConfig::getRowId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //根据row_id分组查询数据
|
|
|
+ List<SysBaseConfig> sysBaseConfigs = sysBaseConfigMapper.selectByRowIdList(rowIds);
|
|
|
+ //将查询出来的数据 按照row_id进行分组
|
|
|
+ Map<String, List<SysBaseConfig>> groupResult = sysBaseConfigs.stream().collect(Collectors.groupingBy(SysBaseConfig::getRowId));
|
|
|
+
|
|
|
+ Set<String> strings = groupResult.keySet();
|
|
|
+
|
|
|
+ //最终返回的拼装好的数据
|
|
|
+ ArrayList<SysBaseConfigVo> resultList = new ArrayList<>();
|
|
|
+ strings.forEach(rId->{
|
|
|
+ List<SysBaseConfig> sysBaseConfigEntities = groupResult.get(rId);
|
|
|
+ SysBaseConfigVo sysBaseConfigVo = convertSysBaseConfigVo(sysBaseConfigEntities);
|
|
|
+ resultList.add(sysBaseConfigVo);
|
|
|
+ });
|
|
|
+
|
|
|
+ return new Result(ResultCode.SUCCESS,resultList);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result getDateById(String ids) {
|
|
|
+ List<SysBaseConfig> sysBaseConfigs = sysBaseConfigMapper.selectSysBaseConfig(ids);
|
|
|
+ SysBaseConfigVo sysBaseConfigVo = convertSysBaseConfigVo(sysBaseConfigs);
|
|
|
+ return new Result(ResultCode.SUCCESS,sysBaseConfigVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //同步牧场配置消息
|
|
|
+ public final static String EXCHANGE_SYNC_SYS_CONFIG = "topic.syncSysConfig.exchange";
|
|
|
+ public final static String ROUTING_KEY_SYNC_SYS_CONFIG = "topic.syncSysConfig.routeKey";
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result syncCong(Map<String,String> paramsMap) {
|
|
|
+ String farmCode = paramsMap.get("farmId");
|
|
|
+ //查询牧场信息
|
|
|
+ QueryWrapper<SysBaseConfig> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq(StringUtils.isNotBlank(farmCode),"config_value", farmCode);
|
|
|
+ List<SysBaseConfig> sysBaseConfigs = sysBaseConfigMapper.selectList(queryWrapper);
|
|
|
+ String rowId = "";
|
|
|
+ if (null == sysBaseConfigs || sysBaseConfigs.size() == 0){
|
|
|
+ return new Result(ResultCode.FAIL);
|
|
|
+ }else {
|
|
|
+ rowId = sysBaseConfigs.get(0).getRowId();
|
|
|
+ }
|
|
|
+ List<SysBaseConfig> syncDate = sysBaseConfigMapper.selectSysBaseConfig(rowId);
|
|
|
+ SysBaseConfigVo sysBaseConfigVo = convertSysBaseConfigVo(syncDate);
|
|
|
+ paramsMap.put("farmName",sysBaseConfigVo.getFarmName());
|
|
|
+ paramsMap.put("farmCode",sysBaseConfigVo.getFarmCode());
|
|
|
+ paramsMap.put("ip",sysBaseConfigVo.getIp());
|
|
|
+ paramsMap.put("port",sysBaseConfigVo.getPort());
|
|
|
+ paramsMap.put("areaName",sysBaseConfigVo.getAreaName());
|
|
|
+ rabbitTemplate.convertAndSend(EXCHANGE_SYNC_SYS_CONFIG,ROUTING_KEY_SYNC_SYS_CONFIG,paramsMap);
|
|
|
+ System.out.println("--------------------------------------- 发送设备请求原始数据 >>"+paramsMap);
|
|
|
+ return new Result(ResultCode.SUCCESS);
|
|
|
+ }
|
|
|
+
|
|
|
+ private SysBaseConfigVo convertSysBaseConfigVo(List<SysBaseConfig> list){
|
|
|
+ Map<String, String> map = list.stream().collect(Collectors.toMap(SysBaseConfig::getConfigKey, SysBaseConfig::getConfigValue,(item1,item2) ->item1));
|
|
|
+ SysBaseConfigVo sysBaseConfigVo = new SysBaseConfigVo();
|
|
|
+ sysBaseConfigVo.setId(list.get(0).getRowId());
|
|
|
+ sysBaseConfigVo.setFarmCode(map.get("farmCode"));
|
|
|
+ sysBaseConfigVo.setFarmName(map.get("farmName"));
|
|
|
+ sysBaseConfigVo.setIp(map.get("ip"));
|
|
|
+ sysBaseConfigVo.setPort(map.get("port"));
|
|
|
+ sysBaseConfigVo.setAreaName(map.get("areaName"));
|
|
|
+ return sysBaseConfigVo;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|