| package com.moral.api.service.impl; | 
|   | 
| import com.alibaba.fastjson.JSON; | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; | 
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
| import com.moral.api.entity.Device; | 
| import com.moral.api.entity.MonitorPoint; | 
| import com.moral.api.entity.Organization; | 
| import com.moral.api.entity.SysArea; | 
| import com.moral.api.mapper.DeviceMapper; | 
| import com.moral.api.mapper.MonitorPointMapper; | 
| import com.moral.api.mapper.OrganizationMapper; | 
| import com.moral.api.mapper.SysAreaMapper; | 
| import com.moral.api.service.MonitorPointService; | 
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
| import com.moral.api.util.LogUtils; | 
| import com.moral.constant.Constants; | 
| import com.moral.constant.ResponseCodeEnum; | 
| import com.moral.util.ConvertUtils; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.transaction.annotation.Transactional; | 
| import org.springframework.web.context.request.RequestContextHolder; | 
| import org.springframework.web.context.request.ServletRequestAttributes; | 
|   | 
| import javax.servlet.http.HttpServletRequest; | 
| import java.text.SimpleDateFormat; | 
| import java.util.*; | 
|   | 
| /** | 
|  * <p> | 
|  *  服务实现类 | 
|  * </p> | 
|  * | 
|  * @author moral | 
|  * @since 2021-05-12 | 
|  */ | 
| @Service | 
| @Transactional | 
| public class MonitorPointServiceImpl extends ServiceImpl<MonitorPointMapper, MonitorPoint> implements MonitorPointService { | 
|   | 
|     @Autowired(required = false) | 
|     private MonitorPointMapper monitorPointMapper; | 
|   | 
|     @Autowired(required = false) | 
|     private OrganizationMapper organizationMapper; | 
|   | 
|     @Autowired(required = false) | 
|     private SysAreaMapper sysAreaMapper; | 
|   | 
|     @Autowired(required = false) | 
|     private DeviceMapper deviceMapper; | 
|   | 
|   | 
|     @Override | 
|     @Transactional | 
|     public Map<String, Object> insertMonitorPoint(MonitorPoint monitorPoint) { | 
|         Map resultMap = new HashMap(); | 
|         if (monitorPoint.getName()==null){ | 
|             resultMap.put("code",ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode()); | 
|             resultMap.put("msg",ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); | 
|             return resultMap; | 
|         } | 
|         QueryWrapper<MonitorPoint> wapper_name = new QueryWrapper<>(); | 
|         wapper_name.eq("name",monitorPoint.getName()); | 
|         wapper_name.eq("is_delete",Constants.NOT_DELETE); | 
|         if(monitorPointMapper.selectOne(wapper_name)!=null){ | 
|             resultMap.put("code",ResponseCodeEnum.MONITOR_POINT_IS_EXIST.getCode()); | 
|             resultMap.put("msg",ResponseCodeEnum.MONITOR_POINT_IS_EXIST.getMsg()); | 
|             return resultMap; | 
|         } | 
|         if (monitorPoint.getOrganizationId()!=null){ | 
|             QueryWrapper<Organization> wapper_org = new QueryWrapper<>(); | 
|             wapper_org.eq("id",monitorPoint.getOrganizationId()); | 
|             wapper_org.eq("is_delete",Constants.NOT_DELETE); | 
|             if (organizationMapper.selectOne(wapper_org)==null){ | 
|                 resultMap.put("code",ResponseCodeEnum.ORGANIZATION_NOT_EXIST.getCode()); | 
|                 resultMap.put("msg",ResponseCodeEnum.ORGANIZATION_NOT_EXIST.getMsg()); | 
|                 return resultMap; | 
|             } | 
|         } | 
|         monitorPointMapper.insert(monitorPoint); | 
|         //操作插入日志 | 
|         HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | 
|         String content = "添加了站点:"+monitorPoint.getName()+";"; | 
|         LogUtils.saveOperationForManage(request,content,Constants.INSERT_OPERATE_TYPE); | 
|         resultMap.put("code",ResponseCodeEnum.SUCCESS.getCode()); | 
|         resultMap.put("msg",ResponseCodeEnum.SUCCESS.getMsg()); | 
|         return resultMap; | 
|     } | 
|   | 
|     @Override | 
|     public Map<String, Object> getAllMonitorPoint(Map map) { | 
|         Map<String,Object> resultMap = new HashMap<>(); | 
|         if (!map.containsKey("current")||!map.containsKey("size")||!map.containsKey("orderType")){ | 
|             resultMap.put("code",ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode()); | 
|             resultMap.put("msg",ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); | 
|             return resultMap; | 
|         } | 
|         int current = Integer.parseInt(map.get("current").toString()); | 
|         int size = Integer.parseInt(map.get("size").toString()); | 
|         Page<MonitorPoint> page = new Page(current,size); | 
|         QueryWrapper<MonitorPoint> wrapper = new QueryWrapper(); | 
|         wrapper.eq("is_delete",0); | 
|         int totalNumber = monitorPointMapper.selectCount(wrapper); | 
|         String orderType = map.get("orderType").toString(); | 
|         if (orderType.equals(Constants.ORDER_ASC)){ | 
|             wrapper.orderByAsc("update_time"); | 
|         }else { | 
|             wrapper.orderByDesc("update_time"); | 
|         } | 
|         Page resultPage = monitorPointMapper.selectPage(page,wrapper); | 
|         List<MonitorPoint> monitorPoints = resultPage.getRecords(); | 
|         SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | 
|         List<Map<String,Object>> monitorPointtList = new ArrayList<>(); | 
|         for (MonitorPoint monitorPoint:monitorPoints) { | 
|             Map monitorPointMap = JSON.parseObject(JSON.toJSONString(monitorPoint),Map.class); | 
|             String createTime = SDF.format(monitorPoint.getCreateTime()); | 
|             String updateTime = SDF.format(monitorPoint.getUpdateTime()); | 
|             monitorPointMap.put("createTime",createTime); | 
|             monitorPointMap.put("updateTime",updateTime); | 
|             monitorPointMap.put("key",monitorPoint.getId()); | 
|             if (monitorPointMap.get("provinceCode")!=null&&monitorPointMap.get("provinceCode")!=""){ | 
|                 monitorPointMap.put("provinceCode",getAreaArr(monitorPointMap.get("provinceCode").toString())); | 
|             }else { | 
|                 String[] arr = {null,null}; | 
|                 monitorPointMap.put("provinceCode",arr); | 
|             } | 
|             if (monitorPointMap.get("cityCode")!=null&&monitorPointMap.get("cityCode")!=""){ | 
|                 monitorPointMap.put("cityCode",getAreaArr(monitorPointMap.get("cityCode").toString())); | 
|             }else { | 
|                 String[] arr = {null,null}; | 
|                 monitorPointMap.put("cityCode",arr); | 
|             } | 
|             if (monitorPointMap.get("areaCode")!=null&&monitorPointMap.get("areaCode")!=""){ | 
|                 monitorPointMap.put("areaCode",getAreaArr(monitorPointMap.get("areaCode").toString())); | 
|             }else { | 
|                 String[] arr = {null,null}; | 
|                 monitorPointMap.put("areaCode",arr); | 
|             } | 
|             if (monitorPointMap.get("organizationId")!=null&&monitorPointMap.get("organizationId")!=""){ | 
|                 Organization organization = organizationMapper.selectById(Integer.parseInt(monitorPointMap.get("organizationId").toString())); | 
|                 if (!ObjectUtils.isEmpty(organization)) { | 
|                     String[] organizationArr = {monitorPointMap.get("organizationId").toString(),organization.getName()}; | 
|                     monitorPointMap.put("organizationId",organizationArr); | 
|                 } | 
|             }else { | 
|                 String[] arr = {null,null}; | 
|                 monitorPointMap.put("organizationId",arr); | 
|             } | 
|             monitorPointtList.add(monitorPointMap); | 
|         } | 
|         resultMap.put("monitorPoints",monitorPointtList); | 
|         resultMap.put("totalNumber",totalNumber); | 
|         resultMap.put("current",current); | 
|         int totalPageNumber = totalNumber/size; | 
|         if(totalNumber%size != 0){ | 
|             totalPageNumber += 1; | 
|         } | 
|         resultMap.put("totalPageNumber",totalPageNumber); | 
|         return resultMap; | 
|     } | 
|   | 
|     @Override | 
|     @Transactional | 
|     public Map<String, Object> updateMonitorPoint(Map<String,Object> parameterMap) { | 
|         Map resultMap = new HashMap(); | 
|         Map<String,Object> updateMap = new HashMap<>(); | 
|         for (String key : parameterMap.keySet()) { | 
|             updateMap.put(ConvertUtils.toLine(key),parameterMap.get(key)); | 
|         } | 
|         if(!updateMap.containsKey("id")){ | 
|             resultMap.put("code",ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode()); | 
|             resultMap.put("msg",ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); | 
|             return resultMap; | 
|         } | 
|         QueryWrapper<MonitorPoint> wapper_id = new QueryWrapper<>(); | 
|         wapper_id.eq("id",updateMap.get("id")); | 
|         wapper_id.eq("is_delete",Constants.NOT_DELETE); | 
|         MonitorPoint oldMonitorPoint = monitorPointMapper.selectOne(wapper_id); | 
|         if (oldMonitorPoint==null){ | 
|             resultMap.put("code",ResponseCodeEnum.MONITOR_POINT_IS_NOT_EXIST.getCode()); | 
|             resultMap.put("msg",ResponseCodeEnum.MONITOR_POINT_IS_NOT_EXIST.getMsg()); | 
|             return resultMap; | 
|         } | 
|         if (updateMap.get("name")!=null&&updateMap.get("name").equals("")){ | 
|             resultMap.put("code",ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode()); | 
|             resultMap.put("msg",ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); | 
|             return resultMap; | 
|         } | 
|         if (updateMap.get("name")!=null){ | 
|             QueryWrapper<MonitorPoint> wapper_name = new QueryWrapper<>(); | 
|             wapper_name.eq("name",updateMap.get("name")); | 
|             wapper_name.eq("is_delete",Constants.NOT_DELETE); | 
|             MonitorPoint monitorPoint_name = monitorPointMapper.selectOne(wapper_name); | 
|             if(monitorPoint_name!=null&&!monitorPoint_name.getId().toString().equals(updateMap.get("id").toString())){ | 
|                 resultMap.put("code",ResponseCodeEnum.MONITOR_POINT_IS_EXIST.getCode()); | 
|                 resultMap.put("msg",ResponseCodeEnum.MONITOR_POINT_IS_EXIST.getMsg()); | 
|                 return resultMap; | 
|             } | 
|         } | 
|         monitorPointMapper.updateMonitorPoint(updateMap); | 
|         String deviceContent = ""; | 
|         if (!ObjectUtils.isEmpty(parameterMap.get("organizationId")) && parameterMap.get("organizationId") != null){ | 
|             Device device = new Device(); | 
|             device.setOrganizationId(Integer.parseInt(parameterMap.get("organizationId").toString())); | 
|             QueryWrapper<Device> deviceWrapper = new QueryWrapper(); | 
|             deviceWrapper.eq("monitor_point_id",oldMonitorPoint.getId()); | 
|             deviceWrapper.eq("is_delete",Constants.NOT_DELETE); | 
|             List<Device> devices = deviceMapper.selectList(deviceWrapper); | 
|             deviceMapper.update(device, deviceWrapper); | 
|             if (devices.size()>0){ | 
|                 for (Device dev:devices) { | 
|                     deviceContent = deviceContent+"修改了设备:"+dev.getName()+";organizationId:"+dev.getOrganizationId()+"->"+parameterMap.get("organizationId"); | 
|                 } | 
|             } | 
|         } | 
|         HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | 
|         String content = "修改了站点:"+oldMonitorPoint.getName()+";"; | 
|         for (Object key:updateMap.keySet()) { | 
|             if (key.toString().equals("name")&&updateMap.get(key)!=null){ | 
|                 content = content+"站点名称:"+oldMonitorPoint.getName()+"->"+updateMap.get(key)+";"; | 
|             } | 
|             if (key.toString().equals("longitude")&&updateMap.get(key)!=null){ | 
|                 content = content+"经度:"+oldMonitorPoint.getLongitude()+"->"+updateMap.get(key)+";"; | 
|             } | 
|             if (key.toString().equals("latitude")&&updateMap.get(key)!=null){ | 
|                 content = content+"纬度:"+oldMonitorPoint.getLatitude()+"->"+updateMap.get(key)+";"; | 
|             } | 
|             if (key.toString().equals("province_code")&&updateMap.get(key)!=null){ | 
|                 content = content+"省份编码:"+oldMonitorPoint.getProvinceCode()+"->"+updateMap.get(key)+";"; | 
|             } | 
|             if (key.toString().equals("city_code")&&updateMap.get(key)!=null){ | 
|                 content = content+"地级市编码:"+oldMonitorPoint.getCityCode()+"->"+updateMap.get(key)+";"; | 
|             } | 
|             if (key.toString().equals("area_code")&&updateMap.get(key)!=null){ | 
|                 content = content+"县/区/县级市:"+oldMonitorPoint.getAreaCode()+"->"+updateMap.get(key)+";"; | 
|             } | 
|             if (key.toString().equals("address")&&updateMap.get(key)!=null){ | 
|                 content = content+"地址:"+oldMonitorPoint.getAddress()+"->"+updateMap.get(key)+";"; | 
|             } | 
|             if (key.toString().equals("organization_id")&&updateMap.get(key)!=null){ | 
|                 content = content+"组织id:"+oldMonitorPoint.getOrganizationId()+"->"+updateMap.get(key)+";"; | 
|             } | 
|             if (key.toString().equals("desc")&&updateMap.get(key)!=null){ | 
|                 content = content+"描述:"+oldMonitorPoint.getDesc()+"->"+updateMap.get(key)+";"; | 
|             } | 
|         } | 
|         content = content+deviceContent; | 
|         LogUtils.saveOperationForManage(request,content,Constants.UPDATE_OPERATE_TYPE); | 
|         resultMap.put("code",ResponseCodeEnum.SUCCESS.getCode()); | 
|         resultMap.put("msg",ResponseCodeEnum.SUCCESS.getMsg()); | 
|         return resultMap; | 
|     } | 
|   | 
|     @Override | 
|     @Transactional | 
|     public Map<String, Object> deleteMonitorPoint(Map map) { | 
|         Map resultMap = new HashMap(); | 
|         QueryWrapper<MonitorPoint> wrapper = new QueryWrapper<>(); | 
|         wrapper.eq("id",map.get("id")); | 
|         wrapper.eq("is_delete","0"); | 
|         MonitorPoint monitorPoint = monitorPointMapper.selectOne(wrapper); | 
|         if(ObjectUtils.isEmpty(monitorPoint)){ | 
|             resultMap.put("code",ResponseCodeEnum.MONITOR_POINT_IS_NOT_EXIST.getCode()); | 
|             resultMap.put("msg",ResponseCodeEnum.MONITOR_POINT_IS_NOT_EXIST.getMsg()); | 
|             return resultMap; | 
|         } | 
|         MonitorPoint deleteMonitorPoint = new MonitorPoint(); | 
|         deleteMonitorPoint.setIsDelete("1"); | 
|         monitorPointMapper.update(deleteMonitorPoint,wrapper); | 
|         //操作插入日志 | 
|         HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | 
|         String content = "删除了站点:"+monitorPoint.getName()+";"; | 
|         LogUtils.saveOperationForManage(request,content,Constants.DELETE_OPERATE_TYPE); | 
|         resultMap.put("code",ResponseCodeEnum.SUCCESS.getCode()); | 
|         resultMap.put("msg",ResponseCodeEnum.SUCCESS.getMsg()); | 
|         return resultMap; | 
|     } | 
|   | 
|     @Override | 
|     public Map<String, Object> getMonitorPointByFuzzy(Map map) { | 
|         Map<String,Object> resultMap = new HashMap<>(); | 
|         if (!map.containsKey("current")||!map.containsKey("size")||!map.containsKey("orderType")){ | 
|             resultMap.put("code",ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode()); | 
|             resultMap.put("msg",ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); | 
|             return resultMap; | 
|         } | 
|         int current = Integer.parseInt(map.get("current").toString()); | 
|         int size = Integer.parseInt(map.get("size").toString()); | 
|         Page<MonitorPoint> page = new Page(current,size); | 
|         QueryWrapper<MonitorPoint> wrapper = new QueryWrapper(); | 
|         wrapper.eq("is_delete",0); | 
|         if (map.containsKey("organization_id")){ | 
|             String organization_id = ""; | 
|             organization_id = map.get("organization_id").toString(); | 
|             wrapper.eq("organization_id",organization_id); | 
|         } | 
|         if (map.containsKey("name")){ | 
|             String name = ""; | 
|             name = map.get("name").toString(); | 
|             wrapper.like("name",name); | 
|         } | 
|         int totalNumber = monitorPointMapper.selectCount(wrapper); | 
|         String orderType = map.get("orderType").toString(); | 
|         if (orderType.equals(Constants.ORDER_ASC)){ | 
|             wrapper.orderByAsc("update_time"); | 
|         }else { | 
|             wrapper.orderByDesc("update_time"); | 
|         } | 
|         Page resultPage = monitorPointMapper.selectPage(page,wrapper); | 
|         List<MonitorPoint> monitorPoints = resultPage.getRecords(); | 
|         SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | 
|         List<Map<String,Object>> monitorPointtList = new ArrayList<>(); | 
|         for (MonitorPoint monitorPoint:monitorPoints) { | 
|             Map monitorPointMap = JSON.parseObject(JSON.toJSONString(monitorPoint),Map.class); | 
|             String createTime = SDF.format(monitorPoint.getCreateTime()); | 
|             String updateTime = SDF.format(monitorPoint.getUpdateTime()); | 
|             monitorPointMap.put("createTime",createTime); | 
|             monitorPointMap.put("updateTime",updateTime); | 
|             monitorPointMap.put("key",monitorPoint.getId()); | 
|             if (monitorPointMap.get("provinceCode")!=null&&monitorPointMap.get("provinceCode")!=""){ | 
|                 monitorPointMap.put("provinceCode",getAreaArr(monitorPointMap.get("provinceCode").toString())); | 
|             }else { | 
|                 String[] arr = {null,null}; | 
|                 monitorPointMap.put("provinceCode",arr); | 
|             } | 
|             if (monitorPointMap.get("cityCode")!=null&&monitorPointMap.get("cityCode")!=""){ | 
|                 monitorPointMap.put("cityCode",getAreaArr(monitorPointMap.get("cityCode").toString())); | 
|             }else { | 
|                 String[] arr = {null,null}; | 
|                 monitorPointMap.put("cityCode",arr); | 
|             } | 
|             if (monitorPointMap.get("areaCode")!=null&&monitorPointMap.get("areaCode")!=""){ | 
|                 monitorPointMap.put("areaCode",getAreaArr(monitorPointMap.get("areaCode").toString())); | 
|             }else { | 
|                 String[] arr = {null,null}; | 
|                 monitorPointMap.put("areaCode",arr); | 
|             } | 
|             /*Organization organization = organizationMapper.selectById(Integer.parseInt(monitorPointMap.get("organizationId").toString())); | 
|             if (!ObjectUtils.isEmpty(organization)) { | 
|                 String[] organizationArr = {monitorPointMap.get("organizationId").toString(),organization.getName()}; | 
|                 monitorPointMap.put("organizationId",organizationArr); | 
|             }*/ | 
|             if (monitorPointMap.get("organizationId")!=null&&monitorPointMap.get("organizationId")!=""){ | 
|                 Organization organization = organizationMapper.selectById(Integer.parseInt(monitorPointMap.get("organizationId").toString())); | 
|                 if (!ObjectUtils.isEmpty(organization)) { | 
|                     String[] organizationArr = {monitorPointMap.get("organizationId").toString(),organization.getName()}; | 
|                     monitorPointMap.put("organizationId",organizationArr); | 
|                 } | 
|             }else { | 
|                 String[] arr = {null,null}; | 
|                 monitorPointMap.put("organizationId",arr); | 
|             } | 
|             monitorPointtList.add(monitorPointMap); | 
|         } | 
|         resultMap.put("monitorPoints",monitorPointtList); | 
|         resultMap.put("totalNumber",totalNumber); | 
|         resultMap.put("current",current); | 
|         int totalPageNumber = totalNumber/size; | 
|         if(totalNumber%size != 0){ | 
|             totalPageNumber += 1; | 
|         } | 
|         resultMap.put("totalPageNumber",totalPageNumber); | 
|         return resultMap; | 
|     } | 
|   | 
|     @Override | 
|     public List<MonitorPoint> getMonitorPointsByOrganizationId(Integer organizationId) { | 
|         QueryWrapper<MonitorPoint> monitorPointQueryWrapper = new QueryWrapper<>(); | 
|         MonitorPoint monitorPoint = new MonitorPoint(); | 
|         monitorPoint.setOrganizationId(organizationId); | 
|         monitorPoint.setIsDelete(Constants.NOT_DELETE); | 
|         monitorPointQueryWrapper.setEntity(monitorPoint); | 
|         List<MonitorPoint> monitorPoints = monitorPointMapper.selectList(monitorPointQueryWrapper); | 
|         return monitorPoints; | 
|     } | 
|   | 
|     /** | 
|      * @Description: 获取地区名 | 
|      * @Param: [areaArr, menu]menuMap:key为menuid,value为menu | 
|      * @return: Array | 
|      * @Author: lizijie | 
|      * @Date: 2021/4/7 | 
|      */ | 
|     private String[] getAreaArr(String areaCode) { | 
|         QueryWrapper<SysArea> wrapper = new QueryWrapper<>(); | 
|         wrapper.eq("area_code",areaCode); | 
|         SysArea sysArea = sysAreaMapper.selectOne(wrapper); | 
|         String[] arr = {areaCode,sysArea.getAreaName()}; | 
|         return arr; | 
|     } | 
| } |