package com.moral.api.service.impl; 
 | 
  
 | 
import com.alibaba.fastjson.JSON; 
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
 | 
import com.moral.api.entity.Organization; 
 | 
import com.moral.api.entity.ServicesScope; 
 | 
import com.moral.api.entity.ServicesScopeDevice; 
 | 
import com.moral.api.mapper.OrganizationMapper; 
 | 
import com.moral.api.mapper.ServicesScopeDeviceMapper; 
 | 
import com.moral.api.mapper.ServicesScopeMapper; 
 | 
import com.moral.api.pojo.form.ServiceScope.AddBoundaryBindDevice; 
 | 
import com.moral.api.service.ServicesScopeService; 
 | 
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
 | 
import com.moral.api.util.LogUtils; 
 | 
import com.moral.constant.Constants; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
import org.springframework.util.ObjectUtils; 
 | 
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.*; 
 | 
import java.util.stream.Collectors; 
 | 
  
 | 
/** 
 | 
 * <p> 
 | 
 *  服务实现类 
 | 
 * </p> 
 | 
 * 
 | 
 * @author moral 
 | 
 * @since 2022-01-12 
 | 
 */ 
 | 
@Service 
 | 
public class ServicesScopeServiceImpl extends ServiceImpl<ServicesScopeMapper, ServicesScope> implements ServicesScopeService { 
 | 
  
 | 
    @Autowired 
 | 
    private ServicesScopeMapper servicesScopeMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private OrganizationMapper organizationMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private ServicesScopeDeviceMapper servicesScopeDeviceMapper; 
 | 
  
 | 
    @Override 
 | 
    public Map<String, Object> getDataByCondition(Map<String, Object> map) { 
 | 
        Map<String,Object> resultMap = new HashMap<>(); 
 | 
        int current = Integer.parseInt(map.get("current").toString()); 
 | 
        int size = Integer.parseInt(map.get("size").toString()); 
 | 
        Page<ServicesScope> page = new Page<>(current, size); 
 | 
        QueryWrapper<ServicesScope> servicesScopeWrapper = new QueryWrapper<>(); 
 | 
        servicesScopeWrapper.eq("is_delete",Constants.NOT_DELETE); 
 | 
        if (!ObjectUtils.isEmpty(map.get("orgId"))){ 
 | 
            servicesScopeWrapper.eq("organization_id",Integer.parseInt(map.get("orgId").toString())); 
 | 
        } 
 | 
        if (!ObjectUtils.isEmpty(map.get("name"))){ 
 | 
            if (map.get("name") != ""){ 
 | 
                servicesScopeWrapper.like("name",map.get("name").toString()); 
 | 
            } 
 | 
        } 
 | 
        Page<ServicesScope> resultPage = servicesScopeMapper.selectPage(page, servicesScopeWrapper); 
 | 
        List<ServicesScope> servicesScopes = resultPage.getRecords(); 
 | 
        SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
 | 
        List<Map<String,Object>> servicesScopesList = new ArrayList<>(); 
 | 
        for (ServicesScope servicesScope:servicesScopes) { 
 | 
            Map servicesScopeMap = JSON.parseObject(JSON.toJSONString(servicesScope),Map.class); 
 | 
            if (ObjectUtils.isEmpty(servicesScopeMap.get("centerLongitude"))){ 
 | 
                servicesScopeMap.put("centerLongitude",null); 
 | 
            } 
 | 
            if (ObjectUtils.isEmpty(servicesScopeMap.get("centerLatitude"))){ 
 | 
                servicesScopeMap.put("centerLatitude",null); 
 | 
            } 
 | 
            if (ObjectUtils.isEmpty(servicesScopeMap.get("boundary"))){ 
 | 
                servicesScopeMap.put("boundary",null); 
 | 
            } 
 | 
            String createTime = SDF.format(servicesScope.getCreateTime()); 
 | 
            String updateTime = SDF.format(servicesScope.getUpdateTime()); 
 | 
            servicesScopeMap.put("createTime",createTime); 
 | 
            servicesScopeMap.put("updateTime",updateTime); 
 | 
            int organization_id = servicesScope.getOrganizationId(); 
 | 
            Organization organization = organizationMapper.selectById(organization_id); 
 | 
            servicesScopeMap.put("organization_name",organization.getName()); 
 | 
            servicesScopesList.add(servicesScopeMap); 
 | 
        } 
 | 
        resultMap.put("servicesScopes",servicesScopesList); 
 | 
        int totalNumber = servicesScopeMapper.selectCount(servicesScopeWrapper); 
 | 
        resultMap.put("totalNumber",totalNumber); 
 | 
        resultMap.put("current",current); 
 | 
        int totalPageNumber = totalNumber/size; 
 | 
        if(totalNumber%size != 0){ 
 | 
            totalPageNumber += 1; 
 | 
        } 
 | 
        resultMap.put("totalPageNumber",totalPageNumber); 
 | 
        return resultMap; 
 | 
    } 
 | 
  
 | 
    @Transactional 
 | 
    @Override 
 | 
    public void insert(ServicesScope servicesScope) { 
 | 
        int count = servicesScopeMapper.insert(servicesScope); 
 | 
        if (count > 0) { 
 | 
            //操作日志记录 
 | 
            HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); 
 | 
            StringBuilder content = new StringBuilder(); 
 | 
            content.append("添加了服务范围:").append("id:").append(servicesScope.getId() + ";").append("name:").append(servicesScope.getName() + ";").append(":").append("organization_id:").append(servicesScope.getOrganizationId() + ";"); 
 | 
            LogUtils.saveOperationForManage(request, content.toString(), Constants.INSERT_OPERATE_TYPE); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public void update(ServicesScope servicesScope) { 
 | 
        ServicesScope oldServicesScope = servicesScopeMapper.selectById(servicesScope.getId()); 
 | 
        servicesScopeMapper.updateById(servicesScope); 
 | 
        ServicesScope newServicesScope = servicesScopeMapper.selectById(servicesScope.getId()); 
 | 
        //操作日志记录 
 | 
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); 
 | 
        StringBuilder content = new StringBuilder(); 
 | 
        content.append("修改了服务范围:").append("id:").append(servicesScope.getId() + ";"); 
 | 
        if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(servicesScope.getOrganizationId())) { 
 | 
            content.append("organization_id:").append(oldServicesScope.getOrganizationId()).append("->").append(newServicesScope.getOrganizationId()).append(";"); 
 | 
        } 
 | 
        if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(servicesScope.getName())) { 
 | 
            content.append("name:").append(oldServicesScope.getName()).append("->").append(newServicesScope.getName()).append(";"); 
 | 
        } 
 | 
        if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(servicesScope.getCenterLongitude())) { 
 | 
            content.append("center_longitude:").append(oldServicesScope.getCenterLongitude()).append("->").append(newServicesScope.getCenterLongitude()).append(";"); 
 | 
        } 
 | 
        if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(servicesScope.getCenterLatitude())) { 
 | 
            content.append("center_latitude:").append(oldServicesScope.getCenterLatitude()).append("->").append(newServicesScope.getCenterLatitude()).append(";"); 
 | 
        } 
 | 
        if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(servicesScope.getBoundary())) { 
 | 
            content.append("boundary:").append("数据过长").append(";"); 
 | 
        } 
 | 
        LogUtils.saveOperationForManage(request, content.toString(), Constants.UPDATE_OPERATE_TYPE); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public void delete(int id) { 
 | 
        ServicesScope servicesScope = new ServicesScope(); 
 | 
        servicesScope.setId(id); 
 | 
        servicesScope.setIsDelete(Constants.DELETE); 
 | 
        servicesScopeMapper.updateById(servicesScope); 
 | 
        //操作日志记录 
 | 
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); 
 | 
        StringBuilder content = new StringBuilder(); 
 | 
        content.append("删除了服务范围:").append("id:").append(id).append(";"); 
 | 
        LogUtils.saveOperationForManage(request, content.toString(), Constants.DELETE_OPERATE_TYPE); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public void addBoundaryBindDevice(AddBoundaryBindDevice addBoundaryBindDevice) { 
 | 
        String devices = addBoundaryBindDevice.getDevices(); 
 | 
        if (!ObjectUtils.isEmpty(devices) && !devices.equals("")){ 
 | 
            String[] deviceIds = devices.split(","); 
 | 
            List<String> deviceIds_String = Arrays.asList(deviceIds); 
 | 
            List<Integer> deviceIdList = new ArrayList<>(); 
 | 
            for (String deviceId_String:deviceIds_String) { 
 | 
                deviceIdList.add(Integer.parseInt(deviceId_String)); 
 | 
            } 
 | 
            QueryWrapper<ServicesScopeDevice> servicesScopeDeviceQueryWrapper = new QueryWrapper<>(); 
 | 
            servicesScopeDeviceQueryWrapper.eq("is_delete",Constants.NOT_DELETE); 
 | 
            servicesScopeDeviceQueryWrapper.eq("services_scope_id",addBoundaryBindDevice.getServicesScope().getId()); 
 | 
            List<ServicesScopeDevice> servicesScopeDevices = servicesScopeDeviceMapper.selectList(servicesScopeDeviceQueryWrapper); 
 | 
            List<Integer> oldDeviceIds = servicesScopeDevices.stream().map(p -> p.getDeviceId()).collect(Collectors.toList()); 
 | 
            List<Integer> insertList = new ArrayList<>(); 
 | 
            for (Integer deviceId:deviceIdList) { 
 | 
                if (!oldDeviceIds.contains(deviceId)){ 
 | 
                    insertList.add(deviceId); 
 | 
                } 
 | 
            } 
 | 
            if (insertList.size()>0){ 
 | 
                servicesScopeDeviceMapper.insertBatch(addBoundaryBindDevice.getServicesScope().getId(),insertList); 
 | 
            } 
 | 
            servicesScopeDeviceQueryWrapper.notIn("device_id",deviceIdList); 
 | 
            ServicesScopeDevice servicesScopeDevice = new ServicesScopeDevice(); 
 | 
            servicesScopeDevice.setIsDelete(Constants.DELETE); 
 | 
            servicesScopeDeviceMapper.update(servicesScopeDevice,servicesScopeDeviceQueryWrapper); 
 | 
        } 
 | 
        ServicesScope oldServicesScope = servicesScopeMapper.selectById(addBoundaryBindDevice.getServicesScope().getId()); 
 | 
        servicesScopeMapper.updateById(addBoundaryBindDevice.getServicesScope()); 
 | 
        ServicesScope newServicesScope = servicesScopeMapper.selectById(addBoundaryBindDevice.getServicesScope().getId()); 
 | 
        //操作日志记录 
 | 
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); 
 | 
        StringBuilder content = new StringBuilder(); 
 | 
        content.append("修改了服务范围:").append("id:").append(addBoundaryBindDevice.getServicesScope().getId() + ";"); 
 | 
        if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(addBoundaryBindDevice.getServicesScope().getOrganizationId())) { 
 | 
            content.append("organization_id:").append(oldServicesScope.getOrganizationId()).append("->").append(newServicesScope.getOrganizationId()).append(";"); 
 | 
        } 
 | 
        if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(addBoundaryBindDevice.getServicesScope().getName())) { 
 | 
            content.append("name:").append(oldServicesScope.getName()).append("->").append(newServicesScope.getName()).append(";"); 
 | 
        } 
 | 
        if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(addBoundaryBindDevice.getServicesScope().getCenterLongitude())) { 
 | 
            content.append("center_longitude:").append(oldServicesScope.getCenterLongitude()).append("->").append(newServicesScope.getCenterLongitude()).append(";"); 
 | 
        } 
 | 
        if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(addBoundaryBindDevice.getServicesScope().getCenterLatitude())) { 
 | 
            content.append("center_latitude:").append(oldServicesScope.getCenterLatitude()).append("->").append(newServicesScope.getCenterLatitude()).append(";"); 
 | 
        } 
 | 
        if (!com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isEmpty(addBoundaryBindDevice.getServicesScope().getBoundary())) { 
 | 
            content.append("boundary:").append("数据过长").append(";"); 
 | 
        } 
 | 
        LogUtils.saveOperationForManage(request, content.toString(), Constants.UPDATE_OPERATE_TYPE); 
 | 
    } 
 | 
} 
 |