分析一下 public void creatSnapshot(KunxiaoanSnapshotProjectVO projectVO) { // 通过recordNumber判断昆小安项目表是否存在数据,不存在就新增,存在就获取数据 KunxiaoanProject kunxiaoanProject = this.kunxiaoanProjectMapper.selectOneByExample(new Example.Builder(KunxiaoanProject.class).andWhere(WeekendSqls.<KunxiaoanProject>custom().andEqualTo(KunxiaoanProject::getRecordNumber, projectVO.getRecordNumber())).build()); if (null == kunxiaoanProject) { kunxiaoanProject = new KunxiaoanProject().init(projectVO); this.kunxiaoanProjectMapper.create(kunxiaoanProject); } this.kunxiaoanSnapshotMapper.create(new KunxiaoanSnapshot().init(projectVO, kunxiaoanProject.getId())); // 通过反射来扫描随手拍照片字段,把照片移动到最终路径 Field[] fields = projectVO.getClass().getDeclaredFields(); for (Field field: fields) { final String fieldName = field.getName(); if (fieldName.contains("Photo")) { field.setAccessible(true); try { String path = field.get(projectVO).toString(); if (StringUtils.isNotBlank(path)) { this.fileUploadUtils.moveTempFileToFinal(path); } } catch (Exception e) { log.error("反射:================",e); throw new ApiException(ApiException.E_FILE_SAVE_ERROR); } } } }
时间: 2024-02-14 22:24:29 浏览: 87
finclaw数据库结构说明文档1
这段代码实现了一个创建项目快照的方法 creatSnapshot,分为以下几个步骤:
1. 通过 recordNumber 判断昆小安项目表是否存在数据,不存在就新增,存在就获取数据。
2. 如果项目表中不存在该项目,则新建一个昆小安项目实例,并将传入的 projectVO 转换成昆小安项目实例的属性,然后插入到昆小安项目表中。
3. 无论该项目是否已存在,都将传入的 projectVO 转换成昆小安快照实例的属性,并将昆小安项目的 id 作为外键插入到昆小安快照表中。
4. 最后通过反射来扫描随手拍照片字段,把照片移动到最终路径。
需要注意的是,该方法中使用了一些自定义的方法,如 init()、create() 和 moveTempFileToFinal(),这些方法的作用需要查看其实现代码才能确定。此外,该方法还抛出了 ApiException 异常,但是没有给出异常信息,需要进一步排查异常的原因。
阅读全文