| package com.moral.api.service.impl; | 
|   | 
| import org.springframework.beans.BeanUtils; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.util.ObjectUtils; | 
|   | 
| import java.util.Date; | 
| import java.util.HashMap; | 
| import java.util.List; | 
| import java.util.Map; | 
|   | 
| import com.alibaba.fastjson.JSON; | 
| import com.alibaba.fastjson.JSONArray; | 
| import com.alibaba.fastjson.JSONObject; | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
| import com.moral.api.entity.ManageCoordinate; | 
| import com.moral.api.entity.ManageCoordinateDetail; | 
| import com.moral.api.entity.SpecialDevice; | 
| import com.moral.api.mapper.DeviceMapper; | 
| import com.moral.api.mapper.ManageCoordinateDetailMapper; | 
| import com.moral.api.mapper.ManageCoordinateMapper; | 
| import com.moral.api.mapper.SpecialDeviceMapper; | 
| import com.moral.api.pojo.form.coordinate.CoordinateCode; | 
| import com.moral.api.service.DeviceService; | 
| import com.moral.api.service.ManageCoordinateDetailService; | 
| import com.moral.api.service.ManageCoordinateService; | 
| import com.moral.api.service.SpecialDeviceService; | 
| import com.moral.util.TokenUtils; | 
|   | 
|   | 
| @Service | 
| public class ManageCoordinateServiceImpl extends ServiceImpl<ManageCoordinateMapper, ManageCoordinate> implements ManageCoordinateService { | 
|   | 
|     @Autowired | 
|     private ManageCoordinateMapper manageCoordinateMapper; | 
|   | 
|     @Autowired | 
|     private SpecialDeviceMapper specialDeviceMapper; | 
|   | 
|     /** | 
|      * 新增路段 | 
|      * @param params | 
|      * @return | 
|      */ | 
|     @Override | 
|     public Integer interCoordinate(Map<String, Object> params) { | 
|         String mac = params.get("mac").toString(); | 
|         QueryWrapper<SpecialDevice> wrapper = new QueryWrapper<>(); | 
|         wrapper.eq("mac",mac); | 
|         wrapper.eq("is_delete","0"); | 
|         SpecialDevice specialDevice = specialDeviceMapper.selectOne(wrapper); | 
|         String startPoint = params.get("startPoint").toString(); | 
|         QueryWrapper<ManageCoordinate> queryWrapper = new QueryWrapper<>(); | 
|         queryWrapper.eq("start_point",startPoint); | 
|         Integer integer = manageCoordinateMapper.selectCount(queryWrapper); | 
|         if (integer>=1){ | 
|             return null; | 
|         } | 
|         ManageCoordinate manageCoordinate = new ManageCoordinate(); | 
|         manageCoordinate.setCreateTime(new Date()); | 
|         manageCoordinate.setUpdateTime(new Date()); | 
|         manageCoordinate.setStartPoint(startPoint); | 
|         manageCoordinate.setIsDel(0); | 
|         manageCoordinate.setOrganizationId(specialDevice.getOrganizationId()); | 
|         int code = manageCoordinateMapper.insert(manageCoordinate); | 
|         return code; | 
|     } | 
|   | 
|     /** | 
|      * 修改路段 | 
|      * @param coordinateCode | 
|      */ | 
|     @Override | 
|     public void updateCoordinate(CoordinateCode coordinateCode) { | 
|         ManageCoordinate manageCoordinate = new ManageCoordinate(); | 
|         BeanUtils.copyProperties(coordinateCode,manageCoordinate); | 
|         manageCoordinate.setUpdateTime(new Date()); | 
|         List<HashMap<String, Object>> value = coordinateCode.getValue(); | 
|         String s = JSON.toJSONString(value); | 
|         manageCoordinate.setValue(s); | 
|         manageCoordinate.setBdValue(JSON.toJSONString(coordinateCode.getBdValue())); | 
|         manageCoordinateMapper.updateById(manageCoordinate); | 
|     } | 
|   | 
|     /** | 
|      * 删除路段 | 
|      * @param id | 
|      */ | 
|     @Override | 
|     public void deleteCoordinate(Integer id) { | 
|         ManageCoordinate manageCoordinate = manageCoordinateMapper.selectById(id); | 
|         manageCoordinate.setIsDel(1); | 
|         manageCoordinateMapper.updateById(manageCoordinate); | 
|   | 
|     } | 
|   | 
|     /** | 
|      * 查询路段信息 | 
|      * @return | 
|      */ | 
|     @Override | 
|     public List<ManageCoordinate> selectCoordinate(String name,String mac) { | 
|   | 
|         QueryWrapper<ManageCoordinate> queryWrapper = new QueryWrapper<>(); | 
|   | 
|         if (!ObjectUtils.isEmpty(name)){ | 
|             queryWrapper.like("start_point",name); | 
|         } | 
|         if(!ObjectUtils.isEmpty(mac)){ | 
|             QueryWrapper<SpecialDevice> wrapper = new QueryWrapper<>(); | 
|             wrapper.eq("mac",mac); | 
|             wrapper.eq("is_delete","0"); | 
|             SpecialDevice specialDevice = specialDeviceMapper.selectOne(wrapper); | 
|             queryWrapper.eq("organization_id",specialDevice.getOrganizationId()); | 
|         } | 
|         queryWrapper.eq("is_del",0); | 
|         queryWrapper.orderByDesc("coordinate_id"); | 
|         List<ManageCoordinate> manageCoordinates = manageCoordinateMapper.selectList(queryWrapper); | 
|         manageCoordinates.forEach(it->{ | 
|             String value = it.getValue(); | 
|             String bdValue = it.getBdValue(); | 
|             if (!ObjectUtils.isEmpty(value)  &&  !ObjectUtils.isEmpty(bdValue)){ | 
| //                List<HashMap<String, Object>> hashMaps = (List<HashMap<String, Object>>)JSON.parseObject(value,List.class); | 
|                 List<HashMap<String, Object>> parse = (List<HashMap<String, Object>>) JSONArray.parse(value); | 
|                 it.setValues(parse); | 
|                 it.setBdValues((List<HashMap<String, Object>>) JSONArray.parse(bdValue)); | 
|             } | 
|         }); | 
|         return manageCoordinates; | 
|     } | 
|   | 
|     /** | 
|      * 根据id查询路段信息 | 
|      * | 
|      * @param id | 
|      * @return | 
|      */ | 
|     @Override | 
|     public ManageCoordinate query(Integer id) { | 
|         ManageCoordinate manageCoordinate = manageCoordinateMapper.selectById(id); | 
|         return manageCoordinate; | 
|     } | 
| } |