kaiyu
2021-06-23 5981f3413b9db0dea9ef7b5e33fd39d214ebb636
screen-manage
增加功能: 修改型号的因子,组织型号关系表也进行维护
6 files modified
109 ■■■■ changed files
screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java 3 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/controller/TestController.java 5 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/entity/VersionSensorUnit.java 17 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java 7 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/VersionServiceImpl.java 72 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/util/CacheUtils.java 5 ●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java
@@ -59,7 +59,8 @@
    ORGANIZATION_EXIST_MONITORPOINT(-44,"组织存在站点,无法删除"),
    CHILDREN_ORGANIZATION_EXIST_MONITORPOINT(-45,"子组织存在站点,无法删除"),
    DEVICE_IS_NULL(-46, "设备不存在"),
    TARGET_IS_NULL(-47, "操作目标不存在")
    TARGET_IS_NULL(-47, "操作目标不存在"),
    VERSION_USED(-48,"型号被使用,无法删除")
    ;
    private final Integer code;
    private final String  msg;
screen-manage/src/main/java/com/moral/api/controller/TestController.java
@@ -165,9 +165,4 @@
        writer.close();
        fis.close();
    }
    @GetMapping("testCacheUtils")
    public void testCacheUtils(){
        CacheUtils.flushDeviceAlarmUnit();
    }
}
screen-manage/src/main/java/com/moral/api/entity/VersionSensorUnit.java
@@ -7,6 +7,7 @@
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -77,6 +78,22 @@
     */
    private String isDelete;
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        VersionSensorUnit that = (VersionSensorUnit) o;
        return Objects.equals(sensorCode, that.sensorCode) &&
                Objects.equals(unitKey, that.unitKey) &&
                Objects.equals(upper, that.upper) &&
                Objects.equals(lower, that.lower);
    }
    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), sensorCode, unitKey, upper, lower);
    }
    @Override
    protected Serializable pkVal() {
screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -10,6 +10,7 @@
import com.moral.api.service.DeviceService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.util.CacheUtils;
import com.moral.api.util.LogUtils;
import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
@@ -132,6 +133,8 @@
        delDeviceInfoFromRedis(mac);
        //设备信息存入redis
        setDeviceInfoToRedis(mac, deviceInfo);
        //刷新deviceInfo缓存
        CacheUtils.flushDeviceAlarmInfo();
        //操作日志记录
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        StringBuilder content = new StringBuilder();
@@ -153,6 +156,8 @@
        Integer versionId = device.getDeviceVersionId();
        Integer orgId = device.getOrganizationId();
        deleteOrganizationUnitAlarm(orgId,versionId);
        //刷新deviceInfo缓存
        CacheUtils.flushDeviceAlarmInfo();
        //操作日志记录
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        StringBuilder content = new StringBuilder();
@@ -187,6 +192,8 @@
        Map<String, Object> deviceInfo = selectDeviceInfoById(deviceId);
        //设备信息存入redis
        setDeviceInfoToRedis(mac, deviceInfo);
        //刷新deviceInfo缓存
        CacheUtils.flushDeviceAlarmInfo();
        //操作日志记录
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        StringBuilder content = new StringBuilder();
screen-manage/src/main/java/com/moral/api/service/impl/VersionServiceImpl.java
@@ -165,6 +165,16 @@
        VersionDTO dto = new VersionDTO();
        //取参
        Integer id = form.getId();
        //查询型号是否被使用,如果被使用则无法删除
        QueryWrapper<OrganizationUnitAlarm> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("is_delete",Constants.NOT_DELETE);
        queryWrapper.eq("version_id",id);
        List<OrganizationUnitAlarm> organizationUnitAlarms = organizationUnitAlarmMapper.selectList(queryWrapper);
        if(!ObjectUtils.isEmpty(organizationUnitAlarms)){
            dto.setCode(ResponseCodeEnum.VERSION_USED.getCode());
            dto.setMsg(ResponseCodeEnum.VERSION_USED.getMsg());
            return dto;
        }
        //查询要删除的版本用于记录日志
        Version oldVersion = versionMapper.selectById(id);
        //执行删除
@@ -191,21 +201,67 @@
        //取参
        List<VersionSensorUnit> sensorUnits = form.getSensorUnits();
        Integer versionId = form.getVersionId();
        //删除之前分配的单位和因子
        UpdateWrapper deleteWrapper = new UpdateWrapper();
        deleteWrapper.eq("version_id", versionId);
        deleteWrapper.set("is_delete", Constants.DELETE);
        versionSensorUnitMapper.update(null, deleteWrapper);
        //将前端传来的id转为code
        for (VersionSensorUnit sensorUnit : sensorUnits) {
            Sensor sensor = sensorMapper.selectById(sensorUnit.getSensorId());
            sensorUnit.setSensorCode(sensor.getCode());
        }
        //添加新分配的单位和因子
        for (VersionSensorUnit sensorUnit : sensorUnits) {
            sensorUnit.setVersionId(versionId);
        //查询之前分配的单位和因子
        QueryWrapper<VersionSensorUnit> queryOldWrapper = new QueryWrapper<>();
        queryOldWrapper.eq("version_id",versionId);
        queryOldWrapper.eq("is_delete",Constants.NOT_DELETE);
        List<VersionSensorUnit> oldSensorUnits = versionSensorUnitMapper.selectList(queryOldWrapper);
        //判断出变动的因子(要插入和要删除的)
        List<VersionSensorUnit> insertList = new ArrayList<>();
        List<VersionSensorUnit> deleteList = new ArrayList<>();
        sensorUnits.forEach(value->{
            value.setVersionId(versionId);
            if(!oldSensorUnits.contains(value))
                insertList.add(value);
        });
        oldSensorUnits.forEach(value->{
            if(!sensorUnits.contains(value))
                deleteList.add(value);
        });
        //删除记录
        UpdateWrapper deleteWrapper = new UpdateWrapper();
        List<Integer> deleteIds = new ArrayList<>();
        deleteList.forEach(value->deleteIds.add(value.getId()));
        deleteWrapper.in("id",deleteIds);
        deleteWrapper.set("is_delete", Constants.DELETE);
        versionSensorUnitMapper.update(null, deleteWrapper);
        //添加记录
        for (VersionSensorUnit sensorUnit : insertList) {
            versionSensorUnitMapper.insert(sensorUnit);
        }
        //维护组织型号关系表
        QueryWrapper<OrganizationUnitAlarm> queryOrgUnitAlarmWrapper = new QueryWrapper<>();
        queryOrgUnitAlarmWrapper.select("distinct organization_id");
        queryOrgUnitAlarmWrapper.eq("version_id",versionId);
        queryOrgUnitAlarmWrapper.eq("is_delete",Constants.NOT_DELETE);
        List<OrganizationUnitAlarm> organizationUnitAlarms = organizationUnitAlarmMapper.selectList(queryOrgUnitAlarmWrapper);
        List<Integer> organizationIds = new ArrayList<>();
        organizationUnitAlarms.forEach(value->organizationIds.add(value.getOrganizationId()));
        for (Integer organizationId : organizationIds) {
            //删除因子
            for (VersionSensorUnit versionSensorUnit : deleteList) {
                UpdateWrapper deleteOrganizationUnitAlarmWrapper = new UpdateWrapper();
                deleteOrganizationUnitAlarmWrapper.eq("orgniazation_id",organizationId);
                deleteOrganizationUnitAlarmWrapper.eq("version_id",versionId);
                deleteOrganizationUnitAlarmWrapper.eq("sensor_code",versionSensorUnit.getSensorCode());
                organizationUnitAlarmMapper.update(null,deleteOrganizationUnitAlarmWrapper);
            }
            //新增因子
            for (VersionSensorUnit versionSensorUnit : insertList) {
                OrganizationUnitAlarm organizationUnitAlarm = new OrganizationUnitAlarm();
                organizationUnitAlarm.setOrganizationId(organizationId);
                organizationUnitAlarm.setVersionId(versionId);
                organizationUnitAlarm.setSensorCode(versionSensorUnit.getSensorCode());
                organizationUnitAlarm.setUnitKey(versionSensorUnit.getUnitKey());
                organizationUnitAlarm.setShowUnitKey(versionSensorUnit.getUnitKey());
                organizationUnitAlarmMapper.insert(organizationUnitAlarm);
            }
        }
        //封装返回结果
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
screen-manage/src/main/java/com/moral/api/util/CacheUtils.java
@@ -71,7 +71,10 @@
        redisTemplate.delete(RedisConstants.DICT_TYPE_KEY);
    }
    public static void flushDeviceAlarmUnit() {
    public static void flushDeviceAlarmInfo() {
        //删除缓存
        redisTemplate.delete(RedisConstants.DEVICE_INFO);
        //重新添加缓存
        List<Device> devices = deviceMapper.queryDeviceUnitAlarmInfo();
        Map<String, SysDictData> unitMap = sysDictDataService.getDictDatasByType("unit");
        //查询对应的单位名称以及转换公式