|  |  | 
 |  |  | import com.moral.api.pojo.form.version.*; | 
 |  |  | import com.moral.api.service.VersionService; | 
 |  |  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
 |  |  | import com.moral.api.util.CacheUtils; | 
 |  |  | import com.moral.constant.Constants; | 
 |  |  | import com.moral.constant.ResponseCodeEnum; | 
 |  |  | import com.moral.util.ConvertUtils; | 
 |  |  | 
 |  |  |         dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); | 
 |  |  |         return dto; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |      | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public VersionDTO update(VersionUpdateForm form) { | 
 |  |  | 
 |  |  |         Integer id = form.getId(); | 
 |  |  |         //查询型号是否被使用,如果被使用则无法删除 | 
 |  |  |         QueryWrapper<OrganizationUnitAlarm> queryWrapper = new QueryWrapper<>(); | 
 |  |  |         queryWrapper.eq("is_delete",Constants.NOT_DELETE); | 
 |  |  |         queryWrapper.eq("version_id",id); | 
 |  |  |         queryWrapper.select("id"); | 
 |  |  |         queryWrapper.eq("is_delete", Constants.NOT_DELETE); | 
 |  |  |         queryWrapper.eq("version_id", id); | 
 |  |  |         List<OrganizationUnitAlarm> organizationUnitAlarms = organizationUnitAlarmMapper.selectList(queryWrapper); | 
 |  |  |         if(!ObjectUtils.isEmpty(organizationUnitAlarms)){ | 
 |  |  |         if (!ObjectUtils.isEmpty(organizationUnitAlarms)) { | 
 |  |  |             dto.setCode(ResponseCodeEnum.VERSION_USED.getCode()); | 
 |  |  |             dto.setMsg(ResponseCodeEnum.VERSION_USED.getMsg()); | 
 |  |  |             return dto; | 
 |  |  | 
 |  |  |         } | 
 |  |  |         //查询之前分配的单位和因子 | 
 |  |  |         QueryWrapper<VersionSensorUnit> queryOldWrapper = new QueryWrapper<>(); | 
 |  |  |         queryOldWrapper.eq("version_id",versionId); | 
 |  |  |         queryOldWrapper.eq("is_delete",Constants.NOT_DELETE); | 
 |  |  |         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->{ | 
 |  |  |         sensorUnits.forEach(value -> { | 
 |  |  |             value.setVersionId(versionId); | 
 |  |  |             if(!oldSensorUnits.contains(value)) | 
 |  |  |             if (!oldSensorUnits.contains(value)) | 
 |  |  |                 insertList.add(value); | 
 |  |  |         }); | 
 |  |  |         oldSensorUnits.forEach(value->{ | 
 |  |  |             if(!sensorUnits.contains(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); | 
 |  |  |         if (!ObjectUtils.isEmpty(deleteList)) { | 
 |  |  |             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); | 
 |  |  |         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())); | 
 |  |  |         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); | 
 |  |  |                 deleteOrganizationUnitAlarmWrapper.eq("organization_id", organizationId); | 
 |  |  |                 deleteOrganizationUnitAlarmWrapper.eq("version_id", versionId); | 
 |  |  |                 deleteOrganizationUnitAlarmWrapper.eq("sensor_code", versionSensorUnit.getSensorCode()); | 
 |  |  |                 deleteOrganizationUnitAlarmWrapper.set("is_delete", Constants.DELETE); | 
 |  |  |                 organizationUnitAlarmMapper.update(null, deleteOrganizationUnitAlarmWrapper); | 
 |  |  |             } | 
 |  |  |             //新增因子 | 
 |  |  |             for (VersionSensorUnit versionSensorUnit : insertList) { | 
 |  |  | 
 |  |  |                 organizationUnitAlarmMapper.insert(organizationUnitAlarm); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         //刷新deviceInfo缓存 | 
 |  |  |         CacheUtils.refreshDeviceAlarmInfo(); | 
 |  |  |         CacheUtils.refreshSpecialDeviceAlarmInfo(); | 
 |  |  |         //封装返回结果 | 
 |  |  |         dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); | 
 |  |  |         dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); | 
 |  |  | 
 |  |  |         if (ObjectUtils.isEmpty(querySensors)) { | 
 |  |  |             dto.setTotal(0); | 
 |  |  |             dto.setPages(0); | 
 |  |  |         }else{ | 
 |  |  |         } else { | 
 |  |  |             dto.setTotal(querySensors.size()); | 
 |  |  |             double querySize = (double)querySensors.size(); | 
 |  |  |             double dSize = (double)size; | 
 |  |  |             dto.setPages((int)Math.ceil(querySize/dSize)); | 
 |  |  |             double querySize = (double) querySensors.size(); | 
 |  |  |             double dSize = (double) size; | 
 |  |  |             dto.setPages((int) Math.ceil(querySize / dSize)); | 
 |  |  |         } | 
 |  |  |         dto.setSize(size); | 
 |  |  |         dto.setCurrent(page); | 
 |  |  | 
 |  |  |         VersionQueryDTO dto = new VersionQueryDTO(); | 
 |  |  |         //查询型号id | 
 |  |  |         QueryWrapper<OrganizationUnitAlarm> queryVersionIdsWrapper = new QueryWrapper<>(); | 
 |  |  |         queryVersionIdsWrapper.select("DISTINCT version_id").eq("is_delete",Constants.NOT_DELETE).eq("organization_id",organizationId); | 
 |  |  |         queryVersionIdsWrapper.select("DISTINCT version_id").eq("is_delete", Constants.NOT_DELETE).eq("organization_id", organizationId); | 
 |  |  |         List<OrganizationUnitAlarm> organizationUnitAlarms = organizationUnitAlarmMapper.selectList(queryVersionIdsWrapper); | 
 |  |  |         List<Integer> versionIds = new ArrayList<>(); | 
 |  |  |         for (OrganizationUnitAlarm organizationUnitAlarm : organizationUnitAlarms) { | 
 |  |  | 
 |  |  |         } | 
 |  |  |         //根据型号id查询型号 | 
 |  |  |         List<Version> versions = new ArrayList<>(); | 
 |  |  |         if(!ObjectUtils.isEmpty(versionIds)) | 
 |  |  |         if (!ObjectUtils.isEmpty(versionIds)) | 
 |  |  |             versions = versionMapper.selectBatchIds(versionIds); | 
 |  |  |         //封装返回对象 | 
 |  |  |         List<VersionDTO> versionDTOS = new ArrayList<>(); | 
 |  |  |         versions.forEach(value->versionDTOS.add(new VersionDTO(value))); | 
 |  |  |         versions.forEach(value -> versionDTOS.add(new VersionDTO(value))); | 
 |  |  |         dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); | 
 |  |  |         dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); | 
 |  |  |         dto.setVersionDTOS(versionDTOS); | 
 |  |  |         return dto; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } | 
 |  |  |  |