|  |  |  | 
|---|
|  |  |  | 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.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(); | 
|---|
|  |  |  | //封装返回结果 | 
|---|
|  |  |  | 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); | 
|---|