内容纲要
-
数据库对应字段
ADD COLUMN
craft_status
tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '工艺状态'选用tinyint,长度属性不影响存储值的大小,对应填充0的属性:如果选择了填充0,长度为5的话,即显示时,1会显示为00001.
-
建立一个枚举类
/** * 合同明细的工艺状态枚举 */ public enum CraftStatus { /** 工艺文件上传*/ UploadProcess(0,1), /** 生产流程*/ ProcessManagement(1,2), /** 技术要求*/ TechnicalRequirement(2,4), /** 成份性能指标*/ ProcessInspection(3,8), /** 工艺关键尺寸*/ ProcessSize(4,16); public final int type; public final int value; private CraftStatus(int type,int value) { this.type= type; this.value = value; } public static CraftStatus getInstance(int type){ for (CraftStatus cs:CraftStatus.values()) { if(cs.type==type){ return cs; } } return null; } }
-
更新方法
/** * 修改合同明细的工艺状态 * @param contractDetailId 合同明细id * @param type 0.工艺文件;1.生产流程;2.技术要求;3.成份性能指标;4.工艺关键尺寸 * @param status true.通过状态;false.不通过状态 * @return */ public int syncContarctDetailCraftStatus(int contractDetailId,int type,boolean status){ CraftStatus craftStatus = CraftStatus.getInstance(type); if(craftStatus==null){ return -1; } int byteStatus = craftStatus.value; if(status){ return contractDetailMapper.syncCraftStatusTrue(contractDetailId,byteStatus); }else { return contractDetailMapper.syncCraftStatusfalse(contractDetailId,~byteStatus); } //return 0; }
-
Mybatis 数据库修改
-- 某个位设置为开启 UPDATE t_contract_detail SET craft_status=(craft_status | #{byteStatus}) WHERE id=#{contractDetailId} -- 某个位设置为关闭 UPDATE t_contract_detail SET craft_status=(craft_status & #{byteStatus}) WHERE id=#{contractDetailId}