set方式进行匹配值 但是不能判断有没有值

该Java类定义了一个用于项目风险管理的Excel数据模型,包含项目ID、风险标题、等级、类型、描述、解决方式、日期等字段,并使用阿里巴巴的Excel注解进行格式化和验证。类中还设置了对空值的检查和异常处理机制。
package com.lzy.project.project.domain;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.lzy.common.exception.BaseException;
import com.lzy.framework.aspectj.lang.annotation.Excel;
//import lombok.Getter;
import org.springframework.util.StringUtils;

//@Getter
@HeadRowHeight(30)
@ColumnWidth(25)
//@HeadFontStyle(fontHeightInPoints = 12)
public class ProjectZbfxgzExcel {
    /**
     * 项目id
     */
    @Excel(name = "项目id")
    @ExcelIgnore
    private Long xmid;

    /**
     * 标题
     */
    @ExcelProperty(value = "风险标题",index = 0)
    private String title;

    /**
     * 风险等级
     */

    @ExcelProperty(value = "风险等级",index = 1)
    private String fxdj;
    /**
     * 风险类型
     */

    @ExcelProperty(value = "风险类型",index = 2)
    private String fxlx;
    /**
     * 风险问题描述
     */

    @ExcelProperty(value = "风险问题描述",index = 3)
    private String fxwtms;
    /**
     * 解决方式
     */

    @ExcelProperty(value = "解决方式",index = 4)
    private String jjfs;

    /**
     * 解决方案描述
     */

    @ExcelProperty(value = "解决方案描述",index = 6)
    private String jjfams;
    /**
     * 解决日期
     */
    @ExcelProperty(value = "解决日期",index = 5)
    @DateTimeFormat("yyyy-MM-dd")
    private String jjrq;

    /**
     * 添加人员
     */
    @ExcelIgnore
    private Long addUser;

    /**
     * 添加时间
     */
    @ExcelProperty(value = "问题发现日期",index = 7)
    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    private String addTime;

    /**
     * 修改人员
     */
    @ExcelIgnore
    private Long editUser;


    public void setXmid(Long xmid) {
        this.xmid = xmid;
    }

    public void setTitle(String title) {
        System.out.println(title);
        System.out.println("-------------------------------------------------------------------------"+title);
        if (StringUtils.isEmpty(title)){
            throw new BaseException("风险问题标题不能为空");
        }
        this.title = title;
    }

    public void setFxdj(String fxdj) {
        System.out.println("-------------------------------------------------------------------------"+fxdj);
        if (!StringUtils.isEmpty(fxdj)) {
            this.fxdj = (fxdj.equals("紧急") ? "1" : (fxdj.equals("一般") ? "2" : "3"));
        } else {

            throw new BaseException("风险等级不能为空");
        }
    }

    public void setFxlx(String fxlx) {
        if (!StringUtils.isEmpty(fxlx)){
            this.fxlx = (fxlx.equals("内部") ? "1" : (fxlx.equals("外部") ? "2" : "3"));
        }else {
            throw new BaseException("风险类型字段不能为空");
        }
    }

    public void setFxwtms(String fxwtms) {
        if (StringUtils.isEmpty(fxwtms)){
            throw new BaseException("风险问题描述字段不能为空");
        }else {
            this.fxwtms = fxwtms;
        }
    }

    public void setJjfs(String jjfs) {

        this.jjfs = (jjfs.equals("转移") ? "1" : jjfs.equals("接受") ? "2" : jjfs.equals("回避") ? "3" : "4");
    }

    public void setJjfams(String jjfams) {
        this.jjfams = jjfams;
    }

    public void setJjrq(String jjrq) {
        this.jjrq = jjrq;
    }

    public void setAddUser(Long addUser) {
        this.addUser = addUser;
    }

    public void setAddTime(String addTime) {
        this.addTime = addTime;
    }

    public void setEditUser(Long editUser) {
        this.editUser = editUser;
    }

    public Long getXmid() {
        return xmid;
    }

    public String getTitle() {
        return title;
    }

    public String getFxdj() {
        return fxdj;
    }

    public String getFxlx() {
        return fxlx;
    }

    public String getFxwtms() {
        return fxwtms;
    }

    public String getJjfs() {
        return jjfs;
    }

    public String getJjfams() {
        return jjfams;
    }

    public String getJjrq() {
        return jjrq;
    }

    public Long getAddUser() {
        return addUser;
    }

    public String getAddTime() {
        return addTime;
    }

    public Long getEditUser() {
        return editUser;
    }
}
<think>好的,用户问的是“g_need_notify是int不能进行修改”。首先,我需要确认用户的问题背景。用户之前提到日志显示g_need_notify的为-16773213,而他们希望修改这个。现在用户想知道,既然g_need_notify是int类型,是否可以进行修改。 首先,我需要明确int类型在C语言中的特性。int是基本数据类型,通常是可以直接修改的,除非它被声明为const。用户之前的代码中,g_need_notify被赋为param->payload,而param->payload可能是一个指针或无符号整数,导致符号扩展问题,从而得到-16773213这个。 接下来,用户的问题可能是在确认是否可以直接修改这个int变量。答案当然是肯定的,但需要确保修改的方式正确,避免再次出现符号扩展的问题。用户可能需要的是如何正确地将payload的赋给g_need_notify,而是直接修改类型。 另外,用户可能对之前的错误原因太清楚,需要进一步解释为什么会出现-16773213这样的。这可能是因为param->payload被当作无符号整数处理,而直接赋给有符号的int导致高位被解释为符号位。例如,如果payload是0xFF000013,作为无符号整数是4278223083,但作为有符号int(32位)就是-16773213。 用户可能需要的解决方案包括显式类型转换、检查数据来源、添加合法性验证等。同时,用户可能还关心如何避免这类问题再次发生,比如使用正确的数据类型或添加调试日志。 需要确保回答覆盖以下几点: 1. 确认int类型可以修改。 2. 分析之前出现-16773213的原因。 3. 提供修改方案,如显式转换、类型检查、合法性验证。 4. 强调调试和日志的重要性。 5. 提醒可能的其他问题,如内存越界或数据传递错误。 最后,根据用户的问题,生成相关的后续问题,帮助用户深入理解问题根源和解决方案。 </think> 可以修改 `g_need_notify`(`int` 类型变量),但需确保赋逻辑正确。根据日志输出 `g_need_notify == -16773213`(十六进制 `0xFF000013`),问题可能出在 **数据来源的符号扩展** 或 **类型匹配**。以下是修改建议: --- ### **1. 显式类型转换** 若 `param->payload` 是无符号类型(如 `uint32_t`),直接赋给 `int` 会导致高位符号扩展错误。需强制转换: ```c g_need_notify = (int)(param->payload); // 显式转换无符号为有符号 ``` --- ### **2. 检查数据来源合法性** 确保 `param->payload` 的在合理范围内(例如枚举或预定义常量): ```c if (p_para) { win_param_t* param = (win_param_t*)p_para; // 假设 NOTIFY_CODE_SLEEP_MODE_REMIND 是合法(例如 1) if (param->payload == NOTIFY_CODE_SLEEP_MODE_REMIND) { g_need_notify = param->payload; OPLUS_GUI_ERROR_LOG("Payload valid: %d", g_need_notify); sleep_mode_set_remind_notify_remove(); } else { OPLUS_GUI_ERROR_LOG("Invalid payload: 0x%x", param->payload); } } ``` --- ### **3. 调试日志辅助** 输出 `payload` 的原始(十六进制)以确认数据来源是否正确: ```c OPLUS_GUI_ERROR_LOG("Raw payload: 0x%x, g_need_notify: %d", param->payload, g_need_notify); ``` --- ### **4. 修改 `win_param_t` 结构体** 如果 `payload` 本应存储有符号整数,需确保其类型为 `int` 而非无符号类型: ```c typedef struct { int payload; // 改为有符号类型 } win_param_t; ``` --- ### **关键修改总结** 1. **显式转换**:避免隐式符号扩展。 2. **合法性检查**:过滤非法。 3. **日志调试**:确认数据来源。 4. **类型修正**:确保结构体字段类型匹配
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值