| | |
| | | Assert.notNull(entity, "记录不存在"); |
| | | YwPointVO vo = YwPointVO.getVoByEntity(entity, null); |
| | | if (Objects.nonNull(entity.getDeptId())) { |
| | | vo.setDeptIds(sysDeptMapper.selectParents(entity.getDeptId())); |
| | | //TODO:方法待完善 简单处理 |
| | | List<Long> deptIds = sysDeptMapper.selectParents(entity.getDeptId()); |
| | | deptIds.remove(deptIds.size()-1); |
| | | deptIds.add(entity.getDeptId()); |
| | | vo.setDeptIds(deptIds); |
| | | } |
| | | return Result.ok().data(vo); |
| | | } |
| | |
| | | if (!CollectionUtils.isEmpty(dynamics)) { |
| | | dynamicMap = dynamics.stream().filter(vo -> vo.getRefId() != null).collect(Collectors.groupingBy(DynamicColumnVO::getRefId)); |
| | | } |
| | | //定义表头列表 |
| | | //定义固定表头列表 |
| | | LinkedHashSet<String> headers = new LinkedHashSet<>(); |
| | | headers.add(PointHeaderConstant.ID); |
| | | headers.add(PointHeaderConstant.Point_Name); |
| | |
| | | headers.add(PointHeaderConstant.Province_Tag_Face); |
| | | headers.add(PointHeaderConstant.Impotrant_Command_Image); |
| | | headers.add(PointHeaderConstant.Dept_Tag); |
| | | headers.add(PointHeaderConstant.Username); |
| | | headers.add(PointHeaderConstant.Password); |
| | | List<String> headersList = new LinkedList<>(); |
| | | if (!CollectionUtils.isEmpty(dynamicsHeaders)) { |
| | | //使用链表保证后续补充数据时获取数据顺序一致 |
| | |
| | | list.add(export.getProvinceTagFaceString()); |
| | | list.add(export.getImportantCommandImageTagString()); |
| | | list.add(export.getDeptTagString()); |
| | | list.add(export.getUsername()); |
| | | list.add(export.getPassword()); |
| | | for (String header : headersList) { |
| | | //创建一个变量记录找没找到这个header |
| | | boolean flag = false; |
| | |
| | | pointExport.setProvinceTagFace("是".equals(map.get(PointHeaderConstant.Province_Tag_Face))); |
| | | pointExport.setImportantCommandImageTag("是".equals(map.get(PointHeaderConstant.Impotrant_Command_Image))); |
| | | pointExport.setDeptTag("是".equals(map.get(PointHeaderConstant.Dept_Tag))); |
| | | pointExport.setUsername(map.get(PointHeaderConstant.Username)); |
| | | pointExport.setPassword(map.get(PointHeaderConstant.Password)); |
| | | List<DynamicColumnVO> dynamics = new ArrayList<>(); |
| | | // 处理动态列 |
| | | for (Map.Entry<String, String> entry : map.entrySet()) { |
| | |
| | | point.setProvinceTagCar(item.getProvinceTagCar()); |
| | | point.setProvinceTagFace(item.getProvinceTagFace()); |
| | | point.setDeptTag(item.getDeptTag()); |
| | | point.setUsername(item.getUsername()); |
| | | point.setPassword(item.getPassword()); |
| | | if (needUpdateUnit) { |
| | | if (Objects.nonNull(unitId)) { |
| | | point.setUnitId(Long.valueOf(unitId)); |
| | |
| | | } |
| | | //根据label_value和ref_id判断是否是同一数据 |
| | | for (PointExport pointExport : dataList) { |
| | | //得到excel中动态列名作为key的map |
| | | Map<String, DynamicColumnVO> exportMap = pointExport.getDynamicData().stream().collect(Collectors.toMap(DynamicColumnVO::getLabelValue, Function.identity())); |
| | | //查出数据库中这个点位的动态列 |
| | | List<DynamicColumnVO> dynamicColumnVOS = dynamicVOMap.get(pointExport.getId()); |
| | | if (!CollectionUtils.isEmpty(dynamicColumnVOS)) { |
| | | //遍历数据库中这个点位的动态列,并根据动态列名找出excel中的值 |
| | | for (DynamicColumnVO vo : dynamicColumnVOS) { |
| | | DynamicColumnVO dynamicColumnVO = exportMap.get(vo.getLabelValue()); |
| | | //存在说明excel有这个数据,将数据库这个数据的值改为excel的值 |
| | | if (dynamicColumnVO.getColumnValue() != null) { |
| | | DynamicColumnValue entity = new DynamicColumnValue(); |
| | | entity.setColumnValue(dynamicColumnVO.getColumnValue()); |
| | | entity.setDynamicColumnId(vo.getId()); |
| | | entity.setRefId(vo.getRefId()); |
| | | entity.setId(vo.getValueId()); |
| | | updateList.add(entity); |
| | | //数据库中的动态列 |
| | | List<DynamicColumnVO> dynamicColumnVOS = dynamicVOMap.getOrDefault(pointExport.getId(), Collections.emptyList()); |
| | | Map<String, DynamicColumnVO> databaseMap = dynamicColumnVOS.stream() |
| | | .collect(Collectors.toMap(DynamicColumnVO::getLabelValue, Function.identity())); |
| | | |
| | | for (DynamicColumnVO excelVo : pointExport.getDynamicData()) { |
| | | String labelValue = excelVo.getLabelValue(); |
| | | DynamicColumnVO databaseVo = databaseMap.get(labelValue); |
| | | //如果excel值不为空判定为新增或修改 |
| | | if (excelVo.getColumnValue() != null) { |
| | | Integer dynamicId = dictionary.get(labelValue); |
| | | DynamicColumnValue entity = new DynamicColumnValue(); |
| | | entity.setColumnValue(excelVo.getColumnValue()); |
| | | entity.setRefId(pointExport.getId()); |
| | | //数据库找不到为新增否则为修改 |
| | | if (databaseVo != null) { |
| | | entity.setDynamicColumnId(databaseVo.getId()); |
| | | entity.setId(databaseVo.getValueId()); |
| | | updateList.add(entity); |
| | | } else { |
| | | //不存在则取消标签,删除 |
| | | deleteList.add(vo.getValueId()); |
| | | } |
| | | } |
| | | } else { |
| | | //数据库里查不到excel里面的这个点位动态列,全为新增 |
| | | List<DynamicColumnVO> dynamicData = pointExport.getDynamicData(); |
| | | for (DynamicColumnVO excelData : dynamicData) { |
| | | if (excelData.getColumnValue() != null) { |
| | | Integer dynamicId = dictionary.get(excelData.getLabelValue()); |
| | | DynamicColumnValue entity = new DynamicColumnValue(); |
| | | entity.setColumnValue(excelData.getColumnValue()); |
| | | entity.setDynamicColumnId(dynamicId); |
| | | entity.setRefId(pointExport.getId()); |
| | | insertList.add(entity); |
| | | } |
| | | } else if (databaseVo != null) { |
| | | //excel里为空但是数据库存在 删除 |
| | | deleteList.add(databaseVo.getValueId()); |
| | | } |
| | | } |
| | | } |