遍历类的字段并获取每条数据中的每个字段的java名称和对应的存储值

@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class Project extends BaseModel {
    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @ApiModelProperty(value = "主键id")
    @TableId
    private Long id;

    /**
     * 项目名称
     */
    @ApiModelProperty(value = "项目名称")
    private String projName;

    /**
     * 项目类别(0-新建项目、1-续建项目、2-运维服务类项目、3-其他)
     */
    @ApiModelProperty(value = "项目类别(0-新建项目、1-续建项目、2-运维服务类项目、3-其他)")
    private Integer projType;

    /**
     * 建设单位
     */
    @ApiModelProperty(value = "建设单位")
    private String buildDept;

    /**
     * 项目总金额
     */
    @ApiModelProperty(value = "项目总金额")
    private BigDecimal projAmount;

    /**
     * 资金来源(0-财政资金、1-自筹资金、2-上级补助、3-其他)
     */
    @ApiModelProperty(value = "资金来源(0-财政资金、1-自筹资金、2-上级补助、3-其他)")
    private Integer fundSource;

    /**
     * 项目资金安排年度
     */
    @ApiModelProperty(value = "项目资金安排年度")
    private String projFundYear;

    /**
     * 周期属性(0-一次性项目、1-经常性项目)
     */
    @ApiModelProperty(value = "周期属性(0-一次性项目、1-经常性项目)")
    private Integer cycleType;

    /**
     * 项目周期(开始时间)
     */
    @ApiModelProperty(value = "项目周期(开始时间)")
    private String projCycleStart;

    /**
     * 项目周期(截止时间)
     */
    @ApiModelProperty(value = "项目周期(截止时间)")
    private String projCycleEnd;

    /**
     * 是否部署政务云:0-是/1-否
     */
    @ApiModelProperty(value = "是否部署政务云:0-是/1-否")
    private Integer ifDeployGovernment;

    /**
     * 是否监控视频类:0-是/1-否
     */
    @ApiModelProperty(value = "是否监控视频类:0-是/1-否")
    private Integer ifMonitorVideo;

    /**
     * 项目情况
     */
    @ApiModelProperty(value = "项目情况")
    private String projSituation;

    /**
     * 项目负责人: 项目负责人的真实姓名
     */
    @ApiModelProperty(value = "项目负责人: 项目负责人的真实姓名")
    private String projLeaderName;

    /**
     * 项目负责人电话
     */
    @ApiModelProperty(value = "项目负责人电话")
    private String projLeaderPhone;

    /**
     * 项目联系人: 项目联系人的真实姓名
     */
    @ApiModelProperty(value = "项目联系人: 项目联系人的真实姓名")
    private String projContactName;

    /**
     * 项目联系人电话
     */
    @ApiModelProperty(value = "项目联系人电话")
    private String projContactPhone;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = DateUtil.DATETIME_FORMAT)
    private Date createTime;

    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    private Long createUser;

    /**
     * 修改时间
     */
    @ApiModelProperty(value = "修改时间")
    @JsonFormat(pattern = DateUtil.DATETIME_FORMAT)
    private Date updateTime;

    /**
     * 修改人员
     */
    @ApiModelProperty(value = "修改人员")
    private Long updateUser;

    /**
     * 所属部门
     */
    @ApiModelProperty(value = "所属部门")
    private Long belongDept;

    /**
     * 项目状态:0-分为立项备案、1-合同备案、2-系统备案、3-验收通过、4-验收不通过(部门可以点击查看具体原因)、5-废弃待审、6-已废弃、7-废弃不通过
     */
    @ApiModelProperty(value = "项目状态:0-分为立项备案、1-合同备案、2-系统备案、3-验收通过、4-验收不通过(部门可以点击查看具体原因)、5-废弃待审、6-已废弃、7-废弃不通过")
    private Integer projState;

    /**
     * 项目赋码
     */
    @ApiModelProperty(value = "项目赋码")
    private String projNum;

    /**
     * 年度项目需要安排资金
     */
    @ApiModelProperty(value = "年度项目需要安排资金")
    private String yearProjFund;

    @ApiModelProperty(value = "项目流程 " +
            "0-项目申报、\n" +
            "1-项目评审、\n" +
            "2-项目建设、\n" +
            "3-项目招标、\n" +
            "4-项目签约,\n" +
            "5-财政拨款(首付),\n" +
            "6-项目动工,\n" +
            "7-项目初验,\n" +
            "8-财政拨款(初验),\n" +
            "9-项目终验,\n" +
            "10-财政拨款(终验),\n" +
            "11-项目质保,\n" +
            "12-财政拨款(质保),\n" +
            "13-项目完成")
    private Integer type;

    @ApiModelProperty(value = "是否曾经备案验收成功(0-否、1-是)")
    private Integer ifSuccess;

    @ApiModelProperty(value = "电子邮箱")
    private String email;

    @ApiModelProperty(value = "建设必要性和依据")
    private String constructionBasis;

    @ApiModelProperty(value = "市公共财政预算")
    private String municipalBudget;

    @ApiModelProperty(value = "其它财政性资金")
    private String otherBudget;

    @ApiModelProperty(value = "自筹")
    private String raise;

    @ApiModelProperty(value = "合计")
    private String sum;

    @ApiModelProperty(value = "计划工期")
    private String startPlannedDuration;

    @ApiModelProperty(value = "计划工期")
    private String endPlannedDuration;

    @ApiModelProperty(value = "本年度工期")
    private String startYearPlannedDuration;

    @ApiModelProperty(value = "本年度工期")
    private String endYearPlannedDuration;

    @ApiModelProperty(value = "总投资估算")
    private String totalInvestmentEstimation;

    @ApiModelProperty(value = "已完成投资")
    private String completedInvestment;

    @ApiModelProperty(value = "建设方案文件上传,多文件之间uuid用,分割")
    private String constructionSchemeUuid;

    @ApiModelProperty(value = "预算清单文件上传,多文件之间uuid用,分割")
    private String detailedListUuid;

    @ApiModelProperty(value = "招标文件文件上传,多文件之间uuid用,分割")
    private String biddingDocumentsUuid;

    @ApiModelProperty(value = "文件上传,多文件之间uuid用,分割")
    private String projUuid;

    @ApiModelProperty(value = "项目流程 " +
            "0-项目申报、\n" +
            "1-项目评审、\n" +
            "2-项目建设、\n" +
            "3-项目招标、\n" +
            "4-项目签约,\n" +
            "5-财政拨款(首付),\n" +
            "6-项目动工,\n" +
            "7-项目初验,\n" +
            "8-财政拨款(初验),\n" +
            "9-项目终验,\n" +
            "10-财政拨款(终验),\n" +
            "11-项目质保,\n" +
            "12-财政拨款(质保),\n" +
            "13-项目完成")
    private Integer projectType;

}

使用方法

public Boolean updateProject(Project project, Long userId) throws BizException, IllegalAccessException {
        // 查询之前项目数据
        Project projectServiceById = projectService.getById(project.getId());
        Date date = new Date();
        project.setUpdateTime(new Date()).setUpdateUser(userId);
        boolean update = projectService.updateById(project);
        Assert.notTrue(update, "更新失败!");
        // ----------------记录字段变更-----------------
        Field[] fieldsBefore = projectServiceById.getClass().getDeclaredFields();
        Field[] fieldsAfter = project.getClass().getDeclaredFields();
        List<ProjectUpdateDetails> detailsList = new ArrayList<>();
        for (int i = 0; i < fieldsBefore.length; i++) {
            fieldsBefore[i].setAccessible(true);
            fieldsAfter[i].setAccessible(true);
            Object ofieldsBefore = fieldsBefore[i].get(projectServiceById);
            Object ofieldsAfter = fieldsAfter[i].get(project);
            if (ofieldsAfter != null && !ofieldsBefore.equals(ofieldsAfter)) {
                // 值有所变更,开始执行变更记录存储
                ProjectUpdateDetails projectUpdateDetails = new ProjectUpdateDetails()
                        .setProjId(project.getId())
                        .setParamName(fieldsBefore[i].getName())
                        .setBeforeDetails(ofieldsBefore.toString())
                        .setAfterDetails(ofieldsAfter.toString())
                        .setCreateTime(date)
                        .setCreateUser(userId)
                        .setProjectType(projectServiceById.getProjectType());
                detailsList.add(projectUpdateDetails);
           }
        }
        if (detailsList.size() > 0) {
            projectUpdateDetailsService.addUpdateDetails(detailsList);
        }
        // 开始存储消息
        List<Long> userList = new ArrayList<>();
        userList.add(userId);
        AddMessageDto addMessageDto = new AddMessageDto().setTitle("更新项目成功!")
                .setContent("您于"+ date + "时更新项目【"+project.getProjName() + "】成功!")
                .setType(2)
                .setCreateUser(userId)
                .setBelongUserList(userList);
        messageService.addMessage(addMessageDto);
        return true;
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值