栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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

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

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

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

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

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

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

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

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

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

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

    
    @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;

    
    @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 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 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;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/337701.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号